@kernhq/module-hr 0.10.4 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,203 @@
14
14
  import type { Message } from '@kernhq/ui'
15
15
 
16
16
  export const en: Record<string, Message> = {
17
+ 'hr.accr_actions_for': 'Actions for {name}',
18
+ 'hr.accr_already_archived': 'Already archived',
19
+ 'hr.accr_archive_assigned': {
20
+ one: 'It is assigned to {count} subject, and that assignment stops taking effect.',
21
+ other: 'It is assigned to {count} subjects, and those assignments stop taking effect.',
22
+ },
23
+ 'hr.accr_archive_body': 'It stops applying to anybody from now on.',
24
+ 'hr.accr_archive_error': 'The policy could not be archived',
25
+ 'hr.accr_archive_keeps':
26
+ 'It is archived, never deleted: leave already credited names this policy, and a movement whose policy has vanished is a number nobody can explain.',
27
+ 'hr.accr_archive_title': 'Archive "{name}"?',
28
+ 'hr.accr_archived': '"{name}" archived',
29
+ 'hr.accr_assign': 'Assign',
30
+ 'hr.accr_assign_desc':
31
+ 'Choose the policy and the rung it sits on. The nearest rung to a person is the one that answers for them.',
32
+ 'hr.accr_assign_error': 'The assignment could not be saved',
33
+ 'hr.accr_assign_policy': 'Policy',
34
+ 'hr.accr_assign_policy_pick': 'Pick a policy',
35
+ 'hr.accr_assign_rung': 'Applies to',
36
+ 'hr.accr_assign_subject': 'Which {rung}',
37
+ 'hr.accr_assign_title': 'Assign a policy',
38
+ 'hr.accr_assign_to_hint': 'Leave empty to keep applying.',
39
+ 'hr.accr_assigned': '"{name}" now applies to {subject}',
40
+ 'hr.accr_badge_archived': 'Archived',
41
+ 'hr.accr_beaten_by': 'Still beaten by:',
42
+ 'hr.accr_beats_everything': 'Nothing beats this rung — it decides for the person it names.',
43
+ 'hr.accr_col_applies': 'Applies to',
44
+ 'hr.accr_col_earns': 'Earns',
45
+ 'hr.accr_col_policy': 'Policy',
46
+ 'hr.accr_col_when': 'When',
47
+ 'hr.accr_config_unreadable': "This policy's settings cannot be read",
48
+ 'hr.accr_copy_of': '{name} (copy)',
49
+ 'hr.accr_create_title': 'New accrual policy',
50
+ 'hr.accr_created': '"{name}" created',
51
+ 'hr.accr_day_length': 'Length of a leave day',
52
+ 'hr.accr_day_length_hint':
53
+ 'In minutes — {length}. Balances are kept in minutes so half days and hourly leave stay exact.',
54
+ 'hr.accr_days_field': 'Days a full year earns',
55
+ 'hr.accr_days_field_hint': 'Before seniority tiers, proration and part-time hours.',
56
+ 'hr.accr_days_per_year': { one: '{count} day a year', other: '{count} days a year' },
57
+ 'hr.accr_desc':
58
+ 'How leave is earned over time: the policies, who each one applies to, and what the next run would credit.',
59
+ 'hr.accr_duplicate': 'Duplicate',
60
+ 'hr.accr_edit_retroactive':
61
+ 'An edit rewrites what was true in the past, and anything already credited from it becomes hard to explain. To change the rules from a date, duplicate this policy and give the copy a later start.',
62
+ 'hr.accr_edit_title': 'Edit accrual policy',
63
+ 'hr.accr_effective_from': 'In force from',
64
+ 'hr.accr_effective_from_hint': 'Cannot be changed later — a new start date is a new policy.',
65
+ 'hr.accr_effective_to': 'In force until',
66
+ 'hr.accr_effective_to_hint': 'Leave empty for no end.',
67
+ 'hr.accr_error': 'Accrual policies could not be loaded',
68
+ 'hr.accr_error_desc': 'The server did not answer. Nothing has changed.',
69
+ 'hr.accr_error_from': 'Pick the date it starts.',
70
+ 'hr.accr_error_leave_type': 'Pick the leave type it credits.',
71
+ 'hr.accr_error_name': 'Give the policy a name.',
72
+ 'hr.accr_error_pick_policy': 'Pick a policy.',
73
+ 'hr.accr_error_pick_subject': 'Pick who it applies to.',
74
+ 'hr.accr_error_tier_clash': 'Two tiers start at the same number of years.',
75
+ 'hr.accr_error_to_before_from': 'The end date is before the start date.',
76
+ 'hr.accr_freq_anniversary': 'On each work anniversary',
77
+ 'hr.accr_freq_anniversary_desc':
78
+ 'A whole year appears on each anniversary of the hire date, earned in arrears. Nothing appears in the year somebody joined.',
79
+ 'hr.accr_freq_annual': 'Once a year',
80
+ 'hr.accr_freq_annual_desc':
81
+ 'The whole year appears on 1 January — or on the hire date for somebody who joined later, who gets the share of the year that is left.',
82
+ 'hr.accr_freq_monthly': 'Every month',
83
+ 'hr.accr_freq_monthly_desc':
84
+ 'A twelfth of the year appears at the end of each month, prorated by the days somebody was actually employed for it.',
85
+ 'hr.accr_freq_per_hour': 'Per hour worked',
86
+ 'hr.accr_freq_per_hour_desc':
87
+ "The period's share of a year, scaled by the hours actually worked against the hours scheduled. Read from attendance.",
88
+ 'hr.accr_frequency': 'When leave appears',
89
+ 'hr.accr_from_date': 'From {date}',
90
+ 'hr.accr_job_note':
91
+ "A job credits the month behind on each office's own 1st, so most workspaces never need this. Running by hand does exactly the same thing, and a period already credited credits nothing twice.",
92
+ 'hr.accr_ladder': 'Who each policy applies to',
93
+ 'hr.accr_ladder_desc':
94
+ 'The nearest subject wins. A policy given to one person beats the one on their office, which beats their legal entity, their department, their position, and finally the whole workspace.',
95
+ 'hr.accr_ladder_error': 'The assignments could not be loaded',
96
+ 'hr.accr_ladder_needs_policy': 'Create a policy first; there is nothing to assign yet.',
97
+ 'hr.accr_ladder_none': 'Nothing is assigned yet',
98
+ 'hr.accr_ladder_none_desc':
99
+ 'Until a policy is assigned to somebody, nobody accrues — the job runs and credits nothing.',
100
+ 'hr.accr_leave_type': 'Leave type',
101
+ 'hr.accr_leave_type_hint': 'Which balance the days are credited to.',
102
+ 'hr.accr_leave_type_pick': 'Pick a leave type',
103
+ 'hr.accr_name': 'Name',
104
+ 'hr.accr_name_hint': 'What HR calls it — "Turkish annual leave", "Full-time, from 2026".',
105
+ 'hr.accr_needs_attendance':
106
+ 'Attendance is switched off for this workspace, so nobody has scheduled hours — this policy would credit nothing.',
107
+ 'hr.accr_new': 'New policy',
108
+ 'hr.accr_no_default':
109
+ 'No policy sits on the workspace, so anybody with nothing nearer accrues nothing at all.',
110
+ 'hr.accr_no_leave_types': 'There are no leave types yet, and accrual has to credit one.',
111
+ 'hr.accr_nobody': 'Nobody',
112
+ 'hr.accr_none': 'No accrual policies yet',
113
+ 'hr.accr_none_desc':
114
+ 'Leave is granted by hand until one exists. A policy earns it month by month, or once a year, and the ledger records where every day came from.',
115
+ 'hr.accr_policies': 'Accrual policies',
116
+ 'hr.accr_policies_desc':
117
+ 'A policy says how much a year earns, when it appears and how it rounds. Nobody accrues until a policy is assigned to them.',
118
+ 'hr.accr_preview_error': 'The preview could not be computed',
119
+ 'hr.accr_readonly': 'You can read this page, but changing anything needs permission to manage policies.',
120
+ 'hr.accr_round_day': 'A whole day',
121
+ 'hr.accr_round_exact': 'No rounding',
122
+ 'hr.accr_round_half_day': 'Half a day',
123
+ 'hr.accr_round_minutes': { one: '{count} minute', other: '{count} minutes' },
124
+ 'hr.accr_round_short': 'rounded to {step}',
125
+ 'hr.accr_rounding': 'Rounding',
126
+ 'hr.accr_rounding_hint': 'Each accrual is rounded to this step.',
127
+ 'hr.accr_run_already': 'Already credited',
128
+ 'hr.accr_run_credit': { one: 'Credit {count} person', other: 'Credit {count} people' },
129
+ 'hr.accr_run_desc': 'Read the numbers first. Nothing is written until you credit them.',
130
+ 'hr.accr_run_done': { one: 'Credited {count} person', other: 'Credited {count} people' },
131
+ 'hr.accr_run_error': 'The accrual run failed',
132
+ 'hr.accr_run_from': 'Period from',
133
+ 'hr.accr_run_idempotent': {
134
+ one: '{count} row is already credited for this period and will be left alone.',
135
+ other: '{count} rows are already credited for this period and will be left alone.',
136
+ },
137
+ 'hr.accr_run_more': { one: 'and {count} more', other: 'and {count} more' },
138
+ 'hr.accr_run_needs_policy': 'There is no policy to run yet.',
139
+ 'hr.accr_run_nothing': 'Nothing to credit',
140
+ 'hr.accr_run_nothing_desc':
141
+ 'No policy grants anything for this period. An annual or anniversary policy grants nothing in the months that hold no grant date.',
142
+ 'hr.accr_run_open': 'Preview a run',
143
+ 'hr.accr_run_people': 'To credit',
144
+ 'hr.accr_run_rows': 'Everybody in this period',
145
+ 'hr.accr_run_section': 'Crediting the ledger',
146
+ 'hr.accr_run_section_desc': "What a run would add to everybody's balance, and the run itself.",
147
+ 'hr.accr_run_skipped': 'Skipped',
148
+ 'hr.accr_run_title': 'Accrual run',
149
+ 'hr.accr_run_to': 'Period to',
150
+ 'hr.accr_run_total': 'Total',
151
+ 'hr.accr_run_writes':
152
+ 'Crediting writes to the leave ledger. It cannot be undone here — a wrong credit is corrected with a leave adjustment.',
153
+ 'hr.accr_rung_empty': 'Nothing on this rung.',
154
+ 'hr.accr_rung_legal_entity': 'Legal entity',
155
+ 'hr.accr_rung_legal_entity_hint': "Everyone employed by this company. Usually where a country's rules go.",
156
+ 'hr.accr_rung_needs_entities':
157
+ 'Legal entities are switched off for this workspace, so there is nothing to pick.',
158
+ 'hr.accr_rung_needs_offices': 'Offices are switched off for this workspace, so there is nothing to pick.',
159
+ 'hr.accr_rung_needs_org': 'You do not have permission to read the org chart, so this cannot be picked.',
160
+ 'hr.accr_rung_needs_people':
161
+ 'You do not have permission to read the directory, so a person cannot be picked here.',
162
+ 'hr.accr_rung_office': 'Office',
163
+ 'hr.accr_rung_office_hint': 'Everyone whose primary office is this one.',
164
+ 'hr.accr_rung_org_unit': 'Department',
165
+ 'hr.accr_rung_org_unit_hint': 'Everyone in this department, including the teams below it.',
166
+ 'hr.accr_rung_person': 'Person',
167
+ 'hr.accr_rung_person_hint': 'Beats everything else. For the one contract that differs from the rest.',
168
+ 'hr.accr_rung_position': 'Position',
169
+ 'hr.accr_rung_position_hint': 'Everyone holding this position.',
170
+ 'hr.accr_rung_taken':
171
+ '"{name}" already applies to {subject} from this rung. Two policies here is ambiguous unless their dates keep them apart.',
172
+ 'hr.accr_rung_workspace': 'Workspace',
173
+ 'hr.accr_rung_workspace_hint': 'The fallback for everybody with nothing nearer.',
174
+ 'hr.accr_save_error': 'The policy could not be saved',
175
+ 'hr.accr_saved': 'Policy saved',
176
+ 'hr.accr_show_archived': 'Show archived',
177
+ 'hr.accr_stale': 'These figures may be out of date.',
178
+ 'hr.accr_stat_assignments': 'Assignments',
179
+ 'hr.accr_stat_default': 'Workspace default',
180
+ 'hr.accr_stat_default_none': 'None',
181
+ 'hr.accr_stat_default_none_note': 'Anyone with nothing nearer accrues nothing.',
182
+ 'hr.accr_stat_policies': 'Policies',
183
+ 'hr.accr_subject_loading': 'Loading…',
184
+ 'hr.accr_subject_missing': 'No subject',
185
+ 'hr.accr_subject_none': 'There are no {rung} records to pick from yet.',
186
+ 'hr.accr_subject_pick': 'Pick one',
187
+ 'hr.accr_subject_unknown': 'Not in the directory ({id})',
188
+ 'hr.accr_tier_add': 'Add tier',
189
+ 'hr.accr_tier_after': 'After years of service',
190
+ 'hr.accr_tier_days': 'Days a year',
191
+ 'hr.accr_tier_remove': 'Remove the tier at {years} years of service',
192
+ 'hr.accr_tiers': 'Seniority tiers',
193
+ 'hr.accr_tiers_count': { one: '{count} seniority tier', other: '{count} seniority tiers' },
194
+ 'hr.accr_tiers_hint':
195
+ 'The most senior tier somebody has reached wins; the order you write them in does not matter.',
196
+ 'hr.accr_tiers_none': {
197
+ one: 'Everyone earns {count} day a year, however long they have been here.',
198
+ other: 'Everyone earns {count} days a year, however long they have been here.',
199
+ },
200
+ 'hr.accr_unassign': 'Remove',
201
+ 'hr.accr_unassign_body': '"{name}" stops applying from now on.',
202
+ 'hr.accr_unassign_error': 'The assignment could not be removed',
203
+ 'hr.accr_unassign_falls_back':
204
+ 'They fall through to the next rung that has a policy — "{name}" on the workspace.',
205
+ 'hr.accr_unassign_keeps': 'Leave already credited stays in the ledger; only future runs change.',
206
+ 'hr.accr_unassign_label': 'Stop "{name}" applying to {subject}',
207
+ 'hr.accr_unassign_no_fallback':
208
+ 'There is no policy on any rung below this one, so they stop accruing altogether.',
209
+ 'hr.accr_unassign_title': 'Stop accruing for {subject}?',
210
+ 'hr.accr_unassigned': '"{name}" no longer applies to {subject}',
211
+ 'hr.accr_waiting': 'Waiting period',
212
+ 'hr.accr_waiting_hint': 'Months after joining before anything accrues. 0 starts at once.',
213
+ 'hr.accr_waiting_short': { one: '{count} month waiting', other: '{count} months waiting' },
17
214
  'hr.add_person': 'Add person',
18
215
  'hr.add_person_desc':
19
216
  'Name and a start date are enough. An employee number is assigned if you leave it blank.',
@@ -49,7 +246,61 @@ export const en: Record<string, Message> = {
49
246
  'hr.approve_confirm_leave': 'The days come off their balance and the team calendar shows them as away.',
50
247
  'hr.approve_confirm_next': 'This is not the last step — it moves on to the next approver.',
51
248
  'hr.approve_confirm_title': 'Approve this request?',
249
+ 'hr.att_anomalies': 'Needs a look',
250
+ 'hr.att_anomalies_count': { one: '{count} thing to check', other: '{count} things to check' },
251
+ 'hr.att_anomaly_break_end_without_start': 'A break ended with none started',
252
+ 'hr.att_anomaly_break_not_ended': 'A break was never ended, so it was closed at the end of the shift',
253
+ 'hr.att_anomaly_clock_out_without_in': 'Clocked out with no clock-in before it',
254
+ 'hr.att_anomaly_double_break_start': 'A break started while another was already running',
255
+ 'hr.att_anomaly_double_clock_in': 'Clocked in twice with no clock-out between them',
256
+ 'hr.att_anomaly_missing_clock_out': 'The shift was never clocked out',
257
+ 'hr.att_anomaly_overtime_beyond_cap': 'Overtime past the annual cap, which is not counted',
258
+ 'hr.att_correct_this': 'Correct this',
259
+ 'hr.att_correction_add': 'Add a punch',
260
+ 'hr.att_correction_denied': 'Asking for a correction needs permission to clock in and out.',
261
+ 'hr.att_correction_desc':
262
+ 'Nothing changes until this is approved. Approving it records the punches below and voids what they replace — the originals stay on the record.',
263
+ 'hr.att_correction_direction': 'Punch',
264
+ 'hr.att_correction_error': 'The correction could not be sent',
265
+ 'hr.att_correction_for_punch': 'This replaces the punch “{punch}” at {time}.',
266
+ 'hr.att_correction_needs_one': 'A correction needs at least one punch.',
267
+ 'hr.att_correction_needs_reason': 'Say what happened.',
268
+ 'hr.att_correction_needs_time': 'Every punch needs a time.',
269
+ 'hr.att_correction_next_day': 'Next day',
270
+ 'hr.att_correction_punches': 'The punches you say belong on this day',
271
+ 'hr.att_correction_reason': 'What happened',
272
+ 'hr.att_correction_reason_hint': 'The approver reads this.',
273
+ 'hr.att_correction_remove': 'Remove this punch',
274
+ 'hr.att_correction_request': 'Request a correction',
275
+ 'hr.att_correction_sent': 'Sent for approval',
276
+ 'hr.att_correction_submit': 'Send for approval',
277
+ 'hr.att_correction_time': 'Time',
278
+ 'hr.att_correction_title': 'Request a correction',
279
+ 'hr.att_correction_waiting': 'Awaiting approval',
280
+ 'hr.att_correction_zone_hint': 'Times are read from the clock on your device.',
281
+ 'hr.att_corrections_error': 'Corrections you have asked for could not be loaded',
282
+ 'hr.att_corrections_pending': 'Corrections you have asked for',
283
+ 'hr.att_locked_no_change': 'This month is closed for payroll, so a correction cannot move its figures.',
284
+ 'hr.att_method_device': 'Terminal',
285
+ 'hr.att_method_import': 'Imported',
286
+ 'hr.att_method_kiosk': 'Kiosk',
287
+ 'hr.att_method_manual': 'Entered by hand',
288
+ 'hr.att_method_mobile': 'Phone',
289
+ 'hr.att_method_qr': 'QR code',
290
+ 'hr.att_method_web': 'Web',
52
291
  'hr.att_overtime': 'Overtime',
292
+ 'hr.att_punch_break_end': 'Break ended',
293
+ 'hr.att_punch_break_start': 'Break started',
294
+ 'hr.att_punch_in': 'Clocked in',
295
+ 'hr.att_punch_out': 'Clocked out',
296
+ 'hr.att_punch_skew': 'The device clock was {amount} out when this was recorded.',
297
+ 'hr.att_punch_void_reason': 'Voided: {reason}',
298
+ 'hr.att_punch_voided': 'Voided',
299
+ 'hr.att_punches': 'Punches',
300
+ 'hr.att_punches_error': 'The punches could not be loaded',
301
+ 'hr.att_punches_none': 'Nothing was recorded on this day',
302
+ 'hr.att_punches_none_desc': 'If you worked it, ask for the day to be corrected.',
303
+ 'hr.att_punches_stale': 'These punches may be out of date',
53
304
  'hr.att_scheduled': 'Scheduled',
54
305
  'hr.att_status_absent': 'Absent',
55
306
  'hr.att_status_holiday': 'Holiday',
@@ -58,6 +309,20 @@ export const en: Record<string, Message> = {
58
309
  'hr.att_status_pending': 'Needs review',
59
310
  'hr.att_status_present': 'Present',
60
311
  'hr.att_status_weekend': 'Weekend',
312
+ 'hr.att_trust_claimed': 'Time claimed by the device',
313
+ 'hr.att_trust_disputed': 'Time disputed',
314
+ 'hr.att_void': 'Void',
315
+ 'hr.att_void_body':
316
+ 'The punch “{punch}” at {time} stops counting towards this day, and the day is recomputed without it.',
317
+ 'hr.att_void_done': 'The punch was voided and the day recomputed',
318
+ 'hr.att_void_error': 'The punch could not be voided — nothing was changed',
319
+ 'hr.att_void_keep': 'Keep it',
320
+ 'hr.att_void_kept':
321
+ 'Nothing is deleted. The punch stays on the record with a correcting row beside it carrying your name and your reason, so anyone reading this timesheet later sees both.',
322
+ 'hr.att_void_reason_hint': 'Anyone who reads this timesheet sees it.',
323
+ 'hr.att_void_reason_label': 'Why this punch is wrong',
324
+ 'hr.att_void_reason_missing': 'Say why before voiding.',
325
+ 'hr.att_void_title': 'Void this punch?',
61
326
  'hr.att_worked': 'Worked',
62
327
  'hr.attendance_error': 'Your attendance could not be loaded',
63
328
  'hr.attendance_none': 'Nothing recorded yet',
@@ -222,6 +487,101 @@ export const en: Record<string, Message> = {
222
487
  'hr.capability_off_title': 'Turn {name} off?',
223
488
  'hr.capability_requires': 'Needs {name}',
224
489
  'hr.capability_write_error': 'That switch could not be changed. Nothing was saved.',
490
+ 'hr.chain_actions_for': 'Actions for {name}',
491
+ 'hr.chain_add_approver': 'Add an approver',
492
+ 'hr.chain_add_step': 'Add a step',
493
+ 'hr.chain_already_default': 'Already the one in use',
494
+ 'hr.chain_approvers': 'Approvers',
495
+ 'hr.chain_archive_default_warning':
496
+ "Nothing takes over: until you put another chain to work, every new request goes to the requester's manager alone.",
497
+ 'hr.chain_archive_inflight':
498
+ 'Every request already raised carries its own copy of this chain. Archiving cannot add a signature to one that is half-signed, or take one away — nothing in flight moves.',
499
+ 'hr.chain_archive_title': 'Archive {name}?',
500
+ 'hr.chain_archive_unused':
501
+ 'It disappears from this list. No new request was following it, so nothing else changes.',
502
+ 'hr.chain_archive_was_default':
503
+ 'It disappears from this list, and new {subject} requests stop following it.',
504
+ 'hr.chain_archived_toast': '{name} is archived',
505
+ 'hr.chain_auto_approve_warning': 'After the deadline this step is approved with nobody having read it.',
506
+ 'hr.chain_create_title': 'New approval chain',
507
+ 'hr.chain_created': '{name} is ready',
508
+ 'hr.chain_default_body': 'Every new {subject} request follows this chain from now on.',
509
+ 'hr.chain_default_inflight':
510
+ 'Requests already raised keep the chain they were raised with. Not one of them changes.',
511
+ 'hr.chain_default_replaces': '{name} stops being used and stays in the list.',
512
+ 'hr.chain_default_switch': 'Put this chain to work',
513
+ 'hr.chain_default_switch_hint': 'The chain every new request of this kind follows. Only one per kind.',
514
+ 'hr.chain_default_title': 'Put {name} to work?',
515
+ 'hr.chain_default_toast': '{name} is the one in use now',
516
+ 'hr.chain_desc':
517
+ 'Who signs off on what, and in what order. A request keeps the chain it was raised with, so nothing set here reaches something already in flight.',
518
+ 'hr.chain_edit_title': 'Edit approval chain',
519
+ 'hr.chain_error': 'The approval chains could not be loaded',
520
+ 'hr.chain_gone': 'This chain is gone — somebody archived it while you were editing.',
521
+ 'hr.chain_in_use': 'In use',
522
+ 'hr.chain_last_approver': 'A step needs at least one approver',
523
+ 'hr.chain_last_step': 'A chain needs at least one step',
524
+ 'hr.chain_make_default': 'Put this chain to work',
525
+ 'hr.chain_min': 'How many',
526
+ 'hr.chain_min_hint': 'Counted in people, not in the lines above: one line can stand for several.',
527
+ 'hr.chain_mode': 'How many must approve',
528
+ 'hr.chain_mode_all': 'Every one of them',
529
+ 'hr.chain_mode_any': 'Any one of them',
530
+ 'hr.chain_mode_hint': 'Whether one signature settles the step, or all of them.',
531
+ 'hr.chain_mode_quorum': 'A set number',
532
+ 'hr.chain_move_down': 'Move step {n} later',
533
+ 'hr.chain_move_up': 'Move step {n} earlier',
534
+ 'hr.chain_name': 'Name',
535
+ 'hr.chain_name_hint': 'What it is called in this list. "Leave over five days", say.',
536
+ 'hr.chain_needs_approver': 'Step {n} needs at least one approver.',
537
+ 'hr.chain_needs_min': 'Step {n} needs a number of approvers.',
538
+ 'hr.chain_needs_name': 'Give the chain a name.',
539
+ 'hr.chain_needs_step_name': 'Step {n} needs a name.',
540
+ 'hr.chain_needs_who': 'Step {n} has an approver with nobody chosen.',
541
+ 'hr.chain_new': 'New chain',
542
+ 'hr.chain_no_default_note':
543
+ "None of these is in use, so every new {subject} request still goes to the requester's manager alone.",
544
+ 'hr.chain_none': 'No chain for {subject}',
545
+ 'hr.chain_none_desc':
546
+ "Every request goes to the requester's manager. Build a chain to change who signs, and in what order.",
547
+ 'hr.chain_on_timeout': 'After the deadline',
548
+ 'hr.chain_perm_approval': 'Configure approvals',
549
+ 'hr.chain_perm_attendance': 'Manage attendance',
550
+ 'hr.chain_perm_leave': 'Manage time off',
551
+ 'hr.chain_perm_office': 'Manage offices',
552
+ 'hr.chain_perm_overtime': 'Manage overtime',
553
+ 'hr.chain_perm_person': 'Manage people',
554
+ 'hr.chain_remove_approver': 'Remove this approver',
555
+ 'hr.chain_remove_step': 'Remove this step',
556
+ 'hr.chain_resolved_hint': 'Worked out when a request is raised.',
557
+ 'hr.chain_save_error': 'The chain could not be saved',
558
+ 'hr.chain_saved': 'Saved',
559
+ 'hr.chain_section_desc':
560
+ 'One chain per kind is in use: the one marked in use. The others sit here until you put one of them to work.',
561
+ 'hr.chain_sla': 'Deadline',
562
+ 'hr.chain_sla_hint': 'Hours before the step is chased. Leave it empty and it waits.',
563
+ 'hr.chain_sla_none': 'It waits',
564
+ 'hr.chain_snapshot_note':
565
+ 'A request copies its chain the moment it is raised. What you change here applies to requests raised from now on; nothing already waiting for a signature moves.',
566
+ 'hr.chain_step_first': 'Manager',
567
+ 'hr.chain_step_n': 'Step {n}',
568
+ 'hr.chain_step_name': 'Step name',
569
+ 'hr.chain_steps': 'Steps',
570
+ 'hr.chain_subject_count': { one: '{count} chain', other: '{count} chains' },
571
+ 'hr.chain_subject_filter': 'Requests of this kind',
572
+ 'hr.chain_subject_hint': 'A chain cannot be moved to another kind later.',
573
+ 'hr.chain_subject_locked': 'Fixed when the chain was created.',
574
+ 'hr.chain_timeout_auto_approve': 'Approve it',
575
+ 'hr.chain_timeout_escalate': 'Pass it up',
576
+ 'hr.chain_timeout_remind': 'Send a reminder',
577
+ 'hr.chain_who': 'Who signs',
578
+ 'hr.chain_who_group': 'A group',
579
+ 'hr.chain_who_manager': 'Their manager',
580
+ 'hr.chain_who_manager_of_manager': "Their manager's manager",
581
+ 'hr.chain_who_office_head': 'Head of their office',
582
+ 'hr.chain_who_org_unit_head': 'Head of their department',
583
+ 'hr.chain_who_permission': 'Anybody with a permission',
584
+ 'hr.chain_who_person': 'A named person',
225
585
  'hr.choose': 'Select…',
226
586
  'hr.clock_error': 'The clock could not be loaded',
227
587
  'hr.clock_in': 'Clock in',
@@ -256,6 +616,36 @@ export const en: Record<string, Message> = {
256
616
  'hr.delegate_to_date': 'Until',
257
617
  'hr.department': 'Department',
258
618
  'hr.display_name': 'Name',
619
+ 'hr.doc_added_on': 'Added {date}',
620
+ 'hr.doc_attach': 'Attach a document',
621
+ 'hr.doc_attach_body': 'The file is stored in this workspace and listed against this person.',
622
+ 'hr.doc_attach_error': 'The document could not be attached',
623
+ 'hr.doc_attach_title': 'Attach a document to {name}',
624
+ 'hr.doc_attached': '{name} is attached',
625
+ 'hr.doc_expired': 'Expired',
626
+ 'hr.doc_expires': 'Expires',
627
+ 'hr.doc_expires_hint': 'Optional. An expiry is flagged before it passes.',
628
+ 'hr.doc_expires_on': 'Expires {date}',
629
+ 'hr.doc_expiring': 'Expires soon',
630
+ 'hr.doc_issued': 'Issued',
631
+ 'hr.doc_issued_on': 'Issued {date}',
632
+ 'hr.doc_kind': 'Kind',
633
+ 'hr.doc_kind_certificate': 'Certificate',
634
+ 'hr.doc_kind_contract': 'Contract',
635
+ 'hr.doc_kind_id': 'Identity document',
636
+ 'hr.doc_kind_other': 'Other',
637
+ 'hr.doc_kind_payslip': 'Payslip',
638
+ 'hr.doc_name': 'Name',
639
+ 'hr.doc_remove_body': "It comes off {person}'s record. The file itself stays in the workspace's files.",
640
+ 'hr.doc_remove_error': 'The document could not be removed — nothing changed',
641
+ 'hr.doc_remove_label': 'Remove {name}',
642
+ 'hr.doc_remove_title': 'Remove {name}?',
643
+ 'hr.doc_removed': '{name} is removed',
644
+ 'hr.doc_uploading': 'Uploading {name}…',
645
+ 'hr.docs_error': 'The documents could not be loaded',
646
+ 'hr.docs_none': 'No documents yet',
647
+ 'hr.docs_none_desc': 'Contracts, identity documents and certificates kept against this person.',
648
+ 'hr.docs_title': 'Documents',
259
649
  'hr.edit_person': 'Edit',
260
650
  'hr.employee_no': 'ID',
261
651
  'hr.employment': 'Job',
@@ -295,7 +685,65 @@ export const en: Record<string, Message> = {
295
685
  'hr.general_saved': 'Settings saved',
296
686
  'hr.headcount': { one: '{count} person', other: '{count} people' },
297
687
  'hr.hired_on': 'Started on',
688
+ 'hr.hours': { one: 'hour', other: 'hours' },
298
689
  'hr.hours_short': '{n}h',
690
+ 'hr.job_change': 'Record a change',
691
+ 'hr.job_change_backdated':
692
+ 'This date is in the past, which is allowed: the record will say the change took effect then.',
693
+ 'hr.job_change_body':
694
+ 'This closes the current period and opens a new one. Nothing already recorded is rewritten.',
695
+ 'hr.job_change_closes': 'The period that started {date} ends the day before.',
696
+ 'hr.job_change_error': 'The change could not be recorded — nothing moved',
697
+ 'hr.job_change_summary': "{name}'s record changes from {date}.",
698
+ 'hr.job_change_title': 'Record a change for {name}',
699
+ 'hr.job_change_too_early': 'The current period starts on {date}. A change cannot be dated before it.',
700
+ 'hr.job_changed': "{name}'s job record is updated",
701
+ 'hr.job_effective_from': 'Effective from',
702
+ 'hr.job_effective_hint':
703
+ 'Agreed in March, entered in May? Date it March — the record has to say when it happened.',
704
+ 'hr.job_error': 'The job record could not be loaded',
705
+ 'hr.job_fte': 'Full-time equivalent',
706
+ 'hr.job_fte_hint': '1 is a full week, 0.5 is half of one.',
707
+ 'hr.job_fte_invalid': 'A number between 0 and 1.',
708
+ 'hr.job_fte_value': '{fte} FTE',
709
+ 'hr.job_history': 'History',
710
+ 'hr.job_history_error': 'The history could not be loaded',
711
+ 'hr.job_history_none': 'Nothing recorded before the current period.',
712
+ 'hr.job_hours': 'Hours a week',
713
+ 'hr.job_hours_invalid': 'A number between 0 and 168.',
714
+ 'hr.job_hours_value': '{hours} hours a week',
715
+ 'hr.job_none': 'No job record',
716
+ 'hr.job_none_desc': 'Recording a change writes the first one.',
717
+ 'hr.job_not_set': 'Not set',
718
+ 'hr.job_period': 'In force',
719
+ 'hr.job_position': 'Position',
720
+ 'hr.job_reason': 'Reason',
721
+ 'hr.job_reason_hint': 'Optional. Shown beside the period in the history.',
722
+ 'hr.job_since': 'Since {date}',
723
+ 'hr.leave_adjust': 'Adjust',
724
+ 'hr.leave_adjust_add': 'Add',
725
+ 'hr.leave_adjust_amount_days': 'How many days',
726
+ 'hr.leave_adjust_amount_hours': 'How many hours',
727
+ 'hr.leave_adjust_amount_invalid': 'A number greater than zero. Which way it goes is set above.',
728
+ 'hr.leave_adjust_confirm_add': '{name}’s {type} goes up by {amount}, effective {date}.',
729
+ 'hr.leave_adjust_confirm_remove': '{name}’s {type} goes down by {amount}, effective {date}.',
730
+ 'hr.leave_adjust_desc':
731
+ 'Nothing already recorded changes. The adjustment is added to the ledger with your name and your reason on it.',
732
+ 'hr.leave_adjust_direction': 'Direction',
733
+ 'hr.leave_adjust_effective': 'Effective from',
734
+ 'hr.leave_adjust_effective_hint': 'This date decides which entitlement year the adjustment lands in.',
735
+ 'hr.leave_adjust_effective_invalid': 'Pick a date.',
736
+ 'hr.leave_adjust_error': 'The adjustment could not be recorded',
737
+ 'hr.leave_adjust_irreversible':
738
+ 'The ledger is append-only: this cannot be edited or removed. A mistake is corrected with a second adjustment, and both stay visible.',
739
+ 'hr.leave_adjust_other_year':
740
+ 'That date is in {year}, so it moves that entitlement year — not the one on screen.',
741
+ 'hr.leave_adjust_reason_hint':
742
+ 'This is the answer when somebody asks why the number moved, so write the one you would want to read: "carried over from the old system", not "fix".',
743
+ 'hr.leave_adjust_reason_required': 'Say why. An unexplained balance change is the one HR gets asked about.',
744
+ 'hr.leave_adjust_remove': 'Take away',
745
+ 'hr.leave_adjust_title': 'Adjust this balance by hand',
746
+ 'hr.leave_adjusted_toast': 'Balance adjusted',
299
747
  'hr.leave_after': { one: '{count} day left afterwards', other: '{count} days left afterwards' },
300
748
  'hr.leave_after_hours': { one: '{count} hour left afterwards', other: '{count} hours left afterwards' },
301
749
  'hr.leave_approved': 'Approved',
@@ -341,6 +789,33 @@ export const en: Record<string, Message> = {
341
789
  'hr.leave_icon_sick': 'Sick leave',
342
790
  'hr.leave_icon_special': 'Special',
343
791
  'hr.leave_icon_trip': 'Business trip',
792
+ 'hr.leave_kind_accrual': 'Accrued',
793
+ 'hr.leave_kind_adjustment': 'Adjusted by hand',
794
+ 'hr.leave_kind_carry_in': 'Carried in from last year',
795
+ 'hr.leave_kind_carry_out': 'Carried out to next year',
796
+ 'hr.leave_kind_consumption': 'Taken',
797
+ 'hr.leave_kind_encashment': 'Paid out',
798
+ 'hr.leave_kind_expiry': 'Expired',
799
+ 'hr.leave_kind_grant': 'Granted',
800
+ 'hr.leave_kind_reversal': 'Given back',
801
+ 'hr.leave_ledger': 'Movements',
802
+ 'hr.leave_ledger_after': 'Balance after',
803
+ 'hr.leave_ledger_balance': 'Balance now',
804
+ 'hr.leave_ledger_capped': {
805
+ one: 'The most recent movement only. Anything older is not shown.',
806
+ other: 'The {count} most recent movements. Anything older is not shown.',
807
+ },
808
+ 'hr.leave_ledger_change': 'Change',
809
+ 'hr.leave_ledger_error': 'The movements could not be loaded',
810
+ 'hr.leave_ledger_none': 'Nothing has moved this year',
811
+ 'hr.leave_ledger_none_desc': 'Every grant, booking and correction lands here, and none has yet.',
812
+ 'hr.leave_ledger_open': 'See how {name} adds up',
813
+ 'hr.leave_ledger_reversed': 'Reversed',
814
+ 'hr.leave_ledger_reverses': 'Undoes the entry of {date}',
815
+ 'hr.leave_ledger_title': 'How {name} adds up',
816
+ 'hr.leave_ledger_what': 'What happened',
817
+ 'hr.leave_ledger_when': 'When',
818
+ 'hr.leave_ledger_year': 'Entitlement year {year}',
344
819
  'hr.leave_none': 'No time off booked',
345
820
  'hr.leave_none_desc': 'When you book time off it will appear here.',
346
821
  'hr.leave_pending': 'Awaiting approval',
@@ -529,7 +1004,163 @@ export const en: Record<string, Message> = {
529
1004
  'hr.offices_timezones': 'Timezones',
530
1005
  'hr.offices_title': 'Offices',
531
1006
  'hr.on_break_since': 'On break since {time}',
1007
+ 'hr.org_archive_blocked_children': {
1008
+ one: 'Its {count} sub-department would be left with no parent. Move or archive it first.',
1009
+ other: 'Its {count} sub-departments would be left with no parent. Move or archive them first.',
1010
+ },
1011
+ 'hr.org_archive_blocked_people': {
1012
+ one: '{count} person still reports into it. Move them to another department first.',
1013
+ other: '{count} people still report into it. Move them to another department first.',
1014
+ },
1015
+ 'hr.org_archive_body': 'It leaves the chart and is no longer offered when a person is given a department.',
1016
+ 'hr.org_archive_error': 'The department could not be archived',
1017
+ 'hr.org_archive_note':
1018
+ 'Nothing is deleted and nothing already recorded changes: anyone who worked in it keeps that in their history. There is no way back from this screen.',
1019
+ 'hr.org_archive_title': 'Archive {name}?',
1020
+ 'hr.org_archived': '{name} is archived',
1021
+ 'hr.org_code': 'Code',
1022
+ 'hr.org_code_hint': 'Short, for exports and payroll. Optional.',
1023
+ 'hr.org_detail_label': 'Department detail',
1024
+ 'hr.org_detail_none': 'Nothing selected',
1025
+ 'hr.org_detail_none_desc': 'Pick a department to see who is in it and who heads it.',
1026
+ 'hr.org_error': 'The org chart could not be loaded',
1027
+ 'hr.org_error_desc': 'The departments did not come back. Try again.',
1028
+ 'hr.org_head': 'Head of department',
1029
+ 'hr.org_head_hint': 'Who runs it. Optional, and it changes nothing else.',
1030
+ 'hr.org_head_none': 'Nobody yet',
1031
+ 'hr.org_head_set': 'Set one',
1032
+ 'hr.org_head_unknown': 'Someone no longer in the directory',
1033
+ 'hr.org_here': 'In this department',
1034
+ 'hr.org_move': 'Move',
1035
+ 'hr.org_move_body':
1036
+ 'Everything under {name} moves with it. Nobody changes job, manager or hours — only where they sit in the chart.',
1037
+ 'hr.org_move_error': 'The department could not be moved',
1038
+ 'hr.org_move_people': { one: '{count} person moves with it.', other: '{count} people move with it.' },
1039
+ 'hr.org_move_people_none': 'Nobody works in it yet, so no record changes.',
1040
+ 'hr.org_move_same': 'It already sits there.',
1041
+ 'hr.org_move_title': 'Move {name}',
1042
+ 'hr.org_move_to': 'Move under',
1043
+ 'hr.org_move_units': { one: '{count} department moves.', other: '{count} departments move.' },
1044
+ 'hr.org_moved': '{name} moved',
1045
+ 'hr.org_no_match': 'No department matches',
1046
+ 'hr.org_no_match_desc': 'Try part of a name, or a code.',
1047
+ 'hr.org_none': 'No departments yet',
1048
+ 'hr.org_none_desc':
1049
+ 'A department is what a reporting line points at, and what makes a whole branch of the company searchable at once. Add the first one and the chart grows underneath it.',
1050
+ 'hr.org_parent': 'Sits under',
1051
+ 'hr.org_parent_fixed_hint':
1052
+ 'Moving it rewrites the path of everything beneath, so it has an action of its own.',
1053
+ 'hr.org_path': 'Where it sits',
1054
+ 'hr.org_position_actions': 'Actions for {title}',
1055
+ 'hr.org_position_add': 'Add position',
1056
+ 'hr.org_position_archive_body':
1057
+ 'It is no longer offered when a person is given a job. Everyone who already holds it keeps it, and nothing recorded changes.',
1058
+ 'hr.org_position_archive_error': 'The position could not be archived',
1059
+ 'hr.org_position_archive_title': 'Archive {title}?',
1060
+ 'hr.org_position_archived': '{title} is archived',
1061
+ 'hr.org_position_created': '{title} is ready',
1062
+ 'hr.org_position_edit_title': 'Edit {title}',
1063
+ 'hr.org_position_family': 'Job family',
1064
+ 'hr.org_position_family_hint': 'Groups related titles — Engineering, Sales. Optional.',
1065
+ 'hr.org_position_level': 'Level',
1066
+ 'hr.org_position_level_hint': 'Where it sits on a career ladder, like L4 or Senior. Optional.',
1067
+ 'hr.org_position_new': 'New position',
1068
+ 'hr.org_position_save_error': 'The position could not be saved',
1069
+ 'hr.org_position_saved': 'Position saved',
1070
+ 'hr.org_position_title': 'Title',
1071
+ 'hr.org_positions_error': 'Positions could not be loaded',
1072
+ 'hr.org_positions_none': 'No positions yet',
1073
+ 'hr.org_positions_none_desc':
1074
+ 'A position is a job the company hires for, not a person. One position can be held by nobody, or by twenty.',
1075
+ 'hr.org_root': 'Top level',
1076
+ 'hr.org_search_label': 'Search departments by name or code',
1077
+ 'hr.org_search_placeholder': 'Search departments',
1078
+ 'hr.org_see_people': { one: 'See the {count} person here', other: 'See the {count} people here' },
1079
+ 'hr.org_stat_levels': 'Levels deep',
1080
+ 'hr.org_stat_people': 'People placed',
1081
+ 'hr.org_stat_positions': 'Positions',
1082
+ 'hr.org_stat_units': 'Departments',
1083
+ 'hr.org_subunits': 'Sub-departments',
1084
+ 'hr.org_subunits_none': 'Nothing sits under it.',
1085
+ 'hr.org_tab_chart': 'Org chart',
1086
+ 'hr.org_tab_positions': 'Positions',
1087
+ 'hr.org_title': 'Organisation',
1088
+ 'hr.org_unit_add': 'Add department',
1089
+ 'hr.org_unit_add_child': 'Add a sub-department',
1090
+ 'hr.org_unit_created': '{name} is ready',
1091
+ 'hr.org_unit_edit_title': 'Edit {name}',
1092
+ 'hr.org_unit_new': 'New department',
1093
+ 'hr.org_unit_new_under': 'New department under {name}',
1094
+ 'hr.org_unit_save_error': 'The department could not be saved',
1095
+ 'hr.org_unit_saved': 'Department saved',
1096
+ 'hr.org_with_below': 'With sub-departments',
532
1097
  'hr.people_error': 'The directory could not be loaded',
1098
+ 'hr.periods_attendance': 'Attendance',
1099
+ 'hr.periods_attendance_desc':
1100
+ 'Months closed for timekeeping rather than payroll. Either kind closes a month the same way — the kind records why.',
1101
+ 'hr.periods_closed_on': 'Closed {date}',
1102
+ 'hr.periods_create_desc': 'A period is created open. Nothing is frozen until you close it.',
1103
+ 'hr.periods_create_error': 'The period could not be created',
1104
+ 'hr.periods_create_title': 'New period',
1105
+ 'hr.periods_created': '{range} added, and open until you close it',
1106
+ 'hr.periods_desc':
1107
+ 'Close a month so a filed payroll cannot move underneath it. Reopening one lets it move again.',
1108
+ 'hr.periods_ends': 'Last day',
1109
+ 'hr.periods_entity_hint':
1110
+ 'Closes only the people this entity employed on those days. Leave it on the whole workspace to close everybody.',
1111
+ 'hr.periods_error': 'The periods could not be loaded',
1112
+ 'hr.periods_kind': 'Kind',
1113
+ 'hr.periods_kind_hint': 'What the month is closed for. Either kind closes the same days.',
1114
+ 'hr.periods_lock': 'Close',
1115
+ 'hr.periods_lock_adjustments':
1116
+ 'A policy change dated inside it becomes an adjustment in an open period instead. You can reopen the period later, with a reason.',
1117
+ 'hr.periods_lock_body': 'Every recorded day inside this period stops being recomputable, for {scope}.',
1118
+ 'hr.periods_lock_confirm': 'Close the period',
1119
+ 'hr.periods_lock_error': 'The period could not be closed',
1120
+ 'hr.periods_lock_note': 'Note',
1121
+ 'hr.periods_lock_note_hint': 'Optional. Kept on the period — say what was filed.',
1122
+ 'hr.periods_lock_title': 'Close {range}?',
1123
+ 'hr.periods_locked': 'Closed',
1124
+ 'hr.periods_locked_none': 'Closed. There were no recorded days inside it yet.',
1125
+ 'hr.periods_locked_toast': {
1126
+ one: 'Closed. {count} day can no longer be recomputed.',
1127
+ other: 'Closed. {count} days can no longer be recomputed.',
1128
+ },
1129
+ 'hr.periods_new': 'New period',
1130
+ 'hr.periods_none': 'No periods yet',
1131
+ 'hr.periods_none_desc':
1132
+ 'Create one for the month you want to freeze, then close it so the days inside stop being recomputed.',
1133
+ 'hr.periods_open': 'Open',
1134
+ 'hr.periods_overlap':
1135
+ '{range} already covers some of these days. Two periods of one kind cannot overlap for the same employer.',
1136
+ 'hr.periods_payroll': 'Payroll',
1137
+ 'hr.periods_payroll_desc': 'The months payroll has been filed for.',
1138
+ 'hr.periods_range': 'Period',
1139
+ 'hr.periods_range_invalid': 'The last day is before the first day.',
1140
+ 'hr.periods_read_only':
1141
+ 'You can read the periods here. Closing and reopening one needs permission to manage payroll periods.',
1142
+ 'hr.periods_reopen': 'Reopen',
1143
+ 'hr.periods_reopen_body': 'The days inside become recomputable again, for {scope}.',
1144
+ 'hr.periods_reopen_error': 'The period could not be reopened',
1145
+ 'hr.periods_reopen_filed':
1146
+ 'A payroll already filed against this month can move underneath the figures somebody has sent out.',
1147
+ 'hr.periods_reopen_keep': 'Keep it closed',
1148
+ 'hr.periods_reopen_overlap':
1149
+ 'Another closed period still covers some of these dates, so those days stay closed:',
1150
+ 'hr.periods_reopen_reason': 'Why you are reopening it',
1151
+ 'hr.periods_reopen_reason_hint': 'Kept on the period, so this list says why it was reopened.',
1152
+ 'hr.periods_reopen_reason_required': 'Give a reason before reopening.',
1153
+ 'hr.periods_reopen_title': 'Reopen {range}?',
1154
+ 'hr.periods_reopened_none': 'Reopened. No recorded day changed.',
1155
+ 'hr.periods_reopened_toast': {
1156
+ one: 'Reopened. {count} day can be recomputed again.',
1157
+ other: 'Reopened. {count} days can be recomputed again.',
1158
+ },
1159
+ 'hr.periods_scope': 'Applies to',
1160
+ 'hr.periods_scope_all': 'The whole workspace',
1161
+ 'hr.periods_scope_entity': 'One legal entity',
1162
+ 'hr.periods_stale': 'This list may be out of date',
1163
+ 'hr.periods_starts': 'First day',
533
1164
  'hr.person_create_error': 'This person could not be added — nothing was saved',
534
1165
  'hr.person_created': '{name} is in the directory',
535
1166
  'hr.person_error': 'This person could not be loaded',
@@ -637,6 +1268,27 @@ export const en: Record<string, Message> = {
637
1268
  'You can read the schedules here, but changing them needs permission to manage attendance.',
638
1269
  'hr.schedules_show_archived': 'Show archived',
639
1270
  'hr.search_people': 'Search people',
1271
+ 'hr.sensitive_add_contact': 'Add an emergency contact',
1272
+ 'hr.sensitive_birth_date': 'Date of birth',
1273
+ 'hr.sensitive_contact_hint': 'Who to call if something happens at work.',
1274
+ 'hr.sensitive_contact_name': 'Emergency contact',
1275
+ 'hr.sensitive_contact_partial': 'A name and a number, or neither.',
1276
+ 'hr.sensitive_edit_body': 'Stored encrypted. The record says these changed, never what they say.',
1277
+ 'hr.sensitive_edit_title': 'Personal details for {name}',
1278
+ 'hr.sensitive_emergency': 'In an emergency, call',
1279
+ 'hr.sensitive_emergency_none': 'No emergency contact recorded',
1280
+ 'hr.sensitive_error': 'These details could not be loaded',
1281
+ 'hr.sensitive_hidden':
1282
+ 'Emergency contact, date of birth, identity and bank details. Shown when you open this section.',
1283
+ 'hr.sensitive_iban': 'IBAN',
1284
+ 'hr.sensitive_national_id': 'National ID',
1285
+ 'hr.sensitive_none': 'Nothing recorded',
1286
+ 'hr.sensitive_none_desc': 'Start with an emergency contact — it is the one somebody needs in a hurry.',
1287
+ 'hr.sensitive_relationship': 'Relationship',
1288
+ 'hr.sensitive_save_error': 'These details could not be saved — nothing changed',
1289
+ 'hr.sensitive_title': 'Personal and emergency contact',
1290
+ 'hr.settings_accrual': 'Accrual',
1291
+ 'hr.settings_approvals': 'Approvals',
640
1292
  'hr.settings_calendars': 'Holidays',
641
1293
  'hr.settings_capabilities': 'Features',
642
1294
  'hr.settings_general': 'General',
@@ -644,6 +1296,7 @@ export const en: Record<string, Message> = {
644
1296
  'hr.settings_leave': 'Time off',
645
1297
  'hr.settings_not_built': 'The API for this is complete; the editing screen is not built yet.',
646
1298
  'hr.settings_offices': 'Offices',
1299
+ 'hr.settings_periods': 'Periods',
647
1300
  'hr.settings_schedules': 'Schedules',
648
1301
  'hr.started': 'Started',
649
1302
  'hr.status': 'Status',
@@ -672,6 +1325,258 @@ export const en: Record<string, Message> = {
672
1325
  export type HrMessageKey = keyof typeof en
673
1326
 
674
1327
  export const ar: Record<string, Message> = {
1328
+ 'hr.accr_actions_for': 'إجراءات {name}',
1329
+ 'hr.accr_already_archived': 'مؤرشفة بالفعل',
1330
+ 'hr.accr_archive_assigned': {
1331
+ zero: 'هي مسنَدة إلى {count} هدف، وتتوقف تلك الإسنادات عن السريان.',
1332
+ one: 'هي مسنَدة إلى هدف واحد، ويتوقف ذلك الإسناد عن السريان.',
1333
+ two: 'هي مسنَدة إلى هدفين، ويتوقف الإسنادان عن السريان.',
1334
+ few: 'هي مسنَدة إلى {count} أهداف، وتتوقف تلك الإسنادات عن السريان.',
1335
+ many: 'هي مسنَدة إلى {count} هدفًا، وتتوقف تلك الإسنادات عن السريان.',
1336
+ other: 'هي مسنَدة إلى {count} هدف، وتتوقف تلك الإسنادات عن السريان.',
1337
+ },
1338
+ 'hr.accr_archive_body': 'لن تنطبق على أحد من الآن فصاعدًا.',
1339
+ 'hr.accr_archive_error': 'تعذّرت أرشفة السياسة',
1340
+ 'hr.accr_archive_keeps':
1341
+ 'تُؤرشف ولا تُحذف أبدًا: الإجازة المضافة سابقًا تحمل اسم هذه السياسة، وأي حركة اختفت سياستها تصير رقمًا لا يستطيع أحد تفسيره.',
1342
+ 'hr.accr_archive_title': 'أرشفة «{name}»؟',
1343
+ 'hr.accr_archived': 'أُرشفت «{name}»',
1344
+ 'hr.accr_assign': 'إسناد',
1345
+ 'hr.accr_assign_desc': 'اختر السياسة والدرجة التي تجلس عليها. الدرجة الأقرب إلى الشخص هي التي تُطبَّق عليه.',
1346
+ 'hr.accr_assign_error': 'تعذّر حفظ الإسناد',
1347
+ 'hr.accr_assign_policy': 'السياسة',
1348
+ 'hr.accr_assign_policy_pick': 'اختر سياسة',
1349
+ 'hr.accr_assign_rung': 'تنطبق على',
1350
+ 'hr.accr_assign_subject': 'أي {rung}',
1351
+ 'hr.accr_assign_title': 'إسناد سياسة',
1352
+ 'hr.accr_assign_to_hint': 'اتركه فارغًا لتظل مُطبَّقة.',
1353
+ 'hr.accr_assigned': '«{name}» صارت تنطبق على {subject}',
1354
+ 'hr.accr_badge_archived': 'مؤرشفة',
1355
+ 'hr.accr_beaten_by': 'ما زالت هذه تتقدّم عليها:',
1356
+ 'hr.accr_beats_everything': 'لا شيء يتقدّم على هذه الدرجة — هي التي تقرّر للشخص الذي تسمّيه.',
1357
+ 'hr.accr_col_applies': 'تنطبق على',
1358
+ 'hr.accr_col_earns': 'ما تمنحه',
1359
+ 'hr.accr_col_policy': 'السياسة',
1360
+ 'hr.accr_col_when': 'متى',
1361
+ 'hr.accr_config_unreadable': 'تعذّرت قراءة إعدادات هذه السياسة',
1362
+ 'hr.accr_copy_of': '{name} (نسخة)',
1363
+ 'hr.accr_create_title': 'سياسة استحقاق جديدة',
1364
+ 'hr.accr_created': 'أُنشئت «{name}»',
1365
+ 'hr.accr_day_length': 'طول يوم الإجازة',
1366
+ 'hr.accr_day_length_hint':
1367
+ 'بالدقائق — {length}. تُحفظ الأرصدة بالدقائق كي تبقى أنصاف الأيام والإجازة الساعية دقيقة.',
1368
+ 'hr.accr_days_field': 'الأيام التي تمنحها سنة كاملة',
1369
+ 'hr.accr_days_field_hint': 'قبل درجات الأقدمية والاحتساب النسبي وساعات الدوام الجزئي.',
1370
+ 'hr.accr_days_per_year': {
1371
+ zero: '{count} يوم سنويًا',
1372
+ one: 'يوم واحد سنويًا',
1373
+ two: 'يومان سنويًا',
1374
+ few: '{count} أيام سنويًا',
1375
+ many: '{count} يومًا سنويًا',
1376
+ other: '{count} يوم سنويًا',
1377
+ },
1378
+ 'hr.accr_desc':
1379
+ 'كيف تُكتسب الإجازة مع الوقت: السياسات، ومن تنطبق عليه كل واحدة، وما الذي ستضيفه عملية التشغيل التالية.',
1380
+ 'hr.accr_duplicate': 'نسخ',
1381
+ 'hr.accr_edit_retroactive':
1382
+ 'التحرير يعيد كتابة ما كان صحيحًا في الماضي، فيصعب تفسير كل ما أُضيف بناءً عليه. لتغيير القواعد اعتبارًا من تاريخ معيّن، انسخ هذه السياسة وامنح النسخة تاريخ بدء لاحقًا.',
1383
+ 'hr.accr_edit_title': 'تحرير سياسة الاستحقاق',
1384
+ 'hr.accr_effective_from': 'سارية من',
1385
+ 'hr.accr_effective_from_hint': 'لا يمكن تغييره لاحقًا — تاريخ بدء جديد يعني سياسة جديدة.',
1386
+ 'hr.accr_effective_to': 'سارية حتى',
1387
+ 'hr.accr_effective_to_hint': 'اتركه فارغًا لتظل بلا نهاية.',
1388
+ 'hr.accr_error': 'تعذّر تحميل سياسات الاستحقاق',
1389
+ 'hr.accr_error_desc': 'لم يستجب الخادم. لم يتغيّر شيء.',
1390
+ 'hr.accr_error_from': 'اختر تاريخ بدء السريان.',
1391
+ 'hr.accr_error_leave_type': 'اختر نوع الإجازة الذي تُضاف إليه.',
1392
+ 'hr.accr_error_name': 'امنح السياسة اسمًا.',
1393
+ 'hr.accr_error_pick_policy': 'اختر سياسة.',
1394
+ 'hr.accr_error_pick_subject': 'اختر من تنطبق عليه.',
1395
+ 'hr.accr_error_tier_clash': 'درجتان تبدآن عند العدد نفسه من السنوات.',
1396
+ 'hr.accr_error_to_before_from': 'تاريخ الانتهاء قبل تاريخ البدء.',
1397
+ 'hr.accr_freq_anniversary': 'في كل ذكرى سنوية للتعيين',
1398
+ 'hr.accr_freq_anniversary_desc':
1399
+ 'تُضاف سنة كاملة في كل ذكرى لتاريخ التعيين، استحقاقًا عن المدة المنقضية. ولا يُضاف شيء في سنة الالتحاق.',
1400
+ 'hr.accr_freq_annual': 'مرة في السنة',
1401
+ 'hr.accr_freq_annual_desc':
1402
+ 'تُضاف السنة كاملة في 1 يناير — أو في تاريخ التعيين لمن التحق لاحقًا، فينال حصته من بقية السنة.',
1403
+ 'hr.accr_freq_monthly': 'كل شهر',
1404
+ 'hr.accr_freq_monthly_desc':
1405
+ 'يُضاف جزء من اثني عشر جزءًا من السنة في نهاية كل شهر، بالتناسب مع الأيام التي كان الشخص موظّفًا فيها فعليًا.',
1406
+ 'hr.accr_freq_per_hour': 'عن كل ساعة عمل',
1407
+ 'hr.accr_freq_per_hour_desc':
1408
+ 'حصة الفترة من السنة، مضروبة في نسبة الساعات المشتغلة فعليًا إلى الساعات المجدولة. تُقرأ من سجل الحضور.',
1409
+ 'hr.accr_frequency': 'متى تظهر الإجازة',
1410
+ 'hr.accr_from_date': 'من {date}',
1411
+ 'hr.accr_job_note':
1412
+ 'تضيف مهمة تلقائية الشهرَ السابق في اليوم الأول من الشهر بتوقيت كل مكتب، لذلك لا تحتاج معظم مساحات العمل إلى هذا أصلًا. والتشغيل اليدوي يفعل الشيء نفسه تمامًا، والفترة المضافة سابقًا لا تُضاف مرتين.',
1413
+ 'hr.accr_ladder': 'على من تنطبق كل سياسة',
1414
+ 'hr.accr_ladder_desc':
1415
+ 'الأقرب هو الذي يُطبَّق. السياسة المسنَدة إلى شخص تتقدّم على سياسة مكتبه، وتلك تتقدّم على كيانه القانوني، ثم قسمه، ثم وظيفته، وأخيرًا مساحة العمل كلها.',
1416
+ 'hr.accr_ladder_error': 'تعذّر تحميل الإسنادات',
1417
+ 'hr.accr_ladder_needs_policy': 'أنشئ سياسة أولًا؛ لا يوجد ما يُسنَد بعد.',
1418
+ 'hr.accr_ladder_none': 'لا توجد إسنادات بعد',
1419
+ 'hr.accr_ladder_none_desc': 'ما لم تُسنَد سياسة إلى أحد، لا يستحق أحد شيئًا — تعمل المهمة ولا تضيف شيئًا.',
1420
+ 'hr.accr_leave_type': 'نوع الإجازة',
1421
+ 'hr.accr_leave_type_hint': 'إلى أي رصيد تُضاف الأيام.',
1422
+ 'hr.accr_leave_type_pick': 'اختر نوع إجازة',
1423
+ 'hr.accr_name': 'الاسم',
1424
+ 'hr.accr_name_hint':
1425
+ 'الاسم الذي تستخدمه الموارد البشرية — «الإجازة السنوية في تركيا»، «دوام كامل، من 2026».',
1426
+ 'hr.accr_needs_attendance':
1427
+ 'الحضور معطّل في مساحة العمل هذه، فلا ساعات مجدولة لأحد — لن تضيف هذه السياسة شيئًا.',
1428
+ 'hr.accr_new': 'سياسة جديدة',
1429
+ 'hr.accr_no_default':
1430
+ 'لا توجد سياسة على مستوى مساحة العمل، لذلك لا يستحق شيئًا كل من لا تنطبق عليه سياسة أقرب.',
1431
+ 'hr.accr_no_leave_types': 'لا توجد أنواع إجازات بعد، والاستحقاق يحتاج نوعًا يُضاف إليه.',
1432
+ 'hr.accr_nobody': 'لا أحد',
1433
+ 'hr.accr_none': 'لا توجد سياسات استحقاق بعد',
1434
+ 'hr.accr_none_desc':
1435
+ 'تُمنح الإجازة يدويًا إلى أن توجد سياسة. السياسة تجعلها تُكتسب شهرًا بشهر أو مرة في السنة، ويسجّل الدفتر مصدر كل يوم.',
1436
+ 'hr.accr_policies': 'سياسات الاستحقاق',
1437
+ 'hr.accr_policies_desc':
1438
+ 'تحدّد السياسة كم يمنح العام من أيام، ومتى تظهر، وكيف تُقرَّب. ولا يستحق أحد شيئًا قبل أن تُسنَد إليه سياسة.',
1439
+ 'hr.accr_preview_error': 'تعذّر حساب المعاينة',
1440
+ 'hr.accr_readonly': 'يمكنك قراءة هذه الصفحة، لكن تغيير أي شيء يحتاج صلاحية إدارة السياسات.',
1441
+ 'hr.accr_round_day': 'يوم كامل',
1442
+ 'hr.accr_round_exact': 'بلا تقريب',
1443
+ 'hr.accr_round_half_day': 'نصف يوم',
1444
+ 'hr.accr_round_minutes': {
1445
+ zero: '{count} دقيقة',
1446
+ one: 'دقيقة واحدة',
1447
+ two: 'دقيقتان',
1448
+ few: '{count} دقائق',
1449
+ many: '{count} دقيقة',
1450
+ other: '{count} دقيقة',
1451
+ },
1452
+ 'hr.accr_round_short': 'مقرَّبة إلى {step}',
1453
+ 'hr.accr_rounding': 'التقريب',
1454
+ 'hr.accr_rounding_hint': 'يُقرَّب كل استحقاق إلى هذه الخطوة.',
1455
+ 'hr.accr_run_already': 'أُضيفت سابقًا',
1456
+ 'hr.accr_run_credit': {
1457
+ zero: 'إضافة لـ {count} شخص',
1458
+ one: 'إضافة لشخص واحد',
1459
+ two: 'إضافة لشخصين',
1460
+ few: 'إضافة لـ {count} أشخاص',
1461
+ many: 'إضافة لـ {count} شخصًا',
1462
+ other: 'إضافة لـ {count} شخص',
1463
+ },
1464
+ 'hr.accr_run_desc': 'اقرأ الأرقام أولًا. لا يُكتب شيء قبل أن تضيفها.',
1465
+ 'hr.accr_run_done': {
1466
+ zero: 'أُضيفت لـ {count} شخص',
1467
+ one: 'أُضيفت لشخص واحد',
1468
+ two: 'أُضيفت لشخصين',
1469
+ few: 'أُضيفت لـ {count} أشخاص',
1470
+ many: 'أُضيفت لـ {count} شخصًا',
1471
+ other: 'أُضيفت لـ {count} شخص',
1472
+ },
1473
+ 'hr.accr_run_error': 'فشل تشغيل الاستحقاق',
1474
+ 'hr.accr_run_from': 'الفترة من',
1475
+ 'hr.accr_run_idempotent': {
1476
+ zero: '{count} صف أُضيف بالفعل لهذه الفترة وسيُترك كما هو.',
1477
+ one: 'صف واحد أُضيف بالفعل لهذه الفترة وسيُترك كما هو.',
1478
+ two: 'صفان أُضيفا بالفعل لهذه الفترة وسيُتركان كما هما.',
1479
+ few: '{count} صفوف أُضيفت بالفعل لهذه الفترة وستُترك كما هي.',
1480
+ many: '{count} صفًا أُضيفت بالفعل لهذه الفترة وستُترك كما هي.',
1481
+ other: '{count} صف أُضيف بالفعل لهذه الفترة وسيُترك كما هو.',
1482
+ },
1483
+ 'hr.accr_run_more': {
1484
+ zero: 'و{count} أخرى',
1485
+ one: 'وواحد آخر',
1486
+ two: 'واثنان آخران',
1487
+ few: 'و{count} أخرى',
1488
+ many: 'و{count} أخرى',
1489
+ other: 'و{count} أخرى',
1490
+ },
1491
+ 'hr.accr_run_needs_policy': 'لا توجد سياسة لتشغيلها بعد.',
1492
+ 'hr.accr_run_nothing': 'لا شيء يُضاف',
1493
+ 'hr.accr_run_nothing_desc':
1494
+ 'لا تمنح أي سياسة شيئًا لهذه الفترة. السياسة السنوية أو سياسة الذكرى لا تمنح شيئًا في الأشهر التي لا يقع فيها تاريخ المنح.',
1495
+ 'hr.accr_run_open': 'معاينة التشغيل',
1496
+ 'hr.accr_run_people': 'ستُضاف لهم',
1497
+ 'hr.accr_run_rows': 'كل من في هذه الفترة',
1498
+ 'hr.accr_run_section': 'الإضافة إلى الدفتر',
1499
+ 'hr.accr_run_section_desc': 'ما ستضيفه عملية التشغيل إلى رصيد كل شخص، وعملية التشغيل نفسها.',
1500
+ 'hr.accr_run_skipped': 'المتخطَّون',
1501
+ 'hr.accr_run_title': 'تشغيل الاستحقاق',
1502
+ 'hr.accr_run_to': 'الفترة إلى',
1503
+ 'hr.accr_run_total': 'الإجمالي',
1504
+ 'hr.accr_run_writes':
1505
+ 'الإضافة تُكتب في دفتر الإجازات. ولا يمكن التراجع عنها من هنا — تُصحَّح الإضافة الخاطئة بتسوية إجازة.',
1506
+ 'hr.accr_rung_empty': 'لا شيء على هذه الدرجة.',
1507
+ 'hr.accr_rung_legal_entity': 'الكيان القانوني',
1508
+ 'hr.accr_rung_legal_entity_hint': 'كل من توظّفه هذه الشركة. وهنا تُوضع عادةً أحكام كل دولة.',
1509
+ 'hr.accr_rung_needs_entities': 'الكيانات القانونية معطّلة في مساحة العمل هذه، فلا يوجد ما يُختار.',
1510
+ 'hr.accr_rung_needs_offices': 'المكاتب معطّلة في مساحة العمل هذه، فلا يوجد ما يُختار.',
1511
+ 'hr.accr_rung_needs_org': 'لا تملك صلاحية قراءة الهيكل التنظيمي، لذلك لا يمكن اختيار هذا.',
1512
+ 'hr.accr_rung_needs_people': 'لا تملك صلاحية قراءة دليل الأشخاص، لذلك لا يمكن اختيار شخص هنا.',
1513
+ 'hr.accr_rung_office': 'المكتب',
1514
+ 'hr.accr_rung_office_hint': 'كل من مكتبه الأساسي هو هذا.',
1515
+ 'hr.accr_rung_org_unit': 'القسم',
1516
+ 'hr.accr_rung_org_unit_hint': 'كل من في هذا القسم، بما في ذلك الفرق التابعة له.',
1517
+ 'hr.accr_rung_person': 'شخص',
1518
+ 'hr.accr_rung_person_hint': 'تتقدّم على كل ما عداها. للعقد الوحيد الذي يختلف عن البقية.',
1519
+ 'hr.accr_rung_position': 'الوظيفة',
1520
+ 'hr.accr_rung_position_hint': 'كل من يشغل هذه الوظيفة.',
1521
+ 'hr.accr_rung_taken':
1522
+ '«{name}» تنطبق بالفعل على {subject} من هذه الدرجة. وجود سياستين هنا التباس، ما لم تفصل بينهما التواريخ.',
1523
+ 'hr.accr_rung_workspace': 'مساحة العمل',
1524
+ 'hr.accr_rung_workspace_hint': 'الخيار الأخير لكل من لا تنطبق عليه سياسة أقرب.',
1525
+ 'hr.accr_save_error': 'تعذّر حفظ السياسة',
1526
+ 'hr.accr_saved': 'حُفظت السياسة',
1527
+ 'hr.accr_show_archived': 'إظهار المؤرشفة',
1528
+ 'hr.accr_stale': 'قد تكون هذه الأرقام قديمة.',
1529
+ 'hr.accr_stat_assignments': 'الإسنادات',
1530
+ 'hr.accr_stat_default': 'افتراضي مساحة العمل',
1531
+ 'hr.accr_stat_default_none': 'لا شيء',
1532
+ 'hr.accr_stat_default_none_note': 'من لا تنطبق عليه سياسة أقرب لا يستحق شيئًا.',
1533
+ 'hr.accr_stat_policies': 'السياسات',
1534
+ 'hr.accr_subject_loading': 'جارٍ التحميل…',
1535
+ 'hr.accr_subject_missing': 'بلا هدف',
1536
+ 'hr.accr_subject_none': 'لا توجد سجلات {rung} للاختيار منها بعد.',
1537
+ 'hr.accr_subject_pick': 'اختر واحدًا',
1538
+ 'hr.accr_subject_unknown': 'غير موجود في الدليل ({id})',
1539
+ 'hr.accr_tier_add': 'إضافة درجة',
1540
+ 'hr.accr_tier_after': 'بعد سنوات الخدمة',
1541
+ 'hr.accr_tier_days': 'أيام في السنة',
1542
+ 'hr.accr_tier_remove': 'إزالة الدرجة عند {years} سنوات خدمة',
1543
+ 'hr.accr_tiers': 'درجات الأقدمية',
1544
+ 'hr.accr_tiers_count': {
1545
+ zero: '{count} درجة أقدمية',
1546
+ one: 'درجة أقدمية واحدة',
1547
+ two: 'درجتا أقدمية',
1548
+ few: '{count} درجات أقدمية',
1549
+ many: '{count} درجة أقدمية',
1550
+ other: '{count} درجة أقدمية',
1551
+ },
1552
+ 'hr.accr_tiers_hint': 'تُطبَّق أعلى درجة بلغها الشخص؛ ولا يهم الترتيب الذي تكتبها به.',
1553
+ 'hr.accr_tiers_none': {
1554
+ zero: 'يستحق الجميع {count} يوم سنويًا مهما طالت مدة خدمتهم.',
1555
+ one: 'يستحق الجميع يومًا واحدًا سنويًا مهما طالت مدة خدمتهم.',
1556
+ two: 'يستحق الجميع يومين سنويًا مهما طالت مدة خدمتهم.',
1557
+ few: 'يستحق الجميع {count} أيام سنويًا مهما طالت مدة خدمتهم.',
1558
+ many: 'يستحق الجميع {count} يومًا سنويًا مهما طالت مدة خدمتهم.',
1559
+ other: 'يستحق الجميع {count} يوم سنويًا مهما طالت مدة خدمتهم.',
1560
+ },
1561
+ 'hr.accr_unassign': 'إزالة',
1562
+ 'hr.accr_unassign_body': 'لن تنطبق «{name}» من الآن فصاعدًا.',
1563
+ 'hr.accr_unassign_error': 'تعذّرت إزالة الإسناد',
1564
+ 'hr.accr_unassign_falls_back': 'سينتقلون إلى الدرجة التالية التي تحمل سياسة — «{name}» على مساحة العمل.',
1565
+ 'hr.accr_unassign_keeps': 'تبقى الإجازة المضافة سابقًا في الدفتر؛ لا يتغيّر إلا التشغيل المستقبلي.',
1566
+ 'hr.accr_unassign_label': 'إيقاف انطباق «{name}» على {subject}',
1567
+ 'hr.accr_unassign_no_fallback': 'لا توجد سياسة على أي درجة أدنى من هذه، لذلك يتوقف الاستحقاق تمامًا.',
1568
+ 'hr.accr_unassign_title': 'إيقاف الاستحقاق لـ {subject}؟',
1569
+ 'hr.accr_unassigned': 'لم تعد «{name}» تنطبق على {subject}',
1570
+ 'hr.accr_waiting': 'فترة الانتظار',
1571
+ 'hr.accr_waiting_hint': 'عدد الأشهر بعد الالتحاق قبل بدء الاستحقاق. القيمة 0 تبدأ فورًا.',
1572
+ 'hr.accr_waiting_short': {
1573
+ zero: '{count} شهر انتظار',
1574
+ one: 'شهر انتظار واحد',
1575
+ two: 'شهرا انتظار',
1576
+ few: '{count} أشهر انتظار',
1577
+ many: '{count} شهرًا انتظار',
1578
+ other: '{count} شهر انتظار',
1579
+ },
675
1580
  'hr.add_person': 'إضافة شخص',
676
1581
  'hr.add_person_desc': 'يكفي الاسم وتاريخ البدء. يُنشأ رقم وظيفي إن تركته فارغًا.',
677
1582
  'hr.approval_comment': 'تعليق',
@@ -713,7 +1618,68 @@ export const ar: Record<string, Message> = {
713
1618
  'hr.approve_confirm_leave': 'تُخصم الأيام من رصيده ويظهر في تقويم الفريق كغائب.',
714
1619
  'hr.approve_confirm_next': 'ليست هذه الخطوة الأخيرة — ينتقل الطلب إلى المُوافِق التالي.',
715
1620
  'hr.approve_confirm_title': 'الموافقة على هذا الطلب؟',
1621
+ 'hr.att_anomalies': 'يحتاج إلى مراجعة',
1622
+ 'hr.att_anomalies_count': {
1623
+ zero: 'لا شيء للمراجعة',
1624
+ one: 'أمر واحد للمراجعة',
1625
+ two: 'أمران للمراجعة',
1626
+ few: '{count} أمور للمراجعة',
1627
+ many: '{count} أمرًا للمراجعة',
1628
+ other: '{count} أمر للمراجعة',
1629
+ },
1630
+ 'hr.att_anomaly_break_end_without_start': 'أُنهيت استراحة لم تبدأ',
1631
+ 'hr.att_anomaly_break_not_ended': 'استراحة لم تُنهَ، فأُغلقت في نهاية المناوبة',
1632
+ 'hr.att_anomaly_clock_out_without_in': 'تسجيل انصراف دون حضور قبله',
1633
+ 'hr.att_anomaly_double_break_start': 'بدأت استراحة بينما كانت أخرى جارية',
1634
+ 'hr.att_anomaly_double_clock_in': 'تسجيل حضور مرتين دون انصراف بينهما',
1635
+ 'hr.att_anomaly_missing_clock_out': 'لم يُسجَّل انصراف لهذه المناوبة',
1636
+ 'hr.att_anomaly_overtime_beyond_cap': 'عمل إضافي يتجاوز السقف السنوي ولا يُحتسب',
1637
+ 'hr.att_correct_this': 'تصحيح هذا',
1638
+ 'hr.att_correction_add': 'إضافة تسجيل',
1639
+ 'hr.att_correction_denied': 'يحتاج طلب التصحيح إلى إذن تسجيل الحضور والانصراف.',
1640
+ 'hr.att_correction_desc':
1641
+ 'لا يتغيّر شيء قبل الموافقة. عند الموافقة تُسجَّل التسجيلات أدناه وتُلغى التي تحلّ محلها — وتبقى الأصلية في السجل.',
1642
+ 'hr.att_correction_direction': 'التسجيل',
1643
+ 'hr.att_correction_error': 'تعذّر إرسال التصحيح',
1644
+ 'hr.att_correction_for_punch': 'يحلّ هذا محل تسجيل «{punch}» الساعة {time}.',
1645
+ 'hr.att_correction_needs_one': 'يحتاج التصحيح إلى تسجيل واحد على الأقل.',
1646
+ 'hr.att_correction_needs_reason': 'اذكر ماذا حدث.',
1647
+ 'hr.att_correction_needs_time': 'كل تسجيل يحتاج إلى وقت.',
1648
+ 'hr.att_correction_next_day': 'اليوم التالي',
1649
+ 'hr.att_correction_punches': 'التسجيلات التي تقول إنها تخص هذا اليوم',
1650
+ 'hr.att_correction_reason': 'ماذا حدث',
1651
+ 'hr.att_correction_reason_hint': 'يقرأ هذا من يوافق على الطلب.',
1652
+ 'hr.att_correction_remove': 'حذف هذا التسجيل',
1653
+ 'hr.att_correction_request': 'طلب تصحيح',
1654
+ 'hr.att_correction_sent': 'أُرسل للموافقة',
1655
+ 'hr.att_correction_submit': 'إرسال للموافقة',
1656
+ 'hr.att_correction_time': 'الوقت',
1657
+ 'hr.att_correction_title': 'طلب تصحيح',
1658
+ 'hr.att_correction_waiting': 'بانتظار الموافقة',
1659
+ 'hr.att_correction_zone_hint': 'تُقرأ الأوقات من ساعة جهازك.',
1660
+ 'hr.att_corrections_error': 'تعذّر تحميل التصحيحات التي طلبتها',
1661
+ 'hr.att_corrections_pending': 'التصحيحات التي طلبتها',
1662
+ 'hr.att_locked_no_change': 'أُغلق هذا الشهر للرواتب، فلا يستطيع التصحيح تغيير أرقامه.',
1663
+ 'hr.att_method_device': 'جهاز',
1664
+ 'hr.att_method_import': 'مستورد',
1665
+ 'hr.att_method_kiosk': 'كشك',
1666
+ 'hr.att_method_manual': 'أُدخل يدويًا',
1667
+ 'hr.att_method_mobile': 'الهاتف',
1668
+ 'hr.att_method_qr': 'رمز QR',
1669
+ 'hr.att_method_web': 'الويب',
716
1670
  'hr.att_overtime': 'العمل الإضافي',
1671
+ 'hr.att_punch_break_end': 'إنهاء استراحة',
1672
+ 'hr.att_punch_break_start': 'بدء استراحة',
1673
+ 'hr.att_punch_in': 'حضور',
1674
+ 'hr.att_punch_out': 'انصراف',
1675
+ 'hr.att_punch_skew': 'كان فارق ساعة الجهاز {amount} وقت التسجيل.',
1676
+ 'hr.att_punch_void_reason': 'سبب الإلغاء: {reason}',
1677
+ 'hr.att_punch_voided': 'مُلغى',
1678
+ 'hr.att_punches': 'تسجيلات الحضور والانصراف',
1679
+ 'hr.att_punches_error': 'تعذّر تحميل التسجيلات',
1680
+ 'hr.att_punches_none': 'لم يُسجَّل شيء في هذا اليوم',
1681
+ 'hr.att_punches_none_desc': 'إن كنت قد عملت فيه، فاطلب تصحيح اليوم.',
1682
+ 'hr.att_punches_stale': 'قد تكون هذه التسجيلات قديمة',
717
1683
  'hr.att_scheduled': 'المقرر',
718
1684
  'hr.att_status_absent': 'غائب',
719
1685
  'hr.att_status_holiday': 'عطلة رسمية',
@@ -722,6 +1688,19 @@ export const ar: Record<string, Message> = {
722
1688
  'hr.att_status_pending': 'بحاجة إلى مراجعة',
723
1689
  'hr.att_status_present': 'حاضر',
724
1690
  'hr.att_status_weekend': 'نهاية الأسبوع',
1691
+ 'hr.att_trust_claimed': 'الوقت كما أعلنه الجهاز',
1692
+ 'hr.att_trust_disputed': 'وقت محل نزاع',
1693
+ 'hr.att_void': 'إلغاء التسجيل',
1694
+ 'hr.att_void_body': 'لن يُحتسب تسجيل «{punch}» الساعة {time} في هذا اليوم، ويُعاد احتساب اليوم بدونه.',
1695
+ 'hr.att_void_done': 'أُلغي التسجيل وأُعيد احتساب اليوم',
1696
+ 'hr.att_void_error': 'تعذّر إلغاء التسجيل — لم يتغيّر شيء',
1697
+ 'hr.att_void_keep': 'الإبقاء عليه',
1698
+ 'hr.att_void_kept':
1699
+ 'لا يُحذف شيء. يبقى التسجيل في السجل ويُكتب بجانبه سطر تصحيح يحمل اسمك وسببك، فيرى كل من يقرأ هذا الكشف لاحقًا الاثنين معًا.',
1700
+ 'hr.att_void_reason_hint': 'يراه كل من يقرأ هذا الكشف.',
1701
+ 'hr.att_void_reason_label': 'لماذا هذا التسجيل خاطئ',
1702
+ 'hr.att_void_reason_missing': 'اذكر السبب قبل الإلغاء.',
1703
+ 'hr.att_void_title': 'إلغاء هذا التسجيل؟',
725
1704
  'hr.att_worked': 'الفعلي',
726
1705
  'hr.attendance_error': 'تعذّر تحميل حضورك',
727
1706
  'hr.attendance_none': 'لم يُسجَّل شيء بعد',
@@ -896,6 +1875,104 @@ export const ar: Record<string, Message> = {
896
1875
  'hr.capability_off_title': 'إيقاف {name}؟',
897
1876
  'hr.capability_requires': 'يتطلب {name}',
898
1877
  'hr.capability_write_error': 'تعذّر تغيير هذا المفتاح. لم يُحفظ أي شيء.',
1878
+ 'hr.chain_actions_for': 'إجراءات {name}',
1879
+ 'hr.chain_add_approver': 'إضافة موقّع',
1880
+ 'hr.chain_add_step': 'إضافة خطوة',
1881
+ 'hr.chain_already_default': 'هي العاملة أصلًا',
1882
+ 'hr.chain_approvers': 'الموقّعون',
1883
+ 'hr.chain_archive_default_warning':
1884
+ 'لا يحلّ شيء محلّها: إلى أن تشغّل سلسلة أخرى، يذهب كل طلب جديد إلى مدير مقدّم الطلب وحده.',
1885
+ 'hr.chain_archive_inflight':
1886
+ 'يحمل كل طلب أُنشئ سلفًا نسخته الخاصة من هذه السلسلة. لا تستطيع الأرشفة أن تضيف توقيعًا إلى طلب نصف موقَّع ولا أن تنزع منه توقيعًا — ولا يتحرّك شيء قيد التنفيذ.',
1887
+ 'hr.chain_archive_title': 'أرشفة {name}؟',
1888
+ 'hr.chain_archive_unused': 'تختفي من هذه القائمة. لم يكن أي طلب جديد يتبعها، فلا يتغيّر شيء آخر.',
1889
+ 'hr.chain_archive_was_default': 'تختفي من هذه القائمة، وتتوقف طلبات {subject} الجديدة عن اتّباعها.',
1890
+ 'hr.chain_archived_toast': 'تمت أرشفة {name}',
1891
+ 'hr.chain_auto_approve_warning': 'بعد انتهاء المهلة تُعتمد هذه الخطوة دون أن يقرأها أحد.',
1892
+ 'hr.chain_create_title': 'سلسلة موافقات جديدة',
1893
+ 'hr.chain_created': '{name} جاهزة',
1894
+ 'hr.chain_default_body': 'يتبع كل طلب {subject} جديد هذه السلسلة من الآن فصاعدًا.',
1895
+ 'hr.chain_default_inflight': 'تحتفظ الطلبات المنشأة سلفًا بالسلسلة التي أُنشئت بها. ولا يتغيّر منها شيء.',
1896
+ 'hr.chain_default_replaces': 'تتوقف {name} عن العمل وتبقى في القائمة.',
1897
+ 'hr.chain_default_switch': 'شغّل هذه السلسلة',
1898
+ 'hr.chain_default_switch_hint': 'السلسلة التي يتبعها كل طلب جديد من هذا النوع. واحدة لكل نوع.',
1899
+ 'hr.chain_default_title': 'تشغيل {name}؟',
1900
+ 'hr.chain_default_toast': '{name} هي العاملة الآن',
1901
+ 'hr.chain_desc':
1902
+ 'من يوقّع على ماذا، وبأي ترتيب. يحمل الطلب معه السلسلة التي أُنشئ بها، فلا يصل شيء مما يُضبط هنا إلى طلب قيد التنفيذ.',
1903
+ 'hr.chain_edit_title': 'تحرير سلسلة الموافقات',
1904
+ 'hr.chain_error': 'تعذّر تحميل سلاسل الموافقات',
1905
+ 'hr.chain_gone': 'لم تعد هذه السلسلة موجودة — أرشفها أحدهم وأنت تحرّرها.',
1906
+ 'hr.chain_in_use': 'قيد العمل',
1907
+ 'hr.chain_last_approver': 'تحتاج الخطوة إلى موقّع واحد على الأقل',
1908
+ 'hr.chain_last_step': 'تحتاج السلسلة إلى خطوة واحدة على الأقل',
1909
+ 'hr.chain_make_default': 'شغّل هذه السلسلة',
1910
+ 'hr.chain_min': 'كم واحدًا',
1911
+ 'hr.chain_min_hint': 'العدّ بالأشخاص لا بالسطور أعلاه: السطر الواحد قد يمثّل عدة أشخاص.',
1912
+ 'hr.chain_mode': 'كم موقّعًا يلزم',
1913
+ 'hr.chain_mode_all': 'كلهم',
1914
+ 'hr.chain_mode_any': 'أي واحد منهم',
1915
+ 'hr.chain_mode_hint': 'أيكفي توقيع واحد لإنهاء الخطوة أم يلزم الجميع.',
1916
+ 'hr.chain_mode_quorum': 'عدد محدّد',
1917
+ 'hr.chain_move_down': 'تأخير الخطوة {n}',
1918
+ 'hr.chain_move_up': 'تقديم الخطوة {n}',
1919
+ 'hr.chain_name': 'الاسم',
1920
+ 'hr.chain_name_hint': 'كيف تُسمّى في هذه القائمة. «إجازة تزيد على خمسة أيام» مثلًا.',
1921
+ 'hr.chain_needs_approver': 'الخطوة {n} تحتاج إلى موقّع واحد على الأقل.',
1922
+ 'hr.chain_needs_min': 'الخطوة {n} تحتاج إلى عدد الموقّعين.',
1923
+ 'hr.chain_needs_name': 'أعطِ السلسلة اسمًا.',
1924
+ 'hr.chain_needs_step_name': 'الخطوة {n} تحتاج إلى اسم.',
1925
+ 'hr.chain_needs_who': 'في الخطوة {n} موقّع لم يُختَر له أحد.',
1926
+ 'hr.chain_new': 'سلسلة جديدة',
1927
+ 'hr.chain_no_default_note':
1928
+ 'لا شيء من هذه قيد العمل، فكل طلب {subject} جديد ما زال يذهب إلى مدير مقدّم الطلب وحده.',
1929
+ 'hr.chain_none': 'لا سلسلة لـ{subject}',
1930
+ 'hr.chain_none_desc': 'يذهب كل طلب إلى مدير مقدّم الطلب. أنشئ سلسلة لتغيير من يوقّع وبأي ترتيب.',
1931
+ 'hr.chain_on_timeout': 'بعد انتهاء المهلة',
1932
+ 'hr.chain_perm_approval': 'ضبط الموافقات',
1933
+ 'hr.chain_perm_attendance': 'إدارة الحضور',
1934
+ 'hr.chain_perm_leave': 'إدارة الإجازات',
1935
+ 'hr.chain_perm_office': 'إدارة المكاتب',
1936
+ 'hr.chain_perm_overtime': 'إدارة العمل الإضافي',
1937
+ 'hr.chain_perm_person': 'إدارة الأفراد',
1938
+ 'hr.chain_remove_approver': 'إزالة هذا الموقّع',
1939
+ 'hr.chain_remove_step': 'إزالة هذه الخطوة',
1940
+ 'hr.chain_resolved_hint': 'يُحدَّد عند إنشاء الطلب.',
1941
+ 'hr.chain_save_error': 'تعذّر حفظ السلسلة',
1942
+ 'hr.chain_saved': 'تم الحفظ',
1943
+ 'hr.chain_section_desc':
1944
+ 'سلسلة واحدة لكل نوع هي العاملة: المعلَّمة بـ«قيد العمل». وتبقى البقية هنا حتى تُشغّل إحداها.',
1945
+ 'hr.chain_sla': 'المهلة',
1946
+ 'hr.chain_sla_hint': 'عدد الساعات قبل متابعة الخطوة. اتركها فارغة فتنتظر بلا حدّ.',
1947
+ 'hr.chain_sla_none': 'تنتظر بلا حدّ',
1948
+ 'hr.chain_snapshot_note':
1949
+ 'ينسخ الطلب سلسلته لحظة إنشائه. ما تغيّره هنا يسري على الطلبات المنشأة من الآن فصاعدًا؛ ولا يتحرّك شيء ينتظر توقيعًا.',
1950
+ 'hr.chain_step_first': 'المدير',
1951
+ 'hr.chain_step_n': 'الخطوة {n}',
1952
+ 'hr.chain_step_name': 'اسم الخطوة',
1953
+ 'hr.chain_steps': 'الخطوات',
1954
+ 'hr.chain_subject_count': {
1955
+ zero: 'لا سلاسل',
1956
+ one: 'سلسلة واحدة',
1957
+ two: 'سلسلتان',
1958
+ few: '{count} سلاسل',
1959
+ many: '{count} سلسلة',
1960
+ other: '{count} سلسلة',
1961
+ },
1962
+ 'hr.chain_subject_filter': 'الطلبات من هذا النوع',
1963
+ 'hr.chain_subject_hint': 'لا يمكن نقل السلسلة إلى نوع آخر لاحقًا.',
1964
+ 'hr.chain_subject_locked': 'حُدّد عند إنشاء السلسلة.',
1965
+ 'hr.chain_timeout_auto_approve': 'الموافقة',
1966
+ 'hr.chain_timeout_escalate': 'التصعيد إلى أعلى',
1967
+ 'hr.chain_timeout_remind': 'إرسال تذكير',
1968
+ 'hr.chain_who': 'من يوقّع',
1969
+ 'hr.chain_who_group': 'مجموعة',
1970
+ 'hr.chain_who_manager': 'مديره',
1971
+ 'hr.chain_who_manager_of_manager': 'مدير مديره',
1972
+ 'hr.chain_who_office_head': 'رئيس مكتبه',
1973
+ 'hr.chain_who_org_unit_head': 'رئيس وحدته التنظيمية',
1974
+ 'hr.chain_who_permission': 'كل من يملك صلاحية معيّنة',
1975
+ 'hr.chain_who_person': 'شخص بعينه',
899
1976
  'hr.choose': 'اختر…',
900
1977
  'hr.clock_error': 'تعذّر تحميل بيانات الحضور والانصراف',
901
1978
  'hr.clock_in': 'تسجيل الحضور',
@@ -929,6 +2006,36 @@ export const ar: Record<string, Message> = {
929
2006
  'hr.delegate_to_date': 'إلى',
930
2007
  'hr.department': 'القسم',
931
2008
  'hr.display_name': 'الاسم',
2009
+ 'hr.doc_added_on': 'أُضيف في {date}',
2010
+ 'hr.doc_attach': 'إرفاق مستند',
2011
+ 'hr.doc_attach_body': 'يُحفَظ الملف في مساحة العمل هذه ويُدرَج في سجلّ هذا الشخص.',
2012
+ 'hr.doc_attach_error': 'تعذّر إرفاق المستند',
2013
+ 'hr.doc_attach_title': 'إرفاق مستند بسجلّ {name}',
2014
+ 'hr.doc_attached': 'أُرفق {name}',
2015
+ 'hr.doc_expired': 'منتهي الصلاحية',
2016
+ 'hr.doc_expires': 'تاريخ الانتهاء',
2017
+ 'hr.doc_expires_hint': 'اختياري. يُنبَّه إلى الانتهاء قبل حلوله.',
2018
+ 'hr.doc_expires_on': 'تنتهي في {date}',
2019
+ 'hr.doc_expiring': 'تقترب من الانتهاء',
2020
+ 'hr.doc_issued': 'تاريخ الإصدار',
2021
+ 'hr.doc_issued_on': 'صدر في {date}',
2022
+ 'hr.doc_kind': 'النوع',
2023
+ 'hr.doc_kind_certificate': 'شهادة',
2024
+ 'hr.doc_kind_contract': 'عقد',
2025
+ 'hr.doc_kind_id': 'وثيقة هوية',
2026
+ 'hr.doc_kind_other': 'أخرى',
2027
+ 'hr.doc_kind_payslip': 'قسيمة راتب',
2028
+ 'hr.doc_name': 'الاسم',
2029
+ 'hr.doc_remove_body': 'يُزال من سجلّ {person}. أمّا الملف نفسه فيبقى ضمن ملفات مساحة العمل.',
2030
+ 'hr.doc_remove_error': 'تعذّرت إزالة المستند — لم يتغيّر شيء',
2031
+ 'hr.doc_remove_label': 'إزالة {name}',
2032
+ 'hr.doc_remove_title': 'إزالة {name}؟',
2033
+ 'hr.doc_removed': 'أُزيل {name}',
2034
+ 'hr.doc_uploading': 'جارٍ رفع {name}…',
2035
+ 'hr.docs_error': 'تعذّر تحميل المستندات',
2036
+ 'hr.docs_none': 'لا توجد مستندات بعد',
2037
+ 'hr.docs_none_desc': 'العقود ووثائق الهوية والشهادات المحفوظة لهذا الشخص.',
2038
+ 'hr.docs_title': 'المستندات',
932
2039
  'hr.edit_person': 'تعديل',
933
2040
  'hr.employee_no': 'الرقم الوظيفي',
934
2041
  'hr.employment': 'الوظيفة',
@@ -972,7 +2079,60 @@ export const ar: Record<string, Message> = {
972
2079
  other: '{count} شخص',
973
2080
  },
974
2081
  'hr.hired_on': 'تاريخ البدء',
2082
+ 'hr.hours': { zero: 'ساعة', one: 'ساعة', two: 'ساعتان', few: 'ساعات', many: 'ساعة', other: 'ساعة' },
975
2083
  'hr.hours_short': '{n}س',
2084
+ 'hr.job_change': 'تسجيل تغيير',
2085
+ 'hr.job_change_backdated': 'هذا التاريخ في الماضي، وهذا مسموح: سيقول السجلّ إنّ التغيير سرى من ذلك اليوم.',
2086
+ 'hr.job_change_body': 'يُغلق هذا الفترة الحالية ويفتح فترة جديدة، ولا يُعاد كتابة أي شيء مسجَّل من قبل.',
2087
+ 'hr.job_change_closes': 'تنتهي الفترة التي بدأت في {date} في اليوم السابق له.',
2088
+ 'hr.job_change_error': 'تعذّر تسجيل التغيير — لم يتغيّر شيء',
2089
+ 'hr.job_change_summary': 'يتغيّر سجلّ {name} اعتبارًا من {date}.',
2090
+ 'hr.job_change_title': 'تسجيل تغيير لـ {name}',
2091
+ 'hr.job_change_too_early': 'تبدأ الفترة الحالية في {date}، ولا يمكن تأريخ التغيير قبلها.',
2092
+ 'hr.job_changed': 'حُدِّث السجلّ الوظيفي لـ {name}',
2093
+ 'hr.job_effective_from': 'ساري اعتبارًا من',
2094
+ 'hr.job_effective_hint': 'اتُّفق عليه في مارس وأُدخل في مايو؟ أرِّخه بمارس — على السجلّ أن يقول متى حدث.',
2095
+ 'hr.job_error': 'تعذّر تحميل السجلّ الوظيفي',
2096
+ 'hr.job_fte': 'ما يعادل الدوام الكامل',
2097
+ 'hr.job_fte_hint': '1 أسبوع كامل، و0.5 نصفه.',
2098
+ 'hr.job_fte_invalid': 'رقم بين 0 و1.',
2099
+ 'hr.job_fte_value': '{fte} من الدوام الكامل',
2100
+ 'hr.job_history': 'السجلّ',
2101
+ 'hr.job_history_error': 'تعذّر تحميل السجلّ',
2102
+ 'hr.job_history_none': 'لا يوجد ما سُجِّل قبل الفترة الحالية.',
2103
+ 'hr.job_hours': 'ساعات الأسبوع',
2104
+ 'hr.job_hours_invalid': 'رقم بين 0 و168.',
2105
+ 'hr.job_hours_value': '{hours} ساعة أسبوعيًا',
2106
+ 'hr.job_none': 'لا يوجد سجلّ وظيفي',
2107
+ 'hr.job_none_desc': 'تسجيل تغيير يُنشئ أول فترة.',
2108
+ 'hr.job_not_set': 'غير محدَّد',
2109
+ 'hr.job_period': 'فترة السريان',
2110
+ 'hr.job_position': 'المنصب',
2111
+ 'hr.job_reason': 'السبب',
2112
+ 'hr.job_reason_hint': 'اختياري. يظهر بجوار الفترة في السجلّ.',
2113
+ 'hr.job_since': 'منذ {date}',
2114
+ 'hr.leave_adjust': 'تعديل',
2115
+ 'hr.leave_adjust_add': 'إضافة',
2116
+ 'hr.leave_adjust_amount_days': 'كم يومًا',
2117
+ 'hr.leave_adjust_amount_hours': 'كم ساعة',
2118
+ 'hr.leave_adjust_amount_invalid': 'رقم أكبر من صفر. اتجاه الحركة يُحدَّد بالأعلى.',
2119
+ 'hr.leave_adjust_confirm_add': 'رصيد {type} لدى {name} يزيد بمقدار {amount}، اعتبارًا من {date}.',
2120
+ 'hr.leave_adjust_confirm_remove': 'رصيد {type} لدى {name} ينقص بمقدار {amount}، اعتبارًا من {date}.',
2121
+ 'hr.leave_adjust_desc': 'لا يتغيّر أي قيد مسجَّل. يُضاف التعديل إلى السجل باسمك وبالسبب الذي تكتبه.',
2122
+ 'hr.leave_adjust_direction': 'الاتجاه',
2123
+ 'hr.leave_adjust_effective': 'ساري من',
2124
+ 'hr.leave_adjust_effective_hint': 'هذا التاريخ يحدّد سنة الاستحقاق التي يقع فيها التعديل.',
2125
+ 'hr.leave_adjust_effective_invalid': 'اختر تاريخًا.',
2126
+ 'hr.leave_adjust_error': 'تعذّر تسجيل التعديل',
2127
+ 'hr.leave_adjust_irreversible':
2128
+ 'السجل يُضاف إليه ولا يُعدَّل: لا يمكن تحرير هذا القيد ولا حذفه. يُصحَّح الخطأ بتعديل ثانٍ، ويبقى الاثنان ظاهرين.',
2129
+ 'hr.leave_adjust_other_year': 'هذا التاريخ يقع في {year}، فيتحرّك رصيد تلك السنة لا السنة المعروضة.',
2130
+ 'hr.leave_adjust_reason_hint':
2131
+ 'هذه هي الإجابة حين يسأل أحدهم لماذا تغيّر الرقم، فاكتب ما كنت تودّ قراءته: «مرحَّل من النظام القديم»، لا «تصحيح».',
2132
+ 'hr.leave_adjust_reason_required': 'اذكر السبب. تغيير الرصيد بلا تفسير هو ما يُسأل عنه قسم الموارد البشرية.',
2133
+ 'hr.leave_adjust_remove': 'خصم',
2134
+ 'hr.leave_adjust_title': 'تعديل هذا الرصيد يدويًا',
2135
+ 'hr.leave_adjusted_toast': 'تم تعديل الرصيد',
976
2136
  'hr.leave_after': {
977
2137
  zero: 'لا يتبقى بعدها شيء',
978
2138
  one: 'يتبقى بعدها يوم واحد',
@@ -1054,6 +2214,37 @@ export const ar: Record<string, Message> = {
1054
2214
  'hr.leave_icon_sick': 'مرض',
1055
2215
  'hr.leave_icon_special': 'خاص',
1056
2216
  'hr.leave_icon_trip': 'رحلة عمل',
2217
+ 'hr.leave_kind_accrual': 'تراكم',
2218
+ 'hr.leave_kind_adjustment': 'تعديل يدوي',
2219
+ 'hr.leave_kind_carry_in': 'مُرحَّل من السنة الماضية',
2220
+ 'hr.leave_kind_carry_out': 'مُرحَّل إلى السنة القادمة',
2221
+ 'hr.leave_kind_consumption': 'استُخدم',
2222
+ 'hr.leave_kind_encashment': 'مصروف نقدًا',
2223
+ 'hr.leave_kind_expiry': 'انتهت الصلاحية',
2224
+ 'hr.leave_kind_grant': 'منحة',
2225
+ 'hr.leave_kind_reversal': 'أُعيد',
2226
+ 'hr.leave_ledger': 'الحركات',
2227
+ 'hr.leave_ledger_after': 'الرصيد بعده',
2228
+ 'hr.leave_ledger_balance': 'الرصيد الآن',
2229
+ 'hr.leave_ledger_capped': {
2230
+ zero: 'لا تُعرض أي حركة.',
2231
+ one: 'أحدث حركة فقط. ما قبلها غير معروض.',
2232
+ two: 'أحدث حركتين فقط. ما قبلهما غير معروض.',
2233
+ few: 'أحدث {count} حركات فقط. ما قبلها غير معروض.',
2234
+ many: 'أحدث {count} حركة فقط. ما قبلها غير معروض.',
2235
+ other: 'أحدث {count} حركة فقط. ما قبلها غير معروض.',
2236
+ },
2237
+ 'hr.leave_ledger_change': 'التغيير',
2238
+ 'hr.leave_ledger_error': 'تعذّر تحميل الحركات',
2239
+ 'hr.leave_ledger_none': 'لم تطرأ أي حركة هذه السنة',
2240
+ 'hr.leave_ledger_none_desc': 'كل منحة وكل حجز وكل تصحيح يُسجَّل هنا، ولم يُسجَّل أي منها بعد.',
2241
+ 'hr.leave_ledger_open': 'انظر كيف تكوَّن رصيد {name}',
2242
+ 'hr.leave_ledger_reversed': 'معكوس',
2243
+ 'hr.leave_ledger_reverses': 'يعكس القيد المؤرخ في {date}',
2244
+ 'hr.leave_ledger_title': 'كيف تكوَّن رصيد {name}',
2245
+ 'hr.leave_ledger_what': 'ما الذي حدث',
2246
+ 'hr.leave_ledger_when': 'التاريخ',
2247
+ 'hr.leave_ledger_year': 'سنة الاستحقاق {year}',
1057
2248
  'hr.leave_none': 'لا توجد إجازات مسجّلة',
1058
2249
  'hr.leave_none_desc': 'عندما تسجّل إجازة، ستظهر هنا.',
1059
2250
  'hr.leave_pending': 'بانتظار الموافقة',
@@ -1255,7 +2446,197 @@ export const ar: Record<string, Message> = {
1255
2446
  'hr.offices_timezones': 'المناطق الزمنية',
1256
2447
  'hr.offices_title': 'المكاتب',
1257
2448
  'hr.on_break_since': 'في استراحة منذ {time}',
2449
+ 'hr.org_archive_blocked_children': {
2450
+ zero: 'سيبقى {count} أقسام فرعية بلا قسم أعلى. انقلها أو أرشفها أولًا.',
2451
+ one: 'سيبقى قسم فرعي واحد بلا قسم أعلى. انقله أو أرشفه أولًا.',
2452
+ two: 'سيبقى قسمان فرعيان بلا قسم أعلى. انقلهما أو أرشفهما أولًا.',
2453
+ few: 'ستبقى {count} أقسام فرعية بلا قسم أعلى. انقلها أو أرشفها أولًا.',
2454
+ many: 'سيبقى {count} قسمًا فرعيًا بلا قسم أعلى. انقلها أو أرشفها أولًا.',
2455
+ other: 'سيبقى {count} قسم فرعي بلا قسم أعلى. انقلها أو أرشفها أولًا.',
2456
+ },
2457
+ 'hr.org_archive_blocked_people': {
2458
+ zero: 'ما زال {count} أشخاص يتبعون له. انقلهم إلى قسم آخر أولًا.',
2459
+ one: 'ما زال شخص واحد يتبع له. انقله إلى قسم آخر أولًا.',
2460
+ two: 'ما زال شخصان يتبعان له. انقلهما إلى قسم آخر أولًا.',
2461
+ few: 'ما زال {count} أشخاص يتبعون له. انقلهم إلى قسم آخر أولًا.',
2462
+ many: 'ما زال {count} شخصًا يتبعون له. انقلهم إلى قسم آخر أولًا.',
2463
+ other: 'ما زال {count} شخص يتبعون له. انقلهم إلى قسم آخر أولًا.',
2464
+ },
2465
+ 'hr.org_archive_body': 'يخرج من الهيكل ولا يُعرض بعد ذلك عند تحديد قسم لأحد.',
2466
+ 'hr.org_archive_error': 'تعذّرت أرشفة القسم',
2467
+ 'hr.org_archive_note':
2468
+ 'لا يُحذف شيء ولا يتغيّر شيء مسجَّل: من عمل فيه يحتفظ بذلك في سجلّه. ولا طريق للعودة من هذه الشاشة.',
2469
+ 'hr.org_archive_title': 'أرشفة {name}؟',
2470
+ 'hr.org_archived': 'أُرشف {name}',
2471
+ 'hr.org_code': 'الرمز',
2472
+ 'hr.org_code_hint': 'قصير، للتصدير وكشوف الرواتب. اختياري.',
2473
+ 'hr.org_detail_label': 'تفاصيل القسم',
2474
+ 'hr.org_detail_none': 'لم يُحدَّد شيء',
2475
+ 'hr.org_detail_none_desc': 'اختر قسمًا لترى من فيه ومن يرأسه.',
2476
+ 'hr.org_error': 'تعذّر تحميل الهيكل التنظيمي',
2477
+ 'hr.org_error_desc': 'لم تصل الأقسام. أعد المحاولة.',
2478
+ 'hr.org_head': 'رئيس القسم',
2479
+ 'hr.org_head_hint': 'من يديره. اختياري ولا يغيّر شيئًا آخر.',
2480
+ 'hr.org_head_none': 'لا أحد بعد',
2481
+ 'hr.org_head_set': 'حدّد شخصًا',
2482
+ 'hr.org_head_unknown': 'شخص لم يعد في الدليل',
2483
+ 'hr.org_here': 'في هذا القسم',
2484
+ 'hr.org_move': 'نقل',
2485
+ 'hr.org_move_body':
2486
+ 'كل ما تحت {name} ينتقل معه. لا تتغيّر وظيفة أحد ولا مديره ولا ساعاته — يتغيّر موضعه في الهيكل فقط.',
2487
+ 'hr.org_move_error': 'تعذّر نقل القسم',
2488
+ 'hr.org_move_people': {
2489
+ zero: 'ينتقل معه {count} أشخاص.',
2490
+ one: 'ينتقل معه شخص واحد.',
2491
+ two: 'ينتقل معه شخصان.',
2492
+ few: 'ينتقل معه {count} أشخاص.',
2493
+ many: 'ينتقل معه {count} شخصًا.',
2494
+ other: 'ينتقل معه {count} شخص.',
2495
+ },
2496
+ 'hr.org_move_people_none': 'لا يعمل فيه أحد بعد، فلا يتغيّر أي سجل.',
2497
+ 'hr.org_move_same': 'هو هناك بالفعل.',
2498
+ 'hr.org_move_title': 'نقل {name}',
2499
+ 'hr.org_move_to': 'النقل تحت',
2500
+ 'hr.org_move_units': {
2501
+ zero: 'ينتقل {count} أقسام.',
2502
+ one: 'ينتقل قسم واحد.',
2503
+ two: 'ينتقل قسمان.',
2504
+ few: 'تنتقل {count} أقسام.',
2505
+ many: 'ينتقل {count} قسمًا.',
2506
+ other: 'ينتقل {count} قسم.',
2507
+ },
2508
+ 'hr.org_moved': 'نُقل {name}',
2509
+ 'hr.org_no_match': 'لا يوجد قسم مطابق',
2510
+ 'hr.org_no_match_desc': 'جرّب جزءًا من الاسم أو الرمز.',
2511
+ 'hr.org_none': 'لا توجد أقسام بعد',
2512
+ 'hr.org_none_desc':
2513
+ 'القسم هو ما يشير إليه خط التبعية، وهو ما يجعل فرعًا كاملًا من الشركة قابلًا للبحث دفعة واحدة. أنشئ الأول وينمو الهيكل تحته.',
2514
+ 'hr.org_parent': 'يتبع',
2515
+ 'hr.org_parent_fixed_hint': 'النقل يعيد كتابة مسار كل ما تحته، ولذلك له إجراء خاص به.',
2516
+ 'hr.org_path': 'موقعه في الهيكل',
2517
+ 'hr.org_position_actions': 'إجراءات {title}',
2518
+ 'hr.org_position_add': 'إضافة منصب',
2519
+ 'hr.org_position_archive_body':
2520
+ 'لا يُعرض بعد ذلك عند تحديد وظيفة لأحد. من يشغله الآن يحتفظ به، ولا يتغيّر شيء مسجَّل.',
2521
+ 'hr.org_position_archive_error': 'تعذّرت أرشفة المنصب',
2522
+ 'hr.org_position_archive_title': 'أرشفة {title}؟',
2523
+ 'hr.org_position_archived': 'أُرشف {title}',
2524
+ 'hr.org_position_created': '{title} جاهز',
2525
+ 'hr.org_position_edit_title': 'تعديل {title}',
2526
+ 'hr.org_position_family': 'العائلة الوظيفية',
2527
+ 'hr.org_position_family_hint': 'تجمع المسمّيات المتقاربة — الهندسة، المبيعات. اختياري.',
2528
+ 'hr.org_position_level': 'المستوى',
2529
+ 'hr.org_position_level_hint': 'موقعه على السلّم الوظيفي، مثل L4 أو أول. اختياري.',
2530
+ 'hr.org_position_new': 'منصب جديد',
2531
+ 'hr.org_position_save_error': 'تعذّر حفظ المنصب',
2532
+ 'hr.org_position_saved': 'حُفظ المنصب',
2533
+ 'hr.org_position_title': 'المسمّى',
2534
+ 'hr.org_positions_error': 'تعذّر تحميل المناصب',
2535
+ 'hr.org_positions_none': 'لا توجد مناصب بعد',
2536
+ 'hr.org_positions_none_desc':
2537
+ 'المنصب وظيفة توظّف الشركة من أجلها، وليس شخصًا. قد لا يشغله أحد وقد يشغله عشرون.',
2538
+ 'hr.org_root': 'المستوى الأعلى',
2539
+ 'hr.org_search_label': 'ابحث في الأقسام بالاسم أو الرمز',
2540
+ 'hr.org_search_placeholder': 'ابحث في الأقسام',
2541
+ 'hr.org_see_people': {
2542
+ zero: 'عرض {count} أشخاص هنا',
2543
+ one: 'عرض شخص واحد هنا',
2544
+ two: 'عرض شخصين هنا',
2545
+ few: 'عرض {count} أشخاص هنا',
2546
+ many: 'عرض {count} شخصًا هنا',
2547
+ other: 'عرض {count} شخص هنا',
2548
+ },
2549
+ 'hr.org_stat_levels': 'المستويات',
2550
+ 'hr.org_stat_people': 'الأشخاص المُسنَدون',
2551
+ 'hr.org_stat_positions': 'المناصب',
2552
+ 'hr.org_stat_units': 'الأقسام',
2553
+ 'hr.org_subunits': 'الأقسام الفرعية',
2554
+ 'hr.org_subunits_none': 'لا شيء تحته.',
2555
+ 'hr.org_tab_chart': 'الهيكل التنظيمي',
2556
+ 'hr.org_tab_positions': 'المناصب',
2557
+ 'hr.org_title': 'التنظيم',
2558
+ 'hr.org_unit_add': 'إضافة قسم',
2559
+ 'hr.org_unit_add_child': 'إضافة قسم فرعي',
2560
+ 'hr.org_unit_created': '{name} جاهز',
2561
+ 'hr.org_unit_edit_title': 'تعديل {name}',
2562
+ 'hr.org_unit_new': 'قسم جديد',
2563
+ 'hr.org_unit_new_under': 'قسم جديد تحت {name}',
2564
+ 'hr.org_unit_save_error': 'تعذّر حفظ القسم',
2565
+ 'hr.org_unit_saved': 'حُفظ القسم',
2566
+ 'hr.org_with_below': 'مع الأقسام الفرعية',
1258
2567
  'hr.people_error': 'تعذّر تحميل قائمة الأشخاص',
2568
+ 'hr.periods_attendance': 'الحضور',
2569
+ 'hr.periods_attendance_desc':
2570
+ 'أشهر أُغلقت لأجل احتساب الوقت لا لأجل الرواتب. وكلا النوعين يُغلق الشهر بالطريقة نفسها؛ النوع يسجّل السبب فحسب.',
2571
+ 'hr.periods_closed_on': 'أُغلقت في {date}',
2572
+ 'hr.periods_create_desc': 'تُنشأ الفترة مفتوحة. ولا يُثبَّت شيء قبل أن تغلقها.',
2573
+ 'hr.periods_create_error': 'تعذّر إنشاء الفترة',
2574
+ 'hr.periods_create_title': 'فترة جديدة',
2575
+ 'hr.periods_created': 'أُضيفت {range}، وتبقى مفتوحة حتى تغلقها',
2576
+ 'hr.periods_desc':
2577
+ 'أغلق الشهر حتى لا يتغيّر كشف رواتب مُعتمد بعد اعتماده. وإعادة فتحه تجعله قابلاً للتغيّر من جديد.',
2578
+ 'hr.periods_ends': 'اليوم الأخير',
2579
+ 'hr.periods_entity_hint':
2580
+ 'تُغلق فقط من كان هذا الكيان يوظّفهم في تلك الأيام. اتركها على مساحة العمل بأكملها لإغلاق الجميع.',
2581
+ 'hr.periods_error': 'تعذّر تحميل الفترات',
2582
+ 'hr.periods_kind': 'النوع',
2583
+ 'hr.periods_kind_hint': 'سبب إغلاق الشهر. وكلا النوعين يُغلق الأيام نفسها.',
2584
+ 'hr.periods_lock': 'إغلاق',
2585
+ 'hr.periods_lock_adjustments':
2586
+ 'أي تغيير في السياسات يقع تاريخه داخلها يصبح تسوية في فترة مفتوحة بدل ذلك. ويمكنك إعادة فتح الفترة لاحقاً مع ذكر السبب.',
2587
+ 'hr.periods_lock_body': 'كل يوم مسجَّل داخل هذه الفترة يتوقف عن قابلية إعادة الاحتساب، بالنسبة إلى {scope}.',
2588
+ 'hr.periods_lock_confirm': 'إغلاق الفترة',
2589
+ 'hr.periods_lock_error': 'تعذّر إغلاق الفترة',
2590
+ 'hr.periods_lock_note': 'ملاحظة',
2591
+ 'hr.periods_lock_note_hint': 'اختيارية. تُحفظ مع الفترة — اذكر ما الذي اعتُمد.',
2592
+ 'hr.periods_lock_title': 'إغلاق {range}؟',
2593
+ 'hr.periods_locked': 'مغلقة',
2594
+ 'hr.periods_locked_none': 'أُغلقت الفترة. لم تكن تحتوي أي يوم مسجَّل بعد.',
2595
+ 'hr.periods_locked_toast': {
2596
+ zero: 'أُغلقت الفترة. لم تعد هناك أيام قابلة لإعادة الاحتساب.',
2597
+ one: 'أُغلقت الفترة. لم يعد يوم واحد قابلاً لإعادة الاحتساب.',
2598
+ two: 'أُغلقت الفترة. لم يعد يومان قابلين لإعادة الاحتساب.',
2599
+ few: 'أُغلقت الفترة. لم تعد {count} أيام قابلة لإعادة الاحتساب.',
2600
+ many: 'أُغلقت الفترة. لم يعد {count} يوماً قابلاً لإعادة الاحتساب.',
2601
+ other: 'أُغلقت الفترة. لم يعد {count} يوم قابلاً لإعادة الاحتساب.',
2602
+ },
2603
+ 'hr.periods_new': 'فترة جديدة',
2604
+ 'hr.periods_none': 'لا توجد فترات بعد',
2605
+ 'hr.periods_none_desc':
2606
+ 'أنشئ فترة للشهر الذي تريد تثبيته، ثم أغلقها حتى تتوقف الأيام داخلها عن إعادة الاحتساب.',
2607
+ 'hr.periods_open': 'مفتوحة',
2608
+ 'hr.periods_overlap':
2609
+ 'تغطّي {range} بعض هذه الأيام بالفعل. ولا يمكن أن تتداخل فترتان من نوع واحد لدى صاحب العمل نفسه.',
2610
+ 'hr.periods_payroll': 'الرواتب',
2611
+ 'hr.periods_payroll_desc': 'الأشهر التي اعتُمدت كشوف رواتبها.',
2612
+ 'hr.periods_range': 'الفترة',
2613
+ 'hr.periods_range_invalid': 'اليوم الأخير يسبق اليوم الأول.',
2614
+ 'hr.periods_read_only':
2615
+ 'يمكنك قراءة الفترات هنا. أما إغلاقها وإعادة فتحها فيحتاج إلى صلاحية إدارة فترات الرواتب.',
2616
+ 'hr.periods_reopen': 'إعادة الفتح',
2617
+ 'hr.periods_reopen_body': 'تعود الأيام داخلها قابلة لإعادة الاحتساب، بالنسبة إلى {scope}.',
2618
+ 'hr.periods_reopen_error': 'تعذّرت إعادة فتح الفترة',
2619
+ 'hr.periods_reopen_filed': 'كشف رواتب اعتُمد عن هذا الشهر قد تتغيّر أرقامه بعد أن أُرسلت إلى أصحابها.',
2620
+ 'hr.periods_reopen_keep': 'أبقِها مغلقة',
2621
+ 'hr.periods_reopen_overlap': 'ما زالت فترة مغلقة أخرى تغطّي بعض هذه التواريخ، فتبقى تلك الأيام مغلقة:',
2622
+ 'hr.periods_reopen_reason': 'سبب إعادة الفتح',
2623
+ 'hr.periods_reopen_reason_hint': 'يُحفظ مع الفترة، لتقول هذه القائمة لماذا أُعيد فتحها.',
2624
+ 'hr.periods_reopen_reason_required': 'اذكر السبب قبل إعادة الفتح.',
2625
+ 'hr.periods_reopen_title': 'إعادة فتح {range}؟',
2626
+ 'hr.periods_reopened_none': 'أُعيد فتح الفترة. لم يتغيّر أي يوم مسجَّل.',
2627
+ 'hr.periods_reopened_toast': {
2628
+ zero: 'أُعيد فتح الفترة. لم يعد أي يوم قابلاً لإعادة الاحتساب.',
2629
+ one: 'أُعيد فتح الفترة. عاد يوم واحد قابلاً لإعادة الاحتساب.',
2630
+ two: 'أُعيد فتح الفترة. عاد يومان قابلين لإعادة الاحتساب.',
2631
+ few: 'أُعيد فتح الفترة. عادت {count} أيام قابلة لإعادة الاحتساب.',
2632
+ many: 'أُعيد فتح الفترة. عاد {count} يوماً قابلاً لإعادة الاحتساب.',
2633
+ other: 'أُعيد فتح الفترة. عاد {count} يوم قابلاً لإعادة الاحتساب.',
2634
+ },
2635
+ 'hr.periods_scope': 'تسري على',
2636
+ 'hr.periods_scope_all': 'مساحة العمل بأكملها',
2637
+ 'hr.periods_scope_entity': 'كيان قانوني واحد',
2638
+ 'hr.periods_stale': 'قد تكون هذه القائمة غير محدَّثة',
2639
+ 'hr.periods_starts': 'اليوم الأول',
1259
2640
  'hr.person_create_error': 'تعذّرت إضافة هذا الشخص — لم يُحفظ شيء',
1260
2641
  'hr.person_created': 'أُضيف {name} إلى الدليل',
1261
2642
  'hr.person_error': 'تعذّر تحميل سجل هذا الشخص',
@@ -1359,6 +2740,27 @@ export const ar: Record<string, Message> = {
1359
2740
  'hr.schedules_readonly': 'يمكنك قراءة المناوبات هنا، لكن تغييرها يحتاج صلاحية إدارة الحضور.',
1360
2741
  'hr.schedules_show_archived': 'إظهار المؤرشفة',
1361
2742
  'hr.search_people': 'البحث عن أشخاص',
2743
+ 'hr.sensitive_add_contact': 'إضافة جهة اتصال للطوارئ',
2744
+ 'hr.sensitive_birth_date': 'تاريخ الميلاد',
2745
+ 'hr.sensitive_contact_hint': 'من يُتَّصل به إذا وقع شيء في العمل.',
2746
+ 'hr.sensitive_contact_name': 'جهة اتصال للطوارئ',
2747
+ 'hr.sensitive_contact_partial': 'اسم ورقم معًا، أو لا شيء منهما.',
2748
+ 'hr.sensitive_edit_body': 'تُحفَظ مشفَّرة، ويُسجَّل أنها تغيّرت لا ما تحتويه.',
2749
+ 'hr.sensitive_edit_title': 'البيانات الشخصية لـ {name}',
2750
+ 'hr.sensitive_emergency': 'في حالة الطوارئ، اتصل بـ',
2751
+ 'hr.sensitive_emergency_none': 'لا توجد جهة اتصال للطوارئ',
2752
+ 'hr.sensitive_error': 'تعذّر تحميل هذه البيانات',
2753
+ 'hr.sensitive_hidden':
2754
+ 'جهة اتصال للطوارئ وتاريخ الميلاد وبيانات الهوية والحساب المصرفي. تظهر عند فتح هذا القسم.',
2755
+ 'hr.sensitive_iban': 'رقم الآيبان',
2756
+ 'hr.sensitive_national_id': 'رقم الهوية الوطنية',
2757
+ 'hr.sensitive_none': 'لا شيء مسجَّل',
2758
+ 'hr.sensitive_none_desc': 'ابدأ بجهة اتصال للطوارئ — فهي ما يحتاجه أحدهم على عجل.',
2759
+ 'hr.sensitive_relationship': 'صلة القرابة',
2760
+ 'hr.sensitive_save_error': 'تعذّر حفظ هذه البيانات — لم يتغيّر شيء',
2761
+ 'hr.sensitive_title': 'البيانات الشخصية وجهة اتصال الطوارئ',
2762
+ 'hr.settings_accrual': 'استحقاق الإجازات',
2763
+ 'hr.settings_approvals': 'الموافقات',
1362
2764
  'hr.settings_calendars': 'العطلات',
1363
2765
  'hr.settings_capabilities': 'الميزات',
1364
2766
  'hr.settings_general': 'عام',
@@ -1366,6 +2768,7 @@ export const ar: Record<string, Message> = {
1366
2768
  'hr.settings_leave': 'الإجازات',
1367
2769
  'hr.settings_not_built': 'واجهة البرمجة لهذا الجزء مكتملة، أما شاشة التحرير فلم تُبنَ بعد.',
1368
2770
  'hr.settings_offices': 'المكاتب',
2771
+ 'hr.settings_periods': 'الفترات',
1369
2772
  'hr.settings_schedules': 'المناوبات',
1370
2773
  'hr.started': 'تاريخ المباشرة',
1371
2774
  'hr.status': 'الحالة',
@@ -1392,6 +2795,211 @@ export const ar: Record<string, Message> = {
1392
2795
  }
1393
2796
 
1394
2797
  export const de: Record<string, Message> = {
2798
+ 'hr.accr_actions_for': 'Aktionen für {name}',
2799
+ 'hr.accr_already_archived': 'Bereits archiviert',
2800
+ 'hr.accr_archive_assigned': {
2801
+ one: 'Sie ist {count} Ziel zugewiesen, und diese Zuweisung verliert ihre Wirkung.',
2802
+ other: 'Sie ist {count} Zielen zugewiesen, und diese Zuweisungen verlieren ihre Wirkung.',
2803
+ },
2804
+ 'hr.accr_archive_body': 'Sie gilt ab sofort für niemanden mehr.',
2805
+ 'hr.accr_archive_error': 'Die Regel konnte nicht archiviert werden',
2806
+ 'hr.accr_archive_keeps':
2807
+ 'Sie wird archiviert, nie gelöscht: bereits gutgeschriebener Urlaub nennt diese Regel, und eine Buchung, deren Regel verschwunden ist, ist eine Zahl, die niemand erklären kann.',
2808
+ 'hr.accr_archive_title': '„{name}“ archivieren?',
2809
+ 'hr.accr_archived': '„{name}“ wurde archiviert',
2810
+ 'hr.accr_assign': 'Zuweisen',
2811
+ 'hr.accr_assign_desc':
2812
+ 'Wählen Sie die Regel und die Stufe, auf der sie liegt. Für eine Person gilt die Stufe, die ihr am nächsten ist.',
2813
+ 'hr.accr_assign_error': 'Die Zuweisung konnte nicht gespeichert werden',
2814
+ 'hr.accr_assign_policy': 'Regel',
2815
+ 'hr.accr_assign_policy_pick': 'Regel auswählen',
2816
+ 'hr.accr_assign_rung': 'Gilt für',
2817
+ 'hr.accr_assign_subject': 'Welche(r) {rung}',
2818
+ 'hr.accr_assign_title': 'Regel zuweisen',
2819
+ 'hr.accr_assign_to_hint': 'Leer lassen, damit sie weiter gilt.',
2820
+ 'hr.accr_assigned': '„{name}“ gilt jetzt für {subject}',
2821
+ 'hr.accr_badge_archived': 'Archiviert',
2822
+ 'hr.accr_beaten_by': 'Wird weiterhin geschlagen von:',
2823
+ 'hr.accr_beats_everything':
2824
+ 'Diese Stufe wird von nichts geschlagen — sie entscheidet für die genannte Person.',
2825
+ 'hr.accr_col_applies': 'Gilt für',
2826
+ 'hr.accr_col_earns': 'Anspruch',
2827
+ 'hr.accr_col_policy': 'Regel',
2828
+ 'hr.accr_col_when': 'Wann',
2829
+ 'hr.accr_config_unreadable': 'Die Einstellungen dieser Regel sind nicht lesbar',
2830
+ 'hr.accr_copy_of': '{name} (Kopie)',
2831
+ 'hr.accr_create_title': 'Neue Anspruchsregel',
2832
+ 'hr.accr_created': '„{name}“ wurde angelegt',
2833
+ 'hr.accr_day_length': 'Länge eines Urlaubstags',
2834
+ 'hr.accr_day_length_hint':
2835
+ 'In Minuten — {length}. Guthaben werden in Minuten geführt, damit halbe Tage und stundenweiser Urlaub exakt bleiben.',
2836
+ 'hr.accr_days_field': 'Tage pro vollem Jahr',
2837
+ 'hr.accr_days_field_hint': 'Vor Senioritätsstufen, anteiliger Berechnung und Teilzeitstunden.',
2838
+ 'hr.accr_days_per_year': { one: '{count} Tag pro Jahr', other: '{count} Tage pro Jahr' },
2839
+ 'hr.accr_desc':
2840
+ 'Wie Urlaub über die Zeit entsteht: die Regeln, für wen jede gilt, und was der nächste Lauf gutschreiben würde.',
2841
+ 'hr.accr_duplicate': 'Duplizieren',
2842
+ 'hr.accr_edit_retroactive':
2843
+ 'Eine Änderung schreibt auch die Vergangenheit um, und alles daraus bereits Gutgeschriebene lässt sich kaum noch erklären. Um die Regeln ab einem Datum zu ändern, duplizieren Sie diese Regel und geben der Kopie einen späteren Beginn.',
2844
+ 'hr.accr_edit_title': 'Anspruchsregel bearbeiten',
2845
+ 'hr.accr_effective_from': 'Gültig ab',
2846
+ 'hr.accr_effective_from_hint': 'Später nicht änderbar — ein neues Startdatum ist eine neue Regel.',
2847
+ 'hr.accr_effective_to': 'Gültig bis',
2848
+ 'hr.accr_effective_to_hint': 'Leer lassen für kein Ende.',
2849
+ 'hr.accr_error': 'Die Anspruchsregeln konnten nicht geladen werden',
2850
+ 'hr.accr_error_desc': 'Der Server hat nicht geantwortet. Es hat sich nichts geändert.',
2851
+ 'hr.accr_error_from': 'Wählen Sie das Startdatum.',
2852
+ 'hr.accr_error_leave_type': 'Wählen Sie die Abwesenheitsart, auf die gebucht wird.',
2853
+ 'hr.accr_error_name': 'Geben Sie der Regel einen Namen.',
2854
+ 'hr.accr_error_pick_policy': 'Wählen Sie eine Regel.',
2855
+ 'hr.accr_error_pick_subject': 'Wählen Sie, für wen sie gilt.',
2856
+ 'hr.accr_error_tier_clash': 'Zwei Stufen beginnen bei derselben Anzahl Jahre.',
2857
+ 'hr.accr_error_to_before_from': 'Das Enddatum liegt vor dem Startdatum.',
2858
+ 'hr.accr_freq_anniversary': 'An jedem Eintrittsjahrestag',
2859
+ 'hr.accr_freq_anniversary_desc':
2860
+ 'An jedem Jahrestag des Eintritts entsteht ein volles Jahr, rückwirkend erworben. Im Eintrittsjahr entsteht nichts.',
2861
+ 'hr.accr_freq_annual': 'Einmal im Jahr',
2862
+ 'hr.accr_freq_annual_desc':
2863
+ 'Das ganze Jahr entsteht am 1. Januar — bei späterem Eintritt am Eintrittsdatum, mit dem verbleibenden Anteil des Jahres.',
2864
+ 'hr.accr_freq_monthly': 'Jeden Monat',
2865
+ 'hr.accr_freq_monthly_desc':
2866
+ 'Am Ende jedes Monats entsteht ein Zwölftel des Jahres, anteilig nach den Tagen, an denen jemand tatsächlich beschäftigt war.',
2867
+ 'hr.accr_freq_per_hour': 'Je geleisteter Stunde',
2868
+ 'hr.accr_freq_per_hour_desc':
2869
+ 'Der Jahresanteil des Zeitraums, skaliert mit den tatsächlich geleisteten gegenüber den geplanten Stunden. Aus der Zeiterfassung gelesen.',
2870
+ 'hr.accr_frequency': 'Wann der Anspruch entsteht',
2871
+ 'hr.accr_from_date': 'Ab {date}',
2872
+ 'hr.accr_job_note':
2873
+ 'Ein Job schreibt den Vormonat am jeweils eigenen 1. jedes Standorts gut, sodass die meisten Arbeitsbereiche dies nie brauchen. Ein Lauf von Hand tut genau dasselbe, und ein bereits gutgeschriebener Zeitraum wird kein zweites Mal gutgeschrieben.',
2874
+ 'hr.accr_ladder': 'Für wen jede Regel gilt',
2875
+ 'hr.accr_ladder_desc':
2876
+ 'Das nächstliegende Ziel gewinnt. Eine Regel für eine Person schlägt die ihres Standorts, diese den Rechtsträger, dann die Abteilung, die Stelle und zuletzt den gesamten Arbeitsbereich.',
2877
+ 'hr.accr_ladder_error': 'Die Zuweisungen konnten nicht geladen werden',
2878
+ 'hr.accr_ladder_needs_policy': 'Legen Sie zuerst eine Regel an; es gibt noch nichts zuzuweisen.',
2879
+ 'hr.accr_ladder_none': 'Noch nichts zugewiesen',
2880
+ 'hr.accr_ladder_none_desc':
2881
+ 'Solange keine Regel jemandem zugewiesen ist, baut niemand Anspruch auf — der Job läuft und schreibt nichts gut.',
2882
+ 'hr.accr_leave_type': 'Abwesenheitsart',
2883
+ 'hr.accr_leave_type_hint': 'Auf welches Guthaben die Tage gebucht werden.',
2884
+ 'hr.accr_leave_type_pick': 'Abwesenheitsart auswählen',
2885
+ 'hr.accr_name': 'Name',
2886
+ 'hr.accr_name_hint':
2887
+ 'Der Name, den die Personalabteilung verwendet — „Jahresurlaub Türkei“, „Vollzeit, ab 2026“.',
2888
+ 'hr.accr_needs_attendance':
2889
+ 'Die Zeiterfassung ist in diesem Arbeitsbereich ausgeschaltet, also hat niemand geplante Stunden — diese Regel würde nichts gutschreiben.',
2890
+ 'hr.accr_new': 'Neue Regel',
2891
+ 'hr.accr_no_default':
2892
+ 'Auf dem Arbeitsbereich liegt keine Regel — wer keine nähere hat, baut überhaupt keinen Anspruch auf.',
2893
+ 'hr.accr_no_leave_types':
2894
+ 'Es gibt noch keine Abwesenheitsarten, und der Anspruchsaufbau muss auf eine buchen.',
2895
+ 'hr.accr_nobody': 'Niemand',
2896
+ 'hr.accr_none': 'Noch keine Anspruchsregeln',
2897
+ 'hr.accr_none_desc':
2898
+ 'Bis eine Regel existiert, wird Urlaub von Hand gewährt. Eine Regel lässt ihn Monat für Monat oder einmal im Jahr entstehen, und das Konto hält fest, woher jeder Tag stammt.',
2899
+ 'hr.accr_policies': 'Anspruchsregeln',
2900
+ 'hr.accr_policies_desc':
2901
+ 'Eine Regel legt fest, wie viel ein Jahr einbringt, wann der Anspruch entsteht und wie gerundet wird. Ohne zugewiesene Regel baut niemand Anspruch auf.',
2902
+ 'hr.accr_preview_error': 'Die Vorschau konnte nicht berechnet werden',
2903
+ 'hr.accr_readonly':
2904
+ 'Sie können diese Seite lesen; zum Ändern brauchen Sie die Berechtigung, Regeln zu verwalten.',
2905
+ 'hr.accr_round_day': 'Ein ganzer Tag',
2906
+ 'hr.accr_round_exact': 'Keine Rundung',
2907
+ 'hr.accr_round_half_day': 'Ein halber Tag',
2908
+ 'hr.accr_round_minutes': { one: '{count} Minute', other: '{count} Minuten' },
2909
+ 'hr.accr_round_short': 'auf {step} gerundet',
2910
+ 'hr.accr_rounding': 'Rundung',
2911
+ 'hr.accr_rounding_hint': 'Jeder Anspruchsaufbau wird auf diesen Schritt gerundet.',
2912
+ 'hr.accr_run_already': 'Bereits gutgeschrieben',
2913
+ 'hr.accr_run_credit': { one: '{count} Person gutschreiben', other: '{count} Personen gutschreiben' },
2914
+ 'hr.accr_run_desc': 'Lesen Sie zuerst die Zahlen. Es wird nichts geschrieben, bevor Sie sie gutschreiben.',
2915
+ 'hr.accr_run_done': { one: '{count} Person gutgeschrieben', other: '{count} Personen gutgeschrieben' },
2916
+ 'hr.accr_run_error': 'Der Anspruchslauf ist fehlgeschlagen',
2917
+ 'hr.accr_run_from': 'Zeitraum von',
2918
+ 'hr.accr_run_idempotent': {
2919
+ one: '{count} Zeile ist für diesen Zeitraum bereits gutgeschrieben und bleibt unangetastet.',
2920
+ other: '{count} Zeilen sind für diesen Zeitraum bereits gutgeschrieben und bleiben unangetastet.',
2921
+ },
2922
+ 'hr.accr_run_more': { one: 'und {count} weiterer', other: 'und {count} weitere' },
2923
+ 'hr.accr_run_needs_policy': 'Es gibt noch keine Regel, die laufen könnte.',
2924
+ 'hr.accr_run_nothing': 'Nichts gutzuschreiben',
2925
+ 'hr.accr_run_nothing_desc':
2926
+ 'Keine Regel gewährt für diesen Zeitraum etwas. Eine jährliche oder jahrestagsbasierte Regel gewährt in Monaten ohne Stichtag nichts.',
2927
+ 'hr.accr_run_open': 'Lauf vorab ansehen',
2928
+ 'hr.accr_run_people': 'Gutzuschreiben',
2929
+ 'hr.accr_run_rows': 'Alle in diesem Zeitraum',
2930
+ 'hr.accr_run_section': 'Gutschrift auf das Konto',
2931
+ 'hr.accr_run_section_desc': 'Was ein Lauf dem Guthaben aller hinzufügen würde — und der Lauf selbst.',
2932
+ 'hr.accr_run_skipped': 'Übersprungen',
2933
+ 'hr.accr_run_title': 'Anspruchslauf',
2934
+ 'hr.accr_run_to': 'Zeitraum bis',
2935
+ 'hr.accr_run_total': 'Gesamt',
2936
+ 'hr.accr_run_writes':
2937
+ 'Die Gutschrift wird in das Urlaubskonto geschrieben. Hier ist sie nicht rückgängig zu machen — eine falsche Gutschrift wird über eine Urlaubskorrektur berichtigt.',
2938
+ 'hr.accr_rung_empty': 'Auf dieser Stufe liegt nichts.',
2939
+ 'hr.accr_rung_legal_entity': 'Rechtsträger',
2940
+ 'hr.accr_rung_legal_entity_hint':
2941
+ 'Alle, die bei dieser Gesellschaft angestellt sind. Hier liegen üblicherweise die Vorgaben eines Landes.',
2942
+ 'hr.accr_rung_needs_entities':
2943
+ 'Rechtsträger sind in diesem Arbeitsbereich ausgeschaltet — es gibt nichts auszuwählen.',
2944
+ 'hr.accr_rung_needs_offices':
2945
+ 'Standorte sind in diesem Arbeitsbereich ausgeschaltet — es gibt nichts auszuwählen.',
2946
+ 'hr.accr_rung_needs_org':
2947
+ 'Sie haben keine Berechtigung, das Organigramm zu lesen — dies lässt sich nicht auswählen.',
2948
+ 'hr.accr_rung_needs_people':
2949
+ 'Sie haben keine Berechtigung, das Verzeichnis zu lesen — hier lässt sich keine Person auswählen.',
2950
+ 'hr.accr_rung_office': 'Standort',
2951
+ 'hr.accr_rung_office_hint': 'Alle, deren primärer Standort dieser ist.',
2952
+ 'hr.accr_rung_org_unit': 'Abteilung',
2953
+ 'hr.accr_rung_org_unit_hint': 'Alle in dieser Abteilung, einschließlich der darunterliegenden Teams.',
2954
+ 'hr.accr_rung_person': 'Person',
2955
+ 'hr.accr_rung_person_hint': 'Schlägt alles andere. Für den einen Vertrag, der von den übrigen abweicht.',
2956
+ 'hr.accr_rung_position': 'Stelle',
2957
+ 'hr.accr_rung_position_hint': 'Alle, die diese Stelle innehaben.',
2958
+ 'hr.accr_rung_taken':
2959
+ '„{name}“ gilt auf dieser Stufe bereits für {subject}. Zwei Regeln hier sind mehrdeutig, sofern ihre Zeiträume sie nicht trennen.',
2960
+ 'hr.accr_rung_workspace': 'Arbeitsbereich',
2961
+ 'hr.accr_rung_workspace_hint': 'Die Rückfallebene für alle ohne nähere Regel.',
2962
+ 'hr.accr_save_error': 'Die Regel konnte nicht gespeichert werden',
2963
+ 'hr.accr_saved': 'Regel gespeichert',
2964
+ 'hr.accr_show_archived': 'Archivierte anzeigen',
2965
+ 'hr.accr_stale': 'Diese Zahlen sind möglicherweise nicht aktuell.',
2966
+ 'hr.accr_stat_assignments': 'Zuweisungen',
2967
+ 'hr.accr_stat_default': 'Standard des Arbeitsbereichs',
2968
+ 'hr.accr_stat_default_none': 'Keine',
2969
+ 'hr.accr_stat_default_none_note': 'Wer keine nähere Regel hat, baut keinen Anspruch auf.',
2970
+ 'hr.accr_stat_policies': 'Regeln',
2971
+ 'hr.accr_subject_loading': 'Wird geladen…',
2972
+ 'hr.accr_subject_missing': 'Kein Ziel',
2973
+ 'hr.accr_subject_none': 'Es gibt noch keine Einträge vom Typ {rung} zur Auswahl.',
2974
+ 'hr.accr_subject_pick': 'Auswählen',
2975
+ 'hr.accr_subject_unknown': 'Nicht im Verzeichnis ({id})',
2976
+ 'hr.accr_tier_add': 'Stufe hinzufügen',
2977
+ 'hr.accr_tier_after': 'Ab Dienstjahren',
2978
+ 'hr.accr_tier_days': 'Tage pro Jahr',
2979
+ 'hr.accr_tier_remove': 'Stufe bei {years} Dienstjahren entfernen',
2980
+ 'hr.accr_tiers': 'Senioritätsstufen',
2981
+ 'hr.accr_tiers_count': { one: '{count} Senioritätsstufe', other: '{count} Senioritätsstufen' },
2982
+ 'hr.accr_tiers_hint':
2983
+ 'Es gilt die höchste erreichte Stufe; die Reihenfolge, in der Sie sie eintragen, spielt keine Rolle.',
2984
+ 'hr.accr_tiers_none': {
2985
+ one: 'Alle erhalten {count} Tag pro Jahr, unabhängig von der Betriebszugehörigkeit.',
2986
+ other: 'Alle erhalten {count} Tage pro Jahr, unabhängig von der Betriebszugehörigkeit.',
2987
+ },
2988
+ 'hr.accr_unassign': 'Entfernen',
2989
+ 'hr.accr_unassign_body': '„{name}“ gilt ab sofort nicht mehr.',
2990
+ 'hr.accr_unassign_error': 'Die Zuweisung konnte nicht entfernt werden',
2991
+ 'hr.accr_unassign_falls_back':
2992
+ 'Sie fallen auf die nächste Stufe mit einer Regel zurück — „{name}“ auf dem Arbeitsbereich.',
2993
+ 'hr.accr_unassign_keeps':
2994
+ 'Bereits gutgeschriebener Urlaub bleibt im Konto; nur künftige Läufe ändern sich.',
2995
+ 'hr.accr_unassign_label': '„{name}“ für {subject} nicht mehr anwenden',
2996
+ 'hr.accr_unassign_no_fallback':
2997
+ 'Auf keiner tieferen Stufe liegt eine Regel — der Anspruchsaufbau endet damit vollständig.',
2998
+ 'hr.accr_unassign_title': 'Anspruchsaufbau für {subject} beenden?',
2999
+ 'hr.accr_unassigned': '„{name}“ gilt nicht mehr für {subject}',
3000
+ 'hr.accr_waiting': 'Wartezeit',
3001
+ 'hr.accr_waiting_hint': 'Monate nach Eintritt, bevor Anspruch entsteht. 0 beginnt sofort.',
3002
+ 'hr.accr_waiting_short': { one: '{count} Monat Wartezeit', other: '{count} Monate Wartezeit' },
1395
3003
  'hr.add_person': 'Person hinzufügen',
1396
3004
  'hr.add_person_desc':
1397
3005
  'Name und Eintrittsdatum reichen. Eine Personalnummer wird vergeben, wenn Sie das Feld leer lassen.',
@@ -1430,7 +3038,63 @@ export const de: Record<string, Message> = {
1430
3038
  'hr.approve_confirm_next':
1431
3039
  'Dies ist nicht der letzte Schritt — der Antrag geht an die nächste freigebende Person.',
1432
3040
  'hr.approve_confirm_title': 'Diesen Antrag genehmigen?',
3041
+ 'hr.att_anomalies': 'Zu prüfen',
3042
+ 'hr.att_anomalies_count': { one: '{count} Punkt zu prüfen', other: '{count} Punkte zu prüfen' },
3043
+ 'hr.att_anomaly_break_end_without_start': 'Eine Pause wurde beendet, die nie begonnen hat',
3044
+ 'hr.att_anomaly_break_not_ended': 'Eine Pause wurde nie beendet und am Schichtende geschlossen',
3045
+ 'hr.att_anomaly_clock_out_without_in': 'Ausgestempelt, ohne vorher einzustempeln',
3046
+ 'hr.att_anomaly_double_break_start': 'Eine Pause begann, während eine andere noch lief',
3047
+ 'hr.att_anomaly_double_clock_in': 'Zweimal eingestempelt, ohne dazwischen auszustempeln',
3048
+ 'hr.att_anomaly_missing_clock_out': 'Die Schicht wurde nie ausgestempelt',
3049
+ 'hr.att_anomaly_overtime_beyond_cap': 'Überstunden über der Jahresobergrenze, die nicht gezählt werden',
3050
+ 'hr.att_correct_this': 'Diese korrigieren',
3051
+ 'hr.att_correction_add': 'Buchung hinzufügen',
3052
+ 'hr.att_correction_denied':
3053
+ 'Für einen Korrekturantrag brauchen Sie die Berechtigung zum Ein- und Ausstempeln.',
3054
+ 'hr.att_correction_desc':
3055
+ 'Bis zur Freigabe ändert sich nichts. Mit der Freigabe werden die Buchungen unten erfasst und die ersetzten storniert — die ursprünglichen bleiben im Nachweis.',
3056
+ 'hr.att_correction_direction': 'Buchung',
3057
+ 'hr.att_correction_error': 'Die Korrektur konnte nicht gesendet werden',
3058
+ 'hr.att_correction_for_punch': 'Dies ersetzt die Buchung „{punch}“ um {time}.',
3059
+ 'hr.att_correction_needs_one': 'Eine Korrektur braucht mindestens eine Buchung.',
3060
+ 'hr.att_correction_needs_reason': 'Beschreiben Sie, was passiert ist.',
3061
+ 'hr.att_correction_needs_time': 'Jede Buchung braucht eine Uhrzeit.',
3062
+ 'hr.att_correction_next_day': 'Folgetag',
3063
+ 'hr.att_correction_punches': 'Die Buchungen, die Ihrer Angabe nach zu diesem Tag gehören',
3064
+ 'hr.att_correction_reason': 'Was passiert ist',
3065
+ 'hr.att_correction_reason_hint': 'Die freigebende Person liest dies.',
3066
+ 'hr.att_correction_remove': 'Diese Buchung entfernen',
3067
+ 'hr.att_correction_request': 'Korrektur beantragen',
3068
+ 'hr.att_correction_sent': 'Zur Freigabe gesendet',
3069
+ 'hr.att_correction_submit': 'Zur Freigabe senden',
3070
+ 'hr.att_correction_time': 'Uhrzeit',
3071
+ 'hr.att_correction_title': 'Korrektur beantragen',
3072
+ 'hr.att_correction_waiting': 'Wartet auf Freigabe',
3073
+ 'hr.att_correction_zone_hint': 'Die Uhrzeiten werden von der Uhr Ihres Geräts gelesen.',
3074
+ 'hr.att_corrections_error': 'Ihre beantragten Korrekturen konnten nicht geladen werden',
3075
+ 'hr.att_corrections_pending': 'Von Ihnen beantragte Korrekturen',
3076
+ 'hr.att_locked_no_change':
3077
+ 'Dieser Monat ist für die Lohnabrechnung geschlossen; eine Korrektur ändert seine Zahlen nicht mehr.',
3078
+ 'hr.att_method_device': 'Terminal',
3079
+ 'hr.att_method_import': 'Importiert',
3080
+ 'hr.att_method_kiosk': 'Kiosk',
3081
+ 'hr.att_method_manual': 'Manuell erfasst',
3082
+ 'hr.att_method_mobile': 'Telefon',
3083
+ 'hr.att_method_qr': 'QR-Code',
3084
+ 'hr.att_method_web': 'Web',
1433
3085
  'hr.att_overtime': 'Überstunden',
3086
+ 'hr.att_punch_break_end': 'Pause beendet',
3087
+ 'hr.att_punch_break_start': 'Pause begonnen',
3088
+ 'hr.att_punch_in': 'Eingestempelt',
3089
+ 'hr.att_punch_out': 'Ausgestempelt',
3090
+ 'hr.att_punch_skew': 'Die Geräteuhr wich bei der Erfassung um {amount} ab.',
3091
+ 'hr.att_punch_void_reason': 'Storniert: {reason}',
3092
+ 'hr.att_punch_voided': 'Storniert',
3093
+ 'hr.att_punches': 'Buchungen',
3094
+ 'hr.att_punches_error': 'Die Buchungen konnten nicht geladen werden',
3095
+ 'hr.att_punches_none': 'An diesem Tag wurde nichts erfasst',
3096
+ 'hr.att_punches_none_desc': 'Wenn Sie gearbeitet haben, fordern Sie eine Korrektur des Tages an.',
3097
+ 'hr.att_punches_stale': 'Diese Buchungen sind möglicherweise nicht aktuell',
1434
3098
  'hr.att_scheduled': 'Geplant',
1435
3099
  'hr.att_status_absent': 'Abwesend',
1436
3100
  'hr.att_status_holiday': 'Feiertag',
@@ -1439,6 +3103,20 @@ export const de: Record<string, Message> = {
1439
3103
  'hr.att_status_pending': 'Zu prüfen',
1440
3104
  'hr.att_status_present': 'Anwesend',
1441
3105
  'hr.att_status_weekend': 'Wochenende',
3106
+ 'hr.att_trust_claimed': 'Zeit vom Gerät angegeben',
3107
+ 'hr.att_trust_disputed': 'Zeit strittig',
3108
+ 'hr.att_void': 'Stornieren',
3109
+ 'hr.att_void_body':
3110
+ 'Die Buchung „{punch}“ um {time} zählt nicht mehr für diesen Tag, und der Tag wird ohne sie neu berechnet.',
3111
+ 'hr.att_void_done': 'Die Buchung wurde storniert und der Tag neu berechnet',
3112
+ 'hr.att_void_error': 'Die Buchung konnte nicht storniert werden — es wurde nichts geändert',
3113
+ 'hr.att_void_keep': 'Behalten',
3114
+ 'hr.att_void_kept':
3115
+ 'Es wird nichts gelöscht. Die Buchung bleibt im Nachweis, und daneben wird eine Korrekturzeile mit Ihrem Namen und Ihrer Begründung geschrieben — wer den Nachweis später liest, sieht beides.',
3116
+ 'hr.att_void_reason_hint': 'Alle, die diesen Nachweis lesen, sehen es.',
3117
+ 'hr.att_void_reason_label': 'Warum diese Buchung falsch ist',
3118
+ 'hr.att_void_reason_missing': 'Nennen Sie den Grund, bevor Sie stornieren.',
3119
+ 'hr.att_void_title': 'Diese Buchung stornieren?',
1442
3120
  'hr.att_worked': 'Gearbeitet',
1443
3121
  'hr.attendance_error': 'Ihre Zeiterfassung konnte nicht geladen werden',
1444
3122
  'hr.attendance_none': 'Noch nichts erfasst',
@@ -1613,6 +3291,104 @@ export const de: Record<string, Message> = {
1613
3291
  'hr.capability_off_title': '{name} ausschalten?',
1614
3292
  'hr.capability_requires': 'Erfordert {name}',
1615
3293
  'hr.capability_write_error': 'Dieser Schalter konnte nicht geändert werden. Es wurde nichts gespeichert.',
3294
+ 'hr.chain_actions_for': 'Aktionen für {name}',
3295
+ 'hr.chain_add_approver': 'Freigebende Person hinzufügen',
3296
+ 'hr.chain_add_step': 'Schritt hinzufügen',
3297
+ 'hr.chain_already_default': 'Bereits im Einsatz',
3298
+ 'hr.chain_approvers': 'Freigebende',
3299
+ 'hr.chain_archive_default_warning':
3300
+ 'Nichts übernimmt: Bis Sie eine andere Kette in Betrieb nehmen, geht jeder neue Antrag allein an die Führungskraft der antragstellenden Person.',
3301
+ 'hr.chain_archive_inflight':
3302
+ 'Jeder bereits gestellte Antrag trägt seine eigene Kopie dieser Kette. Archivieren kann einem halb unterschriebenen Antrag weder eine Unterschrift hinzufügen noch eine nehmen — nichts Laufendes bewegt sich.',
3303
+ 'hr.chain_archive_title': '{name} archivieren?',
3304
+ 'hr.chain_archive_unused':
3305
+ 'Sie verschwindet aus dieser Liste. Kein neuer Antrag ist ihr gefolgt, sonst ändert sich nichts.',
3306
+ 'hr.chain_archive_was_default':
3307
+ 'Sie verschwindet aus dieser Liste, und neue Anträge ({subject}) folgen ihr nicht mehr.',
3308
+ 'hr.chain_archived_toast': '{name} ist archiviert',
3309
+ 'hr.chain_auto_approve_warning':
3310
+ 'Nach Ablauf der Frist gilt dieser Schritt als freigegeben, ohne dass ihn jemand gelesen hat.',
3311
+ 'hr.chain_create_title': 'Neue Freigabekette',
3312
+ 'hr.chain_created': '{name} ist angelegt',
3313
+ 'hr.chain_default_body': 'Jeder neue Antrag ({subject}) folgt ab jetzt dieser Kette.',
3314
+ 'hr.chain_default_inflight':
3315
+ 'Bereits gestellte Anträge behalten die Kette, mit der sie gestellt wurden. Keiner davon ändert sich.',
3316
+ 'hr.chain_default_replaces': '{name} ist dann nicht mehr im Einsatz und bleibt in der Liste.',
3317
+ 'hr.chain_default_switch': 'Diese Kette in Betrieb nehmen',
3318
+ 'hr.chain_default_switch_hint': 'Die Kette, der jeder neue Antrag dieser Art folgt. Nur eine je Art.',
3319
+ 'hr.chain_default_title': '{name} in Betrieb nehmen?',
3320
+ 'hr.chain_default_toast': '{name} ist jetzt im Einsatz',
3321
+ 'hr.chain_desc':
3322
+ 'Wer was in welcher Reihenfolge freigibt. Ein Antrag behält die Kette, mit der er gestellt wurde — was hier steht, erreicht nichts, was bereits unterwegs ist.',
3323
+ 'hr.chain_edit_title': 'Freigabekette bearbeiten',
3324
+ 'hr.chain_error': 'Die Freigabeketten konnten nicht geladen werden',
3325
+ 'hr.chain_gone':
3326
+ 'Diese Kette gibt es nicht mehr — jemand hat sie archiviert, während Sie sie bearbeitet haben.',
3327
+ 'hr.chain_in_use': 'Im Einsatz',
3328
+ 'hr.chain_last_approver': 'Ein Schritt braucht mindestens eine freigebende Person',
3329
+ 'hr.chain_last_step': 'Eine Kette braucht mindestens einen Schritt',
3330
+ 'hr.chain_make_default': 'Diese Kette in Betrieb nehmen',
3331
+ 'hr.chain_min': 'Wie viele',
3332
+ 'hr.chain_min_hint': 'Gezählt werden Personen, nicht die Zeilen oben: eine Zeile kann für mehrere stehen.',
3333
+ 'hr.chain_mode': 'Wie viele freigeben müssen',
3334
+ 'hr.chain_mode_all': 'Alle davon',
3335
+ 'hr.chain_mode_any': 'Eine beliebige davon',
3336
+ 'hr.chain_mode_hint': 'Ob eine Unterschrift den Schritt abschließt oder alle nötig sind.',
3337
+ 'hr.chain_mode_quorum': 'Eine feste Anzahl',
3338
+ 'hr.chain_move_down': 'Schritt {n} nach hinten',
3339
+ 'hr.chain_move_up': 'Schritt {n} nach vorn',
3340
+ 'hr.chain_name': 'Name',
3341
+ 'hr.chain_name_hint': 'Wie sie in dieser Liste heißt. Etwa "Abwesenheit über fünf Tage".',
3342
+ 'hr.chain_needs_approver': 'Schritt {n} braucht mindestens eine freigebende Person.',
3343
+ 'hr.chain_needs_min': 'Schritt {n} braucht eine Anzahl freigebender Personen.',
3344
+ 'hr.chain_needs_name': 'Geben Sie der Kette einen Namen.',
3345
+ 'hr.chain_needs_step_name': 'Schritt {n} braucht einen Namen.',
3346
+ 'hr.chain_needs_who': 'In Schritt {n} ist für eine freigebende Person niemand ausgewählt.',
3347
+ 'hr.chain_new': 'Neue Kette',
3348
+ 'hr.chain_no_default_note':
3349
+ 'Keine davon ist im Einsatz, deshalb geht jeder neue Antrag ({subject}) weiterhin allein an die Führungskraft der antragstellenden Person.',
3350
+ 'hr.chain_none': 'Keine Kette für {subject}',
3351
+ 'hr.chain_none_desc':
3352
+ 'Jeder Antrag geht an die Führungskraft der antragstellenden Person. Legen Sie eine Kette an, um zu ändern, wer in welcher Reihenfolge freigibt.',
3353
+ 'hr.chain_on_timeout': 'Nach Ablauf der Frist',
3354
+ 'hr.chain_perm_approval': 'Freigaben einrichten',
3355
+ 'hr.chain_perm_attendance': 'Zeiterfassung verwalten',
3356
+ 'hr.chain_perm_leave': 'Abwesenheit verwalten',
3357
+ 'hr.chain_perm_office': 'Standorte verwalten',
3358
+ 'hr.chain_perm_overtime': 'Überstunden verwalten',
3359
+ 'hr.chain_perm_person': 'Personen verwalten',
3360
+ 'hr.chain_remove_approver': 'Diese freigebende Person entfernen',
3361
+ 'hr.chain_remove_step': 'Diesen Schritt entfernen',
3362
+ 'hr.chain_resolved_hint': 'Wird beim Stellen des Antrags ermittelt.',
3363
+ 'hr.chain_save_error': 'Die Kette konnte nicht gespeichert werden',
3364
+ 'hr.chain_saved': 'Gespeichert',
3365
+ 'hr.chain_section_desc':
3366
+ 'Pro Art ist genau eine Kette im Einsatz: die als im Einsatz markierte. Die übrigen warten hier, bis Sie eine davon in Betrieb nehmen.',
3367
+ 'hr.chain_sla': 'Frist',
3368
+ 'hr.chain_sla_hint':
3369
+ 'Stunden, bis der Schritt angemahnt wird. Lassen Sie das Feld leer, wartet er unbegrenzt.',
3370
+ 'hr.chain_sla_none': 'Wartet unbegrenzt',
3371
+ 'hr.chain_snapshot_note':
3372
+ 'Ein Antrag kopiert seine Kette in dem Moment, in dem er gestellt wird. Was Sie hier ändern, gilt für Anträge ab jetzt; nichts, was auf eine Unterschrift wartet, bewegt sich.',
3373
+ 'hr.chain_step_first': 'Führungskraft',
3374
+ 'hr.chain_step_n': 'Schritt {n}',
3375
+ 'hr.chain_step_name': 'Name des Schritts',
3376
+ 'hr.chain_steps': 'Schritte',
3377
+ 'hr.chain_subject_count': { one: '{count} Kette', other: '{count} Ketten' },
3378
+ 'hr.chain_subject_filter': 'Anträge dieser Art',
3379
+ 'hr.chain_subject_hint': 'Eine Kette lässt sich später nicht auf eine andere Art umstellen.',
3380
+ 'hr.chain_subject_locked': 'Beim Anlegen der Kette festgelegt.',
3381
+ 'hr.chain_timeout_auto_approve': 'Freigeben',
3382
+ 'hr.chain_timeout_escalate': 'Eine Ebene höher geben',
3383
+ 'hr.chain_timeout_remind': 'Erinnerung senden',
3384
+ 'hr.chain_who': 'Wer freigibt',
3385
+ 'hr.chain_who_group': 'Eine Gruppe',
3386
+ 'hr.chain_who_manager': 'Ihre Führungskraft',
3387
+ 'hr.chain_who_manager_of_manager': 'Die Führungskraft ihrer Führungskraft',
3388
+ 'hr.chain_who_office_head': 'Leitung ihres Standorts',
3389
+ 'hr.chain_who_org_unit_head': 'Leitung ihrer Organisationseinheit',
3390
+ 'hr.chain_who_permission': 'Alle mit einer bestimmten Berechtigung',
3391
+ 'hr.chain_who_person': 'Eine bestimmte Person',
1616
3392
  'hr.choose': 'Auswählen…',
1617
3393
  'hr.clock_error': 'Die Zeiterfassung konnte nicht geladen werden',
1618
3394
  'hr.clock_in': 'Einstempeln',
@@ -1647,6 +3423,38 @@ export const de: Record<string, Message> = {
1647
3423
  'hr.delegate_to_date': 'Bis',
1648
3424
  'hr.department': 'Abteilung',
1649
3425
  'hr.display_name': 'Name',
3426
+ 'hr.doc_added_on': 'Hinzugefügt am {date}',
3427
+ 'hr.doc_attach': 'Dokument anhängen',
3428
+ 'hr.doc_attach_body':
3429
+ 'Die Datei wird in diesem Arbeitsbereich gespeichert und bei dieser Person aufgeführt.',
3430
+ 'hr.doc_attach_error': 'Das Dokument konnte nicht angehängt werden',
3431
+ 'hr.doc_attach_title': 'Dokument zu {name} hinzufügen',
3432
+ 'hr.doc_attached': '{name} ist angehängt',
3433
+ 'hr.doc_expired': 'Abgelaufen',
3434
+ 'hr.doc_expires': 'Ablaufdatum',
3435
+ 'hr.doc_expires_hint': 'Optional. Ein Ablauf wird vorher gekennzeichnet.',
3436
+ 'hr.doc_expires_on': 'Läuft am {date} ab',
3437
+ 'hr.doc_expiring': 'Läuft bald ab',
3438
+ 'hr.doc_issued': 'Ausstellungsdatum',
3439
+ 'hr.doc_issued_on': 'Ausgestellt am {date}',
3440
+ 'hr.doc_kind': 'Art',
3441
+ 'hr.doc_kind_certificate': 'Zertifikat',
3442
+ 'hr.doc_kind_contract': 'Vertrag',
3443
+ 'hr.doc_kind_id': 'Ausweisdokument',
3444
+ 'hr.doc_kind_other': 'Sonstiges',
3445
+ 'hr.doc_kind_payslip': 'Gehaltsabrechnung',
3446
+ 'hr.doc_name': 'Name',
3447
+ 'hr.doc_remove_body':
3448
+ 'Es verschwindet aus dem Eintrag von {person}. Die Datei selbst bleibt in den Dateien des Arbeitsbereichs.',
3449
+ 'hr.doc_remove_error': 'Das Dokument konnte nicht entfernt werden — es wurde nichts geändert',
3450
+ 'hr.doc_remove_label': '{name} entfernen',
3451
+ 'hr.doc_remove_title': '{name} entfernen?',
3452
+ 'hr.doc_removed': '{name} ist entfernt',
3453
+ 'hr.doc_uploading': '{name} wird hochgeladen…',
3454
+ 'hr.docs_error': 'Die Dokumente konnten nicht geladen werden',
3455
+ 'hr.docs_none': 'Noch keine Dokumente',
3456
+ 'hr.docs_none_desc': 'Verträge, Ausweisdokumente und Zertifikate, die zu dieser Person geführt werden.',
3457
+ 'hr.docs_title': 'Dokumente',
1650
3458
  'hr.edit_person': 'Bearbeiten',
1651
3459
  'hr.employee_no': 'Pers.-Nr.',
1652
3460
  'hr.employment': 'Anstellung',
@@ -1688,7 +3496,67 @@ export const de: Record<string, Message> = {
1688
3496
  'hr.general_saved': 'Einstellungen gespeichert',
1689
3497
  'hr.headcount': { one: '{count} Person', other: '{count} Personen' },
1690
3498
  'hr.hired_on': 'Eintritt',
3499
+ 'hr.hours': { one: 'Stunde', other: 'Stunden' },
1691
3500
  'hr.hours_short': '{n} Std.',
3501
+ 'hr.job_change': 'Änderung erfassen',
3502
+ 'hr.job_change_backdated':
3503
+ 'Dieses Datum liegt in der Vergangenheit, und das ist zulässig: Der Eintrag hält fest, dass die Änderung ab dann gilt.',
3504
+ 'hr.job_change_body':
3505
+ 'Damit wird der laufende Zeitraum geschlossen und ein neuer eröffnet. Bereits Erfasstes wird nicht überschrieben.',
3506
+ 'hr.job_change_closes': 'Der am {date} begonnene Zeitraum endet am Tag davor.',
3507
+ 'hr.job_change_error': 'Die Änderung konnte nicht erfasst werden — es hat sich nichts verschoben',
3508
+ 'hr.job_change_summary': 'Der Eintrag von {name} ändert sich ab {date}.',
3509
+ 'hr.job_change_title': 'Änderung für {name} erfassen',
3510
+ 'hr.job_change_too_early':
3511
+ 'Der laufende Zeitraum beginnt am {date}. Eine Änderung kann nicht davor datiert werden.',
3512
+ 'hr.job_changed': 'Die Anstellung von {name} ist aktualisiert',
3513
+ 'hr.job_effective_from': 'Gültig ab',
3514
+ 'hr.job_effective_hint':
3515
+ 'Im März vereinbart, im Mai eingetragen? Dann datieren Sie es auf März — der Eintrag muss sagen, wann es galt.',
3516
+ 'hr.job_error': 'Die Anstellung konnte nicht geladen werden',
3517
+ 'hr.job_fte': 'Vollzeitäquivalent',
3518
+ 'hr.job_fte_hint': '1 ist eine volle Woche, 0,5 die Hälfte davon.',
3519
+ 'hr.job_fte_invalid': 'Eine Zahl zwischen 0 und 1.',
3520
+ 'hr.job_fte_value': '{fte} VZÄ',
3521
+ 'hr.job_history': 'Verlauf',
3522
+ 'hr.job_history_error': 'Der Verlauf konnte nicht geladen werden',
3523
+ 'hr.job_history_none': 'Vor dem laufenden Zeitraum ist nichts erfasst.',
3524
+ 'hr.job_hours': 'Wochenstunden',
3525
+ 'hr.job_hours_invalid': 'Eine Zahl zwischen 0 und 168.',
3526
+ 'hr.job_hours_value': '{hours} Stunden pro Woche',
3527
+ 'hr.job_none': 'Keine Anstellung erfasst',
3528
+ 'hr.job_none_desc': 'Mit der ersten erfassten Änderung entsteht der erste Zeitraum.',
3529
+ 'hr.job_not_set': 'Nicht festgelegt',
3530
+ 'hr.job_period': 'Gültigkeit',
3531
+ 'hr.job_position': 'Position',
3532
+ 'hr.job_reason': 'Grund',
3533
+ 'hr.job_reason_hint': 'Optional. Erscheint im Verlauf neben dem Zeitraum.',
3534
+ 'hr.job_since': 'Seit {date}',
3535
+ 'hr.leave_adjust': 'Anpassen',
3536
+ 'hr.leave_adjust_add': 'Hinzufügen',
3537
+ 'hr.leave_adjust_amount_days': 'Wie viele Tage',
3538
+ 'hr.leave_adjust_amount_hours': 'Wie viele Stunden',
3539
+ 'hr.leave_adjust_amount_invalid': 'Eine Zahl größer als null. Die Richtung stellen Sie oben ein.',
3540
+ 'hr.leave_adjust_confirm_add': '{name}: Das Guthaben für {type} steigt um {amount}, gültig ab {date}.',
3541
+ 'hr.leave_adjust_confirm_remove': '{name}: Das Guthaben für {type} sinkt um {amount}, gültig ab {date}.',
3542
+ 'hr.leave_adjust_desc':
3543
+ 'Nichts bereits Gebuchtes ändert sich. Die Anpassung kommt als neue Zeile ins Buch, mit Ihrem Namen und Ihrer Begründung.',
3544
+ 'hr.leave_adjust_direction': 'Richtung',
3545
+ 'hr.leave_adjust_effective': 'Gültig ab',
3546
+ 'hr.leave_adjust_effective_hint': 'Dieses Datum entscheidet, in welches Anspruchsjahr die Anpassung fällt.',
3547
+ 'hr.leave_adjust_effective_invalid': 'Wählen Sie ein Datum.',
3548
+ 'hr.leave_adjust_error': 'Die Anpassung konnte nicht gebucht werden',
3549
+ 'hr.leave_adjust_irreversible':
3550
+ 'Das Buch wird nur ergänzt: Diese Zeile lässt sich weder ändern noch löschen. Ein Fehler wird mit einer zweiten Anpassung korrigiert, und beide bleiben sichtbar.',
3551
+ 'hr.leave_adjust_other_year':
3552
+ 'Dieses Datum liegt in {year} — bewegt wird also dieses Anspruchsjahr, nicht das angezeigte.',
3553
+ 'hr.leave_adjust_reason_hint':
3554
+ 'Das ist die Antwort, wenn jemand fragt, warum sich die Zahl bewegt hat. Schreiben Sie den Satz, den Sie selbst lesen wollen würden: „aus dem alten System übernommen“, nicht „Korrektur“.',
3555
+ 'hr.leave_adjust_reason_required':
3556
+ 'Nennen Sie den Grund. Eine unerklärte Guthabenänderung ist genau die, nach der später gefragt wird.',
3557
+ 'hr.leave_adjust_remove': 'Abziehen',
3558
+ 'hr.leave_adjust_title': 'Dieses Guthaben von Hand anpassen',
3559
+ 'hr.leave_adjusted_toast': 'Guthaben angepasst',
1692
3560
  'hr.leave_after': { one: 'danach bleibt {count} Tag', other: 'danach bleiben {count} Tage' },
1693
3561
  'hr.leave_after_hours': { one: 'danach bleibt {count} Stunde', other: 'danach bleiben {count} Stunden' },
1694
3562
  'hr.leave_approved': 'Genehmigt',
@@ -1736,6 +3604,33 @@ export const de: Record<string, Message> = {
1736
3604
  'hr.leave_icon_sick': 'Krankheit',
1737
3605
  'hr.leave_icon_special': 'Besonderes',
1738
3606
  'hr.leave_icon_trip': 'Dienstreise',
3607
+ 'hr.leave_kind_accrual': 'Angesammelt',
3608
+ 'hr.leave_kind_adjustment': 'Von Hand angepasst',
3609
+ 'hr.leave_kind_carry_in': 'Übertrag aus dem Vorjahr',
3610
+ 'hr.leave_kind_carry_out': 'Übertrag ins nächste Jahr',
3611
+ 'hr.leave_kind_consumption': 'Genommen',
3612
+ 'hr.leave_kind_encashment': 'Ausgezahlt',
3613
+ 'hr.leave_kind_expiry': 'Verfallen',
3614
+ 'hr.leave_kind_grant': 'Gutgeschrieben',
3615
+ 'hr.leave_kind_reversal': 'Zurückgebucht',
3616
+ 'hr.leave_ledger': 'Bewegungen',
3617
+ 'hr.leave_ledger_after': 'Guthaben danach',
3618
+ 'hr.leave_ledger_balance': 'Aktuelles Guthaben',
3619
+ 'hr.leave_ledger_capped': {
3620
+ one: 'Nur die neueste Bewegung. Ältere werden nicht angezeigt.',
3621
+ other: 'Die {count} neuesten Bewegungen. Ältere werden nicht angezeigt.',
3622
+ },
3623
+ 'hr.leave_ledger_change': 'Veränderung',
3624
+ 'hr.leave_ledger_error': 'Die Bewegungen konnten nicht geladen werden',
3625
+ 'hr.leave_ledger_none': 'In diesem Jahr hat sich nichts bewegt',
3626
+ 'hr.leave_ledger_none_desc': 'Jede Gutschrift, jede Buchung und jede Korrektur landet hier — bisher keine.',
3627
+ 'hr.leave_ledger_open': 'Sehen, wie sich {name} zusammensetzt',
3628
+ 'hr.leave_ledger_reversed': 'Storniert',
3629
+ 'hr.leave_ledger_reverses': 'Nimmt die Buchung vom {date} zurück',
3630
+ 'hr.leave_ledger_title': 'Wie sich {name} zusammensetzt',
3631
+ 'hr.leave_ledger_what': 'Was passiert ist',
3632
+ 'hr.leave_ledger_when': 'Datum',
3633
+ 'hr.leave_ledger_year': 'Anspruchsjahr {year}',
1739
3634
  'hr.leave_none': 'Keine Abwesenheit eingetragen',
1740
3635
  'hr.leave_none_desc': 'Wenn Sie eine Abwesenheit eintragen, erscheint sie hier.',
1741
3636
  'hr.leave_pending': 'Genehmigung ausstehend',
@@ -1930,7 +3825,173 @@ export const de: Record<string, Message> = {
1930
3825
  'hr.offices_timezones': 'Zeitzonen',
1931
3826
  'hr.offices_title': 'Standorte',
1932
3827
  'hr.on_break_since': 'Seit {time} in der Pause',
3828
+ 'hr.org_archive_blocked_children': {
3829
+ one: 'Ihre {count} Unterabteilung bliebe ohne übergeordnete Abteilung. Verschieben oder archivieren Sie sie zuerst.',
3830
+ other:
3831
+ 'Ihre {count} Unterabteilungen blieben ohne übergeordnete Abteilung. Verschieben oder archivieren Sie sie zuerst.',
3832
+ },
3833
+ 'hr.org_archive_blocked_people': {
3834
+ one: '{count} Person berichtet noch in sie hinein. Weisen Sie ihr zuerst eine andere Abteilung zu.',
3835
+ other: '{count} Personen berichten noch in sie hinein. Weisen Sie ihnen zuerst eine andere Abteilung zu.',
3836
+ },
3837
+ 'hr.org_archive_body':
3838
+ 'Sie verlässt das Organigramm und wird nicht mehr angeboten, wenn jemandem eine Abteilung zugewiesen wird.',
3839
+ 'hr.org_archive_error': 'Die Abteilung konnte nicht archiviert werden',
3840
+ 'hr.org_archive_note':
3841
+ 'Es wird nichts gelöscht und nichts bereits Erfasstes ändert sich: Wer in ihr gearbeitet hat, behält das in seiner Historie. Von diesem Bildschirm aus gibt es keinen Weg zurück.',
3842
+ 'hr.org_archive_title': '{name} archivieren?',
3843
+ 'hr.org_archived': '{name} ist archiviert',
3844
+ 'hr.org_code': 'Kürzel',
3845
+ 'hr.org_code_hint': 'Kurz, für Exporte und die Lohnabrechnung. Optional.',
3846
+ 'hr.org_detail_label': 'Details zur Abteilung',
3847
+ 'hr.org_detail_none': 'Nichts ausgewählt',
3848
+ 'hr.org_detail_none_desc': 'Wählen Sie eine Abteilung, um zu sehen, wer darin ist und wer sie führt.',
3849
+ 'hr.org_error': 'Das Organigramm konnte nicht geladen werden',
3850
+ 'hr.org_error_desc': 'Die Abteilungen kamen nicht zurück. Versuchen Sie es erneut.',
3851
+ 'hr.org_head': 'Abteilungsleitung',
3852
+ 'hr.org_head_hint': 'Wer die Abteilung führt. Optional, und es ändert sonst nichts.',
3853
+ 'hr.org_head_none': 'Noch niemand',
3854
+ 'hr.org_head_set': 'Festlegen',
3855
+ 'hr.org_head_unknown': 'Jemand, der nicht mehr im Verzeichnis steht',
3856
+ 'hr.org_here': 'In dieser Abteilung',
3857
+ 'hr.org_move': 'Verschieben',
3858
+ 'hr.org_move_body':
3859
+ 'Alles unter {name} wird mitverschoben. Aufgabe, Führungskraft und Stunden bleiben bei allen gleich — nur der Platz im Organigramm ändert sich.',
3860
+ 'hr.org_move_error': 'Die Abteilung konnte nicht verschoben werden',
3861
+ 'hr.org_move_people': {
3862
+ one: '{count} Person wird mitverschoben.',
3863
+ other: '{count} Personen werden mitverschoben.',
3864
+ },
3865
+ 'hr.org_move_people_none': 'Hier arbeitet noch niemand, es ändert sich also kein Datensatz.',
3866
+ 'hr.org_move_same': 'Dort steht sie bereits.',
3867
+ 'hr.org_move_title': '{name} verschieben',
3868
+ 'hr.org_move_to': 'Verschieben unter',
3869
+ 'hr.org_move_units': {
3870
+ one: '{count} Abteilung wird verschoben.',
3871
+ other: '{count} Abteilungen werden verschoben.',
3872
+ },
3873
+ 'hr.org_moved': '{name} wurde verschoben',
3874
+ 'hr.org_no_match': 'Keine Abteilung passt',
3875
+ 'hr.org_no_match_desc': 'Versuchen Sie einen Teil des Namens oder das Kürzel.',
3876
+ 'hr.org_none': 'Noch keine Abteilungen',
3877
+ 'hr.org_none_desc':
3878
+ 'Eine Abteilung ist das, worauf eine Berichtslinie zeigt, und sie macht einen ganzen Zweig des Unternehmens auf einmal durchsuchbar. Legen Sie die erste an, dann wächst das Organigramm darunter.',
3879
+ 'hr.org_parent': 'Gehört unter',
3880
+ 'hr.org_parent_fixed_hint':
3881
+ 'Ein Verschieben schreibt den Pfad von allem darunter neu und hat deshalb eine eigene Aktion.',
3882
+ 'hr.org_path': 'Wo sie steht',
3883
+ 'hr.org_position_actions': 'Aktionen für {title}',
3884
+ 'hr.org_position_add': 'Stelle anlegen',
3885
+ 'hr.org_position_archive_body':
3886
+ 'Sie wird nicht mehr angeboten, wenn jemandem eine Tätigkeit zugewiesen wird. Wer sie bereits innehat, behält sie, und nichts bereits Erfasstes ändert sich.',
3887
+ 'hr.org_position_archive_error': 'Die Stelle konnte nicht archiviert werden',
3888
+ 'hr.org_position_archive_title': '{title} archivieren?',
3889
+ 'hr.org_position_archived': '{title} ist archiviert',
3890
+ 'hr.org_position_created': '{title} ist angelegt',
3891
+ 'hr.org_position_edit_title': '{title} bearbeiten',
3892
+ 'hr.org_position_family': 'Berufsfeld',
3893
+ 'hr.org_position_family_hint': 'Fasst verwandte Bezeichnungen zusammen — Entwicklung, Vertrieb. Optional.',
3894
+ 'hr.org_position_level': 'Stufe',
3895
+ 'hr.org_position_level_hint': 'Wo sie auf der Karriereleiter steht, etwa L4 oder Senior. Optional.',
3896
+ 'hr.org_position_new': 'Neue Stelle',
3897
+ 'hr.org_position_save_error': 'Die Stelle konnte nicht gespeichert werden',
3898
+ 'hr.org_position_saved': 'Stelle gespeichert',
3899
+ 'hr.org_position_title': 'Bezeichnung',
3900
+ 'hr.org_positions_error': 'Die Stellen konnten nicht geladen werden',
3901
+ 'hr.org_positions_none': 'Noch keine Stellen',
3902
+ 'hr.org_positions_none_desc':
3903
+ 'Eine Stelle ist eine Tätigkeit, für die das Unternehmen einstellt, keine Person. Eine Stelle kann von niemandem oder von zwanzig Personen besetzt sein.',
3904
+ 'hr.org_root': 'Oberste Ebene',
3905
+ 'hr.org_search_label': 'Abteilungen nach Name oder Kürzel durchsuchen',
3906
+ 'hr.org_search_placeholder': 'Abteilungen durchsuchen',
3907
+ 'hr.org_see_people': { one: 'Die {count} Person hier ansehen', other: 'Die {count} Personen hier ansehen' },
3908
+ 'hr.org_stat_levels': 'Ebenen',
3909
+ 'hr.org_stat_people': 'Zugeordnete Personen',
3910
+ 'hr.org_stat_positions': 'Stellen',
3911
+ 'hr.org_stat_units': 'Abteilungen',
3912
+ 'hr.org_subunits': 'Unterabteilungen',
3913
+ 'hr.org_subunits_none': 'Darunter liegt nichts.',
3914
+ 'hr.org_tab_chart': 'Organigramm',
3915
+ 'hr.org_tab_positions': 'Stellen',
3916
+ 'hr.org_title': 'Organisation',
3917
+ 'hr.org_unit_add': 'Abteilung anlegen',
3918
+ 'hr.org_unit_add_child': 'Unterabteilung anlegen',
3919
+ 'hr.org_unit_created': '{name} ist angelegt',
3920
+ 'hr.org_unit_edit_title': '{name} bearbeiten',
3921
+ 'hr.org_unit_new': 'Neue Abteilung',
3922
+ 'hr.org_unit_new_under': 'Neue Abteilung unter {name}',
3923
+ 'hr.org_unit_save_error': 'Die Abteilung konnte nicht gespeichert werden',
3924
+ 'hr.org_unit_saved': 'Abteilung gespeichert',
3925
+ 'hr.org_with_below': 'Mit Unterabteilungen',
1933
3926
  'hr.people_error': 'Das Verzeichnis konnte nicht geladen werden',
3927
+ 'hr.periods_attendance': 'Zeiterfassung',
3928
+ 'hr.periods_attendance_desc':
3929
+ 'Monate, die für die Zeiterfassung geschlossen wurden statt für die Abrechnung. Beide Arten schließen einen Monat gleich — die Art hält fest, warum.',
3930
+ 'hr.periods_closed_on': 'Geschlossen am {date}',
3931
+ 'hr.periods_create_desc':
3932
+ 'Ein Zeitraum wird offen angelegt. Festgeschrieben wird nichts, bevor Sie ihn schließen.',
3933
+ 'hr.periods_create_error': 'Der Zeitraum konnte nicht angelegt werden',
3934
+ 'hr.periods_create_title': 'Neuer Zeitraum',
3935
+ 'hr.periods_created': '{range} angelegt und offen, bis Sie ihn schließen',
3936
+ 'hr.periods_desc':
3937
+ 'Schließen Sie einen Monat, damit eine eingereichte Abrechnung sich nicht nachträglich verschiebt. Wird er wieder geöffnet, kann er sich erneut verschieben.',
3938
+ 'hr.periods_ends': 'Letzter Tag',
3939
+ 'hr.periods_entity_hint':
3940
+ 'Schließt nur die Personen, die dieser Rechtsträger an diesen Tagen beschäftigt hat. Lassen Sie es beim gesamten Arbeitsbereich, um alle zu schließen.',
3941
+ 'hr.periods_error': 'Die Zeiträume konnten nicht geladen werden',
3942
+ 'hr.periods_kind': 'Art',
3943
+ 'hr.periods_kind_hint': 'Wofür der Monat geschlossen wird. Beide Arten schließen dieselben Tage.',
3944
+ 'hr.periods_lock': 'Schließen',
3945
+ 'hr.periods_lock_adjustments':
3946
+ 'Eine Richtlinienänderung mit einem Datum darin wird stattdessen zu einer Korrektur in einem offenen Zeitraum. Sie können den Zeitraum später mit einer Begründung wieder öffnen.',
3947
+ 'hr.periods_lock_body': 'Jeder erfasste Tag in diesem Zeitraum wird nicht mehr neu berechnet, für {scope}.',
3948
+ 'hr.periods_lock_confirm': 'Zeitraum schließen',
3949
+ 'hr.periods_lock_error': 'Der Zeitraum konnte nicht geschlossen werden',
3950
+ 'hr.periods_lock_note': 'Notiz',
3951
+ 'hr.periods_lock_note_hint': 'Optional. Bleibt am Zeitraum — halten Sie fest, was eingereicht wurde.',
3952
+ 'hr.periods_lock_title': '{range} schließen?',
3953
+ 'hr.periods_locked': 'Geschlossen',
3954
+ 'hr.periods_locked_none': 'Geschlossen. Es lag noch kein erfasster Tag darin.',
3955
+ 'hr.periods_locked_toast': {
3956
+ one: 'Geschlossen. {count} Tag kann nicht mehr neu berechnet werden.',
3957
+ other: 'Geschlossen. {count} Tage können nicht mehr neu berechnet werden.',
3958
+ },
3959
+ 'hr.periods_new': 'Neuer Zeitraum',
3960
+ 'hr.periods_none': 'Noch keine Zeiträume',
3961
+ 'hr.periods_none_desc':
3962
+ 'Legen Sie einen für den Monat an, den Sie festschreiben möchten, und schließen Sie ihn — dann werden die Tage darin nicht mehr neu berechnet.',
3963
+ 'hr.periods_open': 'Offen',
3964
+ 'hr.periods_overlap':
3965
+ '{range} deckt einige dieser Tage bereits ab. Zwei Zeiträume derselben Art dürfen sich beim selben Arbeitgeber nicht überschneiden.',
3966
+ 'hr.periods_payroll': 'Abrechnung',
3967
+ 'hr.periods_payroll_desc': 'Die Monate, für die eine Abrechnung eingereicht wurde.',
3968
+ 'hr.periods_range': 'Zeitraum',
3969
+ 'hr.periods_range_invalid': 'Der letzte Tag liegt vor dem ersten.',
3970
+ 'hr.periods_read_only':
3971
+ 'Sie können die Zeiträume hier lesen. Zum Schließen und Wiederöffnen brauchen Sie die Berechtigung, Abrechnungszeiträume zu verwalten.',
3972
+ 'hr.periods_reopen': 'Wieder öffnen',
3973
+ 'hr.periods_reopen_body': 'Die Tage darin können wieder neu berechnet werden, für {scope}.',
3974
+ 'hr.periods_reopen_error': 'Der Zeitraum konnte nicht wieder geöffnet werden',
3975
+ 'hr.periods_reopen_filed':
3976
+ 'Eine für diesen Monat bereits eingereichte Abrechnung kann sich unter den Zahlen verschieben, die jemand schon verschickt hat.',
3977
+ 'hr.periods_reopen_keep': 'Geschlossen lassen',
3978
+ 'hr.periods_reopen_overlap':
3979
+ 'Ein anderer geschlossener Zeitraum deckt einige dieser Tage weiterhin ab — diese Tage bleiben geschlossen:',
3980
+ 'hr.periods_reopen_reason': 'Warum Sie ihn wieder öffnen',
3981
+ 'hr.periods_reopen_reason_hint':
3982
+ 'Bleibt am Zeitraum, damit diese Liste sagt, warum er wieder geöffnet wurde.',
3983
+ 'hr.periods_reopen_reason_required': 'Geben Sie eine Begründung an, bevor Sie ihn wieder öffnen.',
3984
+ 'hr.periods_reopen_title': '{range} wieder öffnen?',
3985
+ 'hr.periods_reopened_none': 'Wieder geöffnet. Kein erfasster Tag hat sich geändert.',
3986
+ 'hr.periods_reopened_toast': {
3987
+ one: 'Wieder geöffnet. {count} Tag kann erneut berechnet werden.',
3988
+ other: 'Wieder geöffnet. {count} Tage können erneut berechnet werden.',
3989
+ },
3990
+ 'hr.periods_scope': 'Gilt für',
3991
+ 'hr.periods_scope_all': 'Den gesamten Arbeitsbereich',
3992
+ 'hr.periods_scope_entity': 'Einen Rechtsträger',
3993
+ 'hr.periods_stale': 'Diese Liste ist möglicherweise nicht aktuell',
3994
+ 'hr.periods_starts': 'Erster Tag',
1934
3995
  'hr.person_create_error': 'Diese Person konnte nicht hinzugefügt werden — es wurde nichts gespeichert',
1935
3996
  'hr.person_created': '{name} steht im Verzeichnis',
1936
3997
  'hr.person_error': 'Der Eintrag dieser Person konnte nicht geladen werden',
@@ -2039,6 +4100,29 @@ export const de: Record<string, Message> = {
2039
4100
  'Sie können die Arbeitszeitmodelle hier lesen; zum Ändern brauchen Sie die Berechtigung, die Zeiterfassung zu verwalten.',
2040
4101
  'hr.schedules_show_archived': 'Archivierte anzeigen',
2041
4102
  'hr.search_people': 'Personen suchen',
4103
+ 'hr.sensitive_add_contact': 'Notfallkontakt hinzufügen',
4104
+ 'hr.sensitive_birth_date': 'Geburtsdatum',
4105
+ 'hr.sensitive_contact_hint': 'Wer angerufen wird, wenn bei der Arbeit etwas passiert.',
4106
+ 'hr.sensitive_contact_name': 'Notfallkontakt',
4107
+ 'hr.sensitive_contact_partial': 'Name und Nummer zusammen — oder beides leer.',
4108
+ 'hr.sensitive_edit_body':
4109
+ 'Verschlüsselt gespeichert. Protokolliert wird, dass sich diese Angaben geändert haben — nie ihr Inhalt.',
4110
+ 'hr.sensitive_edit_title': 'Persönliche Angaben von {name}',
4111
+ 'hr.sensitive_emergency': 'Im Notfall anrufen',
4112
+ 'hr.sensitive_emergency_none': 'Kein Notfallkontakt hinterlegt',
4113
+ 'hr.sensitive_error': 'Diese Angaben konnten nicht geladen werden',
4114
+ 'hr.sensitive_hidden':
4115
+ 'Notfallkontakt, Geburtsdatum, Ausweis- und Bankangaben. Sie erscheinen, sobald Sie diesen Abschnitt öffnen.',
4116
+ 'hr.sensitive_iban': 'IBAN',
4117
+ 'hr.sensitive_national_id': 'Ausweisnummer',
4118
+ 'hr.sensitive_none': 'Nichts erfasst',
4119
+ 'hr.sensitive_none_desc':
4120
+ 'Beginnen Sie mit dem Notfallkontakt — das ist die Angabe, die jemand in Eile braucht.',
4121
+ 'hr.sensitive_relationship': 'Beziehung',
4122
+ 'hr.sensitive_save_error': 'Diese Angaben konnten nicht gespeichert werden — es wurde nichts geändert',
4123
+ 'hr.sensitive_title': 'Persönliche Angaben und Notfallkontakt',
4124
+ 'hr.settings_accrual': 'Anspruchsaufbau',
4125
+ 'hr.settings_approvals': 'Freigaben',
2042
4126
  'hr.settings_calendars': 'Feiertage',
2043
4127
  'hr.settings_capabilities': 'Funktionen',
2044
4128
  'hr.settings_general': 'Allgemein',
@@ -2047,6 +4131,7 @@ export const de: Record<string, Message> = {
2047
4131
  'hr.settings_leave': 'Abwesenheit',
2048
4132
  'hr.settings_not_built': 'Die API dafür ist fertig; die Bearbeitungsansicht gibt es noch nicht.',
2049
4133
  'hr.settings_offices': 'Standorte',
4134
+ 'hr.settings_periods': 'Zeiträume',
2050
4135
  'hr.settings_schedules': 'Arbeitszeiten',
2051
4136
  'hr.started': 'Eintritt',
2052
4137
  'hr.status': 'Status',
@@ -2073,6 +4158,199 @@ export const de: Record<string, Message> = {
2073
4158
  }
2074
4159
 
2075
4160
  export const fa: Record<string, Message> = {
4161
+ 'hr.accr_actions_for': 'کارهای {name}',
4162
+ 'hr.accr_already_archived': 'همین حالا بایگانی شده',
4163
+ 'hr.accr_archive_assigned': {
4164
+ one: 'به {count} مورد تخصیص داده شده و آن تخصیص از کار می‌افتد.',
4165
+ other: 'به {count} مورد تخصیص داده شده و آن تخصیص‌ها از کار می‌افتند.',
4166
+ },
4167
+ 'hr.accr_archive_body': 'از این به بعد برای هیچ‌کس اعمال نمی‌شود.',
4168
+ 'hr.accr_archive_error': 'قاعده بایگانی نشد',
4169
+ 'hr.accr_archive_keeps':
4170
+ 'بایگانی می‌شود، هرگز حذف نمی‌شود: مرخصی‌ای که قبلاً اضافه شده نام همین قاعده را دارد، و رکوردی که قاعده‌اش ناپدید شده عددی است که کسی نمی‌تواند توضیحش دهد.',
4171
+ 'hr.accr_archive_title': '«{name}» بایگانی شود؟',
4172
+ 'hr.accr_archived': '«{name}» بایگانی شد',
4173
+ 'hr.accr_assign': 'تخصیص',
4174
+ 'hr.accr_assign_desc':
4175
+ 'قاعده و پله‌ای که روی آن می‌نشیند را انتخاب کنید. نزدیک‌ترین پله به هر شخص همان است که برایش تصمیم می‌گیرد.',
4176
+ 'hr.accr_assign_error': 'تخصیص ذخیره نشد',
4177
+ 'hr.accr_assign_policy': 'قاعده',
4178
+ 'hr.accr_assign_policy_pick': 'یک قاعده انتخاب کنید',
4179
+ 'hr.accr_assign_rung': 'برای',
4180
+ 'hr.accr_assign_subject': 'کدام {rung}',
4181
+ 'hr.accr_assign_title': 'تخصیص یک قاعده',
4182
+ 'hr.accr_assign_to_hint': 'برای اینکه همیشه اعمال شود، خالی بگذارید.',
4183
+ 'hr.accr_assigned': '«{name}» حالا برای {subject} اعمال می‌شود',
4184
+ 'hr.accr_badge_archived': 'بایگانی‌شده',
4185
+ 'hr.accr_beaten_by': 'این‌ها همچنان بر آن می‌چربند:',
4186
+ 'hr.accr_beats_everything': 'هیچ‌چیز بر این پله نمی‌چربد — برای همان کسی که نام می‌برد تصمیم می‌گیرد.',
4187
+ 'hr.accr_col_applies': 'برای چه کسی',
4188
+ 'hr.accr_col_earns': 'چقدر',
4189
+ 'hr.accr_col_policy': 'قاعده',
4190
+ 'hr.accr_col_when': 'کِی',
4191
+ 'hr.accr_config_unreadable': 'تنظیمات این قاعده خوانده نمی‌شود',
4192
+ 'hr.accr_copy_of': '{name} (رونوشت)',
4193
+ 'hr.accr_create_title': 'قاعدهٔ انباشت تازه',
4194
+ 'hr.accr_created': '«{name}» ساخته شد',
4195
+ 'hr.accr_day_length': 'طول یک روز مرخصی',
4196
+ 'hr.accr_day_length_hint':
4197
+ 'به دقیقه — {length}. مانده‌ها به دقیقه نگه داشته می‌شوند تا نیم‌روز و مرخصی ساعتی دقیق بماند.',
4198
+ 'hr.accr_days_field': 'روزهایی که یک سال کامل می‌آورد',
4199
+ 'hr.accr_days_field_hint': 'پیش از پله‌های سابقه، محاسبهٔ نسبی و ساعت‌های پاره‌وقت.',
4200
+ 'hr.accr_days_per_year': { one: '{count} روز در سال', other: '{count} روز در سال' },
4201
+ 'hr.accr_desc':
4202
+ 'اینکه مرخصی به‌مرور چطور تعلق می‌گیرد: قاعده‌ها، اینکه هرکدام برای چه کسی است، و اجرای بعدی چه چیزی اضافه می‌کند.',
4203
+ 'hr.accr_duplicate': 'رونوشت',
4204
+ 'hr.accr_edit_retroactive':
4205
+ 'ویرایش، چیزی را که در گذشته درست بوده هم بازنویسی می‌کند و توضیح‌دادن آنچه از آن اضافه شده سخت می‌شود. برای تغییر قاعده از یک تاریخ به بعد، از این قاعده رونوشت بگیرید و به رونوشت شروع دیرتری بدهید.',
4206
+ 'hr.accr_edit_title': 'ویرایش قاعدهٔ انباشت',
4207
+ 'hr.accr_effective_from': 'از تاریخ',
4208
+ 'hr.accr_effective_from_hint': 'بعداً تغییرپذیر نیست — تاریخ شروع تازه یعنی قاعدهٔ تازه.',
4209
+ 'hr.accr_effective_to': 'تا تاریخ',
4210
+ 'hr.accr_effective_to_hint': 'برای بی‌پایان بودن، خالی بگذارید.',
4211
+ 'hr.accr_error': 'قاعده‌های انباشت بارگیری نشد',
4212
+ 'hr.accr_error_desc': 'سرور جواب نداد. چیزی تغییر نکرده.',
4213
+ 'hr.accr_error_from': 'تاریخ شروع را انتخاب کنید.',
4214
+ 'hr.accr_error_leave_type': 'نوع مرخصی‌ای که به آن اضافه می‌شود را انتخاب کنید.',
4215
+ 'hr.accr_error_name': 'به قاعده نامی بدهید.',
4216
+ 'hr.accr_error_pick_policy': 'یک قاعده انتخاب کنید.',
4217
+ 'hr.accr_error_pick_subject': 'انتخاب کنید برای چه کسی است.',
4218
+ 'hr.accr_error_tier_clash': 'دو پله از یک تعداد سال یکسان شروع می‌شوند.',
4219
+ 'hr.accr_error_to_before_from': 'تاریخ پایان پیش از تاریخ شروع است.',
4220
+ 'hr.accr_freq_anniversary': 'در هر سالگرد استخدام',
4221
+ 'hr.accr_freq_anniversary_desc':
4222
+ 'در هر سالگرد تاریخ استخدام یک سال کامل اضافه می‌شود، بابت سالی که گذشته. در سال ورود چیزی اضافه نمی‌شود.',
4223
+ 'hr.accr_freq_annual': 'سالی یک‌بار',
4224
+ 'hr.accr_freq_annual_desc':
4225
+ 'کل سال در اول ژانویه اضافه می‌شود — یا در تاریخ استخدام برای کسی که دیرتر آمده و سهم باقی‌ماندهٔ سال را می‌گیرد.',
4226
+ 'hr.accr_freq_monthly': 'هر ماه',
4227
+ 'hr.accr_freq_monthly_desc':
4228
+ 'پایان هر ماه یک‌دوازدهم سال اضافه می‌شود، به نسبت روزهایی که شخص واقعاً در آن ماه شاغل بوده.',
4229
+ 'hr.accr_freq_per_hour': 'به ازای هر ساعت کارکرد',
4230
+ 'hr.accr_freq_per_hour_desc':
4231
+ 'سهم آن دوره از یک سال، ضرب در نسبت ساعت‌های واقعاً کارشده به ساعت‌های برنامه‌ریزی‌شده. از حضور و غیاب خوانده می‌شود.',
4232
+ 'hr.accr_frequency': 'مرخصی کِی اضافه می‌شود',
4233
+ 'hr.accr_from_date': 'از {date}',
4234
+ 'hr.accr_job_note':
4235
+ 'یک کار خودکار، اول ماهِ خودِ هر دفتر، ماه گذشته را اضافه می‌کند؛ پس بیشتر فضاهای کاری اصلاً به این نیازی ندارند. اجرای دستی دقیقاً همان کار را می‌کند و دوره‌ای که یک‌بار اضافه شده دوباره اضافه نمی‌شود.',
4236
+ 'hr.accr_ladder': 'هر قاعده برای چه کسی است',
4237
+ 'hr.accr_ladder_desc':
4238
+ 'نزدیک‌ترین مورد برنده است. قاعده‌ای که به یک نفر داده شده بر قاعدهٔ دفترش می‌چربد، آن هم بر شخصیت حقوقی، واحد، سمت و در آخر کل فضای کاری.',
4239
+ 'hr.accr_ladder_error': 'تخصیص‌ها بارگیری نشد',
4240
+ 'hr.accr_ladder_needs_policy': 'اول یک قاعده بسازید؛ فعلاً چیزی برای تخصیص نیست.',
4241
+ 'hr.accr_ladder_none': 'هنوز چیزی تخصیص داده نشده',
4242
+ 'hr.accr_ladder_none_desc':
4243
+ 'تا قاعده‌ای به کسی داده نشود، چیزی برای کسی انباشته نمی‌شود — کار اجرا می‌شود و چیزی اضافه نمی‌کند.',
4244
+ 'hr.accr_leave_type': 'نوع مرخصی',
4245
+ 'hr.accr_leave_type_hint': 'روزها به کدام مانده اضافه می‌شوند.',
4246
+ 'hr.accr_leave_type_pick': 'یک نوع مرخصی انتخاب کنید',
4247
+ 'hr.accr_name': 'نام',
4248
+ 'hr.accr_name_hint': 'همان نامی که منابع انسانی به کار می‌برد — «مرخصی سالانهٔ ایران»، «تمام‌وقت، از ۱۴۰۵».',
4249
+ 'hr.accr_needs_attendance':
4250
+ 'حضور و غیاب در این فضای کاری خاموش است، پس هیچ‌کس ساعت برنامه‌ریزی‌شده ندارد — این قاعده چیزی اضافه نمی‌کند.',
4251
+ 'hr.accr_new': 'قاعدهٔ تازه',
4252
+ 'hr.accr_no_default':
4253
+ 'هیچ قاعده‌ای روی فضای کاری نیست، پس هرکس قاعدهٔ نزدیک‌تری نداشته باشد اصلاً چیزی برایش انباشته نمی‌شود.',
4254
+ 'hr.accr_no_leave_types': 'هنوز نوع مرخصی‌ای نیست، و انباشت باید به یکی از آن‌ها اضافه شود.',
4255
+ 'hr.accr_nobody': 'هیچ‌کس',
4256
+ 'hr.accr_none': 'هنوز قاعدهٔ انباشتی نیست',
4257
+ 'hr.accr_none_desc':
4258
+ 'تا وقتی قاعده‌ای نباشد، مرخصی دستی داده می‌شود. قاعده آن را ماه‌به‌ماه یا سالی یک‌بار می‌آورد و دفتر ثبت می‌کند هر روز از کجا آمده.',
4259
+ 'hr.accr_policies': 'قاعده‌های انباشت',
4260
+ 'hr.accr_policies_desc':
4261
+ 'هر قاعده می‌گوید یک سال چقدر مرخصی می‌آورد، کِی اضافه می‌شود و چطور گرد می‌شود. تا قاعده‌ای به کسی داده نشود، چیزی برایش انباشته نمی‌شود.',
4262
+ 'hr.accr_preview_error': 'پیش‌نمایش محاسبه نشد',
4263
+ 'hr.accr_readonly': 'این صفحه را می‌بینید، اما تغییر هر چیزی به دسترسی مدیریت قاعده‌ها نیاز دارد.',
4264
+ 'hr.accr_round_day': 'یک روز کامل',
4265
+ 'hr.accr_round_exact': 'بدون گردکردن',
4266
+ 'hr.accr_round_half_day': 'نیم‌روز',
4267
+ 'hr.accr_round_minutes': { one: '{count} دقیقه', other: '{count} دقیقه' },
4268
+ 'hr.accr_round_short': 'گرد شده به {step}',
4269
+ 'hr.accr_rounding': 'گردکردن',
4270
+ 'hr.accr_rounding_hint': 'هر انباشت به این گام گرد می‌شود.',
4271
+ 'hr.accr_run_already': 'قبلاً اضافه شده',
4272
+ 'hr.accr_run_credit': { one: 'اضافه‌کردن برای {count} نفر', other: 'اضافه‌کردن برای {count} نفر' },
4273
+ 'hr.accr_run_desc': 'اول عددها را بخوانید. تا وقتی اضافه‌شان نکنید چیزی نوشته نمی‌شود.',
4274
+ 'hr.accr_run_done': { one: 'برای {count} نفر اضافه شد', other: 'برای {count} نفر اضافه شد' },
4275
+ 'hr.accr_run_error': 'اجرای انباشت انجام نشد',
4276
+ 'hr.accr_run_from': 'دوره از',
4277
+ 'hr.accr_run_idempotent': {
4278
+ one: '{count} ردیف برای این دوره قبلاً اضافه شده و دست‌نخورده می‌ماند.',
4279
+ other: '{count} ردیف برای این دوره قبلاً اضافه شده و دست‌نخورده می‌مانند.',
4280
+ },
4281
+ 'hr.accr_run_more': { one: 'و {count} مورد دیگر', other: 'و {count} مورد دیگر' },
4282
+ 'hr.accr_run_needs_policy': 'هنوز قاعده‌ای برای اجرا نیست.',
4283
+ 'hr.accr_run_nothing': 'چیزی برای اضافه‌کردن نیست',
4284
+ 'hr.accr_run_nothing_desc':
4285
+ 'هیچ قاعده‌ای برای این دوره چیزی نمی‌دهد. قاعدهٔ سالانه یا سالگردی در ماه‌هایی که تاریخ اعطا در آن‌ها نیست چیزی نمی‌دهد.',
4286
+ 'hr.accr_run_open': 'پیش‌نمایش اجرا',
4287
+ 'hr.accr_run_people': 'برای اضافه‌شدن',
4288
+ 'hr.accr_run_rows': 'همهٔ افراد این دوره',
4289
+ 'hr.accr_run_section': 'اضافه‌کردن به دفتر',
4290
+ 'hr.accr_run_section_desc': 'اینکه یک اجرا چه چیزی به ماندهٔ همه اضافه می‌کند، و خودِ اجرا.',
4291
+ 'hr.accr_run_skipped': 'رد شده',
4292
+ 'hr.accr_run_title': 'اجرای انباشت',
4293
+ 'hr.accr_run_to': 'دوره تا',
4294
+ 'hr.accr_run_total': 'جمع',
4295
+ 'hr.accr_run_writes':
4296
+ 'اضافه‌کردن در دفتر مرخصی نوشته می‌شود. از اینجا برگشت‌پذیر نیست — اضافهٔ اشتباه با یک اصلاح مرخصی جبران می‌شود.',
4297
+ 'hr.accr_rung_empty': 'روی این پله چیزی نیست.',
4298
+ 'hr.accr_rung_legal_entity': 'شخصیت حقوقی',
4299
+ 'hr.accr_rung_legal_entity_hint':
4300
+ 'هرکسی که کارفرمایش این شرکت است. قاعده‌های قانونی هر کشور معمولاً اینجا می‌نشیند.',
4301
+ 'hr.accr_rung_needs_entities': 'اشخاص حقوقی در این فضای کاری خاموش است، پس چیزی برای انتخاب نیست.',
4302
+ 'hr.accr_rung_needs_offices': 'دفترها در این فضای کاری خاموش است، پس چیزی برای انتخاب نیست.',
4303
+ 'hr.accr_rung_needs_org': 'دسترسی خواندن چارت سازمانی را ندارید، پس این انتخاب‌شدنی نیست.',
4304
+ 'hr.accr_rung_needs_people': 'دسترسی خواندن فهرست افراد را ندارید، پس اینجا نمی‌شود شخصی انتخاب کرد.',
4305
+ 'hr.accr_rung_office': 'دفتر',
4306
+ 'hr.accr_rung_office_hint': 'هر کسی که دفتر اصلی‌اش همین است.',
4307
+ 'hr.accr_rung_org_unit': 'واحد',
4308
+ 'hr.accr_rung_org_unit_hint': 'همهٔ افراد این واحد، شامل تیم‌های زیرمجموعه‌اش.',
4309
+ 'hr.accr_rung_person': 'شخص',
4310
+ 'hr.accr_rung_person_hint': 'از همه بالاتر است. برای همان یک قراردادی که با بقیه فرق دارد.',
4311
+ 'hr.accr_rung_position': 'سمت',
4312
+ 'hr.accr_rung_position_hint': 'هرکسی که این سمت را دارد.',
4313
+ 'hr.accr_rung_taken':
4314
+ '«{name}» از همین پله برای {subject} اعمال می‌شود. دو قاعده در اینجا مبهم است، مگر تاریخ‌هایشان از هم جدایشان کند.',
4315
+ 'hr.accr_rung_workspace': 'فضای کاری',
4316
+ 'hr.accr_rung_workspace_hint': 'همان چیزی که برای هرکس قاعدهٔ نزدیک‌تری ندارد اعمال می‌شود.',
4317
+ 'hr.accr_save_error': 'قاعده ذخیره نشد',
4318
+ 'hr.accr_saved': 'قاعده ذخیره شد',
4319
+ 'hr.accr_show_archived': 'نمایش بایگانی‌شده‌ها',
4320
+ 'hr.accr_stale': 'این عددها ممکن است به‌روز نباشند.',
4321
+ 'hr.accr_stat_assignments': 'تخصیص‌ها',
4322
+ 'hr.accr_stat_default': 'پیش‌فرض فضای کاری',
4323
+ 'hr.accr_stat_default_none': 'ندارد',
4324
+ 'hr.accr_stat_default_none_note': 'هرکس قاعدهٔ نزدیک‌تری نداشته باشد، چیزی برایش انباشته نمی‌شود.',
4325
+ 'hr.accr_stat_policies': 'قاعده‌ها',
4326
+ 'hr.accr_subject_loading': 'در حال بارگیری…',
4327
+ 'hr.accr_subject_missing': 'بدون مورد',
4328
+ 'hr.accr_subject_none': 'هنوز رکورد {rung} برای انتخاب وجود ندارد.',
4329
+ 'hr.accr_subject_pick': 'یکی را انتخاب کنید',
4330
+ 'hr.accr_subject_unknown': 'در فهرست نیست ({id})',
4331
+ 'hr.accr_tier_add': 'افزودن پله',
4332
+ 'hr.accr_tier_after': 'پس از این سال‌های سابقه',
4333
+ 'hr.accr_tier_days': 'روز در سال',
4334
+ 'hr.accr_tier_remove': 'حذف پلهٔ {years} سال سابقه',
4335
+ 'hr.accr_tiers': 'پله‌های سابقه',
4336
+ 'hr.accr_tiers_count': { one: '{count} پلهٔ سابقه', other: '{count} پلهٔ سابقه' },
4337
+ 'hr.accr_tiers_hint': 'بالاترین پله‌ای که شخص به آن رسیده برنده است؛ ترتیب نوشتنشان فرقی نمی‌کند.',
4338
+ 'hr.accr_tiers_none': {
4339
+ one: 'همه سالی {count} روز می‌گیرند، هر قدر هم سابقه داشته باشند.',
4340
+ other: 'همه سالی {count} روز می‌گیرند، هر قدر هم سابقه داشته باشند.',
4341
+ },
4342
+ 'hr.accr_unassign': 'برداشتن',
4343
+ 'hr.accr_unassign_body': '«{name}» از این به بعد اعمال نمی‌شود.',
4344
+ 'hr.accr_unassign_error': 'تخصیص برداشته نشد',
4345
+ 'hr.accr_unassign_falls_back': 'به پلهٔ بعدی که قاعده دارد می‌افتند — «{name}» روی فضای کاری.',
4346
+ 'hr.accr_unassign_keeps': 'مرخصی‌ای که قبلاً اضافه شده در دفتر می‌ماند؛ فقط اجراهای بعدی فرق می‌کند.',
4347
+ 'hr.accr_unassign_label': 'اعمال «{name}» برای {subject} را متوقف کن',
4348
+ 'hr.accr_unassign_no_fallback': 'روی هیچ پلهٔ پایین‌تری قاعده‌ای نیست، پس انباشت به‌کلی متوقف می‌شود.',
4349
+ 'hr.accr_unassign_title': 'انباشت برای {subject} متوقف شود؟',
4350
+ 'hr.accr_unassigned': '«{name}» دیگر برای {subject} اعمال نمی‌شود',
4351
+ 'hr.accr_waiting': 'دورهٔ انتظار',
4352
+ 'hr.accr_waiting_hint': 'چند ماه بعد از شروع کار تا انباشت آغاز شود. صفر یعنی از همان اول.',
4353
+ 'hr.accr_waiting_short': { one: '{count} ماه انتظار', other: '{count} ماه انتظار' },
2076
4354
  'hr.add_person': 'افزودن فرد',
2077
4355
  'hr.add_person_desc': 'نام و تاریخ شروع کافی است. اگر شماره پرسنلی نگذارید، خودش ساخته می‌شود.',
2078
4356
  'hr.approval_comment': 'توضیح',
@@ -2107,7 +4385,61 @@ export const fa: Record<string, Message> = {
2107
4385
  'hr.approve_confirm_leave': 'روزها از موجودی او کم می‌شود و در تقویم تیم غایب نمایش داده می‌شود.',
2108
4386
  'hr.approve_confirm_next': 'این مرحلهٔ آخر نیست — درخواست به تأییدکنندهٔ بعدی می‌رود.',
2109
4387
  'hr.approve_confirm_title': 'این درخواست تأیید شود؟',
4388
+ 'hr.att_anomalies': 'نیازمند بررسی',
4389
+ 'hr.att_anomalies_count': { one: '{count} مورد برای بررسی', other: '{count} مورد برای بررسی' },
4390
+ 'hr.att_anomaly_break_end_without_start': 'پایان استراحتی که آغاز نشده بود',
4391
+ 'hr.att_anomaly_break_not_ended': 'استراحت هرگز پایان نیافته و در پایان شیفت بسته شد',
4392
+ 'hr.att_anomaly_clock_out_without_in': 'خروج بدون ورودِ پیش از آن',
4393
+ 'hr.att_anomaly_double_break_start': 'استراحت تازه‌ای در میان استراحتی که هنوز باز بود آغاز شده',
4394
+ 'hr.att_anomaly_double_clock_in': 'دو بار ورود بدون خروج در میان آن‌ها',
4395
+ 'hr.att_anomaly_missing_clock_out': 'شیفت هرگز با خروج بسته نشده',
4396
+ 'hr.att_anomaly_overtime_beyond_cap': 'اضافه‌کارِ فراتر از سقف سالانه که شمرده نمی‌شود',
4397
+ 'hr.att_correct_this': 'اصلاح این ثبت',
4398
+ 'hr.att_correction_add': 'افزودن ثبت',
4399
+ 'hr.att_correction_denied': 'درخواست اصلاح به اجازهٔ ثبت ورود و خروج نیاز دارد.',
4400
+ 'hr.att_correction_desc':
4401
+ 'تا تأیید نشود چیزی تغییر نمی‌کند. با تأیید، ثبت‌های زیر نوشته و آنچه جایگزینش می‌شوند باطل می‌شود — اصل‌ها در سابقه می‌مانند.',
4402
+ 'hr.att_correction_direction': 'ثبت',
4403
+ 'hr.att_correction_error': 'اصلاح ارسال نشد',
4404
+ 'hr.att_correction_for_punch': 'این جایگزین ثبت «{punch}» ساعت {time} می‌شود.',
4405
+ 'hr.att_correction_needs_one': 'هر اصلاح دست‌کم به یک ثبت نیاز دارد.',
4406
+ 'hr.att_correction_needs_reason': 'بنویسید چه اتفاقی افتاد.',
4407
+ 'hr.att_correction_needs_time': 'هر ثبت باید ساعت داشته باشد.',
4408
+ 'hr.att_correction_next_day': 'روز بعد',
4409
+ 'hr.att_correction_punches': 'ثبت‌هایی که می‌گویید به این روز تعلق دارند',
4410
+ 'hr.att_correction_reason': 'چه اتفاقی افتاد',
4411
+ 'hr.att_correction_reason_hint': 'تأییدکننده این را می‌خواند.',
4412
+ 'hr.att_correction_remove': 'حذف این ثبت',
4413
+ 'hr.att_correction_request': 'درخواست اصلاح',
4414
+ 'hr.att_correction_sent': 'برای تأیید ارسال شد',
4415
+ 'hr.att_correction_submit': 'ارسال برای تأیید',
4416
+ 'hr.att_correction_time': 'ساعت',
4417
+ 'hr.att_correction_title': 'درخواست اصلاح',
4418
+ 'hr.att_correction_waiting': 'در انتظار تأیید',
4419
+ 'hr.att_correction_zone_hint': 'ساعت‌ها از ساعت دستگاه شما خوانده می‌شود.',
4420
+ 'hr.att_corrections_error': 'اصلاح‌هایی که خواسته‌اید بارگذاری نشد',
4421
+ 'hr.att_corrections_pending': 'اصلاح‌هایی که خواسته‌اید',
4422
+ 'hr.att_locked_no_change': 'این ماه برای حقوق و دستمزد بسته شده و اصلاح، ارقام آن را جابه‌جا نمی‌کند.',
4423
+ 'hr.att_method_device': 'دستگاه',
4424
+ 'hr.att_method_import': 'واردشده',
4425
+ 'hr.att_method_kiosk': 'کیوسک',
4426
+ 'hr.att_method_manual': 'ثبت دستی',
4427
+ 'hr.att_method_mobile': 'تلفن',
4428
+ 'hr.att_method_qr': 'کد QR',
4429
+ 'hr.att_method_web': 'وب',
2110
4430
  'hr.att_overtime': 'اضافه‌کار',
4431
+ 'hr.att_punch_break_end': 'پایان استراحت',
4432
+ 'hr.att_punch_break_start': 'آغاز استراحت',
4433
+ 'hr.att_punch_in': 'ورود',
4434
+ 'hr.att_punch_out': 'خروج',
4435
+ 'hr.att_punch_skew': 'هنگام ثبت، ساعت دستگاه {amount} اختلاف داشت.',
4436
+ 'hr.att_punch_void_reason': 'دلیل ابطال: {reason}',
4437
+ 'hr.att_punch_voided': 'باطل‌شده',
4438
+ 'hr.att_punches': 'ثبت‌های ورود و خروج',
4439
+ 'hr.att_punches_error': 'ثبت‌ها بارگذاری نشد',
4440
+ 'hr.att_punches_none': 'برای این روز چیزی ثبت نشده',
4441
+ 'hr.att_punches_none_desc': 'اگر آن روز کار کرده‌اید، اصلاح روز را درخواست کنید.',
4442
+ 'hr.att_punches_stale': 'ممکن است این ثبت‌ها به‌روز نباشند',
2111
4443
  'hr.att_scheduled': 'برنامه',
2112
4444
  'hr.att_status_absent': 'غایب',
2113
4445
  'hr.att_status_holiday': 'تعطیل',
@@ -2116,6 +4448,20 @@ export const fa: Record<string, Message> = {
2116
4448
  'hr.att_status_pending': 'نیاز به بررسی',
2117
4449
  'hr.att_status_present': 'حاضر',
2118
4450
  'hr.att_status_weekend': 'آخر هفته',
4451
+ 'hr.att_trust_claimed': 'زمان را دستگاه اعلام کرده',
4452
+ 'hr.att_trust_disputed': 'زمان مورد مناقشه',
4453
+ 'hr.att_void': 'باطل کردن',
4454
+ 'hr.att_void_body':
4455
+ 'ثبت «{punch}» ساعت {time} دیگر به این روز شمرده نمی‌شود و روز بدون آن دوباره محاسبه می‌شود.',
4456
+ 'hr.att_void_done': 'ثبت باطل شد و روز دوباره محاسبه شد',
4457
+ 'hr.att_void_error': 'ثبت باطل نشد — چیزی تغییر نکرد',
4458
+ 'hr.att_void_keep': 'بماند',
4459
+ 'hr.att_void_kept':
4460
+ 'چیزی حذف نمی‌شود. خودِ ثبت در سابقه می‌ماند و در کنارش سطری اصلاحی با نام و دلیل شما نوشته می‌شود، تا هر کسی بعداً این کارکرد را بخواند هر دو را ببیند.',
4461
+ 'hr.att_void_reason_hint': 'هر کسی این کارکرد را بخواند آن را می‌بیند.',
4462
+ 'hr.att_void_reason_label': 'چرا این ثبت نادرست است',
4463
+ 'hr.att_void_reason_missing': 'پیش از ابطال، دلیل را بنویسید.',
4464
+ 'hr.att_void_title': 'این ثبت باطل شود؟',
2119
4465
  'hr.att_worked': 'کارکرد',
2120
4466
  'hr.attendance_error': 'حضور شما بارگیری نشد',
2121
4467
  'hr.attendance_none': 'هنوز چیزی ثبت نشده',
@@ -2279,6 +4625,101 @@ export const fa: Record<string, Message> = {
2279
4625
  'hr.capability_off_title': '{name} خاموش شود؟',
2280
4626
  'hr.capability_requires': 'نیاز به {name}',
2281
4627
  'hr.capability_write_error': 'این کلید تغییر نکرد. چیزی ذخیره نشد.',
4628
+ 'hr.chain_actions_for': 'کارهای {name}',
4629
+ 'hr.chain_add_approver': 'افزودن تأییدکننده',
4630
+ 'hr.chain_add_step': 'افزودن مرحله',
4631
+ 'hr.chain_already_default': 'همین حالا در کار است',
4632
+ 'hr.chain_approvers': 'تأییدکنندگان',
4633
+ 'hr.chain_archive_default_warning':
4634
+ 'چیزی جایش را نمی‌گیرد: تا زنجیرهٔ دیگری را به کار نگذارید، هر درخواست تازه فقط به مدیرِ درخواست‌دهنده می‌رود.',
4635
+ 'hr.chain_archive_inflight':
4636
+ 'هر درخواستی که ثبت شده رونوشت خودش از این زنجیره را دارد. بایگانی‌کردن نمی‌تواند به درخواستی که نیمه‌امضا مانده امضایی بیفزاید یا از آن کم کند — چیزی که در جریان است تکان نمی‌خورد.',
4637
+ 'hr.chain_archive_title': '{name} بایگانی شود؟',
4638
+ 'hr.chain_archive_unused':
4639
+ 'از این فهرست برداشته می‌شود. هیچ درخواست تازه‌ای آن را دنبال نمی‌کرد، پس چیز دیگری تغییر نمی‌کند.',
4640
+ 'hr.chain_archive_was_default':
4641
+ 'از این فهرست برداشته می‌شود و درخواست‌های تازهٔ {subject} دیگر آن را دنبال نمی‌کنند.',
4642
+ 'hr.chain_archived_toast': '{name} بایگانی شد',
4643
+ 'hr.chain_auto_approve_warning': 'پس از پایان مهلت، این مرحله بدون آنکه کسی آن را خوانده باشد تأیید می‌شود.',
4644
+ 'hr.chain_create_title': 'زنجیرهٔ تأیید تازه',
4645
+ 'hr.chain_created': '{name} آماده است',
4646
+ 'hr.chain_default_body': 'از این پس هر درخواست تازهٔ {subject} این زنجیره را دنبال می‌کند.',
4647
+ 'hr.chain_default_inflight':
4648
+ 'درخواست‌هایی که ثبت شده‌اند همان زنجیرهٔ زمان ثبتشان را نگه می‌دارند. هیچ‌کدام تغییر نمی‌کند.',
4649
+ 'hr.chain_default_replaces': '{name} از کار می‌افتد و در فهرست می‌ماند.',
4650
+ 'hr.chain_default_switch': 'این زنجیره را به کار بگذار',
4651
+ 'hr.chain_default_switch_hint': 'زنجیره‌ای که هر درخواست تازهٔ این نوع دنبال می‌کند. برای هر نوع فقط یکی.',
4652
+ 'hr.chain_default_title': '{name} به کار گذاشته شود؟',
4653
+ 'hr.chain_default_toast': 'حالا {name} در کار است',
4654
+ 'hr.chain_desc':
4655
+ 'اینکه چه‌کسی چه‌چیزی را و به چه ترتیبی امضا کند. هر درخواست زنجیرهٔ زمان ثبتش را با خود می‌برد، پس هیچ‌چیز اینجا به درخواستی که در جریان است نمی‌رسد.',
4656
+ 'hr.chain_edit_title': 'ویرایش زنجیرهٔ تأیید',
4657
+ 'hr.chain_error': 'زنجیره‌های تأیید بارگذاری نشد',
4658
+ 'hr.chain_gone': 'این زنجیره دیگر نیست — وقتی مشغول ویرایش بودید کسی بایگانی‌اش کرد.',
4659
+ 'hr.chain_in_use': 'در کار',
4660
+ 'hr.chain_last_approver': 'هر مرحله دست‌کم یک تأییدکننده لازم دارد',
4661
+ 'hr.chain_last_step': 'هر زنجیره دست‌کم یک مرحله لازم دارد',
4662
+ 'hr.chain_make_default': 'این زنجیره را به کار بگذار',
4663
+ 'hr.chain_min': 'چند نفر',
4664
+ 'hr.chain_min_hint': 'شمارش بر پایهٔ افراد است، نه سطرهای بالا: یک سطر می‌تواند چند نفر باشد.',
4665
+ 'hr.chain_mode': 'چند نفر باید تأیید کنند',
4666
+ 'hr.chain_mode_all': 'همهٔ آن‌ها',
4667
+ 'hr.chain_mode_any': 'هر یک از آن‌ها',
4668
+ 'hr.chain_mode_hint': 'اینکه یک امضا مرحله را می‌بندد یا همه باید امضا کنند.',
4669
+ 'hr.chain_mode_quorum': 'تعداد معیّنی',
4670
+ 'hr.chain_move_down': 'بردن مرحلهٔ {n} به عقب',
4671
+ 'hr.chain_move_up': 'بردن مرحلهٔ {n} به جلو',
4672
+ 'hr.chain_name': 'نام',
4673
+ 'hr.chain_name_hint': 'نامی که در این فهرست دیده می‌شود. مثلاً «مرخصی بیش از پنج روز».',
4674
+ 'hr.chain_needs_approver': 'مرحلهٔ {n} دست‌کم یک تأییدکننده لازم دارد.',
4675
+ 'hr.chain_needs_min': 'مرحلهٔ {n} به تعداد تأییدکننده نیاز دارد.',
4676
+ 'hr.chain_needs_name': 'برای زنجیره نامی بگذارید.',
4677
+ 'hr.chain_needs_step_name': 'مرحلهٔ {n} نام لازم دارد.',
4678
+ 'hr.chain_needs_who': 'در مرحلهٔ {n} تأییدکننده‌ای هست که کسی برایش انتخاب نشده.',
4679
+ 'hr.chain_new': 'زنجیرهٔ تازه',
4680
+ 'hr.chain_no_default_note':
4681
+ 'هیچ‌کدام از این‌ها در کار نیست، پس هر درخواست تازهٔ {subject} همچنان فقط به مدیرِ درخواست‌دهنده می‌رود.',
4682
+ 'hr.chain_none': 'برای {subject} زنجیره‌ای نیست',
4683
+ 'hr.chain_none_desc':
4684
+ 'هر درخواست به مدیرِ درخواست‌دهنده می‌رود. برای تغییر اینکه چه‌کسی و با چه ترتیبی امضا کند، یک زنجیره بسازید.',
4685
+ 'hr.chain_on_timeout': 'پس از پایان مهلت',
4686
+ 'hr.chain_perm_approval': 'پیکربندی تأییدها',
4687
+ 'hr.chain_perm_attendance': 'مدیریت حضور',
4688
+ 'hr.chain_perm_leave': 'مدیریت مرخصی',
4689
+ 'hr.chain_perm_office': 'مدیریت دفترها',
4690
+ 'hr.chain_perm_overtime': 'مدیریت اضافه‌کار',
4691
+ 'hr.chain_perm_person': 'مدیریت افراد',
4692
+ 'hr.chain_remove_approver': 'برداشتن این تأییدکننده',
4693
+ 'hr.chain_remove_step': 'برداشتن این مرحله',
4694
+ 'hr.chain_resolved_hint': 'هنگام ثبت درخواست تعیین می‌شود.',
4695
+ 'hr.chain_save_error': 'زنجیره ذخیره نشد',
4696
+ 'hr.chain_saved': 'ذخیره شد',
4697
+ 'hr.chain_section_desc':
4698
+ 'برای هر نوع فقط یک زنجیره کار می‌کند: همانی که «در کار» نشان دارد. بقیه تا وقتی یکی‌شان را به کار نگذارید همین‌جا می‌مانند.',
4699
+ 'hr.chain_sla': 'مهلت',
4700
+ 'hr.chain_sla_hint': 'چند ساعت تا پیگیری مرحله. خالی بگذارید تا بی‌مهلت منتظر بماند.',
4701
+ 'hr.chain_sla_none': 'بی‌مهلت منتظر می‌ماند',
4702
+ 'hr.chain_snapshot_note':
4703
+ 'هر درخواست همان لحظه که ثبت می‌شود یک رونوشت از زنجیره‌اش برمی‌دارد. آنچه اینجا تغییر می‌دهید بر درخواست‌های پس از این اثر دارد؛ چیزی که در انتظار امضاست تکان نمی‌خورد.',
4704
+ 'hr.chain_step_first': 'مدیر',
4705
+ 'hr.chain_step_n': 'مرحلهٔ {n}',
4706
+ 'hr.chain_step_name': 'نام مرحله',
4707
+ 'hr.chain_steps': 'مرحله‌ها',
4708
+ 'hr.chain_subject_count': { one: '{count} زنجیره', other: '{count} زنجیره' },
4709
+ 'hr.chain_subject_filter': 'درخواست‌های این نوع',
4710
+ 'hr.chain_subject_hint': 'یک زنجیره بعداً به نوع دیگری منتقل نمی‌شود.',
4711
+ 'hr.chain_subject_locked': 'هنگام ساختن زنجیره تعیین شد.',
4712
+ 'hr.chain_timeout_auto_approve': 'تأیید کن',
4713
+ 'hr.chain_timeout_escalate': 'یک پله بالاتر ببر',
4714
+ 'hr.chain_timeout_remind': 'یادآوری بفرست',
4715
+ 'hr.chain_who': 'چه‌کسی امضا می‌کند',
4716
+ 'hr.chain_who_group': 'یک گروه',
4717
+ 'hr.chain_who_manager': 'مدیر او',
4718
+ 'hr.chain_who_manager_of_manager': 'مدیرِ مدیرِ او',
4719
+ 'hr.chain_who_office_head': 'رئیس دفتر او',
4720
+ 'hr.chain_who_org_unit_head': 'رئیس واحد سازمانی او',
4721
+ 'hr.chain_who_permission': 'هرکسی که دسترسی معیّنی دارد',
4722
+ 'hr.chain_who_person': 'یک شخص معیّن',
2282
4723
  'hr.choose': 'انتخاب کنید…',
2283
4724
  'hr.clock_error': 'وضعیت ورود و خروج بارگیری نشد',
2284
4725
  'hr.clock_in': 'ورود',
@@ -2312,6 +4753,36 @@ export const fa: Record<string, Message> = {
2312
4753
  'hr.delegate_to_date': 'تا',
2313
4754
  'hr.department': 'واحد',
2314
4755
  'hr.display_name': 'نام',
4756
+ 'hr.doc_added_on': 'افزوده‌شده در {date}',
4757
+ 'hr.doc_attach': 'افزودن سند',
4758
+ 'hr.doc_attach_body': 'فایل در همین فضای کاری نگهداری و در پروندهٔ این فرد فهرست می‌شود.',
4759
+ 'hr.doc_attach_error': 'سند افزوده نشد',
4760
+ 'hr.doc_attach_title': 'افزودن سند برای {name}',
4761
+ 'hr.doc_attached': '{name} افزوده شد',
4762
+ 'hr.doc_expired': 'منقضی',
4763
+ 'hr.doc_expires': 'تاریخ انقضا',
4764
+ 'hr.doc_expires_hint': 'اختیاری. پیش از رسیدن تاریخ، نشان داده می‌شود.',
4765
+ 'hr.doc_expires_on': 'انقضا در {date}',
4766
+ 'hr.doc_expiring': 'نزدیک انقضا',
4767
+ 'hr.doc_issued': 'تاریخ صدور',
4768
+ 'hr.doc_issued_on': 'صادرشده در {date}',
4769
+ 'hr.doc_kind': 'نوع',
4770
+ 'hr.doc_kind_certificate': 'گواهی',
4771
+ 'hr.doc_kind_contract': 'قرارداد',
4772
+ 'hr.doc_kind_id': 'مدرک هویتی',
4773
+ 'hr.doc_kind_other': 'سایر',
4774
+ 'hr.doc_kind_payslip': 'فیش حقوقی',
4775
+ 'hr.doc_name': 'نام',
4776
+ 'hr.doc_remove_body': 'از پروندهٔ {person} برداشته می‌شود. خودِ فایل در فایل‌های فضای کاری می‌ماند.',
4777
+ 'hr.doc_remove_error': 'سند برداشته نشد — چیزی عوض نشد',
4778
+ 'hr.doc_remove_label': 'برداشتن {name}',
4779
+ 'hr.doc_remove_title': '{name} برداشته شود؟',
4780
+ 'hr.doc_removed': '{name} برداشته شد',
4781
+ 'hr.doc_uploading': 'در حال بارگذاری {name}…',
4782
+ 'hr.docs_error': 'اسناد بارگیری نشد',
4783
+ 'hr.docs_none': 'هنوز سندی نیست',
4784
+ 'hr.docs_none_desc': 'قراردادها، مدارک هویتی و گواهی‌هایی که برای این فرد نگه داشته می‌شود.',
4785
+ 'hr.docs_title': 'اسناد',
2315
4786
  'hr.edit_person': 'ویرایش',
2316
4787
  'hr.employee_no': 'کد',
2317
4788
  'hr.employment': 'شغل',
@@ -2351,7 +4822,65 @@ export const fa: Record<string, Message> = {
2351
4822
  'hr.general_saved': 'تنظیمات ذخیره شد',
2352
4823
  'hr.headcount': { one: '{count} نفر', other: '{count} نفر' },
2353
4824
  'hr.hired_on': 'تاریخ شروع',
4825
+ 'hr.hours': { one: 'ساعت', other: 'ساعت' },
2354
4826
  'hr.hours_short': '{n}سا',
4827
+ 'hr.job_change': 'ثبت تغییر',
4828
+ 'hr.job_change_backdated':
4829
+ 'این تاریخ در گذشته است و اشکالی ندارد: سابقه می‌گوید تغییر از همان روز اجرا شده است.',
4830
+ 'hr.job_change_body': 'دورهٔ جاری بسته می‌شود و دورهٔ تازه‌ای باز می‌شود. هیچ سابقه‌ای بازنویسی نمی‌شود.',
4831
+ 'hr.job_change_closes': 'دوره‌ای که در {date} شروع شده، یک روز پیش از آن بسته می‌شود.',
4832
+ 'hr.job_change_error': 'تغییر ثبت نشد — چیزی جابه‌جا نشد',
4833
+ 'hr.job_change_summary': 'پروندهٔ {name} از {date} تغییر می‌کند.',
4834
+ 'hr.job_change_title': 'ثبت تغییر برای {name}',
4835
+ 'hr.job_change_too_early': 'دورهٔ جاری از {date} شروع شده است. تغییر را نمی‌توان پیش از آن تاریخ زد.',
4836
+ 'hr.job_changed': 'سابقهٔ شغلی {name} به‌روز شد',
4837
+ 'hr.job_effective_from': 'از تاریخ',
4838
+ 'hr.job_effective_hint':
4839
+ 'در مارس توافق شده و در مه وارد می‌شود؟ تاریخ را همان مارس بگذارید — سابقه باید بگوید کِی اتفاق افتاده است.',
4840
+ 'hr.job_error': 'سابقهٔ شغلی بارگیری نشد',
4841
+ 'hr.job_fte': 'معادل تمام‌وقت',
4842
+ 'hr.job_fte_hint': '۱ یعنی هفتهٔ کامل، ۰٫۵ یعنی نصف آن.',
4843
+ 'hr.job_fte_invalid': 'عددی میان ۰ و ۱.',
4844
+ 'hr.job_fte_value': '{fte} معادل تمام‌وقت',
4845
+ 'hr.job_history': 'سابقه',
4846
+ 'hr.job_history_error': 'سابقه بارگیری نشد',
4847
+ 'hr.job_history_none': 'پیش از دورهٔ جاری چیزی ثبت نشده است.',
4848
+ 'hr.job_hours': 'ساعت در هفته',
4849
+ 'hr.job_hours_invalid': 'عددی میان ۰ و ۱۶۸.',
4850
+ 'hr.job_hours_value': '{hours} ساعت در هفته',
4851
+ 'hr.job_none': 'سابقهٔ شغلی ندارد',
4852
+ 'hr.job_none_desc': 'ثبت یک تغییر، نخستین دوره را می‌سازد.',
4853
+ 'hr.job_not_set': 'تعیین‌نشده',
4854
+ 'hr.job_period': 'بازهٔ اعتبار',
4855
+ 'hr.job_position': 'سمت',
4856
+ 'hr.job_reason': 'دلیل',
4857
+ 'hr.job_reason_hint': 'اختیاری. در سابقه کنار همان دوره دیده می‌شود.',
4858
+ 'hr.job_since': 'از {date}',
4859
+ 'hr.leave_adjust': 'اصلاح',
4860
+ 'hr.leave_adjust_add': 'افزودن',
4861
+ 'hr.leave_adjust_amount_days': 'چند روز',
4862
+ 'hr.leave_adjust_amount_hours': 'چند ساعت',
4863
+ 'hr.leave_adjust_amount_invalid': 'عددی بزرگ‌تر از صفر. جهت را بالا انتخاب می‌کنید.',
4864
+ 'hr.leave_adjust_confirm_add': 'ماندهٔ {type} برای {name} به اندازهٔ {amount} زیاد می‌شود، از {date}.',
4865
+ 'hr.leave_adjust_confirm_remove': 'ماندهٔ {type} برای {name} به اندازهٔ {amount} کم می‌شود، از {date}.',
4866
+ 'hr.leave_adjust_desc':
4867
+ 'هیچ سطر ثبت‌شده‌ای تغییر نمی‌کند. اصلاح به‌عنوان سطر تازه با نام شما و دلیلی که می‌نویسید ثبت می‌شود.',
4868
+ 'hr.leave_adjust_direction': 'جهت',
4869
+ 'hr.leave_adjust_effective': 'از تاریخ',
4870
+ 'hr.leave_adjust_effective_hint': 'این تاریخ تعیین می‌کند اصلاح در کدام سال استحقاق بنشیند.',
4871
+ 'hr.leave_adjust_effective_invalid': 'یک تاریخ انتخاب کنید.',
4872
+ 'hr.leave_adjust_error': 'اصلاح ثبت نشد',
4873
+ 'hr.leave_adjust_irreversible':
4874
+ 'دفتر فقط سطر تازه می‌پذیرد: این سطر نه ویرایش می‌شود نه حذف. اشتباه را با اصلاح دوم درست می‌کنند و هر دو سطر می‌مانند.',
4875
+ 'hr.leave_adjust_other_year':
4876
+ 'این تاریخ در {year} است، پس ماندهٔ همان سال جابه‌جا می‌شود، نه سالی که روی صفحه است.',
4877
+ 'hr.leave_adjust_reason_hint':
4878
+ 'وقتی کسی بپرسد چرا این عدد جابه‌جا شده، همین جمله جواب اوست؛ همان را بنویسید که خودتان دوست دارید بخوانید: «انتقالی از سامانهٔ قبلی»، نه «اصلاح».',
4879
+ 'hr.leave_adjust_reason_required':
4880
+ 'دلیل را بنویسید. تغییر بی‌توضیح مانده همان چیزی است که بعداً سراغش را می‌گیرند.',
4881
+ 'hr.leave_adjust_remove': 'کسر',
4882
+ 'hr.leave_adjust_title': 'اصلاح دستی این مانده',
4883
+ 'hr.leave_adjusted_toast': 'مانده اصلاح شد',
2355
4884
  'hr.leave_after': { one: 'بعد از آن {count} روز می‌ماند', other: 'بعد از آن {count} روز می‌ماند' },
2356
4885
  'hr.leave_after_hours': { one: 'بعد از آن {count} ساعت می‌ماند', other: 'بعد از آن {count} ساعت می‌ماند' },
2357
4886
  'hr.leave_approved': 'تأیید شده',
@@ -2398,6 +4927,33 @@ export const fa: Record<string, Message> = {
2398
4927
  'hr.leave_icon_sick': 'بیماری',
2399
4928
  'hr.leave_icon_special': 'ویژه',
2400
4929
  'hr.leave_icon_trip': 'سفر کاری',
4930
+ 'hr.leave_kind_accrual': 'تعلق‌گرفته',
4931
+ 'hr.leave_kind_adjustment': 'اصلاح دستی',
4932
+ 'hr.leave_kind_carry_in': 'انتقالی از سال گذشته',
4933
+ 'hr.leave_kind_carry_out': 'انتقالی به سال بعد',
4934
+ 'hr.leave_kind_consumption': 'استفاده‌شده',
4935
+ 'hr.leave_kind_encashment': 'بازخرید شده',
4936
+ 'hr.leave_kind_expiry': 'منقضی‌شده',
4937
+ 'hr.leave_kind_grant': 'اعطا',
4938
+ 'hr.leave_kind_reversal': 'برگردانده‌شده',
4939
+ 'hr.leave_ledger': 'گردش حساب',
4940
+ 'hr.leave_ledger_after': 'ماندهٔ پس از آن',
4941
+ 'hr.leave_ledger_balance': 'ماندهٔ فعلی',
4942
+ 'hr.leave_ledger_capped': {
4943
+ one: 'فقط {count} گردش اخیر. قدیمی‌ترها نشان داده نمی‌شوند.',
4944
+ other: 'فقط {count} گردش اخیر. قدیمی‌ترها نشان داده نمی‌شوند.',
4945
+ },
4946
+ 'hr.leave_ledger_change': 'تغییر',
4947
+ 'hr.leave_ledger_error': 'گردش حساب بارگذاری نشد',
4948
+ 'hr.leave_ledger_none': 'امسال هیچ گردشی ثبت نشده',
4949
+ 'hr.leave_ledger_none_desc': 'هر اعطا، هر ثبت مرخصی و هر اصلاح اینجا می‌نشیند؛ تا حالا هیچ‌کدام.',
4950
+ 'hr.leave_ledger_open': 'ببینید ماندهٔ {name} چطور به دست آمده',
4951
+ 'hr.leave_ledger_reversed': 'برگشت خورده',
4952
+ 'hr.leave_ledger_reverses': 'سطر {date} را برمی‌گرداند',
4953
+ 'hr.leave_ledger_title': 'ماندهٔ {name} چطور به دست آمده',
4954
+ 'hr.leave_ledger_what': 'چه اتفاقی افتاده',
4955
+ 'hr.leave_ledger_when': 'تاریخ',
4956
+ 'hr.leave_ledger_year': 'سال استحقاق {year}',
2401
4957
  'hr.leave_none': 'مرخصی ثبت‌شده‌ای نیست',
2402
4958
  'hr.leave_none_desc': 'وقتی مرخصی بگیرید اینجا دیده می‌شود.',
2403
4959
  'hr.leave_pending': 'در انتظار تأیید',
@@ -2584,7 +5140,164 @@ export const fa: Record<string, Message> = {
2584
5140
  'hr.offices_timezones': 'منطقه‌های زمانی',
2585
5141
  'hr.offices_title': 'دفاتر',
2586
5142
  'hr.on_break_since': 'از {time} در استراحت',
5143
+ 'hr.org_archive_blocked_children': {
5144
+ one: '{count} زیرواحد بی‌سرپرست می‌ماند. اول آن‌ها را جابه‌جا یا بایگانی کنید.',
5145
+ other: '{count} زیرواحد بی‌سرپرست می‌ماند. اول آن‌ها را جابه‌جا یا بایگانی کنید.',
5146
+ },
5147
+ 'hr.org_archive_blocked_people': {
5148
+ one: '{count} نفر هنوز زیر این واحد است. اول آن‌ها را به واحد دیگری ببرید.',
5149
+ other: '{count} نفر هنوز زیر این واحد است. اول آن‌ها را به واحد دیگری ببرید.',
5150
+ },
5151
+ 'hr.org_archive_body': 'از چارت بیرون می‌رود و دیگر هنگام تعیین واحد کسی پیشنهاد نمی‌شود.',
5152
+ 'hr.org_archive_error': 'واحد بایگانی نشد',
5153
+ 'hr.org_archive_note':
5154
+ 'چیزی حذف نمی‌شود و هیچ سابقه‌ای عوض نمی‌شود: هرکس در آن کار کرده، در سوابقش می‌ماند. از این صفحه راه برگشتی نیست.',
5155
+ 'hr.org_archive_title': '{name} بایگانی شود؟',
5156
+ 'hr.org_archived': '{name} بایگانی شد',
5157
+ 'hr.org_code': 'کد',
5158
+ 'hr.org_code_hint': 'کوتاه، برای خروجی‌ها و حقوق‌ودستمزد. اختیاری.',
5159
+ 'hr.org_detail_label': 'جزئیات واحد',
5160
+ 'hr.org_detail_none': 'چیزی انتخاب نشده',
5161
+ 'hr.org_detail_none_desc': 'واحدی را انتخاب کنید تا ببینید چه کسانی در آن‌اند و چه کسی مسئولش است.',
5162
+ 'hr.org_error': 'چارت سازمانی بارگذاری نشد',
5163
+ 'hr.org_error_desc': 'واحدها برنگشتند. دوباره تلاش کنید.',
5164
+ 'hr.org_head': 'مسئول واحد',
5165
+ 'hr.org_head_hint': 'چه کسی آن را می‌گرداند. اختیاری است و چیز دیگری را عوض نمی‌کند.',
5166
+ 'hr.org_head_none': 'هنوز کسی نیست',
5167
+ 'hr.org_head_set': 'تعیین کنید',
5168
+ 'hr.org_head_unknown': 'کسی که دیگر در فهرست نیست',
5169
+ 'hr.org_here': 'در همین واحد',
5170
+ 'hr.org_move': 'جابه‌جایی',
5171
+ 'hr.org_move_body':
5172
+ 'هرچه زیر {name} است با آن جابه‌جا می‌شود. شغل، مدیر و ساعت کسی عوض نمی‌شود؛ فقط جایشان در چارت.',
5173
+ 'hr.org_move_error': 'واحد جابه‌جا نشد',
5174
+ 'hr.org_move_people': {
5175
+ one: '{count} نفر با آن جابه‌جا می‌شود.',
5176
+ other: '{count} نفر با آن جابه‌جا می‌شود.',
5177
+ },
5178
+ 'hr.org_move_people_none': 'هنوز کسی در آن کار نمی‌کند، پس هیچ سابقه‌ای عوض نمی‌شود.',
5179
+ 'hr.org_move_same': 'همین حالا همان‌جاست.',
5180
+ 'hr.org_move_title': 'جابه‌جایی {name}',
5181
+ 'hr.org_move_to': 'زیر کدام واحد',
5182
+ 'hr.org_move_units': { one: '{count} واحد جابه‌جا می‌شود.', other: '{count} واحد جابه‌جا می‌شود.' },
5183
+ 'hr.org_moved': '{name} جابه‌جا شد',
5184
+ 'hr.org_no_match': 'واحدی پیدا نشد',
5185
+ 'hr.org_no_match_desc': 'بخشی از نام یا کد را بنویسید.',
5186
+ 'hr.org_none': 'هنوز واحدی نیست',
5187
+ 'hr.org_none_desc':
5188
+ 'واحد همان چیزی است که خط گزارش‌دهی به آن اشاره می‌کند و کل یک شاخهٔ شرکت را یک‌جا قابل جست‌وجو می‌کند. اولی را بسازید تا چارت زیرش رشد کند.',
5189
+ 'hr.org_parent': 'زیرمجموعهٔ',
5190
+ 'hr.org_parent_fixed_hint': 'جابه‌جایی، مسیر هرچه زیرش هست را بازنویسی می‌کند، پس کنش خودش را دارد.',
5191
+ 'hr.org_path': 'جای آن در چارت',
5192
+ 'hr.org_position_actions': 'کنش‌های {title}',
5193
+ 'hr.org_position_add': 'افزودن سمت',
5194
+ 'hr.org_position_archive_body':
5195
+ 'دیگر هنگام تعیین شغل کسی پیشنهاد نمی‌شود. هرکس آن را دارد نگهش می‌دارد و هیچ سابقه‌ای عوض نمی‌شود.',
5196
+ 'hr.org_position_archive_error': 'سمت بایگانی نشد',
5197
+ 'hr.org_position_archive_title': '{title} بایگانی شود؟',
5198
+ 'hr.org_position_archived': '{title} بایگانی شد',
5199
+ 'hr.org_position_created': '{title} ساخته شد',
5200
+ 'hr.org_position_edit_title': 'ویرایش {title}',
5201
+ 'hr.org_position_family': 'خانوادهٔ شغلی',
5202
+ 'hr.org_position_family_hint': 'عنوان‌های هم‌خانواده را کنار هم می‌گذارد — مهندسی، فروش. اختیاری.',
5203
+ 'hr.org_position_level': 'سطح',
5204
+ 'hr.org_position_level_hint': 'جای آن روی نردبان شغلی، مثل L4 یا ارشد. اختیاری.',
5205
+ 'hr.org_position_new': 'سمت تازه',
5206
+ 'hr.org_position_save_error': 'سمت ذخیره نشد',
5207
+ 'hr.org_position_saved': 'سمت ذخیره شد',
5208
+ 'hr.org_position_title': 'عنوان',
5209
+ 'hr.org_positions_error': 'سمت‌ها بارگذاری نشد',
5210
+ 'hr.org_positions_none': 'هنوز سمتی نیست',
5211
+ 'hr.org_positions_none_desc':
5212
+ 'سمت، شغلی است که شرکت برای آن نیرو می‌گیرد، نه یک نفر. یک سمت می‌تواند خالی باشد یا بیست نفر داشته باشد.',
5213
+ 'hr.org_root': 'بالاترین سطح',
5214
+ 'hr.org_search_label': 'جست‌وجوی واحدها بر پایهٔ نام یا کد',
5215
+ 'hr.org_search_placeholder': 'جست‌وجوی واحدها',
5216
+ 'hr.org_see_people': { one: 'دیدن {count} نفر اینجا', other: 'دیدن {count} نفر اینجا' },
5217
+ 'hr.org_stat_levels': 'عمق چارت',
5218
+ 'hr.org_stat_people': 'افراد جای‌گرفته',
5219
+ 'hr.org_stat_positions': 'سمت‌ها',
5220
+ 'hr.org_stat_units': 'واحدها',
5221
+ 'hr.org_subunits': 'زیرواحدها',
5222
+ 'hr.org_subunits_none': 'چیزی زیر آن نیست.',
5223
+ 'hr.org_tab_chart': 'چارت سازمانی',
5224
+ 'hr.org_tab_positions': 'سمت‌ها',
5225
+ 'hr.org_title': 'سازمان',
5226
+ 'hr.org_unit_add': 'افزودن واحد',
5227
+ 'hr.org_unit_add_child': 'افزودن زیرواحد',
5228
+ 'hr.org_unit_created': '{name} ساخته شد',
5229
+ 'hr.org_unit_edit_title': 'ویرایش {name}',
5230
+ 'hr.org_unit_new': 'واحد تازه',
5231
+ 'hr.org_unit_new_under': 'واحد تازه زیر {name}',
5232
+ 'hr.org_unit_save_error': 'واحد ذخیره نشد',
5233
+ 'hr.org_unit_saved': 'واحد ذخیره شد',
5234
+ 'hr.org_with_below': 'با زیرواحدها',
2587
5235
  'hr.people_error': 'فهرست بار نشد',
5236
+ 'hr.periods_attendance': 'حضور',
5237
+ 'hr.periods_attendance_desc':
5238
+ 'ماه‌هایی که برای حساب ساعت کار بسته شده‌اند، نه برای حقوق. هر دو نوع ماه را یک‌جور می‌بندند؛ نوع فقط دلیلش را ثبت می‌کند.',
5239
+ 'hr.periods_closed_on': 'بسته‌شده در {date}',
5240
+ 'hr.periods_create_desc': 'دوره باز ساخته می‌شود. تا آن را نبندید چیزی ثابت نمی‌شود.',
5241
+ 'hr.periods_create_error': 'دوره ساخته نشد',
5242
+ 'hr.periods_create_title': 'دورهٔ تازه',
5243
+ 'hr.periods_created': '{range} افزوده شد و تا زمانی که نبندیدش باز می‌ماند',
5244
+ 'hr.periods_desc': 'یک ماه را ببندید تا حقوق ثبت‌شده دیگر تغییر نکند. بازگشایی دوباره اجازهٔ تغییر می‌دهد.',
5245
+ 'hr.periods_ends': 'آخرین روز',
5246
+ 'hr.periods_entity_hint':
5247
+ 'فقط کسانی را می‌بندد که در آن روزها کارفرمایشان این شخصیت حقوقی بوده است. برای بستن همه، روی کل فضای کاری بگذاریدش.',
5248
+ 'hr.periods_error': 'دوره‌ها بارگذاری نشد',
5249
+ 'hr.periods_kind': 'نوع',
5250
+ 'hr.periods_kind_hint': 'ماه برای چه بسته می‌شود. هر دو نوع همان روزها را می‌بندند.',
5251
+ 'hr.periods_lock': 'بستن',
5252
+ 'hr.periods_lock_adjustments':
5253
+ 'تغییر سیاستی که تاریخش درون دوره باشد، به‌جای بازنویسی، در یک دورهٔ باز به اصلاحیه تبدیل می‌شود. بعداً می‌توانید دوره را با ذکر دلیل بازگشایی کنید.',
5254
+ 'hr.periods_lock_body': 'هر روز ثبت‌شده در این دوره برای {scope} دیگر بازمحاسبه نمی‌شود.',
5255
+ 'hr.periods_lock_confirm': 'بستن دوره',
5256
+ 'hr.periods_lock_error': 'دوره بسته نشد',
5257
+ 'hr.periods_lock_note': 'یادداشت',
5258
+ 'hr.periods_lock_note_hint': 'اختیاری. روی دوره می‌ماند — بنویسید چه چیزی ثبت شده است.',
5259
+ 'hr.periods_lock_title': '{range} بسته شود؟',
5260
+ 'hr.periods_locked': 'بسته',
5261
+ 'hr.periods_locked_none': 'بسته شد. هنوز هیچ روز ثبت‌شده‌ای درونش نبود.',
5262
+ 'hr.periods_locked_toast': {
5263
+ one: 'بسته شد. {count} روز دیگر بازمحاسبه نمی‌شود.',
5264
+ other: 'بسته شد. {count} روز دیگر بازمحاسبه نمی‌شود.',
5265
+ },
5266
+ 'hr.periods_new': 'دورهٔ تازه',
5267
+ 'hr.periods_none': 'هنوز دوره‌ای نیست',
5268
+ 'hr.periods_none_desc':
5269
+ 'برای ماهی که می‌خواهید ثابت بماند یک دوره بسازید و ببندیدش تا روزهای درونش دیگر بازمحاسبه نشوند.',
5270
+ 'hr.periods_open': 'باز',
5271
+ 'hr.periods_overlap':
5272
+ '{range} پیش‌تر بخشی از این روزها را پوشانده است. دو دوره از یک نوع برای یک کارفرما نمی‌توانند هم‌پوشانی داشته باشند.',
5273
+ 'hr.periods_payroll': 'حقوق و دستمزد',
5274
+ 'hr.periods_payroll_desc': 'ماه‌هایی که حقوقشان ثبت شده است.',
5275
+ 'hr.periods_range': 'دوره',
5276
+ 'hr.periods_range_invalid': 'آخرین روز پیش از نخستین روز است.',
5277
+ 'hr.periods_read_only':
5278
+ 'اینجا می‌توانید دوره‌ها را ببینید. بستن و بازگشایی آن‌ها به دسترسی مدیریت دوره‌های حقوق و دستمزد نیاز دارد.',
5279
+ 'hr.periods_reopen': 'بازگشایی',
5280
+ 'hr.periods_reopen_body': 'روزهای درون آن برای {scope} دوباره بازمحاسبه‌پذیر می‌شوند.',
5281
+ 'hr.periods_reopen_error': 'دوره بازگشایی نشد',
5282
+ 'hr.periods_reopen_filed':
5283
+ 'حقوقی که برای این ماه ثبت شده است می‌تواند زیر رقم‌هایی که به دست افراد رسیده جابه‌جا شود.',
5284
+ 'hr.periods_reopen_keep': 'بسته بماند',
5285
+ 'hr.periods_reopen_overlap':
5286
+ 'دورهٔ بستهٔ دیگری هنوز بخشی از این تاریخ‌ها را می‌پوشاند، پس آن روزها بسته می‌مانند:',
5287
+ 'hr.periods_reopen_reason': 'دلیل بازگشایی',
5288
+ 'hr.periods_reopen_reason_hint': 'روی دوره می‌ماند تا این فهرست بگوید چرا بازگشایی شده است.',
5289
+ 'hr.periods_reopen_reason_required': 'پیش از بازگشایی دلیلش را بنویسید.',
5290
+ 'hr.periods_reopen_title': '{range} بازگشایی شود؟',
5291
+ 'hr.periods_reopened_none': 'بازگشایی شد. هیچ روز ثبت‌شده‌ای تغییر نکرد.',
5292
+ 'hr.periods_reopened_toast': {
5293
+ one: 'بازگشایی شد. {count} روز دوباره بازمحاسبه‌پذیر است.',
5294
+ other: 'بازگشایی شد. {count} روز دوباره بازمحاسبه‌پذیر است.',
5295
+ },
5296
+ 'hr.periods_scope': 'شامل',
5297
+ 'hr.periods_scope_all': 'کل فضای کاری',
5298
+ 'hr.periods_scope_entity': 'یک شخصیت حقوقی',
5299
+ 'hr.periods_stale': 'شاید این فهرست به‌روز نباشد',
5300
+ 'hr.periods_starts': 'نخستین روز',
2588
5301
  'hr.person_create_error': 'این فرد اضافه نشد — چیزی ذخیره نشد',
2589
5302
  'hr.person_created': '{name} به فهرست اضافه شد',
2590
5303
  'hr.person_error': 'پروندهٔ این فرد بارگیری نشد',
@@ -2691,6 +5404,27 @@ export const fa: Record<string, Message> = {
2691
5404
  'hr.schedules_readonly': 'شیفت‌ها را اینجا می‌بینید، اما تغییرشان به دسترسی مدیریت حضور نیاز دارد.',
2692
5405
  'hr.schedules_show_archived': 'نمایش بایگانی‌شده‌ها',
2693
5406
  'hr.search_people': 'جست‌وجوی افراد',
5407
+ 'hr.sensitive_add_contact': 'افزودن تماس اضطراری',
5408
+ 'hr.sensitive_birth_date': 'تاریخ تولد',
5409
+ 'hr.sensitive_contact_hint': 'اگر سرِ کار اتفاقی افتاد، با چه کسی تماس بگیریم.',
5410
+ 'hr.sensitive_contact_name': 'تماس اضطراری',
5411
+ 'hr.sensitive_contact_partial': 'هم نام و هم شماره، یا هیچ‌کدام.',
5412
+ 'hr.sensitive_edit_body': 'رمزگذاری‌شده نگهداری می‌شود. سابقه می‌گوید این‌ها عوض شده‌اند، نه اینکه چه بوده‌اند.',
5413
+ 'hr.sensitive_edit_title': 'اطلاعات شخصی {name}',
5414
+ 'hr.sensitive_emergency': 'در وضعیت اضطراری، تماس با',
5415
+ 'hr.sensitive_emergency_none': 'تماس اضطراری ثبت نشده است',
5416
+ 'hr.sensitive_error': 'این اطلاعات بارگیری نشد',
5417
+ 'hr.sensitive_hidden':
5418
+ 'تماس اضطراری، تاریخ تولد، هویت و اطلاعات بانکی. با باز کردن این بخش نمایش داده می‌شود.',
5419
+ 'hr.sensitive_iban': 'شبا (IBAN)',
5420
+ 'hr.sensitive_national_id': 'کد ملی',
5421
+ 'hr.sensitive_none': 'چیزی ثبت نشده است',
5422
+ 'hr.sensitive_none_desc': 'با تماس اضطراری شروع کنید — همان چیزی که در لحظهٔ عجله لازم می‌شود.',
5423
+ 'hr.sensitive_relationship': 'نسبت',
5424
+ 'hr.sensitive_save_error': 'این اطلاعات ذخیره نشد — چیزی عوض نشد',
5425
+ 'hr.sensitive_title': 'اطلاعات شخصی و تماس اضطراری',
5426
+ 'hr.settings_accrual': 'انباشت مرخصی',
5427
+ 'hr.settings_approvals': 'تأییدها',
2694
5428
  'hr.settings_calendars': 'تعطیلات',
2695
5429
  'hr.settings_capabilities': 'قابلیت‌ها',
2696
5430
  'hr.settings_general': 'عمومی',
@@ -2698,6 +5432,7 @@ export const fa: Record<string, Message> = {
2698
5432
  'hr.settings_leave': 'مرخصی',
2699
5433
  'hr.settings_not_built': 'API این بخش کامل است؛ صفحهٔ ویرایش هنوز ساخته نشده.',
2700
5434
  'hr.settings_offices': 'دفاتر',
5435
+ 'hr.settings_periods': 'دوره‌ها',
2701
5436
  'hr.settings_schedules': 'شیفت‌ها',
2702
5437
  'hr.started': 'شروع',
2703
5438
  'hr.status': 'وضعیت',
@@ -2724,6 +5459,203 @@ export const fa: Record<string, Message> = {
2724
5459
  }
2725
5460
 
2726
5461
  export const tr: Record<string, Message> = {
5462
+ 'hr.accr_actions_for': '{name} için işlemler',
5463
+ 'hr.accr_already_archived': 'Zaten arşivde',
5464
+ 'hr.accr_archive_assigned': {
5465
+ one: '{count} hedefe atanmış ve bu atama geçerliliğini yitirir.',
5466
+ other: '{count} hedefe atanmış ve bu atamalar geçerliliğini yitirir.',
5467
+ },
5468
+ 'hr.accr_archive_body': 'Bundan sonra kimse için geçerli olmaz.',
5469
+ 'hr.accr_archive_error': 'Kural arşivlenemedi',
5470
+ 'hr.accr_archive_keeps':
5471
+ 'Arşivlenir, silinmez: daha önce eklenmiş izin bu kuralın adını taşır ve kuralı kaybolmuş bir hareket, kimsenin açıklayamayacağı bir sayıdır.',
5472
+ 'hr.accr_archive_title': '"{name}" arşivlensin mi?',
5473
+ 'hr.accr_archived': '"{name}" arşivlendi',
5474
+ 'hr.accr_assign': 'Ata',
5475
+ 'hr.accr_assign_desc':
5476
+ 'Kuralı ve hangi basamağa oturacağını seçin. Bir kişiye en yakın basamak, onun için geçerli olandır.',
5477
+ 'hr.accr_assign_error': 'Atama kaydedilemedi',
5478
+ 'hr.accr_assign_policy': 'Kural',
5479
+ 'hr.accr_assign_policy_pick': 'Bir kural seçin',
5480
+ 'hr.accr_assign_rung': 'Kime uygulanacak',
5481
+ 'hr.accr_assign_subject': 'Hangi {rung}',
5482
+ 'hr.accr_assign_title': 'Kural ata',
5483
+ 'hr.accr_assign_to_hint': 'Süresiz uygulanması için boş bırakın.',
5484
+ 'hr.accr_assigned': '"{name}" artık {subject} için geçerli',
5485
+ 'hr.accr_badge_archived': 'Arşivde',
5486
+ 'hr.accr_beaten_by': 'Şunlar yine de bunu geçer:',
5487
+ 'hr.accr_beats_everything': 'Bu basamağı hiçbir şey geçmez; adını yazdığınız kişi için o karar verir.',
5488
+ 'hr.accr_col_applies': 'Kime',
5489
+ 'hr.accr_col_earns': 'Kazandırdığı',
5490
+ 'hr.accr_col_policy': 'Kural',
5491
+ 'hr.accr_col_when': 'Ne zaman',
5492
+ 'hr.accr_config_unreadable': 'Bu kuralın ayarları okunamıyor',
5493
+ 'hr.accr_copy_of': '{name} (kopya)',
5494
+ 'hr.accr_create_title': 'Yeni hakediş kuralı',
5495
+ 'hr.accr_created': '"{name}" oluşturuldu',
5496
+ 'hr.accr_day_length': 'Bir izin gününün uzunluğu',
5497
+ 'hr.accr_day_length_hint':
5498
+ 'Dakika olarak — {length}. Bakiyeler dakika tutulur; böylece yarım günler ve saatlik izin tam kalır.',
5499
+ 'hr.accr_days_field': 'Tam bir yılın kazandırdığı gün',
5500
+ 'hr.accr_days_field_hint': 'Kıdem kademeleri, oranlama ve yarı zamanlı saatler uygulanmadan önce.',
5501
+ 'hr.accr_days_per_year': { one: 'Yılda {count} gün', other: 'Yılda {count} gün' },
5502
+ 'hr.accr_desc':
5503
+ 'İznin zamanla nasıl hak edildiği: kurallar, her birinin kime uygulandığı ve bir sonraki çalıştırmanın ne ekleyeceği.',
5504
+ 'hr.accr_duplicate': 'Kopyala',
5505
+ 'hr.accr_edit_retroactive':
5506
+ 'Bir düzenleme geçmişte doğru olanı da değiştirir ve buradan eklenmiş her şeyin açıklanması zorlaşır. Kuralları belirli bir tarihten itibaren değiştirmek için bu kuralı kopyalayın ve kopyaya daha geç bir başlangıç verin.',
5507
+ 'hr.accr_edit_title': 'Hakediş kuralını düzenle',
5508
+ 'hr.accr_effective_from': 'Şu tarihten itibaren',
5509
+ 'hr.accr_effective_from_hint': 'Sonradan değiştirilemez; yeni bir başlangıç tarihi yeni bir kuraldır.',
5510
+ 'hr.accr_effective_to': 'Şu tarihe kadar',
5511
+ 'hr.accr_effective_to_hint': 'Bitiş olmaması için boş bırakın.',
5512
+ 'hr.accr_error': 'Hakediş kuralları yüklenemedi',
5513
+ 'hr.accr_error_desc': 'Sunucu yanıt vermedi. Hiçbir şey değişmedi.',
5514
+ 'hr.accr_error_from': 'Başlayacağı tarihi seçin.',
5515
+ 'hr.accr_error_leave_type': 'Hangi izin türüne ekleyeceğini seçin.',
5516
+ 'hr.accr_error_name': 'Kurala bir ad verin.',
5517
+ 'hr.accr_error_pick_policy': 'Bir kural seçin.',
5518
+ 'hr.accr_error_pick_subject': 'Kime uygulanacağını seçin.',
5519
+ 'hr.accr_error_tier_clash': 'İki kademe aynı yıl sayısında başlıyor.',
5520
+ 'hr.accr_error_to_before_from': 'Bitiş tarihi başlangıç tarihinden önce.',
5521
+ 'hr.accr_freq_anniversary': 'Her işe giriş yıl dönümünde',
5522
+ 'hr.accr_freq_anniversary_desc':
5523
+ 'İşe giriş tarihinin her yıl dönümünde tam bir yıl eklenir; geçmişe dönük hak edilir. İşe girilen yılda hiçbir şey eklenmez.',
5524
+ 'hr.accr_freq_annual': 'Yılda bir kez',
5525
+ 'hr.accr_freq_annual_desc':
5526
+ "Tüm yıl 1 Ocak'ta eklenir; daha sonra işe girenler için işe giriş tarihinde eklenir ve yılın kalan payı verilir.",
5527
+ 'hr.accr_freq_monthly': 'Her ay',
5528
+ 'hr.accr_freq_monthly_desc':
5529
+ 'Her ayın sonunda yılın on ikide biri eklenir; kişinin o ay fiilen çalıştığı günlere göre oranlanır.',
5530
+ 'hr.accr_freq_per_hour': 'Çalışılan saat başına',
5531
+ 'hr.accr_freq_per_hour_desc':
5532
+ 'Dönemin yıl içindeki payı, fiilen çalışılan saatlerin planlanan saatlere oranıyla ölçeklenir. Devam kayıtlarından okunur.',
5533
+ 'hr.accr_frequency': 'İzin ne zaman görünür',
5534
+ 'hr.accr_from_date': '{date} tarihinden itibaren',
5535
+ 'hr.accr_job_note':
5536
+ "Bir iş, her ofisin kendi ayının 1'inde bir önceki ayı ekler; bu yüzden çoğu çalışma alanının buna hiç ihtiyacı olmaz. Elle çalıştırmak tam olarak aynı şeyi yapar ve daha önce eklenmiş bir dönem ikinci kez eklenmez.",
5537
+ 'hr.accr_ladder': 'Her kural kime uygulanıyor',
5538
+ 'hr.accr_ladder_desc':
5539
+ 'En yakın olan kazanır. Bir kişiye verilen kural, ofisininkini geçer; o da tüzel kişiliği, departmanı, pozisyonu ve en sonda tüm çalışma alanını geçer.',
5540
+ 'hr.accr_ladder_error': 'Atamalar yüklenemedi',
5541
+ 'hr.accr_ladder_needs_policy': 'Önce bir kural oluşturun; atanacak bir şey yok.',
5542
+ 'hr.accr_ladder_none': 'Henüz atama yok',
5543
+ 'hr.accr_ladder_none_desc':
5544
+ 'Bir kural birine atanana kadar kimse hak etmez; iş çalışır ve hiçbir şey eklemez.',
5545
+ 'hr.accr_leave_type': 'İzin türü',
5546
+ 'hr.accr_leave_type_hint': 'Günlerin hangi bakiyeye ekleneceği.',
5547
+ 'hr.accr_leave_type_pick': 'Bir izin türü seçin',
5548
+ 'hr.accr_name': 'Ad',
5549
+ 'hr.accr_name_hint': 'İK\'nın kullandığı ad — "Türkiye yıllık izin", "Tam zamanlı, 2026\'dan itibaren".',
5550
+ 'hr.accr_needs_attendance':
5551
+ 'Bu çalışma alanında devam kayıtları kapalı, bu yüzden kimsenin planlanan saati yok — bu kural hiçbir şey eklemez.',
5552
+ 'hr.accr_new': 'Yeni kural',
5553
+ 'hr.accr_no_default':
5554
+ 'Çalışma alanında bir kural yok, bu yüzden daha yakın bir kuralı olmayan hiç kimse hak etmiyor.',
5555
+ 'hr.accr_no_leave_types': 'Henüz izin türü yok; hakedişin bir türe eklemesi gerekir.',
5556
+ 'hr.accr_nobody': 'Kimse',
5557
+ 'hr.accr_none': 'Henüz hakediş kuralı yok',
5558
+ 'hr.accr_none_desc':
5559
+ 'Bir kural olana kadar izin elle veriliyor. Kural, izni ay ay ya da yılda bir kez hak ettirir ve defter her günün nereden geldiğini kaydeder.',
5560
+ 'hr.accr_policies': 'Hakediş kuralları',
5561
+ 'hr.accr_policies_desc':
5562
+ 'Bir kural, bir yılın ne kadar kazandırdığını, iznin ne zaman göründüğünü ve nasıl yuvarlandığını söyler. Kendisine bir kural atanmayan kimse hak etmez.',
5563
+ 'hr.accr_preview_error': 'Önizleme hesaplanamadı',
5564
+ 'hr.accr_readonly':
5565
+ 'Bu sayfayı okuyabilirsiniz, ama bir şeyi değiştirmek için kuralları yönetme yetkisi gerekir.',
5566
+ 'hr.accr_round_day': 'Tam gün',
5567
+ 'hr.accr_round_exact': 'Yuvarlama yok',
5568
+ 'hr.accr_round_half_day': 'Yarım gün',
5569
+ 'hr.accr_round_minutes': { one: '{count} dakika', other: '{count} dakika' },
5570
+ 'hr.accr_round_short': '{step} adımına yuvarlanır',
5571
+ 'hr.accr_rounding': 'Yuvarlama',
5572
+ 'hr.accr_rounding_hint': 'Her hakediş bu adıma yuvarlanır.',
5573
+ 'hr.accr_run_already': 'Zaten eklendi',
5574
+ 'hr.accr_run_credit': { one: '{count} kişiye ekle', other: '{count} kişiye ekle' },
5575
+ 'hr.accr_run_desc': 'Önce sayıları okuyun. Siz eklemeden hiçbir şey yazılmaz.',
5576
+ 'hr.accr_run_done': { one: '{count} kişiye eklendi', other: '{count} kişiye eklendi' },
5577
+ 'hr.accr_run_error': 'Hakediş çalıştırması başarısız oldu',
5578
+ 'hr.accr_run_from': 'Dönem başlangıcı',
5579
+ 'hr.accr_run_idempotent': {
5580
+ one: '{count} satır bu dönem için zaten eklenmiş ve dokunulmayacak.',
5581
+ other: '{count} satır bu dönem için zaten eklenmiş ve dokunulmayacak.',
5582
+ },
5583
+ 'hr.accr_run_more': { one: 've {count} tane daha', other: 've {count} tane daha' },
5584
+ 'hr.accr_run_needs_policy': 'Henüz çalıştırılacak bir kural yok.',
5585
+ 'hr.accr_run_nothing': 'Eklenecek bir şey yok',
5586
+ 'hr.accr_run_nothing_desc':
5587
+ 'Bu dönem için hiçbir kural bir şey vermiyor. Yıllık ya da yıl dönümü kuralı, hak ediş tarihi düşmeyen aylarda bir şey vermez.',
5588
+ 'hr.accr_run_open': 'Çalıştırmayı önizle',
5589
+ 'hr.accr_run_people': 'Eklenecek',
5590
+ 'hr.accr_run_rows': 'Bu dönemdeki herkes',
5591
+ 'hr.accr_run_section': 'Deftere ekleme',
5592
+ 'hr.accr_run_section_desc': 'Bir çalıştırmanın herkesin bakiyesine ne ekleyeceği ve çalıştırmanın kendisi.',
5593
+ 'hr.accr_run_skipped': 'Atlananlar',
5594
+ 'hr.accr_run_title': 'Hakediş çalıştırma',
5595
+ 'hr.accr_run_to': 'Dönem sonu',
5596
+ 'hr.accr_run_total': 'Toplam',
5597
+ 'hr.accr_run_writes':
5598
+ 'Ekleme, izin defterine yazar. Buradan geri alınamaz; yanlış bir ekleme izin düzeltmesiyle giderilir.',
5599
+ 'hr.accr_rung_empty': 'Bu basamakta bir şey yok.',
5600
+ 'hr.accr_rung_legal_entity': 'Tüzel kişilik',
5601
+ 'hr.accr_rung_legal_entity_hint':
5602
+ 'Bu şirkette çalışan herkes. Bir ülkenin kuralları genellikle buraya konur.',
5603
+ 'hr.accr_rung_needs_entities': 'Bu çalışma alanında tüzel kişilikler kapalı, seçilecek bir şey yok.',
5604
+ 'hr.accr_rung_needs_offices': 'Bu çalışma alanında ofisler kapalı, seçilecek bir şey yok.',
5605
+ 'hr.accr_rung_needs_org': 'Organizasyon şemasını okuma yetkiniz yok, bu yüzden bu seçilemez.',
5606
+ 'hr.accr_rung_needs_people': 'Rehberi okuma yetkiniz yok, bu yüzden burada bir kişi seçilemez.',
5607
+ 'hr.accr_rung_office': 'Ofis',
5608
+ 'hr.accr_rung_office_hint': 'Ana ofisi burası olan herkes.',
5609
+ 'hr.accr_rung_org_unit': 'Departman',
5610
+ 'hr.accr_rung_org_unit_hint': 'Bu departmandaki herkes, altındaki takımlar dahil.',
5611
+ 'hr.accr_rung_person': 'Kişi',
5612
+ 'hr.accr_rung_person_hint': 'Diğer her şeyi geçer. Geri kalanlardan farklı olan tek sözleşme için.',
5613
+ 'hr.accr_rung_position': 'Pozisyon',
5614
+ 'hr.accr_rung_position_hint': 'Bu pozisyonda olan herkes.',
5615
+ 'hr.accr_rung_taken':
5616
+ '"{name}" bu basamaktan {subject} için zaten geçerli. Tarihleri onları ayırmadıkça burada iki kural belirsizlik yaratır.',
5617
+ 'hr.accr_rung_workspace': 'Çalışma alanı',
5618
+ 'hr.accr_rung_workspace_hint': 'Daha yakın bir kuralı olmayan herkes için geçerli olan.',
5619
+ 'hr.accr_save_error': 'Kural kaydedilemedi',
5620
+ 'hr.accr_saved': 'Kural kaydedildi',
5621
+ 'hr.accr_show_archived': 'Arşivdekileri göster',
5622
+ 'hr.accr_stale': 'Bu sayılar güncel olmayabilir.',
5623
+ 'hr.accr_stat_assignments': 'Atamalar',
5624
+ 'hr.accr_stat_default': 'Çalışma alanı varsayılanı',
5625
+ 'hr.accr_stat_default_none': 'Yok',
5626
+ 'hr.accr_stat_default_none_note': 'Daha yakın bir kuralı olmayan kimse hak etmez.',
5627
+ 'hr.accr_stat_policies': 'Kurallar',
5628
+ 'hr.accr_subject_loading': 'Yükleniyor…',
5629
+ 'hr.accr_subject_missing': 'Hedef yok',
5630
+ 'hr.accr_subject_none': 'Henüz seçilecek {rung} kaydı yok.',
5631
+ 'hr.accr_subject_pick': 'Birini seçin',
5632
+ 'hr.accr_subject_unknown': 'Rehberde yok ({id})',
5633
+ 'hr.accr_tier_add': 'Kademe ekle',
5634
+ 'hr.accr_tier_after': 'Kıdem yılı',
5635
+ 'hr.accr_tier_days': 'Yılda gün',
5636
+ 'hr.accr_tier_remove': '{years} yıl kıdemdeki kademeyi kaldır',
5637
+ 'hr.accr_tiers': 'Kıdem kademeleri',
5638
+ 'hr.accr_tiers_count': { one: '{count} kıdem kademesi', other: '{count} kıdem kademesi' },
5639
+ 'hr.accr_tiers_hint':
5640
+ 'Kişinin ulaştığı en yüksek kademe geçerlidir; onları hangi sırayla yazdığınız fark etmez.',
5641
+ 'hr.accr_tiers_none': {
5642
+ one: 'Kıdemi ne olursa olsun herkes yılda {count} gün hak eder.',
5643
+ other: 'Kıdemi ne olursa olsun herkes yılda {count} gün hak eder.',
5644
+ },
5645
+ 'hr.accr_unassign': 'Kaldır',
5646
+ 'hr.accr_unassign_body': '"{name}" bundan sonra uygulanmayacak.',
5647
+ 'hr.accr_unassign_error': 'Atama kaldırılamadı',
5648
+ 'hr.accr_unassign_falls_back': 'Kuralı olan bir sonraki basamağa düşerler: çalışma alanındaki "{name}".',
5649
+ 'hr.accr_unassign_keeps': 'Daha önce eklenen izin defterde kalır; yalnızca sonraki çalıştırmalar değişir.',
5650
+ 'hr.accr_unassign_label': '"{name}" kuralını {subject} için kaldır',
5651
+ 'hr.accr_unassign_no_fallback':
5652
+ 'Bunun altındaki hiçbir basamakta kural yok, bu yüzden hakediş tamamen durur.',
5653
+ 'hr.accr_unassign_title': '{subject} için hakediş dursun mu?',
5654
+ 'hr.accr_unassigned': '"{name}" artık {subject} için geçerli değil',
5655
+ 'hr.accr_waiting': 'Bekleme süresi',
5656
+ 'hr.accr_waiting_hint':
5657
+ 'İşe girdikten sonra hakedişin başlaması için geçmesi gereken ay sayısı. 0 hemen başlatır.',
5658
+ 'hr.accr_waiting_short': { one: '{count} ay bekleme', other: '{count} ay bekleme' },
2727
5659
  'hr.add_person': 'Kişi ekle',
2728
5660
  'hr.add_person_desc': 'Ad ve başlangıç tarihi yeter. Personel numarası boş bırakılırsa atanır.',
2729
5661
  'hr.approval_comment': 'Yorum',
@@ -2758,7 +5690,61 @@ export const tr: Record<string, Message> = {
2758
5690
  'hr.approve_confirm_leave': 'Günler bakiyesinden düşer ve takım takviminde izinli görünür.',
2759
5691
  'hr.approve_confirm_next': 'Bu son adım değil; talep bir sonraki onaylayana geçer.',
2760
5692
  'hr.approve_confirm_title': 'Bu talep onaylansın mı?',
5693
+ 'hr.att_anomalies': 'Bakılması gerekenler',
5694
+ 'hr.att_anomalies_count': { one: 'Bakılacak {count} şey', other: 'Bakılacak {count} şey' },
5695
+ 'hr.att_anomaly_break_end_without_start': 'Başlamamış bir mola bitirilmiş',
5696
+ 'hr.att_anomaly_break_not_ended': 'Mola hiç bitirilmemiş, vardiya sonunda kapatıldı',
5697
+ 'hr.att_anomaly_clock_out_without_in': 'Öncesinde giriş olmadan çıkış yapılmış',
5698
+ 'hr.att_anomaly_double_break_start': 'Bir mola sürerken ikinci mola başlatılmış',
5699
+ 'hr.att_anomaly_double_clock_in': 'Arada çıkış olmadan iki kez giriş yapılmış',
5700
+ 'hr.att_anomaly_missing_clock_out': 'Vardiya hiç kapatılmamış — çıkış yok',
5701
+ 'hr.att_anomaly_overtime_beyond_cap': 'Yıllık üst sınırı aşan fazla mesai — sayılmıyor',
5702
+ 'hr.att_correct_this': 'Bunu düzelt',
5703
+ 'hr.att_correction_add': 'Kayıt ekle',
5704
+ 'hr.att_correction_denied': 'Düzeltme istemek için giriş-çıkış yapma izni gerekir.',
5705
+ 'hr.att_correction_desc':
5706
+ 'Onaylanana kadar hiçbir şey değişmez. Onaylandığında aşağıdaki giriş-çıkışlar kaydedilir ve yerine geçtikleri kayıtlar geçersiz kılınır — asıl kayıtlar yerinde kalır.',
5707
+ 'hr.att_correction_direction': 'Kayıt',
5708
+ 'hr.att_correction_error': 'Düzeltme gönderilemedi',
5709
+ 'hr.att_correction_for_punch': 'Bu, {time} saatindeki “{punch}” kaydının yerine geçer.',
5710
+ 'hr.att_correction_needs_one': 'Bir düzeltmede en az bir kayıt olmalı.',
5711
+ 'hr.att_correction_needs_reason': 'Ne olduğunu yazın.',
5712
+ 'hr.att_correction_needs_time': 'Her kaydın bir saati olmalı.',
5713
+ 'hr.att_correction_next_day': 'Ertesi gün',
5714
+ 'hr.att_correction_punches': 'Bu güne ait olduğunu söylediğiniz giriş-çıkışlar',
5715
+ 'hr.att_correction_reason': 'Ne oldu',
5716
+ 'hr.att_correction_reason_hint': 'Onaylayan kişi bunu okur.',
5717
+ 'hr.att_correction_remove': 'Bu kaydı kaldır',
5718
+ 'hr.att_correction_request': 'Düzeltme iste',
5719
+ 'hr.att_correction_sent': 'Onaya gönderildi',
5720
+ 'hr.att_correction_submit': 'Onaya gönder',
5721
+ 'hr.att_correction_time': 'Saat',
5722
+ 'hr.att_correction_title': 'Düzeltme iste',
5723
+ 'hr.att_correction_waiting': 'Onay bekliyor',
5724
+ 'hr.att_correction_zone_hint': 'Saatler cihazınızın saatinden okunur.',
5725
+ 'hr.att_corrections_error': 'İstediğiniz düzeltmeler yüklenemedi',
5726
+ 'hr.att_corrections_pending': 'İstediğiniz düzeltmeler',
5727
+ 'hr.att_locked_no_change': 'Bu ay bordro için kapatıldı; düzeltme rakamları değiştiremez.',
5728
+ 'hr.att_method_device': 'Terminal',
5729
+ 'hr.att_method_import': 'Aktarıldı',
5730
+ 'hr.att_method_kiosk': 'Kiosk',
5731
+ 'hr.att_method_manual': 'Elle girildi',
5732
+ 'hr.att_method_mobile': 'Telefon',
5733
+ 'hr.att_method_qr': 'QR kod',
5734
+ 'hr.att_method_web': 'Web',
2761
5735
  'hr.att_overtime': 'Fazla mesai',
5736
+ 'hr.att_punch_break_end': 'Mola bitişi',
5737
+ 'hr.att_punch_break_start': 'Mola başlangıcı',
5738
+ 'hr.att_punch_in': 'Giriş',
5739
+ 'hr.att_punch_out': 'Çıkış',
5740
+ 'hr.att_punch_skew': 'Kayıt sırasında cihaz saati {amount} sapmıştı.',
5741
+ 'hr.att_punch_void_reason': 'Geçersiz kılınma nedeni: {reason}',
5742
+ 'hr.att_punch_voided': 'Geçersiz kılındı',
5743
+ 'hr.att_punches': 'Giriş-çıkışlar',
5744
+ 'hr.att_punches_error': 'Giriş-çıkışlar yüklenemedi',
5745
+ 'hr.att_punches_none': 'Bu güne hiçbir kayıt düşülmemiş',
5746
+ 'hr.att_punches_none_desc': 'O gün çalıştıysanız günün düzeltilmesini isteyin.',
5747
+ 'hr.att_punches_stale': 'Bu giriş-çıkışlar güncel olmayabilir',
2762
5748
  'hr.att_scheduled': 'Planlanan',
2763
5749
  'hr.att_status_absent': 'Yok',
2764
5750
  'hr.att_status_holiday': 'Tatil',
@@ -2767,6 +5753,20 @@ export const tr: Record<string, Message> = {
2767
5753
  'hr.att_status_pending': 'İnceleme gerekli',
2768
5754
  'hr.att_status_present': 'Mevcut',
2769
5755
  'hr.att_status_weekend': 'Hafta sonu',
5756
+ 'hr.att_trust_claimed': 'Saati cihaz bildirdi',
5757
+ 'hr.att_trust_disputed': 'Saat tartışmalı',
5758
+ 'hr.att_void': 'Geçersiz kıl',
5759
+ 'hr.att_void_body':
5760
+ '{time} saatindeki “{punch}” kaydı bu güne sayılmayı bırakır ve gün onsuz yeniden hesaplanır.',
5761
+ 'hr.att_void_done': 'Kayıt geçersiz kılındı ve gün yeniden hesaplandı',
5762
+ 'hr.att_void_error': 'Kayıt geçersiz kılınamadı — hiçbir şey değişmedi',
5763
+ 'hr.att_void_keep': 'Kalsın',
5764
+ 'hr.att_void_kept':
5765
+ 'Hiçbir şey silinmez. Kayıt yerinde kalır; yanına adınızı ve gerekçenizi taşıyan bir düzeltme satırı yazılır, böylece bu puantajı sonradan okuyan ikisini de görür.',
5766
+ 'hr.att_void_reason_hint': 'Bu puantajı okuyan herkes görür.',
5767
+ 'hr.att_void_reason_label': 'Bu kayıt neden yanlış',
5768
+ 'hr.att_void_reason_missing': 'Geçersiz kılmadan önce nedenini yazın.',
5769
+ 'hr.att_void_title': 'Bu kayıt geçersiz kılınsın mı?',
2770
5770
  'hr.att_worked': 'Çalışılan',
2771
5771
  'hr.attendance_error': 'Devam kaydınız yüklenemedi',
2772
5772
  'hr.attendance_none': 'Henüz kayıt yok',
@@ -2929,6 +5929,100 @@ export const tr: Record<string, Message> = {
2929
5929
  'hr.capability_off_title': '{name} kapatılsın mı?',
2930
5930
  'hr.capability_requires': '{name} gerekir',
2931
5931
  'hr.capability_write_error': 'Bu anahtar değiştirilemedi. Hiçbir şey kaydedilmedi.',
5932
+ 'hr.chain_actions_for': '{name} için işlemler',
5933
+ 'hr.chain_add_approver': 'Onaylayan ekle',
5934
+ 'hr.chain_add_step': 'Adım ekle',
5935
+ 'hr.chain_already_default': 'Zaten kullanımda olan bu',
5936
+ 'hr.chain_approvers': 'Onaylayanlar',
5937
+ 'hr.chain_archive_default_warning':
5938
+ 'Yerine hiçbir şey geçmez: başka bir zinciri iş başına geçirene kadar her yeni talep yalnızca talebi açanın yöneticisine gider.',
5939
+ 'hr.chain_archive_inflight':
5940
+ 'Açılmış her talep bu zincirin kendi kopyasını taşır. Arşivlemek, yarı imzalanmış bir talebe imza ekleyemez ya da ondan imza eksiltemez — yolda olan hiçbir şey yerinden oynamaz.',
5941
+ 'hr.chain_archive_title': '{name} arşivlensin mi?',
5942
+ 'hr.chain_archive_unused':
5943
+ 'Bu listeden kaybolur. Hiçbir yeni talep bunu izlemiyordu, başka bir şey değişmez.',
5944
+ 'hr.chain_archive_was_default': 'Bu listeden kaybolur ve yeni {subject} talepleri artık bunu izlemez.',
5945
+ 'hr.chain_archived_toast': '{name} arşivlendi',
5946
+ 'hr.chain_auto_approve_warning': 'Süre dolduğunda bu adım, kimse okumadan onaylanmış sayılır.',
5947
+ 'hr.chain_create_title': 'Yeni onay zinciri',
5948
+ 'hr.chain_created': '{name} hazır',
5949
+ 'hr.chain_default_body': 'Bundan sonra her yeni {subject} talebi bu zinciri izler.',
5950
+ 'hr.chain_default_inflight': 'Açılmış talepler, açıldıkları andaki zinciri korur. Hiçbiri değişmez.',
5951
+ 'hr.chain_default_replaces': '{name} kullanımdan çıkar, listede kalır.',
5952
+ 'hr.chain_default_switch': 'Bu zinciri iş başına geçir',
5953
+ 'hr.chain_default_switch_hint': 'Bu türdeki her yeni talebin izleyeceği zincir. Tür başına yalnızca biri.',
5954
+ 'hr.chain_default_title': '{name} iş başına geçsin mi?',
5955
+ 'hr.chain_default_toast': 'Artık kullanımda olan {name}',
5956
+ 'hr.chain_desc':
5957
+ 'Neyi kimin, hangi sırayla imzalayacağı. Bir talep açıldığı andaki zinciri yanında taşır; burada yapılan hiçbir şey yolda olan bir talebe ulaşmaz.',
5958
+ 'hr.chain_edit_title': 'Onay zincirini düzenle',
5959
+ 'hr.chain_error': 'Onay zincirleri yüklenemedi',
5960
+ 'hr.chain_gone': 'Bu zincir artık yok — siz düzenlerken biri arşivlemiş.',
5961
+ 'hr.chain_in_use': 'Kullanımda',
5962
+ 'hr.chain_last_approver': 'Bir adımda en az bir onaylayan olmalı',
5963
+ 'hr.chain_last_step': 'Bir zincirde en az bir adım olmalı',
5964
+ 'hr.chain_make_default': 'Bu zinciri iş başına geçir',
5965
+ 'hr.chain_min': 'Kaç kişi',
5966
+ 'hr.chain_min_hint':
5967
+ 'Yukarıdaki satırlar değil, kişiler sayılır: tek bir satır birkaç kişiyi karşılayabilir.',
5968
+ 'hr.chain_mode': 'Kaç kişi onaylamalı',
5969
+ 'hr.chain_mode_all': 'Hepsi',
5970
+ 'hr.chain_mode_any': 'Herhangi biri',
5971
+ 'hr.chain_mode_hint': 'Adımı tek imzanın mı kapatacağı, yoksa hepsinin mi gerektiği.',
5972
+ 'hr.chain_mode_quorum': 'Belirli bir sayı',
5973
+ 'hr.chain_move_down': '{n}. adımı sona al',
5974
+ 'hr.chain_move_up': '{n}. adımı öne al',
5975
+ 'hr.chain_name': 'Ad',
5976
+ 'hr.chain_name_hint': 'Bu listede nasıl anılacağı. Örneğin "Beş günden uzun izin".',
5977
+ 'hr.chain_needs_approver': '{n}. adımda en az bir onaylayan olmalı.',
5978
+ 'hr.chain_needs_min': '{n}. adım için onaylayan sayısı gerekiyor.',
5979
+ 'hr.chain_needs_name': 'Zincire bir ad verin.',
5980
+ 'hr.chain_needs_step_name': '{n}. adımın bir adı olmalı.',
5981
+ 'hr.chain_needs_who': '{n}. adımda kimin seçileceği belirtilmemiş bir onaylayan var.',
5982
+ 'hr.chain_new': 'Yeni zincir',
5983
+ 'hr.chain_no_default_note':
5984
+ 'Bunlardan hiçbiri kullanımda değil; yeni {subject} talepleri hâlâ yalnızca talebi açanın yöneticisine gidiyor.',
5985
+ 'hr.chain_none': '{subject} için zincir yok',
5986
+ 'hr.chain_none_desc':
5987
+ 'Her talep, talebi açanın yöneticisine gider. Kimin, hangi sırayla imzalayacağını değiştirmek için bir zincir kurun.',
5988
+ 'hr.chain_on_timeout': 'Süre dolunca',
5989
+ 'hr.chain_perm_approval': 'Onayları yapılandırma',
5990
+ 'hr.chain_perm_attendance': 'Devamı yönetme',
5991
+ 'hr.chain_perm_leave': 'İzinleri yönetme',
5992
+ 'hr.chain_perm_office': 'Ofisleri yönetme',
5993
+ 'hr.chain_perm_overtime': 'Fazla mesaiyi yönetme',
5994
+ 'hr.chain_perm_person': 'Personeli yönetme',
5995
+ 'hr.chain_remove_approver': 'Bu onaylayanı kaldır',
5996
+ 'hr.chain_remove_step': 'Bu adımı kaldır',
5997
+ 'hr.chain_resolved_hint': 'Talep açıldığında belirlenir.',
5998
+ 'hr.chain_save_error': 'Zincir kaydedilemedi',
5999
+ 'hr.chain_saved': 'Kaydedildi',
6000
+ 'hr.chain_section_desc':
6001
+ 'Her tür için tek bir zincir çalışır: kullanımda işaretli olan. Diğerleri, birini iş başına geçirene kadar burada durur.',
6002
+ 'hr.chain_sla': 'Süre',
6003
+ 'hr.chain_sla_hint': 'Adım hatırlatılana kadar geçecek saat. Boş bırakırsanız süresiz bekler.',
6004
+ 'hr.chain_sla_none': 'Süresiz bekler',
6005
+ 'hr.chain_snapshot_note':
6006
+ 'Bir talep, açıldığı anda zincirinin bir kopyasını alır. Burada değiştirdikleriniz bundan sonra açılacak taleplere işler; imza bekleyen hiçbir şey yerinden oynamaz.',
6007
+ 'hr.chain_step_first': 'Yönetici',
6008
+ 'hr.chain_step_n': '{n}. adım',
6009
+ 'hr.chain_step_name': 'Adım adı',
6010
+ 'hr.chain_steps': 'Adımlar',
6011
+ 'hr.chain_subject_count': { one: '{count} zincir', other: '{count} zincir' },
6012
+ 'hr.chain_subject_filter': 'Bu türdeki talepler',
6013
+ 'hr.chain_subject_hint': 'Bir zincir sonradan başka bir türe taşınamaz.',
6014
+ 'hr.chain_subject_locked': 'Zincir oluşturulurken belirlendi.',
6015
+ 'hr.chain_timeout_auto_approve': 'Onayla',
6016
+ 'hr.chain_timeout_escalate': 'Bir üste taşı',
6017
+ 'hr.chain_timeout_remind': 'Hatırlatma gönder',
6018
+ 'hr.chain_who': 'Kim imzalar',
6019
+ 'hr.chain_who_group': 'Bir grup',
6020
+ 'hr.chain_who_manager': 'Yöneticisi',
6021
+ 'hr.chain_who_manager_of_manager': 'Yöneticisinin yöneticisi',
6022
+ 'hr.chain_who_office_head': 'Ofisinin başı',
6023
+ 'hr.chain_who_org_unit_head': 'Bağlı olduğu birimin başı',
6024
+ 'hr.chain_who_permission': 'Belirli bir yetkisi olan herkes',
6025
+ 'hr.chain_who_person': 'Adı verilen bir kişi',
2932
6026
  'hr.choose': 'Seçin…',
2933
6027
  'hr.clock_error': 'Giriş çıkış durumu yüklenemedi',
2934
6028
  'hr.clock_in': 'Giriş yap',
@@ -2962,6 +6056,37 @@ export const tr: Record<string, Message> = {
2962
6056
  'hr.delegate_to_date': 'Bitiş',
2963
6057
  'hr.department': 'Departman',
2964
6058
  'hr.display_name': 'Ad',
6059
+ 'hr.doc_added_on': '{date} tarihinde eklendi',
6060
+ 'hr.doc_attach': 'Belge ekle',
6061
+ 'hr.doc_attach_body': 'Dosya bu çalışma alanında saklanır ve bu kişinin kaydında listelenir.',
6062
+ 'hr.doc_attach_error': 'Belge eklenemedi',
6063
+ 'hr.doc_attach_title': '{name} için belge ekle',
6064
+ 'hr.doc_attached': '{name} eklendi',
6065
+ 'hr.doc_expired': 'Süresi doldu',
6066
+ 'hr.doc_expires': 'Bitiş tarihi',
6067
+ 'hr.doc_expires_hint': 'İsteğe bağlı. Süre dolmadan önce işaretlenir.',
6068
+ 'hr.doc_expires_on': '{date} tarihinde doluyor',
6069
+ 'hr.doc_expiring': 'Süresi yaklaşıyor',
6070
+ 'hr.doc_issued': 'Veriliş tarihi',
6071
+ 'hr.doc_issued_on': '{date} tarihinde verildi',
6072
+ 'hr.doc_kind': 'Tür',
6073
+ 'hr.doc_kind_certificate': 'Sertifika',
6074
+ 'hr.doc_kind_contract': 'Sözleşme',
6075
+ 'hr.doc_kind_id': 'Kimlik belgesi',
6076
+ 'hr.doc_kind_other': 'Diğer',
6077
+ 'hr.doc_kind_payslip': 'Bordro',
6078
+ 'hr.doc_name': 'Ad',
6079
+ 'hr.doc_remove_body':
6080
+ '{person} kaydından kaldırılır. Dosyanın kendisi çalışma alanının dosyalarında kalır.',
6081
+ 'hr.doc_remove_error': 'Belge kaldırılamadı — hiçbir şey değişmedi',
6082
+ 'hr.doc_remove_label': '{name} belgesini kaldır',
6083
+ 'hr.doc_remove_title': '{name} kaldırılsın mı?',
6084
+ 'hr.doc_removed': '{name} kaldırıldı',
6085
+ 'hr.doc_uploading': '{name} yükleniyor…',
6086
+ 'hr.docs_error': 'Belgeler yüklenemedi',
6087
+ 'hr.docs_none': 'Henüz belge yok',
6088
+ 'hr.docs_none_desc': 'Bu kişi için tutulan sözleşmeler, kimlik belgeleri ve sertifikalar.',
6089
+ 'hr.docs_title': 'Belgeler',
2965
6090
  'hr.edit_person': 'Düzenle',
2966
6091
  'hr.employee_no': 'Sicil',
2967
6092
  'hr.employment': 'İş',
@@ -3000,7 +6125,67 @@ export const tr: Record<string, Message> = {
3000
6125
  'hr.general_saved': 'Ayarlar kaydedildi',
3001
6126
  'hr.headcount': { one: '{count} kişi', other: '{count} kişi' },
3002
6127
  'hr.hired_on': 'Başlangıç',
6128
+ 'hr.hours': { one: 'saat', other: 'saat' },
3003
6129
  'hr.hours_short': '{n}sa',
6130
+ 'hr.job_change': 'Değişiklik kaydet',
6131
+ 'hr.job_change_backdated':
6132
+ 'Bu tarih geçmişte — buna izin var: kayıt, değişikliğin o tarihte yürürlüğe girdiğini söyleyecek.',
6133
+ 'hr.job_change_body':
6134
+ 'Bu, yürürlükteki dönemi kapatır ve yenisini açar. Kayıtlı hiçbir şey yeniden yazılmaz.',
6135
+ 'hr.job_change_closes': '{date} tarihinde başlayan dönem bir gün önce biter.',
6136
+ 'hr.job_change_error': 'Değişiklik kaydedilemedi — hiçbir şey değişmedi',
6137
+ 'hr.job_change_summary': '{name} kaydı {date} tarihinden itibaren değişir.',
6138
+ 'hr.job_change_title': '{name} için değişiklik kaydet',
6139
+ 'hr.job_change_too_early':
6140
+ 'Yürürlükteki dönem {date} tarihinde başlıyor. Değişiklik daha öncesine tarihlenemez.',
6141
+ 'hr.job_changed': '{name} için iş kaydı güncellendi',
6142
+ 'hr.job_effective_from': 'Yürürlük tarihi',
6143
+ 'hr.job_effective_hint':
6144
+ 'Mart’ta konuşulup Mayıs’ta mı giriliyor? Tarihi Mart yapın — kayıt, ne zaman olduğunu söylemeli.',
6145
+ 'hr.job_error': 'İş kaydı yüklenemedi',
6146
+ 'hr.job_fte': 'Tam zaman eşdeğeri',
6147
+ 'hr.job_fte_hint': '1 tam hafta, 0,5 yarım hafta demek.',
6148
+ 'hr.job_fte_invalid': '0 ile 1 arasında bir sayı.',
6149
+ 'hr.job_fte_value': '{fte} tam zaman eşdeğeri',
6150
+ 'hr.job_history': 'Geçmiş',
6151
+ 'hr.job_history_error': 'Geçmiş yüklenemedi',
6152
+ 'hr.job_history_none': 'Yürürlükteki dönemden öncesine dair kayıt yok.',
6153
+ 'hr.job_hours': 'Haftalık saat',
6154
+ 'hr.job_hours_invalid': '0 ile 168 arasında bir sayı.',
6155
+ 'hr.job_hours_value': 'haftada {hours} saat',
6156
+ 'hr.job_none': 'İş kaydı yok',
6157
+ 'hr.job_none_desc': 'Bir değişiklik kaydetmek ilk kaydı oluşturur.',
6158
+ 'hr.job_not_set': 'Belirlenmemiş',
6159
+ 'hr.job_period': 'Yürürlük',
6160
+ 'hr.job_position': 'Pozisyon',
6161
+ 'hr.job_reason': 'Neden',
6162
+ 'hr.job_reason_hint': 'İsteğe bağlı. Geçmişte dönemin yanında görünür.',
6163
+ 'hr.job_since': '{date} tarihinden beri',
6164
+ 'hr.leave_adjust': 'Düzelt',
6165
+ 'hr.leave_adjust_add': 'Ekle',
6166
+ 'hr.leave_adjust_amount_days': 'Kaç gün',
6167
+ 'hr.leave_adjust_amount_hours': 'Kaç saat',
6168
+ 'hr.leave_adjust_amount_invalid': 'Sıfırdan büyük bir sayı. Yönü yukarıdan seçersiniz.',
6169
+ 'hr.leave_adjust_confirm_add': '{name} için {type} bakiyesi {amount} artar, {date} tarihinden geçerli.',
6170
+ 'hr.leave_adjust_confirm_remove': '{name} için {type} bakiyesi {amount} azalır, {date} tarihinden geçerli.',
6171
+ 'hr.leave_adjust_desc':
6172
+ 'Kayıtlı hiçbir satır değişmez. Düzeltme, adınız ve yazdığınız gerekçeyle deftere yeni satır olarak eklenir.',
6173
+ 'hr.leave_adjust_direction': 'Yön',
6174
+ 'hr.leave_adjust_effective': 'Geçerlilik tarihi',
6175
+ 'hr.leave_adjust_effective_hint': 'Bu tarih, düzeltmenin hangi hak yılına düşeceğini belirler.',
6176
+ 'hr.leave_adjust_effective_invalid': 'Bir tarih seçin.',
6177
+ 'hr.leave_adjust_error': 'Düzeltme kaydedilemedi',
6178
+ 'hr.leave_adjust_irreversible':
6179
+ 'Deftere yalnızca satır eklenir: bu satır ne düzenlenebilir ne silinebilir. Hata ikinci bir düzeltmeyle giderilir ve iki satır da görünür kalır.',
6180
+ 'hr.leave_adjust_other_year':
6181
+ 'Bu tarih {year} yılında; dolayısıyla ekrandaki yıl değil, o hak yılı hareket eder.',
6182
+ 'hr.leave_adjust_reason_hint':
6183
+ 'Biri sayının neden değiştiğini sorduğunda cevap bu cümledir; kendiniz okumak isteyeceğiniz cümleyi yazın: "eski sistemden devredildi", "düzeltme" değil.',
6184
+ 'hr.leave_adjust_reason_required':
6185
+ 'Gerekçeyi yazın. Açıklamasız bakiye değişikliği, sonradan hesabı sorulan şeydir.',
6186
+ 'hr.leave_adjust_remove': 'Düş',
6187
+ 'hr.leave_adjust_title': 'Bu bakiyeyi elle düzelt',
6188
+ 'hr.leave_adjusted_toast': 'Bakiye düzeltildi',
3004
6189
  'hr.leave_after': { one: 'sonrasında {count} gün kalır', other: 'sonrasında {count} gün kalır' },
3005
6190
  'hr.leave_after_hours': { one: 'sonrasında {count} saat kalır', other: 'sonrasında {count} saat kalır' },
3006
6191
  'hr.leave_approved': 'Onaylandı',
@@ -3050,6 +6235,34 @@ export const tr: Record<string, Message> = {
3050
6235
  'hr.leave_icon_sick': 'Hastalık',
3051
6236
  'hr.leave_icon_special': 'Özel',
3052
6237
  'hr.leave_icon_trip': 'İş seyahati',
6238
+ 'hr.leave_kind_accrual': 'Hak edildi',
6239
+ 'hr.leave_kind_adjustment': 'Elle düzeltildi',
6240
+ 'hr.leave_kind_carry_in': 'Geçen yıldan devir',
6241
+ 'hr.leave_kind_carry_out': 'Gelecek yıla devir',
6242
+ 'hr.leave_kind_consumption': 'Kullanıldı',
6243
+ 'hr.leave_kind_encashment': 'Nakde çevrildi',
6244
+ 'hr.leave_kind_expiry': 'Süresi doldu',
6245
+ 'hr.leave_kind_grant': 'Tanımlandı',
6246
+ 'hr.leave_kind_reversal': 'Geri verildi',
6247
+ 'hr.leave_ledger': 'Hareketler',
6248
+ 'hr.leave_ledger_after': 'Sonraki bakiye',
6249
+ 'hr.leave_ledger_balance': 'Şu anki bakiye',
6250
+ 'hr.leave_ledger_capped': {
6251
+ one: 'Yalnızca en son {count} hareket. Daha eskiler gösterilmiyor.',
6252
+ other: 'Yalnızca en son {count} hareket. Daha eskiler gösterilmiyor.',
6253
+ },
6254
+ 'hr.leave_ledger_change': 'Değişim',
6255
+ 'hr.leave_ledger_error': 'Hareketler yüklenemedi',
6256
+ 'hr.leave_ledger_none': 'Bu yıl hiçbir hareket olmadı',
6257
+ 'hr.leave_ledger_none_desc':
6258
+ 'Her tanımlama, her kullanım ve her düzeltme buraya düşer; şimdiye kadar hiçbiri olmadı.',
6259
+ 'hr.leave_ledger_open': '{name} bakiyesinin nasıl oluştuğunu görün',
6260
+ 'hr.leave_ledger_reversed': 'Geri alındı',
6261
+ 'hr.leave_ledger_reverses': '{date} tarihli kaydı geri alır',
6262
+ 'hr.leave_ledger_title': '{name} bakiyesi nasıl oluştu',
6263
+ 'hr.leave_ledger_what': 'Ne oldu',
6264
+ 'hr.leave_ledger_when': 'Tarih',
6265
+ 'hr.leave_ledger_year': 'Hak yılı {year}',
3053
6266
  'hr.leave_none': 'Kayıtlı izin yok',
3054
6267
  'hr.leave_none_desc': 'İzin aldığınızda burada görünecek.',
3055
6268
  'hr.leave_pending': 'Onay bekliyor',
@@ -3237,7 +6450,163 @@ export const tr: Record<string, Message> = {
3237
6450
  'hr.offices_timezones': 'Saat dilimi',
3238
6451
  'hr.offices_title': 'Ofisler',
3239
6452
  'hr.on_break_since': '{time} saatinden beri molada',
6453
+ 'hr.org_archive_blocked_children': {
6454
+ one: 'Altındaki {count} departman bağlısız kalır. Önce onu taşıyın veya arşivleyin.',
6455
+ other: 'Altındaki {count} departman bağlısız kalır. Önce onları taşıyın veya arşivleyin.',
6456
+ },
6457
+ 'hr.org_archive_blocked_people': {
6458
+ one: '{count} kişi hâlâ buraya bağlı. Önce onları başka bir departmana taşıyın.',
6459
+ other: '{count} kişi hâlâ buraya bağlı. Önce onları başka bir departmana taşıyın.',
6460
+ },
6461
+ 'hr.org_archive_body': 'Şemadan çıkar ve birinin departmanı belirlenirken artık önerilmez.',
6462
+ 'hr.org_archive_error': 'Departman arşivlenemedi',
6463
+ 'hr.org_archive_note':
6464
+ 'Hiçbir şey silinmez, kayıtlı hiçbir şey değişmez: burada çalışmış olan herkes bunu geçmişinde tutar. Bu ekrandan geri dönüş yok.',
6465
+ 'hr.org_archive_title': '{name} arşivlensin mi?',
6466
+ 'hr.org_archived': '{name} arşivlendi',
6467
+ 'hr.org_code': 'Kod',
6468
+ 'hr.org_code_hint': 'Kısa; dışa aktarım ve bordro için. İsteğe bağlı.',
6469
+ 'hr.org_detail_label': 'Departman ayrıntısı',
6470
+ 'hr.org_detail_none': 'Hiçbir şey seçilmedi',
6471
+ 'hr.org_detail_none_desc': 'Kimlerin içinde olduğunu ve kimin yürüttüğünü görmek için bir departman seçin.',
6472
+ 'hr.org_error': 'Organizasyon şeması yüklenemedi',
6473
+ 'hr.org_error_desc': 'Departmanlar gelmedi. Yeniden deneyin.',
6474
+ 'hr.org_head': 'Departman sorumlusu',
6475
+ 'hr.org_head_hint': 'Departmanı kim yürütüyor. İsteğe bağlı ve başka bir şeyi değiştirmez.',
6476
+ 'hr.org_head_none': 'Henüz kimse',
6477
+ 'hr.org_head_set': 'Birini seç',
6478
+ 'hr.org_head_unknown': 'Artık rehberde olmayan biri',
6479
+ 'hr.org_here': 'Bu departmanda',
6480
+ 'hr.org_move': 'Taşı',
6481
+ 'hr.org_move_body':
6482
+ '{name} altındaki her şey onunla taşınır. Kimsenin işi, yöneticisi veya saatleri değişmez; yalnızca şemadaki yerleri değişir.',
6483
+ 'hr.org_move_error': 'Departman taşınamadı',
6484
+ 'hr.org_move_people': { one: '{count} kişi onunla taşınır.', other: '{count} kişi onunla taşınır.' },
6485
+ 'hr.org_move_people_none': 'Burada henüz kimse çalışmıyor, hiçbir kayıt değişmez.',
6486
+ 'hr.org_move_same': 'Zaten orada.',
6487
+ 'hr.org_move_title': '{name} taşınıyor',
6488
+ 'hr.org_move_to': 'Şunun altına',
6489
+ 'hr.org_move_units': { one: '{count} departman taşınır.', other: '{count} departman taşınır.' },
6490
+ 'hr.org_moved': '{name} taşındı',
6491
+ 'hr.org_no_match': 'Eşleşen departman yok',
6492
+ 'hr.org_no_match_desc': 'Adın bir parçasını ya da kodu yazın.',
6493
+ 'hr.org_none': 'Henüz departman yok',
6494
+ 'hr.org_none_desc':
6495
+ 'Bir raporlama hattının işaret ettiği şey departmandır; şirketin bütün bir dalını tek seferde aranabilir kılar. İlkini ekleyin, şema altında büyür.',
6496
+ 'hr.org_parent': 'Bağlı olduğu yer',
6497
+ 'hr.org_parent_fixed_hint':
6498
+ 'Taşımak, altındaki her şeyin yolunu yeniden yazar; bu yüzden kendi eylemi var.',
6499
+ 'hr.org_path': 'Şemadaki yeri',
6500
+ 'hr.org_position_actions': '{title} için işlemler',
6501
+ 'hr.org_position_add': 'Pozisyon ekle',
6502
+ 'hr.org_position_archive_body':
6503
+ 'Birinin işi belirlenirken artık önerilmez. Bu unvanı hâlihazırda taşıyan herkes onu korur ve kayıtlı hiçbir şey değişmez.',
6504
+ 'hr.org_position_archive_error': 'Pozisyon arşivlenemedi',
6505
+ 'hr.org_position_archive_title': '{title} arşivlensin mi?',
6506
+ 'hr.org_position_archived': '{title} arşivlendi',
6507
+ 'hr.org_position_created': '{title} hazır',
6508
+ 'hr.org_position_edit_title': '{title} düzenle',
6509
+ 'hr.org_position_family': 'İş ailesi',
6510
+ 'hr.org_position_family_hint': 'İlgili unvanları gruplar — Mühendislik, Satış. İsteğe bağlı.',
6511
+ 'hr.org_position_level': 'Seviye',
6512
+ 'hr.org_position_level_hint': 'Kariyer basamağındaki yeri; L4 ya da Kıdemli gibi. İsteğe bağlı.',
6513
+ 'hr.org_position_new': 'Yeni pozisyon',
6514
+ 'hr.org_position_save_error': 'Pozisyon kaydedilemedi',
6515
+ 'hr.org_position_saved': 'Pozisyon kaydedildi',
6516
+ 'hr.org_position_title': 'Unvan',
6517
+ 'hr.org_positions_error': 'Pozisyonlar yüklenemedi',
6518
+ 'hr.org_positions_none': 'Henüz pozisyon yok',
6519
+ 'hr.org_positions_none_desc':
6520
+ 'Pozisyon, şirketin işe aldığı bir görevdir; bir kişi değil. Bir pozisyonu kimse tutmuyor olabilir ya da yirmi kişi tutabilir.',
6521
+ 'hr.org_root': 'En üst kademe',
6522
+ 'hr.org_search_label': 'Departmanları ada veya koda göre ara',
6523
+ 'hr.org_search_placeholder': 'Departman ara',
6524
+ 'hr.org_see_people': { one: 'Buradaki {count} kişiyi gör', other: 'Buradaki {count} kişiyi gör' },
6525
+ 'hr.org_stat_levels': 'Kademe',
6526
+ 'hr.org_stat_people': 'Yerleştirilen kişi',
6527
+ 'hr.org_stat_positions': 'Pozisyonlar',
6528
+ 'hr.org_stat_units': 'Departmanlar',
6529
+ 'hr.org_subunits': 'Alt departmanlar',
6530
+ 'hr.org_subunits_none': 'Altında bir şey yok.',
6531
+ 'hr.org_tab_chart': 'Organizasyon şeması',
6532
+ 'hr.org_tab_positions': 'Pozisyonlar',
6533
+ 'hr.org_title': 'Organizasyon',
6534
+ 'hr.org_unit_add': 'Departman ekle',
6535
+ 'hr.org_unit_add_child': 'Alt departman ekle',
6536
+ 'hr.org_unit_created': '{name} hazır',
6537
+ 'hr.org_unit_edit_title': '{name} düzenle',
6538
+ 'hr.org_unit_new': 'Yeni departman',
6539
+ 'hr.org_unit_new_under': '{name} altında yeni departman',
6540
+ 'hr.org_unit_save_error': 'Departman kaydedilemedi',
6541
+ 'hr.org_unit_saved': 'Departman kaydedildi',
6542
+ 'hr.org_with_below': 'Alt departmanlarla',
3240
6543
  'hr.people_error': 'Rehber yüklenemedi',
6544
+ 'hr.periods_attendance': 'Devam',
6545
+ 'hr.periods_attendance_desc':
6546
+ 'Bordro için değil, süre hesabı için kapatılan aylar. İki tür de ayı aynı biçimde kapatır; tür yalnızca nedenini kaydeder.',
6547
+ 'hr.periods_closed_on': '{date} tarihinde kapatıldı',
6548
+ 'hr.periods_create_desc': 'Dönem açık olarak oluşturulur. Siz kapatana kadar hiçbir şey sabitlenmez.',
6549
+ 'hr.periods_create_error': 'Dönem oluşturulamadı',
6550
+ 'hr.periods_create_title': 'Yeni dönem',
6551
+ 'hr.periods_created': '{range} eklendi; siz kapatana kadar açık kalır',
6552
+ 'hr.periods_desc':
6553
+ 'Bir ayı kapatın; böylece verilmiş bordro sonradan kaymaz. Dönemi yeniden açmak kaymasına yeniden izin verir.',
6554
+ 'hr.periods_ends': 'Son gün',
6555
+ 'hr.periods_entity_hint':
6556
+ 'Yalnızca o günlerde bu tüzel kişiliğin çalıştırdığı kişileri kapatır. Herkesi kapatmak için tüm çalışma alanında bırakın.',
6557
+ 'hr.periods_error': 'Dönemler yüklenemedi',
6558
+ 'hr.periods_kind': 'Tür',
6559
+ 'hr.periods_kind_hint': 'Ayın ne için kapatıldığı. İki tür de aynı günleri kapatır.',
6560
+ 'hr.periods_lock': 'Kapat',
6561
+ 'hr.periods_lock_adjustments':
6562
+ 'Tarihi dönemin içine düşen bir politika değişikliği, geçmişi yeniden yazmak yerine açık bir dönemde düzeltmeye dönüşür. Dönemi daha sonra gerekçesini yazarak yeniden açabilirsiniz.',
6563
+ 'hr.periods_lock_body': 'Bu dönemdeki her kayıtlı gün {scope} için yeniden hesaplanamaz olur.',
6564
+ 'hr.periods_lock_confirm': 'Dönemi kapat',
6565
+ 'hr.periods_lock_error': 'Dönem kapatılamadı',
6566
+ 'hr.periods_lock_note': 'Not',
6567
+ 'hr.periods_lock_note_hint': 'İsteğe bağlı. Dönemde kalır — neyin verildiğini yazın.',
6568
+ 'hr.periods_lock_title': '{range} kapatılsın mı?',
6569
+ 'hr.periods_locked': 'Kapalı',
6570
+ 'hr.periods_locked_none': 'Kapatıldı. İçinde henüz kayıtlı gün yoktu.',
6571
+ 'hr.periods_locked_toast': {
6572
+ one: 'Kapatıldı. {count} gün artık yeniden hesaplanamaz.',
6573
+ other: 'Kapatıldı. {count} gün artık yeniden hesaplanamaz.',
6574
+ },
6575
+ 'hr.periods_new': 'Yeni dönem',
6576
+ 'hr.periods_none': 'Henüz dönem yok',
6577
+ 'hr.periods_none_desc':
6578
+ 'Sabitlemek istediğiniz ay için bir dönem oluşturun, sonra kapatın; içindeki günler yeniden hesaplanmaz olur.',
6579
+ 'hr.periods_open': 'Açık',
6580
+ 'hr.periods_overlap':
6581
+ '{range} bu günlerin bir bölümünü zaten kapsıyor. Aynı türden iki dönem, aynı işveren için çakışamaz.',
6582
+ 'hr.periods_payroll': 'Bordro',
6583
+ 'hr.periods_payroll_desc': 'Bordrosu verilmiş aylar.',
6584
+ 'hr.periods_range': 'Dönem',
6585
+ 'hr.periods_range_invalid': 'Son gün, ilk günden önce.',
6586
+ 'hr.periods_read_only':
6587
+ 'Dönemleri burada okuyabilirsiniz. Kapatmak ve yeniden açmak, bordro dönemlerini yönetme yetkisi ister.',
6588
+ 'hr.periods_reopen': 'Yeniden aç',
6589
+ 'hr.periods_reopen_body': 'İçindeki günler {scope} için yeniden hesaplanabilir olur.',
6590
+ 'hr.periods_reopen_error': 'Dönem yeniden açılamadı',
6591
+ 'hr.periods_reopen_filed':
6592
+ 'Bu ay için verilmiş bir bordro, insanlara ulaşmış rakamların altından kayabilir.',
6593
+ 'hr.periods_reopen_keep': 'Kapalı kalsın',
6594
+ 'hr.periods_reopen_overlap':
6595
+ 'Kapalı başka bir dönem bu tarihlerin bir bölümünü hâlâ kapsıyor; o günler kapalı kalır:',
6596
+ 'hr.periods_reopen_reason': 'Yeniden açma gerekçeniz',
6597
+ 'hr.periods_reopen_reason_hint': 'Dönemde saklanır; böylece bu liste neden yeniden açıldığını söyler.',
6598
+ 'hr.periods_reopen_reason_required': 'Yeniden açmadan önce bir gerekçe yazın.',
6599
+ 'hr.periods_reopen_title': '{range} yeniden açılsın mı?',
6600
+ 'hr.periods_reopened_none': 'Yeniden açıldı. Kayıtlı hiçbir gün değişmedi.',
6601
+ 'hr.periods_reopened_toast': {
6602
+ one: 'Yeniden açıldı. {count} gün yeniden hesaplanabilir.',
6603
+ other: 'Yeniden açıldı. {count} gün yeniden hesaplanabilir.',
6604
+ },
6605
+ 'hr.periods_scope': 'Kapsamı',
6606
+ 'hr.periods_scope_all': 'Tüm çalışma alanı',
6607
+ 'hr.periods_scope_entity': 'Bir tüzel kişilik',
6608
+ 'hr.periods_stale': 'Bu liste güncel olmayabilir',
6609
+ 'hr.periods_starts': 'İlk gün',
3241
6610
  'hr.person_create_error': 'Bu kişi eklenemedi — hiçbir şey kaydedilmedi',
3242
6611
  'hr.person_created': '{name} dizine eklendi',
3243
6612
  'hr.person_error': 'Bu kişinin kaydı yüklenemedi',
@@ -3345,6 +6714,27 @@ export const tr: Record<string, Message> = {
3345
6714
  'Vardiyaları buradan okuyabilirsiniz, ama değiştirmek için devam kayıtlarını yönetme yetkisi gerekir.',
3346
6715
  'hr.schedules_show_archived': 'Arşivdekileri göster',
3347
6716
  'hr.search_people': 'Kişi ara',
6717
+ 'hr.sensitive_add_contact': 'Acil durum kişisi ekle',
6718
+ 'hr.sensitive_birth_date': 'Doğum tarihi',
6719
+ 'hr.sensitive_contact_hint': 'İşyerinde bir şey olursa aranacak kişi.',
6720
+ 'hr.sensitive_contact_name': 'Acil durum kişisi',
6721
+ 'hr.sensitive_contact_partial': 'Ya ad ve numara, ya da hiçbiri.',
6722
+ 'hr.sensitive_edit_body': 'Şifreli saklanır. Kayıt, bunların değiştiğini söyler; ne yazdığını asla.',
6723
+ 'hr.sensitive_edit_title': '{name} için kişisel bilgiler',
6724
+ 'hr.sensitive_emergency': 'Acil durumda arayın',
6725
+ 'hr.sensitive_emergency_none': 'Kayıtlı acil durum kişisi yok',
6726
+ 'hr.sensitive_error': 'Bu bilgiler yüklenemedi',
6727
+ 'hr.sensitive_hidden':
6728
+ 'Acil durum kişisi, doğum tarihi, kimlik ve banka bilgileri. Bu bölümü açtığınızda görünür.',
6729
+ 'hr.sensitive_iban': 'IBAN',
6730
+ 'hr.sensitive_national_id': 'Kimlik numarası',
6731
+ 'hr.sensitive_none': 'Kayıtlı bilgi yok',
6732
+ 'hr.sensitive_none_desc': 'Acil durum kişisiyle başlayın — aceleyle aranacak tek bilgi odur.',
6733
+ 'hr.sensitive_relationship': 'Yakınlık',
6734
+ 'hr.sensitive_save_error': 'Bu bilgiler kaydedilemedi — hiçbir şey değişmedi',
6735
+ 'hr.sensitive_title': 'Kişisel bilgiler ve acil durum kişisi',
6736
+ 'hr.settings_accrual': 'Hakediş',
6737
+ 'hr.settings_approvals': 'Onaylar',
3348
6738
  'hr.settings_calendars': 'Tatiller',
3349
6739
  'hr.settings_capabilities': 'Özellikler',
3350
6740
  'hr.settings_general': 'Genel',
@@ -3353,6 +6743,7 @@ export const tr: Record<string, Message> = {
3353
6743
  'hr.settings_leave': 'İzin',
3354
6744
  'hr.settings_not_built': "Bunun API'si hazır; düzenleme ekranı henüz yapılmadı.",
3355
6745
  'hr.settings_offices': 'Ofisler',
6746
+ 'hr.settings_periods': 'Dönemler',
3356
6747
  'hr.settings_schedules': 'Vardiyalar',
3357
6748
  'hr.started': 'Başlangıç',
3358
6749
  'hr.status': 'Durum',