@kernhq/module-hr 0.13.1 → 0.14.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.
Files changed (61) hide show
  1. package/dist/contract/attendance.d.ts +35 -0
  2. package/dist/contract/attendance.d.ts.map +1 -1
  3. package/dist/contract/attendance.js +25 -1
  4. package/dist/contract/attendance.js.map +1 -1
  5. package/dist/contract/capabilities.d.ts.map +1 -1
  6. package/dist/contract/capabilities.js +10 -0
  7. package/dist/contract/capabilities.js.map +1 -1
  8. package/dist/contract/events.d.ts +17 -16
  9. package/dist/contract/events.d.ts.map +1 -1
  10. package/dist/contract/events.js +23 -16
  11. package/dist/contract/events.js.map +1 -1
  12. package/dist/contract/models.d.ts +1 -0
  13. package/dist/contract/models.d.ts.map +1 -1
  14. package/dist/contract/models.js +11 -0
  15. package/dist/contract/models.js.map +1 -1
  16. package/dist/contract/router.d.ts +12 -0
  17. package/dist/contract/router.d.ts.map +1 -1
  18. package/dist/contract/router.js +11 -3
  19. package/dist/contract/router.js.map +1 -1
  20. package/dist/contract/settings.d.ts +0 -1
  21. package/dist/contract/settings.d.ts.map +1 -1
  22. package/dist/contract/settings.js +11 -5
  23. package/dist/contract/settings.js.map +1 -1
  24. package/dist/server/index.d.ts +0 -1
  25. package/dist/server/index.d.ts.map +1 -1
  26. package/dist/server/index.js +30 -0
  27. package/dist/server/index.js.map +1 -1
  28. package/dist/server/jobs.d.ts.map +1 -1
  29. package/dist/server/jobs.js +13 -5
  30. package/dist/server/jobs.js.map +1 -1
  31. package/dist/server/router.d.ts +12 -0
  32. package/dist/server/router.d.ts.map +1 -1
  33. package/dist/server/router.js +374 -76
  34. package/dist/server/router.js.map +1 -1
  35. package/dist/server/services/access.d.ts +176 -0
  36. package/dist/server/services/access.d.ts.map +1 -0
  37. package/dist/server/services/access.js +260 -0
  38. package/dist/server/services/access.js.map +1 -0
  39. package/dist/server/services/people.d.ts +1 -0
  40. package/dist/server/services/people.d.ts.map +1 -1
  41. package/dist/server/services/people.js +3 -0
  42. package/dist/server/services/people.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/client/components/DayDetail.svelte +32 -14
  45. package/src/client/components/PersonPanel.svelte +66 -5
  46. package/src/client/components/redaction.ts +51 -0
  47. package/src/client/messages.ts +346 -77
  48. package/src/client/pages/AttendancePage.svelte +24 -1
  49. package/src/client/pages/DirectoryPage.svelte +285 -11
  50. package/src/client/pages/OfficesPage.svelte +6 -0
  51. package/src/client/pages/OrgPage.svelte +7 -0
  52. package/src/client/permissions.ts +12 -4
  53. package/src/client/settings/AccrualSettings.svelte +715 -95
  54. package/src/client/settings/GeneralSettings.svelte +12 -9
  55. package/src/client/settings/SchedulesSettings.svelte +31 -78
  56. package/src/contract/attendance.ts +27 -1
  57. package/src/contract/capabilities.ts +10 -0
  58. package/src/contract/events.ts +23 -19
  59. package/src/contract/models.ts +11 -0
  60. package/src/contract/router.ts +11 -3
  61. package/src/contract/settings.ts +11 -5
@@ -45,9 +45,12 @@ export const en: Record<string, Message> = {
45
45
  'hr.accr_col_policy': 'Policy',
46
46
  'hr.accr_col_when': 'When',
47
47
  'hr.accr_config_unreadable': "This policy's settings cannot be read",
48
+ 'hr.accr_config_unreadable_form':
49
+ "This policy's stored settings could not be read, so the fields below are defaults rather than what is saved. Saving replaces the stored settings with these.",
48
50
  'hr.accr_copy_of': '{name} (copy)',
49
51
  'hr.accr_create_title': 'New accrual policy',
50
52
  'hr.accr_created': '"{name}" created',
53
+ 'hr.accr_day_is': 'a day is {length}',
51
54
  'hr.accr_day_length': 'Length of a leave day',
52
55
  'hr.accr_day_length_hint':
53
56
  'In minutes — {length}. Balances are kept in minutes so half days and hourly leave stay exact.',
@@ -55,7 +58,7 @@ export const en: Record<string, Message> = {
55
58
  'hr.accr_days_field_hint': 'Before seniority tiers, proration and part-time hours.',
56
59
  'hr.accr_days_per_year': { one: '{count} day a year', other: '{count} days a year' },
57
60
  'hr.accr_desc':
58
- 'How leave is earned over time: the policies, who each one applies to, and what the next run would credit.',
61
+ 'How leave is earned over time and what survives the turn of the year: the policies, who each one applies to, and what the next run would credit.',
59
62
  'hr.accr_duplicate': 'Duplicate',
60
63
  'hr.accr_edit_retroactive':
61
64
  '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.',
@@ -71,6 +74,8 @@ export const en: Record<string, Message> = {
71
74
  'hr.accr_error_name': 'Give the policy a name.',
72
75
  'hr.accr_error_pick_policy': 'Pick a policy.',
73
76
  'hr.accr_error_pick_subject': 'Pick who it applies to.',
77
+ 'hr.accr_error_round_cap':
78
+ 'A rounding step cannot be longer than {max}, so a whole day is not one on a day this long.',
74
79
  'hr.accr_error_tier_clash': 'Two tiers start at the same number of years.',
75
80
  'hr.accr_error_to_before_from': 'The end date is before the start date.',
76
81
  'hr.accr_freq_anniversary': 'On each work anniversary',
@@ -117,9 +122,9 @@ export const en: Record<string, Message> = {
117
122
  '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
123
  'hr.accr_preview_error': 'The preview could not be computed',
119
124
  'hr.accr_readonly': 'You can read this page, but changing anything needs permission to manage policies.',
120
- 'hr.accr_round_day': 'A whole day',
125
+ 'hr.accr_round_day': 'A whole day ({length})',
121
126
  'hr.accr_round_exact': 'No rounding',
122
- 'hr.accr_round_half_day': 'Half a day',
127
+ 'hr.accr_round_half_day': 'Half a day ({length})',
123
128
  'hr.accr_round_minutes': { one: '{count} minute', other: '{count} minutes' },
124
129
  'hr.accr_round_short': 'rounded to {step}',
125
130
  'hr.accr_rounding': 'Rounding',
@@ -148,6 +153,7 @@ export const en: Record<string, Message> = {
148
153
  'hr.accr_run_title': 'Accrual run',
149
154
  'hr.accr_run_to': 'Period to',
150
155
  'hr.accr_run_total': 'Total',
156
+ 'hr.accr_run_total_note': 'Time, not days: one run can cover policies with different day lengths.',
151
157
  'hr.accr_run_writes':
152
158
  'Crediting writes to the leave ledger. It cannot be undone here — a wrong credit is corrected with a leave adjustment.',
153
159
  'hr.accr_rung_empty': 'Nothing on this rung.',
@@ -281,6 +287,7 @@ export const en: Record<string, Message> = {
281
287
  'hr.att_corrections_error': 'Corrections you have asked for could not be loaded',
282
288
  'hr.att_corrections_pending': 'Corrections you have asked for',
283
289
  'hr.att_locked_no_change': 'This month is closed for payroll, so a correction cannot move its figures.',
290
+ 'hr.att_method_auto': 'Closed automatically',
284
291
  'hr.att_method_device': 'Terminal',
285
292
  'hr.att_method_import': 'Imported',
286
293
  'hr.att_method_kiosk': 'Kiosk',
@@ -485,6 +492,44 @@ export const en: Record<string, Message> = {
485
492
  'hr.capability_off_title': 'Turn {name} off?',
486
493
  'hr.capability_requires': 'Needs {name}',
487
494
  'hr.capability_write_error': 'That switch could not be changed. Nothing was saved.',
495
+ 'hr.cf_cap': 'Days that carry over',
496
+ 'hr.cf_cap_hint':
497
+ 'The most that survives the turn of the year. Anything above it lapses, and the ledger records the lapse.',
498
+ 'hr.cf_cap_zero':
499
+ 'Nothing carries at zero: the whole remaining balance is written off on 31 December, as an expiry entry somebody can point at.',
500
+ 'hr.cf_carries_nothing': 'Nothing carries',
501
+ 'hr.cf_col_carries': 'Carries over',
502
+ 'hr.cf_col_deadline': 'Deadline',
503
+ 'hr.cf_create_title': 'New carry-forward policy',
504
+ 'hr.cf_deadline_short': { one: '{count} month to use it', other: '{count} months to use it' },
505
+ 'hr.cf_edit_title': 'Edit carry-forward policy',
506
+ 'hr.cf_error': 'Carry-forward policies could not be loaded',
507
+ 'hr.cf_error_leave_type': 'Pick the leave type it carries.',
508
+ 'hr.cf_expires': 'Carried leave expires',
509
+ 'hr.cf_expires_hint':
510
+ 'Counted from 1 January, when the new leave year opens — not from the day the job runs.',
511
+ 'hr.cf_job_note':
512
+ "A job carries the balance over on each office's own 2 January, once December has been credited, and takes carried leave away on the day it lapses. Both halves are written to the ledger.",
513
+ 'hr.cf_leave_type_hint': 'Which balance carries over.',
514
+ 'hr.cf_months': 'Months to use it',
515
+ 'hr.cf_months_hint':
516
+ 'Between 1 and 24. Three months means carried leave survives the whole of March and is gone on 1 April.',
517
+ 'hr.cf_needs_accrual':
518
+ 'There is no accrual policy, so nothing can carry: a cap in days needs the length of a working day, and only an accrual policy states one.',
519
+ 'hr.cf_needs_accrual_note':
520
+ 'The cap is in days, and only an accrual policy says how long a day is. Somebody with no accrual policy carries nothing at all.',
521
+ 'hr.cf_no_deadline': 'No deadline',
522
+ 'hr.cf_no_default':
523
+ 'No carry-forward policy sits on the workspace, so anybody with nothing nearer keeps nothing at the turn of the year.',
524
+ 'hr.cf_none': 'No carry-forward policies yet',
525
+ 'hr.cf_none_desc':
526
+ 'Nothing moves into the new year without one. An unused balance stays in the year it was earned, and the new year starts from what accrues in it.',
527
+ 'hr.cf_section': 'Carry-forward',
528
+ 'hr.cf_section_desc':
529
+ 'What is left when a leave year ends: how much of it survives into the next one, and how long there is to use it.',
530
+ 'hr.cf_unassign_no_fallback':
531
+ 'There is no carry-forward policy on any rung below this one, so nothing of theirs carries into the new year.',
532
+ 'hr.cf_unassign_title': 'Stop carrying leave for {subject}?',
488
533
  'hr.chain_actions_for': 'Actions for {name}',
489
534
  'hr.chain_add_approver': 'Add an approver',
490
535
  'hr.chain_add_step': 'Add a step',
@@ -652,6 +697,10 @@ export const en: Record<string, Message> = {
652
697
  'hr.employment_intern': 'Intern',
653
698
  'hr.employment_part_time': 'Part time',
654
699
  'hr.employment_temporary': 'Temporary',
700
+ 'hr.filter_clear': 'Show everyone',
701
+ 'hr.filter_department': '{name} and the departments under it',
702
+ 'hr.filter_department_unnamed': 'One department and the departments under it',
703
+ 'hr.filter_office_unnamed': 'One office',
655
704
  'hr.general_country_desc':
656
705
  'Used when the module is switched on: the first office is created in this country and its holiday calendar is seeded from the pack Kern ships for it.',
657
706
  'hr.general_country_hint': 'Offices that already exist keep their own country; change one under Offices.',
@@ -889,6 +938,10 @@ export const en: Record<string, Message> = {
889
938
  'hr.nav': 'People',
890
939
  'hr.no_people': 'Nobody here yet',
891
940
  'hr.no_people_desc': 'Add the first person to start the directory.',
941
+ 'hr.no_people_match': 'Nobody matches',
942
+ 'hr.no_people_match_filtered':
943
+ 'Nobody in this part of the company matches. Show everyone to search the whole directory.',
944
+ 'hr.no_people_match_search': 'No name matches what you typed.',
892
945
  'hr.not_clocked_in': 'Not clocked in',
893
946
  'hr.offboard': 'End employment',
894
947
  'hr.offboard_already': 'This person has already left',
@@ -1001,6 +1054,7 @@ export const en: Record<string, Message> = {
1001
1054
  'hr.offices_timezones': 'Timezones',
1002
1055
  'hr.offices_title': 'Offices',
1003
1056
  'hr.on_break_since': 'On break since {time}',
1057
+ 'hr.on_leave_note': 'Away right now',
1004
1058
  'hr.org_archive_blocked_children': {
1005
1059
  one: 'Its {count} sub-department would be left with no parent. Move or archive it first.',
1006
1060
  other: 'Its {count} sub-departments would be left with no parent. Move or archive them first.',
@@ -1072,7 +1126,7 @@ export const en: Record<string, Message> = {
1072
1126
  'hr.org_root': 'Top level',
1073
1127
  'hr.org_search_label': 'Search departments by name or code',
1074
1128
  'hr.org_search_placeholder': 'Search departments',
1075
- 'hr.org_see_people': { one: 'See the {count} person here', other: 'See the {count} people here' },
1129
+ 'hr.org_see_people': { one: 'See the {count} person', other: 'See the {count} people' },
1076
1130
  'hr.org_stat_levels': 'Levels deep',
1077
1131
  'hr.org_stat_people': 'People placed',
1078
1132
  'hr.org_stat_positions': 'Positions',
@@ -1110,7 +1164,7 @@ export const en: Record<string, Message> = {
1110
1164
  'hr.periods_kind_hint': 'What the month is closed for. Either kind closes the same days.',
1111
1165
  'hr.periods_lock': 'Close',
1112
1166
  'hr.periods_lock_adjustments':
1113
- 'A policy change dated inside it becomes an adjustment in an open period instead. You can reopen the period later, with a reason.',
1167
+ 'A policy change dated inside it leaves those days exactly as they were closed, so anything it owes has to be recorded by hand as an adjustment in an open period. You can reopen the period later, with a reason.',
1114
1168
  'hr.periods_lock_body': 'Every recorded day inside this period stops being recomputable, for {scope}.',
1115
1169
  'hr.periods_lock_confirm': 'Close the period',
1116
1170
  'hr.periods_lock_error': 'The period could not be closed',
@@ -1161,6 +1215,9 @@ export const en: Record<string, Message> = {
1161
1215
  'hr.person_create_error': 'This person could not be added — nothing was saved',
1162
1216
  'hr.person_created': '{name} is in the directory',
1163
1217
  'hr.person_error': 'This person could not be loaded',
1218
+ 'hr.person_hidden': 'Hidden',
1219
+ 'hr.person_hidden_hint':
1220
+ 'Personal contact details and employment dates are shown only for the people you are responsible for.',
1164
1221
  'hr.person_manage_denied': 'You cannot add people to this workspace',
1165
1222
  'hr.person_offboard_error': 'The employment could not be ended — nothing was changed',
1166
1223
  'hr.person_offboarded': '{name} has left',
@@ -1169,8 +1226,10 @@ export const en: Record<string, Message> = {
1169
1226
  'hr.person_updated': 'Saved',
1170
1227
  'hr.personal_email': 'Personal email',
1171
1228
  'hr.phone': 'Phone',
1229
+ 'hr.policy_kind_accrual': 'Accrual',
1230
+ 'hr.policy_kind_carry_forward': 'Carry-forward',
1172
1231
  'hr.reject': 'Reject',
1173
- 'hr.reject_confirm_body': 'They are notified and nothing changes for them. They can send a new request.',
1232
+ 'hr.reject_confirm_body': 'Nothing changes for them. They can send a new request.',
1174
1233
  'hr.reject_confirm_title': 'Reject this request?',
1175
1234
  'hr.request_leave': 'Request time off',
1176
1235
  'hr.retry': 'Try again',
@@ -1194,7 +1253,7 @@ export const en: Record<string, Message> = {
1194
1253
  'hr.schedule_assigned': '{name} is on this schedule from {date}',
1195
1254
  'hr.schedule_auto_out': 'Close a forgotten shift after',
1196
1255
  'hr.schedule_auto_out_hint':
1197
- 'Somebody who never clocks out is clocked out automatically once this long has passed, and the day is flagged for review. Left off, the day waits for a correction.',
1256
+ 'Somebody who never clocks out is clocked out automatically once this long has passed, and the day counts as that long rather than staying marked unfinished. Left off, the day stays open and waits for a correction.',
1198
1257
  'hr.schedule_auto_out_off': 'Leave it for a human',
1199
1258
  'hr.schedule_break': 'Break',
1200
1259
  'hr.schedule_break_hint': "The break is unpaid and comes off the day's total.",
@@ -1242,13 +1301,8 @@ export const en: Record<string, Message> = {
1242
1301
  'hr.schedule_saved': 'Schedule saved',
1243
1302
  'hr.schedule_start': 'Start',
1244
1303
  'hr.schedule_time_missing': 'Every working day needs a start and an end.',
1245
- 'hr.schedule_tz_fixed': 'One fixed zone',
1246
- 'hr.schedule_tz_hint': '09:00 is a reading on a clock. This says whose clock.',
1247
- 'hr.schedule_tz_label': 'Zone',
1248
- 'hr.schedule_tz_mode': 'Time zone',
1249
- 'hr.schedule_tz_office': "The person's office",
1250
- 'hr.schedule_tz_person': "The person's own time zone",
1251
- 'hr.schedule_tz_required': 'Choose the zone this schedule is read in.',
1304
+ 'hr.schedule_tz_note':
1305
+ "09:00 means nine o'clock where the person is their primary office's time zone, unless their own profile sets one.",
1252
1306
  'hr.schedule_week': 'Working week',
1253
1307
  'hr.schedule_week_empty': 'Every day is off — there would be nothing to measure.',
1254
1308
  'hr.schedule_week_total': '{hours} a week',
@@ -1357,9 +1411,12 @@ export const ar: Record<string, Message> = {
1357
1411
  'hr.accr_col_policy': 'السياسة',
1358
1412
  'hr.accr_col_when': 'متى',
1359
1413
  'hr.accr_config_unreadable': 'تعذّرت قراءة إعدادات هذه السياسة',
1414
+ 'hr.accr_config_unreadable_form':
1415
+ 'تعذّرت قراءة الإعدادات المحفوظة لهذه السياسة، لذا فالحقول أدناه قيم افتراضية لا ما هو محفوظ. الحفظ سيستبدل المحفوظ بها.',
1360
1416
  'hr.accr_copy_of': '{name} (نسخة)',
1361
1417
  'hr.accr_create_title': 'سياسة استحقاق جديدة',
1362
1418
  'hr.accr_created': 'أُنشئت «{name}»',
1419
+ 'hr.accr_day_is': 'اليوم {length}',
1363
1420
  'hr.accr_day_length': 'طول يوم الإجازة',
1364
1421
  'hr.accr_day_length_hint':
1365
1422
  'بالدقائق — {length}. تُحفظ الأرصدة بالدقائق كي تبقى أنصاف الأيام والإجازة الساعية دقيقة.',
@@ -1374,7 +1431,7 @@ export const ar: Record<string, Message> = {
1374
1431
  other: '{count} يوم سنويًا',
1375
1432
  },
1376
1433
  'hr.accr_desc':
1377
- 'كيف تُكتسب الإجازة مع الوقت: السياسات، ومن تنطبق عليه كل واحدة، وما الذي ستضيفه عملية التشغيل التالية.',
1434
+ 'كيف تُكتسب الإجازة مع الوقت وما الذي يعبر رأس السنة: السياسات، ومن تنطبق عليه كل واحدة، وما الذي ستضيفه عملية التشغيل التالية.',
1378
1435
  'hr.accr_duplicate': 'نسخ',
1379
1436
  'hr.accr_edit_retroactive':
1380
1437
  'التحرير يعيد كتابة ما كان صحيحًا في الماضي، فيصعب تفسير كل ما أُضيف بناءً عليه. لتغيير القواعد اعتبارًا من تاريخ معيّن، انسخ هذه السياسة وامنح النسخة تاريخ بدء لاحقًا.',
@@ -1390,6 +1447,8 @@ export const ar: Record<string, Message> = {
1390
1447
  'hr.accr_error_name': 'امنح السياسة اسمًا.',
1391
1448
  'hr.accr_error_pick_policy': 'اختر سياسة.',
1392
1449
  'hr.accr_error_pick_subject': 'اختر من تنطبق عليه.',
1450
+ 'hr.accr_error_round_cap':
1451
+ 'لا يمكن أن تتجاوز خطوة التقريب {max}، لذا لا يصلح اليوم الكامل خطوةً في يوم بهذا الطول.',
1393
1452
  'hr.accr_error_tier_clash': 'درجتان تبدآن عند العدد نفسه من السنوات.',
1394
1453
  'hr.accr_error_to_before_from': 'تاريخ الانتهاء قبل تاريخ البدء.',
1395
1454
  'hr.accr_freq_anniversary': 'في كل ذكرى سنوية للتعيين',
@@ -1436,9 +1495,9 @@ export const ar: Record<string, Message> = {
1436
1495
  'تحدّد السياسة كم يمنح العام من أيام، ومتى تظهر، وكيف تُقرَّب. ولا يستحق أحد شيئًا قبل أن تُسنَد إليه سياسة.',
1437
1496
  'hr.accr_preview_error': 'تعذّر حساب المعاينة',
1438
1497
  'hr.accr_readonly': 'يمكنك قراءة هذه الصفحة، لكن تغيير أي شيء يحتاج صلاحية إدارة السياسات.',
1439
- 'hr.accr_round_day': 'يوم كامل',
1498
+ 'hr.accr_round_day': 'يوم كامل ({length})',
1440
1499
  'hr.accr_round_exact': 'بلا تقريب',
1441
- 'hr.accr_round_half_day': 'نصف يوم',
1500
+ 'hr.accr_round_half_day': 'نصف يوم ({length})',
1442
1501
  'hr.accr_round_minutes': {
1443
1502
  zero: '{count} دقيقة',
1444
1503
  one: 'دقيقة واحدة',
@@ -1499,6 +1558,7 @@ export const ar: Record<string, Message> = {
1499
1558
  'hr.accr_run_title': 'تشغيل الاستحقاق',
1500
1559
  'hr.accr_run_to': 'الفترة إلى',
1501
1560
  'hr.accr_run_total': 'الإجمالي',
1561
+ 'hr.accr_run_total_note': 'وقت لا أيام: قد يشمل التشغيل الواحد سياسات بأطوال أيام مختلفة.',
1502
1562
  'hr.accr_run_writes':
1503
1563
  'الإضافة تُكتب في دفتر الإجازات. ولا يمكن التراجع عنها من هنا — تُصحَّح الإضافة الخاطئة بتسوية إجازة.',
1504
1564
  'hr.accr_rung_empty': 'لا شيء على هذه الدرجة.',
@@ -1658,6 +1718,7 @@ export const ar: Record<string, Message> = {
1658
1718
  'hr.att_corrections_error': 'تعذّر تحميل التصحيحات التي طلبتها',
1659
1719
  'hr.att_corrections_pending': 'التصحيحات التي طلبتها',
1660
1720
  'hr.att_locked_no_change': 'أُغلق هذا الشهر للرواتب، فلا يستطيع التصحيح تغيير أرقامه.',
1721
+ 'hr.att_method_auto': 'أُغلق تلقائيًا',
1661
1722
  'hr.att_method_device': 'جهاز',
1662
1723
  'hr.att_method_import': 'مستورد',
1663
1724
  'hr.att_method_kiosk': 'كشك',
@@ -1871,6 +1932,48 @@ export const ar: Record<string, Message> = {
1871
1932
  'hr.capability_off_title': 'إيقاف {name}؟',
1872
1933
  'hr.capability_requires': 'يتطلب {name}',
1873
1934
  'hr.capability_write_error': 'تعذّر تغيير هذا المفتاح. لم يُحفظ أي شيء.',
1935
+ 'hr.cf_cap': 'الأيام التي تُرحَّل',
1936
+ 'hr.cf_cap_hint': 'هذا أقصى ما يعبر رأس السنة. وما زاد عليه تنتهي صلاحيته، ويسجّل الدفتر ذلك.',
1937
+ 'hr.cf_cap_zero':
1938
+ 'عند الصفر لا يُرحَّل شيء: يُشطب الرصيد المتبقي كله في 31 ديسمبر بقيد انتهاء صلاحية يمكن الإشارة إليه.',
1939
+ 'hr.cf_carries_nothing': 'لا شيء يُرحَّل',
1940
+ 'hr.cf_col_carries': 'المُرحَّل',
1941
+ 'hr.cf_col_deadline': 'المهلة',
1942
+ 'hr.cf_create_title': 'سياسة ترحيل جديدة',
1943
+ 'hr.cf_deadline_short': {
1944
+ zero: '{count} شهر للاستخدام',
1945
+ one: 'شهر واحد للاستخدام',
1946
+ two: 'شهران للاستخدام',
1947
+ few: '{count} أشهر للاستخدام',
1948
+ many: '{count} شهرًا للاستخدام',
1949
+ other: '{count} شهر للاستخدام',
1950
+ },
1951
+ 'hr.cf_edit_title': 'تعديل سياسة الترحيل',
1952
+ 'hr.cf_error': 'تعذّر تحميل سياسات الترحيل',
1953
+ 'hr.cf_error_leave_type': 'اختر نوع الإجازة الذي يُرحَّل.',
1954
+ 'hr.cf_expires': 'الإجازة المُرحَّلة تنتهي صلاحيتها',
1955
+ 'hr.cf_expires_hint': 'تُحتسب من 1 يناير، حين تبدأ سنة الإجازات الجديدة، لا من يوم تشغيل المهمة.',
1956
+ 'hr.cf_job_note':
1957
+ 'تُرحّل مهمة تلقائية الرصيدَ في الثاني من يناير بتوقيت كل مكتب، بعد إضافة ديسمبر، وتسحب الإجازة المُرحَّلة في اليوم الذي تنتهي فيه صلاحيتها. ويُسجَّل النصفان كلاهما في الدفتر.',
1958
+ 'hr.cf_leave_type_hint': 'أي رصيد يُرحَّل.',
1959
+ 'hr.cf_months': 'المهلة بالأشهر',
1960
+ 'hr.cf_months_hint': 'بين 1 و24. ثلاثة أشهر تعني أن الإجازة المُرحَّلة تبقى طوال مارس وتنتهي في 1 أبريل.',
1961
+ 'hr.cf_needs_accrual':
1962
+ 'لا توجد سياسة استحقاق، لذلك لا يمكن ترحيل شيء: السقف بالأيام يحتاج طول يوم العمل، ولا تذكره إلا سياسة الاستحقاق.',
1963
+ 'hr.cf_needs_accrual_note':
1964
+ 'السقف بالأيام، ولا تقول طولَ اليوم إلا سياسة الاستحقاق. ومن لا سياسة استحقاق له لا يُرحَّل له شيء إطلاقًا.',
1965
+ 'hr.cf_no_deadline': 'بلا مهلة',
1966
+ 'hr.cf_no_default':
1967
+ 'لا توجد سياسة ترحيل على مستوى مساحة العمل، لذلك لا يحتفظ بشيء عند رأس السنة كل من لا تنطبق عليه سياسة أقرب.',
1968
+ 'hr.cf_none': 'لا توجد سياسات ترحيل بعد',
1969
+ 'hr.cf_none_desc':
1970
+ 'بدون سياسة كهذه لا ينتقل شيء إلى السنة الجديدة. الرصيد غير المستخدم يبقى في السنة التي اكتُسب فيها، وتبدأ السنة الجديدة بما يُكتسب فيها.',
1971
+ 'hr.cf_section': 'الترحيل',
1972
+ 'hr.cf_section_desc':
1973
+ 'ما يتبقّى عند نهاية سنة الإجازات: كم منه ينتقل إلى السنة التالية، وكم من الوقت يبقى لاستخدامه.',
1974
+ 'hr.cf_unassign_no_fallback':
1975
+ 'لا توجد سياسة ترحيل على أي درجة أدنى من هذه، فلا ينتقل لهم شيء إلى السنة الجديدة.',
1976
+ 'hr.cf_unassign_title': 'إيقاف الترحيل لـ {subject}؟',
1874
1977
  'hr.chain_actions_for': 'إجراءات {name}',
1875
1978
  'hr.chain_add_approver': 'إضافة موقّع',
1876
1979
  'hr.chain_add_step': 'إضافة خطوة',
@@ -2040,6 +2143,10 @@ export const ar: Record<string, Message> = {
2040
2143
  'hr.employment_intern': 'متدرب',
2041
2144
  'hr.employment_part_time': 'دوام جزئي',
2042
2145
  'hr.employment_temporary': 'مؤقت',
2146
+ 'hr.filter_clear': 'عرض الجميع',
2147
+ 'hr.filter_department': '{name} والأقسام التابعة لها',
2148
+ 'hr.filter_department_unnamed': 'قسم واحد والأقسام التابعة له',
2149
+ 'hr.filter_office_unnamed': 'مكتب واحد',
2043
2150
  'hr.general_country_desc':
2044
2151
  'يُستخدم عند تشغيل الوحدة: يُنشأ المكتب الأول في هذه الدولة ويُملأ تقويم عطلاته من حزمة الدولة نفسها.',
2045
2152
  'hr.general_country_hint': 'المكاتب الموجودة تحتفظ بدولتها؛ لتغيير أحدها انتقل إلى المكاتب.',
@@ -2328,6 +2435,9 @@ export const ar: Record<string, Message> = {
2328
2435
  'hr.nav': 'الأشخاص',
2329
2436
  'hr.no_people': 'لا يوجد أحد هنا بعد',
2330
2437
  'hr.no_people_desc': 'أضف أول شخص لتبدأ القائمة.',
2438
+ 'hr.no_people_match': 'لا أحد مطابق',
2439
+ 'hr.no_people_match_filtered': 'لا أحد في هذا الجزء من الشركة مطابق. اعرض الجميع للبحث في الدليل كله.',
2440
+ 'hr.no_people_match_search': 'لا يوجد اسم مطابق لما كتبته.',
2331
2441
  'hr.not_clocked_in': 'لم يُسجَّل الحضور',
2332
2442
  'hr.offboard': 'إنهاء التوظيف',
2333
2443
  'hr.offboard_already': 'غادر هذا الشخص بالفعل',
@@ -2441,6 +2551,7 @@ export const ar: Record<string, Message> = {
2441
2551
  'hr.offices_timezones': 'المناطق الزمنية',
2442
2552
  'hr.offices_title': 'المكاتب',
2443
2553
  'hr.on_break_since': 'في استراحة منذ {time}',
2554
+ 'hr.on_leave_note': 'غائبون الآن',
2444
2555
  'hr.org_archive_blocked_children': {
2445
2556
  zero: 'سيبقى {count} أقسام فرعية بلا قسم أعلى. انقلها أو أرشفها أولًا.',
2446
2557
  one: 'سيبقى قسم فرعي واحد بلا قسم أعلى. انقله أو أرشفه أولًا.',
@@ -2534,12 +2645,12 @@ export const ar: Record<string, Message> = {
2534
2645
  'hr.org_search_label': 'ابحث في الأقسام بالاسم أو الرمز',
2535
2646
  'hr.org_search_placeholder': 'ابحث في الأقسام',
2536
2647
  'hr.org_see_people': {
2537
- zero: 'عرض {count} أشخاص هنا',
2538
- one: 'عرض شخص واحد هنا',
2539
- two: 'عرض شخصين هنا',
2540
- few: 'عرض {count} أشخاص هنا',
2541
- many: 'عرض {count} شخصًا هنا',
2542
- other: 'عرض {count} شخص هنا',
2648
+ zero: 'عرض {count} أشخاص',
2649
+ one: 'عرض شخص واحد',
2650
+ two: 'عرض شخصين',
2651
+ few: 'عرض {count} أشخاص',
2652
+ many: 'عرض {count} شخصًا',
2653
+ other: 'عرض {count} شخص',
2543
2654
  },
2544
2655
  'hr.org_stat_levels': 'المستويات',
2545
2656
  'hr.org_stat_people': 'الأشخاص المُسنَدون',
@@ -2578,7 +2689,7 @@ export const ar: Record<string, Message> = {
2578
2689
  'hr.periods_kind_hint': 'سبب إغلاق الشهر. وكلا النوعين يُغلق الأيام نفسها.',
2579
2690
  'hr.periods_lock': 'إغلاق',
2580
2691
  'hr.periods_lock_adjustments':
2581
- 'أي تغيير في السياسات يقع تاريخه داخلها يصبح تسوية في فترة مفتوحة بدل ذلك. ويمكنك إعادة فتح الفترة لاحقاً مع ذكر السبب.',
2692
+ 'أي تغيير في السياسات يقع تاريخه داخلها يترك تلك الأيام كما أُغلقت، فما يترتّب عليه يُسجَّل يدويًا كتسوية في فترة مفتوحة. ويمكنك إعادة فتح الفترة لاحقاً مع ذكر السبب.',
2582
2693
  'hr.periods_lock_body': 'كل يوم مسجَّل داخل هذه الفترة يتوقف عن قابلية إعادة الاحتساب، بالنسبة إلى {scope}.',
2583
2694
  'hr.periods_lock_confirm': 'إغلاق الفترة',
2584
2695
  'hr.periods_lock_error': 'تعذّر إغلاق الفترة',
@@ -2635,6 +2746,8 @@ export const ar: Record<string, Message> = {
2635
2746
  'hr.person_create_error': 'تعذّرت إضافة هذا الشخص — لم يُحفظ شيء',
2636
2747
  'hr.person_created': 'أُضيف {name} إلى الدليل',
2637
2748
  'hr.person_error': 'تعذّر تحميل سجل هذا الشخص',
2749
+ 'hr.person_hidden': 'مخفي',
2750
+ 'hr.person_hidden_hint': 'تظهر بيانات الاتصال الشخصية وتواريخ التوظيف للأشخاص المسؤول عنهم فقط.',
2638
2751
  'hr.person_manage_denied': 'ليست لديك صلاحية إضافة أشخاص إلى مساحة العمل هذه',
2639
2752
  'hr.person_offboard_error': 'تعذّر إنهاء التوظيف — لم يتغيّر شيء',
2640
2753
  'hr.person_offboarded': 'غادر {name}',
@@ -2643,8 +2756,10 @@ export const ar: Record<string, Message> = {
2643
2756
  'hr.person_updated': 'حُفظ',
2644
2757
  'hr.personal_email': 'البريد الشخصي',
2645
2758
  'hr.phone': 'الهاتف',
2759
+ 'hr.policy_kind_accrual': 'استحقاق',
2760
+ 'hr.policy_kind_carry_forward': 'ترحيل',
2646
2761
  'hr.reject': 'رفض',
2647
- 'hr.reject_confirm_body': 'يصله إشعار ولا يتغيّر شيء بالنسبة له. يمكنه إرسال طلب جديد.',
2762
+ 'hr.reject_confirm_body': 'لا يتغيّر شيء بالنسبة له. يمكنه إرسال طلب جديد.',
2648
2763
  'hr.reject_confirm_title': 'رفض هذا الطلب؟',
2649
2764
  'hr.request_leave': 'طلب إجازة',
2650
2765
  'hr.retry': 'أعد المحاولة',
@@ -2668,7 +2783,7 @@ export const ar: Record<string, Message> = {
2668
2783
  'hr.schedule_assigned': '{name} على هذه المناوبة اعتبارًا من {date}',
2669
2784
  'hr.schedule_auto_out': 'إغلاق المناوبة المنسية بعد',
2670
2785
  'hr.schedule_auto_out_hint':
2671
- 'من ينسى تسجيل الانصراف يُسجَّل انصرافه تلقائيًا بعد هذه المدة، ويُعلَّم اليوم للمراجعة. وإذا كان الخيار متوقفًا، ينتظر اليوم تصحيحًا.',
2786
+ 'من ينسى تسجيل الانصراف يُسجَّل انصرافه تلقائيًا بعد هذه المدة، وتُحتسب له هذه المدة بدل أن يبقى اليوم معلَّمًا كغير مكتمل. وإذا كان الخيار متوقفًا، يبقى اليوم مفتوحًا في انتظار تصحيح.',
2672
2787
  'hr.schedule_auto_out_off': 'اتركها لشخص',
2673
2788
  'hr.schedule_break': 'الاستراحة',
2674
2789
  'hr.schedule_break_hint': 'الاستراحة غير مدفوعة وتُخصم من إجمالي اليوم.',
@@ -2714,13 +2829,8 @@ export const ar: Record<string, Message> = {
2714
2829
  'hr.schedule_saved': 'تم حفظ المناوبة',
2715
2830
  'hr.schedule_start': 'البداية',
2716
2831
  'hr.schedule_time_missing': 'كل يوم عمل يحتاج إلى بداية ونهاية.',
2717
- 'hr.schedule_tz_fixed': 'منطقة واحدة ثابتة',
2718
- 'hr.schedule_tz_hint': '٠٩:٠٠ قراءة على ساعة. وهذا يحدد ساعة مَن.',
2719
- 'hr.schedule_tz_label': 'المنطقة',
2720
- 'hr.schedule_tz_mode': 'المنطقة الزمنية',
2721
- 'hr.schedule_tz_office': 'مكتب الشخص',
2722
- 'hr.schedule_tz_person': 'المنطقة الزمنية الخاصة بالشخص',
2723
- 'hr.schedule_tz_required': 'اختر المنطقة التي تُقرأ بها هذه المناوبة.',
2832
+ 'hr.schedule_tz_note':
2833
+ '٠٩:٠٠ تعني التاسعة في المكان الذي يوجد فيه الشخص: المنطقة الزمنية لمكتبه الأساسي، ما لم يحدّد ملفه منطقة خاصة به.',
2724
2834
  'hr.schedule_week': 'أسبوع العمل',
2725
2835
  'hr.schedule_week_empty': 'كل الأيام متوقفة — لن يبقى شيء يُقاس.',
2726
2836
  'hr.schedule_week_total': '{hours} في الأسبوع',
@@ -2823,9 +2933,12 @@ export const de: Record<string, Message> = {
2823
2933
  'hr.accr_col_policy': 'Regel',
2824
2934
  'hr.accr_col_when': 'Wann',
2825
2935
  'hr.accr_config_unreadable': 'Die Einstellungen dieser Regel sind nicht lesbar',
2936
+ 'hr.accr_config_unreadable_form':
2937
+ 'Die gespeicherten Einstellungen dieser Regel konnten nicht gelesen werden. Die Felder unten zeigen Standardwerte, nicht das Gespeicherte — Speichern ersetzt es dadurch.',
2826
2938
  'hr.accr_copy_of': '{name} (Kopie)',
2827
2939
  'hr.accr_create_title': 'Neue Anspruchsregel',
2828
2940
  'hr.accr_created': '„{name}“ wurde angelegt',
2941
+ 'hr.accr_day_is': 'ein Tag sind {length}',
2829
2942
  'hr.accr_day_length': 'Länge eines Urlaubstags',
2830
2943
  'hr.accr_day_length_hint':
2831
2944
  'In Minuten — {length}. Guthaben werden in Minuten geführt, damit halbe Tage und stundenweiser Urlaub exakt bleiben.',
@@ -2833,7 +2946,7 @@ export const de: Record<string, Message> = {
2833
2946
  'hr.accr_days_field_hint': 'Vor Senioritätsstufen, anteiliger Berechnung und Teilzeitstunden.',
2834
2947
  'hr.accr_days_per_year': { one: '{count} Tag pro Jahr', other: '{count} Tage pro Jahr' },
2835
2948
  'hr.accr_desc':
2836
- 'Wie Urlaub über die Zeit entsteht: die Regeln, für wen jede gilt, und was der nächste Lauf gutschreiben würde.',
2949
+ 'Wie Urlaub mit der Zeit entsteht und was den Jahreswechsel übersteht: die Regeln, für wen jede gilt, und was der nächste Lauf gutschreiben würde.',
2837
2950
  'hr.accr_duplicate': 'Duplizieren',
2838
2951
  'hr.accr_edit_retroactive':
2839
2952
  '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.',
@@ -2849,6 +2962,8 @@ export const de: Record<string, Message> = {
2849
2962
  'hr.accr_error_name': 'Geben Sie der Regel einen Namen.',
2850
2963
  'hr.accr_error_pick_policy': 'Wählen Sie eine Regel.',
2851
2964
  'hr.accr_error_pick_subject': 'Wählen Sie, für wen sie gilt.',
2965
+ 'hr.accr_error_round_cap':
2966
+ 'Ein Rundungsschritt darf nicht länger als {max} sein — bei einem so langen Tag ist ein ganzer Tag daher keiner.',
2852
2967
  'hr.accr_error_tier_clash': 'Zwei Stufen beginnen bei derselben Anzahl Jahre.',
2853
2968
  'hr.accr_error_to_before_from': 'Das Enddatum liegt vor dem Startdatum.',
2854
2969
  'hr.accr_freq_anniversary': 'An jedem Eintrittsjahrestag',
@@ -2898,9 +3013,9 @@ export const de: Record<string, Message> = {
2898
3013
  'hr.accr_preview_error': 'Die Vorschau konnte nicht berechnet werden',
2899
3014
  'hr.accr_readonly':
2900
3015
  'Sie können diese Seite lesen; zum Ändern brauchen Sie die Berechtigung, Regeln zu verwalten.',
2901
- 'hr.accr_round_day': 'Ein ganzer Tag',
3016
+ 'hr.accr_round_day': 'Ein ganzer Tag ({length})',
2902
3017
  'hr.accr_round_exact': 'Keine Rundung',
2903
- 'hr.accr_round_half_day': 'Ein halber Tag',
3018
+ 'hr.accr_round_half_day': 'Ein halber Tag ({length})',
2904
3019
  'hr.accr_round_minutes': { one: '{count} Minute', other: '{count} Minuten' },
2905
3020
  'hr.accr_round_short': 'auf {step} gerundet',
2906
3021
  'hr.accr_rounding': 'Rundung',
@@ -2929,6 +3044,7 @@ export const de: Record<string, Message> = {
2929
3044
  'hr.accr_run_title': 'Anspruchslauf',
2930
3045
  'hr.accr_run_to': 'Zeitraum bis',
2931
3046
  'hr.accr_run_total': 'Gesamt',
3047
+ 'hr.accr_run_total_note': 'Zeit, keine Tage: ein Lauf kann Regeln mit verschiedenen Taglängen umfassen.',
2932
3048
  'hr.accr_run_writes':
2933
3049
  'Die Gutschrift wird in das Urlaubskonto geschrieben. Hier ist sie nicht rückgängig zu machen — eine falsche Gutschrift wird über eine Urlaubskorrektur berichtigt.',
2934
3050
  'hr.accr_rung_empty': 'Auf dieser Stufe liegt nichts.',
@@ -3071,6 +3187,7 @@ export const de: Record<string, Message> = {
3071
3187
  'hr.att_corrections_pending': 'Von Ihnen beantragte Korrekturen',
3072
3188
  'hr.att_locked_no_change':
3073
3189
  'Dieser Monat ist für die Lohnabrechnung geschlossen; eine Korrektur ändert seine Zahlen nicht mehr.',
3190
+ 'hr.att_method_auto': 'Automatisch geschlossen',
3074
3191
  'hr.att_method_device': 'Terminal',
3075
3192
  'hr.att_method_import': 'Importiert',
3076
3193
  'hr.att_method_kiosk': 'Kiosk',
@@ -3285,6 +3402,44 @@ export const de: Record<string, Message> = {
3285
3402
  'hr.capability_off_title': '{name} ausschalten?',
3286
3403
  'hr.capability_requires': 'Erfordert {name}',
3287
3404
  'hr.capability_write_error': 'Dieser Schalter konnte nicht geändert werden. Es wurde nichts gespeichert.',
3405
+ 'hr.cf_cap': 'Tage, die übertragen werden',
3406
+ 'hr.cf_cap_hint':
3407
+ 'Höchstens so viel übersteht den Jahreswechsel. Alles darüber verfällt, und das Konto hält den Verfall fest.',
3408
+ 'hr.cf_cap_zero':
3409
+ 'Bei null wird nichts übertragen: der gesamte Restsaldo wird am 31. Dezember abgeschrieben — als Verfallsbuchung, auf die man zeigen kann.',
3410
+ 'hr.cf_carries_nothing': 'Kein Übertrag',
3411
+ 'hr.cf_col_carries': 'Übertrag',
3412
+ 'hr.cf_col_deadline': 'Frist',
3413
+ 'hr.cf_create_title': 'Neue Übertragsregel',
3414
+ 'hr.cf_deadline_short': { one: '{count} Monat Zeit', other: '{count} Monate Zeit' },
3415
+ 'hr.cf_edit_title': 'Übertragsregel bearbeiten',
3416
+ 'hr.cf_error': 'Die Übertragsregeln konnten nicht geladen werden',
3417
+ 'hr.cf_error_leave_type': 'Wählen Sie die Abwesenheitsart, die übertragen wird.',
3418
+ 'hr.cf_expires': 'Übertragener Urlaub verfällt',
3419
+ 'hr.cf_expires_hint':
3420
+ 'Gezählt ab dem 1. Januar, wenn das neue Urlaubsjahr beginnt — nicht ab dem Tag, an dem der Job läuft.',
3421
+ 'hr.cf_job_note':
3422
+ 'Ein Job überträgt den Saldo am jeweils eigenen 2. Januar jedes Standorts, sobald der Dezember gutgeschrieben ist, und nimmt übertragenen Urlaub an dem Tag weg, an dem er verfällt. Beide Hälften stehen im Konto.',
3423
+ 'hr.cf_leave_type_hint': 'Welcher Saldo übertragen wird.',
3424
+ 'hr.cf_months': 'Monate Zeit',
3425
+ 'hr.cf_months_hint':
3426
+ 'Zwischen 1 und 24. Drei Monate heißt: übertragener Urlaub gilt den ganzen März und ist am 1. April weg.',
3427
+ 'hr.cf_needs_accrual':
3428
+ 'Es gibt keine Anspruchsregel, also kann nichts übertragen werden: eine Obergrenze in Tagen braucht die Länge eines Arbeitstages, und die steht nur in einer Anspruchsregel.',
3429
+ 'hr.cf_needs_accrual_note':
3430
+ 'Die Obergrenze steht in Tagen, und nur eine Anspruchsregel sagt, wie lang ein Tag ist. Wer keine Anspruchsregel hat, überträgt überhaupt nichts.',
3431
+ 'hr.cf_no_deadline': 'Ohne Frist',
3432
+ 'hr.cf_no_default':
3433
+ 'Auf dem Arbeitsbereich liegt keine Übertragsregel — wer keine nähere hat, behält zum Jahreswechsel nichts.',
3434
+ 'hr.cf_none': 'Noch keine Übertragsregeln',
3435
+ 'hr.cf_none_desc':
3436
+ 'Ohne eine solche Regel geht nichts ins neue Jahr über. Ein nicht genommener Saldo bleibt in dem Jahr, in dem er entstanden ist, und das neue Jahr beginnt mit dem, was in ihm entsteht.',
3437
+ 'hr.cf_section': 'Übertrag',
3438
+ 'hr.cf_section_desc':
3439
+ 'Was am Ende eines Urlaubsjahres übrig ist: wie viel davon ins nächste Jahr übergeht und wie lange Zeit bleibt, es zu nehmen.',
3440
+ 'hr.cf_unassign_no_fallback':
3441
+ 'Auf keiner Stufe darunter liegt eine Übertragsregel — es geht nichts von ihnen ins neue Jahr über.',
3442
+ 'hr.cf_unassign_title': 'Übertrag für {subject} beenden?',
3288
3443
  'hr.chain_actions_for': 'Aktionen für {name}',
3289
3444
  'hr.chain_add_approver': 'Freigebende Person hinzufügen',
3290
3445
  'hr.chain_add_step': 'Schritt hinzufügen',
@@ -3457,6 +3612,10 @@ export const de: Record<string, Message> = {
3457
3612
  'hr.employment_intern': 'Praktikum',
3458
3613
  'hr.employment_part_time': 'Teilzeit',
3459
3614
  'hr.employment_temporary': 'Befristet',
3615
+ 'hr.filter_clear': 'Alle anzeigen',
3616
+ 'hr.filter_department': '{name} und die Abteilungen darunter',
3617
+ 'hr.filter_department_unnamed': 'Eine Abteilung und die Abteilungen darunter',
3618
+ 'hr.filter_office_unnamed': 'Ein Standort',
3460
3619
  'hr.general_country_desc':
3461
3620
  'Wird beim Einschalten des Moduls verwendet: Der erste Standort entsteht in diesem Land, und sein Feiertagskalender wird aus dem Paket für dieses Land befüllt.',
3462
3621
  'hr.general_country_hint':
@@ -3703,6 +3862,10 @@ export const de: Record<string, Message> = {
3703
3862
  'hr.nav': 'Personen',
3704
3863
  'hr.no_people': 'Noch keine Personen',
3705
3864
  'hr.no_people_desc': 'Fügen Sie die erste Person hinzu, um das Verzeichnis aufzubauen.',
3865
+ 'hr.no_people_match': 'Niemand passt',
3866
+ 'hr.no_people_match_filtered':
3867
+ 'In diesem Teil des Unternehmens passt niemand. Zeigen Sie alle an, um das ganze Verzeichnis zu durchsuchen.',
3868
+ 'hr.no_people_match_search': 'Kein Name passt zu Ihrer Eingabe.',
3706
3869
  'hr.not_clocked_in': 'Nicht eingestempelt',
3707
3870
  'hr.offboard': 'Beschäftigung beenden',
3708
3871
  'hr.offboard_already': 'Diese Person ist bereits ausgeschieden',
@@ -3818,6 +3981,7 @@ export const de: Record<string, Message> = {
3818
3981
  'hr.offices_timezones': 'Zeitzonen',
3819
3982
  'hr.offices_title': 'Standorte',
3820
3983
  'hr.on_break_since': 'Seit {time} in der Pause',
3984
+ 'hr.on_leave_note': 'Gerade abwesend',
3821
3985
  'hr.org_archive_blocked_children': {
3822
3986
  one: 'Ihre {count} Unterabteilung bliebe ohne übergeordnete Abteilung. Verschieben oder archivieren Sie sie zuerst.',
3823
3987
  other:
@@ -3897,7 +4061,7 @@ export const de: Record<string, Message> = {
3897
4061
  'hr.org_root': 'Oberste Ebene',
3898
4062
  'hr.org_search_label': 'Abteilungen nach Name oder Kürzel durchsuchen',
3899
4063
  'hr.org_search_placeholder': 'Abteilungen durchsuchen',
3900
- 'hr.org_see_people': { one: 'Die {count} Person hier ansehen', other: 'Die {count} Personen hier ansehen' },
4064
+ 'hr.org_see_people': { one: 'Die {count} Person ansehen', other: 'Die {count} Personen ansehen' },
3901
4065
  'hr.org_stat_levels': 'Ebenen',
3902
4066
  'hr.org_stat_people': 'Zugeordnete Personen',
3903
4067
  'hr.org_stat_positions': 'Stellen',
@@ -3936,7 +4100,7 @@ export const de: Record<string, Message> = {
3936
4100
  'hr.periods_kind_hint': 'Wofür der Monat geschlossen wird. Beide Arten schließen dieselben Tage.',
3937
4101
  'hr.periods_lock': 'Schließen',
3938
4102
  'hr.periods_lock_adjustments':
3939
- '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.',
4103
+ 'Eine Richtlinienänderung mit einem Datum darin lässt diese Tage genau so, wie sie geschlossen wurden; was sich daraus ergibt, muss von Hand als Korrektur in einem offenen Zeitraum erfasst werden. Sie können den Zeitraum später mit einer Begründung wieder öffnen.',
3940
4104
  'hr.periods_lock_body': 'Jeder erfasste Tag in diesem Zeitraum wird nicht mehr neu berechnet, für {scope}.',
3941
4105
  'hr.periods_lock_confirm': 'Zeitraum schließen',
3942
4106
  'hr.periods_lock_error': 'Der Zeitraum konnte nicht geschlossen werden',
@@ -3988,6 +4152,9 @@ export const de: Record<string, Message> = {
3988
4152
  'hr.person_create_error': 'Diese Person konnte nicht hinzugefügt werden — es wurde nichts gespeichert',
3989
4153
  'hr.person_created': '{name} steht im Verzeichnis',
3990
4154
  'hr.person_error': 'Der Eintrag dieser Person konnte nicht geladen werden',
4155
+ 'hr.person_hidden': 'Ausgeblendet',
4156
+ 'hr.person_hidden_hint':
4157
+ 'Private Kontaktdaten und Beschäftigungsdaten werden nur für die Personen angezeigt, für die Sie zuständig sind.',
3991
4158
  'hr.person_manage_denied': 'Sie dürfen zu diesem Workspace keine Personen hinzufügen',
3992
4159
  'hr.person_offboard_error': 'Die Beschäftigung konnte nicht beendet werden — es wurde nichts geändert',
3993
4160
  'hr.person_offboarded': '{name} ist ausgeschieden',
@@ -3996,9 +4163,10 @@ export const de: Record<string, Message> = {
3996
4163
  'hr.person_updated': 'Gespeichert',
3997
4164
  'hr.personal_email': 'Private E-Mail',
3998
4165
  'hr.phone': 'Telefon',
4166
+ 'hr.policy_kind_accrual': 'Anspruch',
4167
+ 'hr.policy_kind_carry_forward': 'Übertrag',
3999
4168
  'hr.reject': 'Ablehnen',
4000
- 'hr.reject_confirm_body':
4001
- 'Die Person wird benachrichtigt; für sie ändert sich nichts. Sie kann einen neuen Antrag stellen.',
4169
+ 'hr.reject_confirm_body': 'Für die Person ändert sich nichts. Sie kann einen neuen Antrag stellen.',
4002
4170
  'hr.reject_confirm_title': 'Diesen Antrag ablehnen?',
4003
4171
  'hr.request_leave': 'Abwesenheit beantragen',
4004
4172
  'hr.retry': 'Erneut versuchen',
@@ -4022,7 +4190,7 @@ export const de: Record<string, Message> = {
4022
4190
  'hr.schedule_assigned': '{name} steht ab {date} auf diesem Modell',
4023
4191
  'hr.schedule_auto_out': 'Vergessene Schicht schließen nach',
4024
4192
  'hr.schedule_auto_out_hint':
4025
- 'Wer sich nicht ausstempelt, wird nach dieser Zeit automatisch ausgestempelt, und der Tag wird zur Prüfung markiert. Ist die Option aus, wartet der Tag auf eine Korrektur.',
4193
+ 'Wer sich nicht ausstempelt, wird nach dieser Zeit automatisch ausgestempelt, und der Tag zählt diese Zeit, statt weiter als unfertig markiert zu bleiben. Ist die Option aus, bleibt der Tag offen und wartet auf eine Korrektur.',
4026
4194
  'hr.schedule_auto_out_off': 'Einem Menschen überlassen',
4027
4195
  'hr.schedule_break': 'Pause',
4028
4196
  'hr.schedule_break_hint': 'Die Pause ist unbezahlt und wird vom Tagesergebnis abgezogen.',
@@ -4070,13 +4238,8 @@ export const de: Record<string, Message> = {
4070
4238
  'hr.schedule_saved': 'Arbeitszeitmodell gespeichert',
4071
4239
  'hr.schedule_start': 'Beginn',
4072
4240
  'hr.schedule_time_missing': 'Jeder Arbeitstag braucht einen Beginn und ein Ende.',
4073
- 'hr.schedule_tz_fixed': 'Eine feste Zone',
4074
- 'hr.schedule_tz_hint': '09:00 ist eine Uhrzeit. Hier steht, wessen Uhr gemeint ist.',
4075
- 'hr.schedule_tz_label': 'Zone',
4076
- 'hr.schedule_tz_mode': 'Zeitzone',
4077
- 'hr.schedule_tz_office': 'Der Standort der Person',
4078
- 'hr.schedule_tz_person': 'Die eigene Zeitzone der Person',
4079
- 'hr.schedule_tz_required': 'Wählen Sie die Zone, in der dieses Modell gelesen wird.',
4241
+ 'hr.schedule_tz_note':
4242
+ '09:00 heißt neun Uhr dort, wo die Person ist die Zeitzone ihres primären Standorts, sofern ihr Profil keine eigene angibt.',
4080
4243
  'hr.schedule_week': 'Arbeitswoche',
4081
4244
  'hr.schedule_week_empty': 'Alle Tage sind frei — es gäbe nichts zu messen.',
4082
4245
  'hr.schedule_week_total': '{hours} pro Woche',
@@ -4182,9 +4345,12 @@ export const fa: Record<string, Message> = {
4182
4345
  'hr.accr_col_policy': 'قاعده',
4183
4346
  'hr.accr_col_when': 'کِی',
4184
4347
  'hr.accr_config_unreadable': 'تنظیمات این قاعده خوانده نمی‌شود',
4348
+ 'hr.accr_config_unreadable_form':
4349
+ 'تنظیمات ذخیره‌شدهٔ این سیاست خوانده نشد؛ بنابراین فیلدهای زیر مقدارهای پیش‌فرض‌اند، نه آنچه ذخیره شده. ذخیره‌کردن، تنظیمات ذخیره‌شده را با همین‌ها جایگزین می‌کند.',
4185
4350
  'hr.accr_copy_of': '{name} (رونوشت)',
4186
4351
  'hr.accr_create_title': 'قاعدهٔ انباشت تازه',
4187
4352
  'hr.accr_created': '«{name}» ساخته شد',
4353
+ 'hr.accr_day_is': 'هر روز {length}',
4188
4354
  'hr.accr_day_length': 'طول یک روز مرخصی',
4189
4355
  'hr.accr_day_length_hint':
4190
4356
  'به دقیقه — {length}. مانده‌ها به دقیقه نگه داشته می‌شوند تا نیم‌روز و مرخصی ساعتی دقیق بماند.',
@@ -4192,7 +4358,7 @@ export const fa: Record<string, Message> = {
4192
4358
  'hr.accr_days_field_hint': 'پیش از پله‌های سابقه، محاسبهٔ نسبی و ساعت‌های پاره‌وقت.',
4193
4359
  'hr.accr_days_per_year': { one: '{count} روز در سال', other: '{count} روز در سال' },
4194
4360
  'hr.accr_desc':
4195
- 'اینکه مرخصی به‌مرور چطور تعلق می‌گیرد: قاعده‌ها، اینکه هرکدام برای چه کسی است، و اجرای بعدی چه چیزی اضافه می‌کند.',
4361
+ 'مرخصی چطور به مرور به دست می‌آید و چه چیزی از سرِ سال عبور می‌کند: قاعده‌ها، اینکه هرکدام برای چه کسی است، و اجرای بعدی چه چیزی اضافه می‌کند.',
4196
4362
  'hr.accr_duplicate': 'رونوشت',
4197
4363
  'hr.accr_edit_retroactive':
4198
4364
  'ویرایش، چیزی را که در گذشته درست بوده هم بازنویسی می‌کند و توضیح‌دادن آنچه از آن اضافه شده سخت می‌شود. برای تغییر قاعده از یک تاریخ به بعد، از این قاعده رونوشت بگیرید و به رونوشت شروع دیرتری بدهید.',
@@ -4208,6 +4374,8 @@ export const fa: Record<string, Message> = {
4208
4374
  'hr.accr_error_name': 'به قاعده نامی بدهید.',
4209
4375
  'hr.accr_error_pick_policy': 'یک قاعده انتخاب کنید.',
4210
4376
  'hr.accr_error_pick_subject': 'انتخاب کنید برای چه کسی است.',
4377
+ 'hr.accr_error_round_cap':
4378
+ 'گام گِردکردن نمی‌تواند بیش از {max} باشد؛ پس در روزی به این بلندی، یک روز کامل گام معتبری نیست.',
4211
4379
  'hr.accr_error_tier_clash': 'دو پله از یک تعداد سال یکسان شروع می‌شوند.',
4212
4380
  'hr.accr_error_to_before_from': 'تاریخ پایان پیش از تاریخ شروع است.',
4213
4381
  'hr.accr_freq_anniversary': 'در هر سالگرد استخدام',
@@ -4254,9 +4422,9 @@ export const fa: Record<string, Message> = {
4254
4422
  'هر قاعده می‌گوید یک سال چقدر مرخصی می‌آورد، کِی اضافه می‌شود و چطور گرد می‌شود. تا قاعده‌ای به کسی داده نشود، چیزی برایش انباشته نمی‌شود.',
4255
4423
  'hr.accr_preview_error': 'پیش‌نمایش محاسبه نشد',
4256
4424
  'hr.accr_readonly': 'این صفحه را می‌بینید، اما تغییر هر چیزی به دسترسی مدیریت قاعده‌ها نیاز دارد.',
4257
- 'hr.accr_round_day': 'یک روز کامل',
4425
+ 'hr.accr_round_day': 'یک روز کامل ({length})',
4258
4426
  'hr.accr_round_exact': 'بدون گردکردن',
4259
- 'hr.accr_round_half_day': 'نیم‌روز',
4427
+ 'hr.accr_round_half_day': 'نیم‌روز ({length})',
4260
4428
  'hr.accr_round_minutes': { one: '{count} دقیقه', other: '{count} دقیقه' },
4261
4429
  'hr.accr_round_short': 'گرد شده به {step}',
4262
4430
  'hr.accr_rounding': 'گردکردن',
@@ -4285,6 +4453,7 @@ export const fa: Record<string, Message> = {
4285
4453
  'hr.accr_run_title': 'اجرای انباشت',
4286
4454
  'hr.accr_run_to': 'دوره تا',
4287
4455
  'hr.accr_run_total': 'جمع',
4456
+ 'hr.accr_run_total_note': 'زمان است، نه روز: یک اجرا می‌تواند سیاست‌هایی با طول روز متفاوت را دربر بگیرد.',
4288
4457
  'hr.accr_run_writes':
4289
4458
  'اضافه‌کردن در دفتر مرخصی نوشته می‌شود. از اینجا برگشت‌پذیر نیست — اضافهٔ اشتباه با یک اصلاح مرخصی جبران می‌شود.',
4290
4459
  'hr.accr_rung_empty': 'روی این پله چیزی نیست.',
@@ -4413,6 +4582,7 @@ export const fa: Record<string, Message> = {
4413
4582
  'hr.att_corrections_error': 'اصلاح‌هایی که خواسته‌اید بارگذاری نشد',
4414
4583
  'hr.att_corrections_pending': 'اصلاح‌هایی که خواسته‌اید',
4415
4584
  'hr.att_locked_no_change': 'این ماه برای حقوق و دستمزد بسته شده و اصلاح، ارقام آن را جابه‌جا نمی‌کند.',
4585
+ 'hr.att_method_auto': 'بستن خودکار',
4416
4586
  'hr.att_method_device': 'دستگاه',
4417
4587
  'hr.att_method_import': 'واردشده',
4418
4588
  'hr.att_method_kiosk': 'کیوسک',
@@ -4616,6 +4786,43 @@ export const fa: Record<string, Message> = {
4616
4786
  'hr.capability_off_title': '{name} خاموش شود؟',
4617
4787
  'hr.capability_requires': 'نیاز به {name}',
4618
4788
  'hr.capability_write_error': 'این کلید تغییر نکرد. چیزی ذخیره نشد.',
4789
+ 'hr.cf_cap': 'روزهایی که منتقل می‌شوند',
4790
+ 'hr.cf_cap_hint':
4791
+ 'بیشترین چیزی که از سرِ سال عبور می‌کند. هر چه بیشتر از آن باشد منقضی می‌شود و دفتر آن را ثبت می‌کند.',
4792
+ 'hr.cf_cap_zero':
4793
+ 'با صفر چیزی منتقل نمی‌شود: تمام ماندهٔ باقی در ۳۱ دسامبر با یک ثبتِ انقضا که می‌شود به آن اشاره کرد، حذف می‌شود.',
4794
+ 'hr.cf_carries_nothing': 'چیزی منتقل نمی‌شود',
4795
+ 'hr.cf_col_carries': 'انتقال',
4796
+ 'hr.cf_col_deadline': 'مهلت',
4797
+ 'hr.cf_create_title': 'قاعدهٔ انتقالی تازه',
4798
+ 'hr.cf_deadline_short': { one: '{count} ماه فرصت', other: '{count} ماه فرصت' },
4799
+ 'hr.cf_edit_title': 'ویرایش قاعدهٔ انتقالی',
4800
+ 'hr.cf_error': 'قاعده‌های انتقالی بارگذاری نشد',
4801
+ 'hr.cf_error_leave_type': 'نوع مرخصی‌ای که منتقل می‌شود را انتخاب کنید.',
4802
+ 'hr.cf_expires': 'مرخصی منتقل‌شده منقضی می‌شود',
4803
+ 'hr.cf_expires_hint':
4804
+ 'از یکم ژانویه، وقتی سال مرخصی تازه باز می‌شود، شمرده می‌شود — نه از روزی که کار خودکار اجرا می‌شود.',
4805
+ 'hr.cf_job_note':
4806
+ 'یک کار خودکار، دوم ژانویهٔ خودِ هر دفتر و پس از آنکه دسامبر اضافه شد، مانده را منتقل می‌کند و مرخصی منتقل‌شده را روزی که منقضی می‌شود برمی‌دارد. هر دو نیمه در دفتر ثبت می‌شود.',
4807
+ 'hr.cf_leave_type_hint': 'کدام مانده منتقل می‌شود.',
4808
+ 'hr.cf_months': 'مهلت (ماه)',
4809
+ 'hr.cf_months_hint': 'بین ۱ تا ۲۴. سه ماه یعنی مرخصی منتقل‌شده تمام مارس هست و یکم آوریل دیگر نیست.',
4810
+ 'hr.cf_needs_accrual':
4811
+ 'هیچ قاعدهٔ انباشتی نیست، پس چیزی نمی‌تواند منتقل شود: سقفی که به روز است طول یک روز کاری را لازم دارد و فقط قاعدهٔ انباشت آن را می‌گوید.',
4812
+ 'hr.cf_needs_accrual_note':
4813
+ 'سقف به روز است و فقط قاعدهٔ انباشت می‌گوید یک روز چقدر است. کسی که قاعدهٔ انباشت ندارد اصلاً چیزی منتقل نمی‌کند.',
4814
+ 'hr.cf_no_deadline': 'بی‌مهلت',
4815
+ 'hr.cf_no_default':
4816
+ 'هیچ قاعدهٔ انتقالی روی فضای کاری نیست، پس هرکس قاعدهٔ نزدیک‌تری نداشته باشد سرِ سال نو چیزی برایش نمی‌ماند.',
4817
+ 'hr.cf_none': 'هنوز قاعدهٔ انتقالی نیست',
4818
+ 'hr.cf_none_desc':
4819
+ 'بدون چنین قاعده‌ای چیزی به سال جدید نمی‌رود. ماندهٔ استفاده‌نشده در همان سالی که به دست آمده می‌ماند و سال جدید از آنچه در خودش انباشته می‌شود شروع می‌کند.',
4820
+ 'hr.cf_section': 'انتقالی',
4821
+ 'hr.cf_section_desc':
4822
+ 'آنچه در پایان سال مرخصی می‌ماند: چقدرش به سال بعد می‌رود و چقدر وقت هست که استفاده شود.',
4823
+ 'hr.cf_unassign_no_fallback':
4824
+ 'در هیچ پلهٔ پایین‌تر از این، قاعدهٔ انتقالی نیست؛ پس چیزی از آن‌ها به سال بعد نمی‌رود.',
4825
+ 'hr.cf_unassign_title': 'انتقالی برای {subject} متوقف شود؟',
4619
4826
  'hr.chain_actions_for': 'کارهای {name}',
4620
4827
  'hr.chain_add_approver': 'افزودن تأییدکننده',
4621
4828
  'hr.chain_add_step': 'افزودن مرحله',
@@ -4782,6 +4989,10 @@ export const fa: Record<string, Message> = {
4782
4989
  'hr.employment_intern': 'کارآموز',
4783
4990
  'hr.employment_part_time': 'پاره‌وقت',
4784
4991
  'hr.employment_temporary': 'موقت',
4992
+ 'hr.filter_clear': 'نمایش همه',
4993
+ 'hr.filter_department': '{name} و واحدهای زیرمجموعه',
4994
+ 'hr.filter_department_unnamed': 'یک واحد و واحدهای زیرمجموعه',
4995
+ 'hr.filter_office_unnamed': 'یک دفتر',
4785
4996
  'hr.general_country_desc':
4786
4997
  'وقتی ماژول روشن می‌شود از این مقدار استفاده می‌شود: نخستین دفتر در همین کشور ساخته و تقویم تعطیلاتش از بستهٔ همان کشور پر می‌شود.',
4787
4998
  'hr.general_country_hint':
@@ -5019,6 +5230,10 @@ export const fa: Record<string, Message> = {
5019
5230
  'hr.nav': 'افراد',
5020
5231
  'hr.no_people': 'هنوز کسی نیست',
5021
5232
  'hr.no_people_desc': 'اولین نفر را اضافه کنید تا فهرست شروع شود.',
5233
+ 'hr.no_people_match': 'کسی پیدا نشد',
5234
+ 'hr.no_people_match_filtered':
5235
+ 'در این بخش از شرکت کسی پیدا نشد. برای جست‌وجو در کل فهرست، همه را نمایش دهید.',
5236
+ 'hr.no_people_match_search': 'هیچ نامی با آنچه نوشتید مطابقت ندارد.',
5022
5237
  'hr.not_clocked_in': 'ورود نزده',
5023
5238
  'hr.offboard': 'پایان همکاری',
5024
5239
  'hr.offboard_already': 'این فرد قبلاً رفته است',
@@ -5130,6 +5345,7 @@ export const fa: Record<string, Message> = {
5130
5345
  'hr.offices_timezones': 'منطقه‌های زمانی',
5131
5346
  'hr.offices_title': 'دفاتر',
5132
5347
  'hr.on_break_since': 'از {time} در استراحت',
5348
+ 'hr.on_leave_note': 'همین حالا در مرخصی',
5133
5349
  'hr.org_archive_blocked_children': {
5134
5350
  one: '{count} زیرواحد بی‌سرپرست می‌ماند. اول آن‌ها را جابه‌جا یا بایگانی کنید.',
5135
5351
  other: '{count} زیرواحد بی‌سرپرست می‌ماند. اول آن‌ها را جابه‌جا یا بایگانی کنید.',
@@ -5203,7 +5419,7 @@ export const fa: Record<string, Message> = {
5203
5419
  'hr.org_root': 'بالاترین سطح',
5204
5420
  'hr.org_search_label': 'جست‌وجوی واحدها بر پایهٔ نام یا کد',
5205
5421
  'hr.org_search_placeholder': 'جست‌وجوی واحدها',
5206
- 'hr.org_see_people': { one: 'دیدن {count} نفر اینجا', other: 'دیدن {count} نفر اینجا' },
5422
+ 'hr.org_see_people': { one: 'دیدن {count} نفر', other: 'دیدن {count} نفر' },
5207
5423
  'hr.org_stat_levels': 'عمق چارت',
5208
5424
  'hr.org_stat_people': 'افراد جای‌گرفته',
5209
5425
  'hr.org_stat_positions': 'سمت‌ها',
@@ -5240,7 +5456,7 @@ export const fa: Record<string, Message> = {
5240
5456
  'hr.periods_kind_hint': 'ماه برای چه بسته می‌شود. هر دو نوع همان روزها را می‌بندند.',
5241
5457
  'hr.periods_lock': 'بستن',
5242
5458
  'hr.periods_lock_adjustments':
5243
- 'تغییر سیاستی که تاریخش درون دوره باشد، به‌جای بازنویسی، در یک دورهٔ باز به اصلاحیه تبدیل می‌شود. بعداً می‌توانید دوره را با ذکر دلیل بازگشایی کنید.',
5459
+ 'تغییر سیاستی که تاریخش درون دوره باشد، آن روزها را همان‌گونه که بسته شده‌اند رها می‌کند؛ پس هرچه از آن برمی‌آید باید دستی به‌صورت اصلاحیه در یک دورهٔ باز ثبت شود. بعداً می‌توانید دوره را با ذکر دلیل بازگشایی کنید.',
5244
5460
  'hr.periods_lock_body': 'هر روز ثبت‌شده در این دوره برای {scope} دیگر بازمحاسبه نمی‌شود.',
5245
5461
  'hr.periods_lock_confirm': 'بستن دوره',
5246
5462
  'hr.periods_lock_error': 'دوره بسته نشد',
@@ -5291,6 +5507,9 @@ export const fa: Record<string, Message> = {
5291
5507
  'hr.person_create_error': 'این فرد اضافه نشد — چیزی ذخیره نشد',
5292
5508
  'hr.person_created': '{name} به فهرست اضافه شد',
5293
5509
  'hr.person_error': 'پروندهٔ این فرد بارگیری نشد',
5510
+ 'hr.person_hidden': 'پنهان',
5511
+ 'hr.person_hidden_hint':
5512
+ 'اطلاعات تماس شخصی و تاریخ‌های استخدام تنها برای افرادی نمایش داده می‌شود که مسئول آن‌ها هستید.',
5294
5513
  'hr.person_manage_denied': 'شما اجازهٔ افزودن فرد به این فضای کاری را ندارید',
5295
5514
  'hr.person_offboard_error': 'پایان همکاری ثبت نشد — چیزی عوض نشد',
5296
5515
  'hr.person_offboarded': '{name} رفته است',
@@ -5299,9 +5518,10 @@ export const fa: Record<string, Message> = {
5299
5518
  'hr.person_updated': 'ذخیره شد',
5300
5519
  'hr.personal_email': 'ایمیل شخصی',
5301
5520
  'hr.phone': 'تلفن',
5521
+ 'hr.policy_kind_accrual': 'انباشت',
5522
+ 'hr.policy_kind_carry_forward': 'انتقالی',
5302
5523
  'hr.reject': 'رد',
5303
- 'hr.reject_confirm_body':
5304
- 'به او اطلاع داده می‌شود و چیزی برایش تغییر نمی‌کند. می‌تواند درخواست تازه‌ای بفرستد.',
5524
+ 'hr.reject_confirm_body': 'چیزی برایش تغییر نمی‌کند. می‌تواند درخواست تازه‌ای بفرستد.',
5305
5525
  'hr.reject_confirm_title': 'این درخواست رد شود؟',
5306
5526
  'hr.request_leave': 'درخواست مرخصی',
5307
5527
  'hr.retry': 'تلاش دوباره',
@@ -5325,7 +5545,7 @@ export const fa: Record<string, Message> = {
5325
5545
  'hr.schedule_assigned': '{name} از {date} روی این شیفت است',
5326
5546
  'hr.schedule_auto_out': 'بستن خودکار شیفت فراموش‌شده پس از',
5327
5547
  'hr.schedule_auto_out_hint':
5328
- 'کسی که خروج نزده، پس از این مدت به‌طور خودکار خارج می‌شود و آن روز برای بررسی علامت می‌خورد. اگر خاموش باشد، روز منتظر اصلاح می‌ماند.',
5548
+ 'کسی که خروج نزده، پس از این مدت به‌طور خودکار خارج می‌شود و همان مدت برای آن روز حساب می‌شود، به‌جای اینکه روز ناتمام علامت بخورد. اگر خاموش باشد، روز باز می‌ماند و منتظر اصلاح است.',
5329
5549
  'hr.schedule_auto_out_off': 'به عهدهٔ یک نفر بگذار',
5330
5550
  'hr.schedule_break': 'استراحت',
5331
5551
  'hr.schedule_break_hint': 'استراحت بدون حقوق است و از مجموع روز کم می‌شود.',
@@ -5373,13 +5593,8 @@ export const fa: Record<string, Message> = {
5373
5593
  'hr.schedule_saved': 'شیفت ذخیره شد',
5374
5594
  'hr.schedule_start': 'شروع',
5375
5595
  'hr.schedule_time_missing': 'هر روز کاری باید شروع و پایان داشته باشد.',
5376
- 'hr.schedule_tz_fixed': 'یک منطقهٔ ثابت',
5377
- 'hr.schedule_tz_hint': '۰۹:۰۰ خواندن یک ساعت است. این می‌گوید ساعتِ چه کسی.',
5378
- 'hr.schedule_tz_label': 'منطقه',
5379
- 'hr.schedule_tz_mode': 'منطقهٔ زمانی',
5380
- 'hr.schedule_tz_office': 'دفتر فرد',
5381
- 'hr.schedule_tz_person': 'منطقهٔ زمانی خود فرد',
5382
- 'hr.schedule_tz_required': 'منطقه‌ای را که این شیفت با آن خوانده می‌شود انتخاب کنید.',
5596
+ 'hr.schedule_tz_note':
5597
+ '۰۹:۰۰ یعنی ساعت نُه در جایی که فرد هست: منطقهٔ زمانی دفتر اصلی او، مگر آنکه در نمایه‌اش منطقهٔ خودش تعیین شده باشد.',
5383
5598
  'hr.schedule_week': 'هفتهٔ کاری',
5384
5599
  'hr.schedule_week_empty': 'همهٔ روزها خاموش‌اند — چیزی برای سنجیدن نمی‌ماند.',
5385
5600
  'hr.schedule_week_total': 'هفته‌ای {hours}',
@@ -5481,9 +5696,12 @@ export const tr: Record<string, Message> = {
5481
5696
  'hr.accr_col_policy': 'Kural',
5482
5697
  'hr.accr_col_when': 'Ne zaman',
5483
5698
  'hr.accr_config_unreadable': 'Bu kuralın ayarları okunamıyor',
5699
+ 'hr.accr_config_unreadable_form':
5700
+ 'Bu politikanın kayıtlı ayarları okunamadı; aşağıdaki alanlar kayıtlı değerler değil, varsayılanlardır. Kaydetmek, kayıtlı ayarların yerine bunları yazar.',
5484
5701
  'hr.accr_copy_of': '{name} (kopya)',
5485
5702
  'hr.accr_create_title': 'Yeni hakediş kuralı',
5486
5703
  'hr.accr_created': '"{name}" oluşturuldu',
5704
+ 'hr.accr_day_is': 'bir gün {length}',
5487
5705
  'hr.accr_day_length': 'Bir izin gününün uzunluğu',
5488
5706
  'hr.accr_day_length_hint':
5489
5707
  'Dakika olarak — {length}. Bakiyeler dakika tutulur; böylece yarım günler ve saatlik izin tam kalır.',
@@ -5491,7 +5709,7 @@ export const tr: Record<string, Message> = {
5491
5709
  'hr.accr_days_field_hint': 'Kıdem kademeleri, oranlama ve yarı zamanlı saatler uygulanmadan önce.',
5492
5710
  'hr.accr_days_per_year': { one: 'Yılda {count} gün', other: 'Yılda {count} gün' },
5493
5711
  'hr.accr_desc':
5494
- 'İznin zamanla nasıl hak edildiği: kurallar, her birinin kime uygulandığı ve bir sonraki çalıştırmanın ne ekleyeceği.',
5712
+ 'İznin zamanla nasıl hak edildiği ve yıl dönümünden nelerin geçtiği: kurallar, her birinin kime uygulandığı ve bir sonraki çalıştırmanın ne ekleyeceği.',
5495
5713
  'hr.accr_duplicate': 'Kopyala',
5496
5714
  'hr.accr_edit_retroactive':
5497
5715
  '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,6 +5725,8 @@ export const tr: Record<string, Message> = {
5507
5725
  'hr.accr_error_name': 'Kurala bir ad verin.',
5508
5726
  'hr.accr_error_pick_policy': 'Bir kural seçin.',
5509
5727
  'hr.accr_error_pick_subject': 'Kime uygulanacağını seçin.',
5728
+ 'hr.accr_error_round_cap':
5729
+ 'Yuvarlama adımı {max} değerinden uzun olamaz; bu kadar uzun bir günde tam gün adım olamaz.',
5510
5730
  'hr.accr_error_tier_clash': 'İki kademe aynı yıl sayısında başlıyor.',
5511
5731
  'hr.accr_error_to_before_from': 'Bitiş tarihi başlangıç tarihinden önce.',
5512
5732
  'hr.accr_freq_anniversary': 'Her işe giriş yıl dönümünde',
@@ -5554,9 +5774,9 @@ export const tr: Record<string, Message> = {
5554
5774
  'hr.accr_preview_error': 'Önizleme hesaplanamadı',
5555
5775
  'hr.accr_readonly':
5556
5776
  'Bu sayfayı okuyabilirsiniz, ama bir şeyi değiştirmek için kuralları yönetme yetkisi gerekir.',
5557
- 'hr.accr_round_day': 'Tam gün',
5777
+ 'hr.accr_round_day': 'Tam bir gün ({length})',
5558
5778
  'hr.accr_round_exact': 'Yuvarlama yok',
5559
- 'hr.accr_round_half_day': 'Yarım gün',
5779
+ 'hr.accr_round_half_day': 'Yarım gün ({length})',
5560
5780
  'hr.accr_round_minutes': { one: '{count} dakika', other: '{count} dakika' },
5561
5781
  'hr.accr_round_short': '{step} adımına yuvarlanır',
5562
5782
  'hr.accr_rounding': 'Yuvarlama',
@@ -5585,6 +5805,8 @@ export const tr: Record<string, Message> = {
5585
5805
  'hr.accr_run_title': 'Hakediş çalıştırma',
5586
5806
  'hr.accr_run_to': 'Dönem sonu',
5587
5807
  'hr.accr_run_total': 'Toplam',
5808
+ 'hr.accr_run_total_note':
5809
+ 'Gün değil, süre: tek bir çalıştırma farklı gün uzunluklarına sahip politikaları kapsayabilir.',
5588
5810
  'hr.accr_run_writes':
5589
5811
  'Ekleme, izin defterine yazar. Buradan geri alınamaz; yanlış bir ekleme izin düzeltmesiyle giderilir.',
5590
5812
  'hr.accr_rung_empty': 'Bu basamakta bir şey yok.',
@@ -5716,6 +5938,7 @@ export const tr: Record<string, Message> = {
5716
5938
  'hr.att_corrections_error': 'İstediğiniz düzeltmeler yüklenemedi',
5717
5939
  'hr.att_corrections_pending': 'İstediğiniz düzeltmeler',
5718
5940
  'hr.att_locked_no_change': 'Bu ay bordro için kapatıldı; düzeltme rakamları değiştiremez.',
5941
+ 'hr.att_method_auto': 'Otomatik kapatıldı',
5719
5942
  'hr.att_method_device': 'Terminal',
5720
5943
  'hr.att_method_import': 'Aktarıldı',
5721
5944
  'hr.att_method_kiosk': 'Kiosk',
@@ -5918,6 +6141,43 @@ export const tr: Record<string, Message> = {
5918
6141
  'hr.capability_off_title': '{name} kapatılsın mı?',
5919
6142
  'hr.capability_requires': '{name} gerekir',
5920
6143
  'hr.capability_write_error': 'Bu anahtar değiştirilemedi. Hiçbir şey kaydedilmedi.',
6144
+ 'hr.cf_cap': 'Devreden gün sayısı',
6145
+ 'hr.cf_cap_hint': 'Yıl dönümünü en fazla bu kadarı geçer. Üstü kalan süresi dolar ve defter bunu kaydeder.',
6146
+ 'hr.cf_cap_zero':
6147
+ "Sıfırda hiçbir şey devretmez: kalan bakiyenin tamamı 31 Aralık'ta, gösterilebilir bir 'süresi doldu' kaydıyla silinir.",
6148
+ 'hr.cf_carries_nothing': 'Devir yok',
6149
+ 'hr.cf_col_carries': 'Devreden',
6150
+ 'hr.cf_col_deadline': 'Son kullanım',
6151
+ 'hr.cf_create_title': 'Yeni devir kuralı',
6152
+ 'hr.cf_deadline_short': { one: '{count} ay süre', other: '{count} ay süre' },
6153
+ 'hr.cf_edit_title': 'Devir kuralını düzenle',
6154
+ 'hr.cf_error': 'Devir kuralları yüklenemedi',
6155
+ 'hr.cf_error_leave_type': 'Hangi izin türünü devredeceğini seçin.',
6156
+ 'hr.cf_expires': 'Devreden izin süresi dolar',
6157
+ 'hr.cf_expires_hint':
6158
+ "Yeni izin yılının başladığı 1 Ocak'tan itibaren sayılır; işin çalıştığı günden değil.",
6159
+ 'hr.cf_job_note':
6160
+ "Bir iş, her ofisin kendi 2 Ocak'ında, aralık eklendikten sonra bakiyeyi devreder ve devredilen izni süresi dolduğu gün geri alır. İki yarısı da deftere yazılır.",
6161
+ 'hr.cf_leave_type_hint': 'Hangi bakiyenin devredeceği.',
6162
+ 'hr.cf_months': 'Kullanım süresi (ay)',
6163
+ 'hr.cf_months_hint':
6164
+ "1 ile 24 arasında. Üç ay demek, devreden izin mart ayı boyunca geçerlidir ve 1 Nisan'da yoktur.",
6165
+ 'hr.cf_needs_accrual':
6166
+ 'Hakediş kuralı yok, bu yüzden hiçbir şey devredemez: gün cinsinden bir üst sınır, bir iş gününün uzunluğuna ihtiyaç duyar ve bunu yalnızca bir hakediş kuralı söyler.',
6167
+ 'hr.cf_needs_accrual_note':
6168
+ 'Üst sınır gün cinsindendir ve bir günün ne kadar sürdüğünü yalnızca hakediş kuralı söyler. Hakediş kuralı olmayan hiçbir şey devretmez.',
6169
+ 'hr.cf_no_deadline': 'Süresiz',
6170
+ 'hr.cf_no_default':
6171
+ 'Çalışma alanında bir devir kuralı yok; daha yakın bir kuralı olmayan hiç kimse yıl dönümünde hiçbir şey saklamıyor.',
6172
+ 'hr.cf_none': 'Henüz devir kuralı yok',
6173
+ 'hr.cf_none_desc':
6174
+ 'Böyle bir kural olmadan yeni yıla hiçbir şey geçmez. Kullanılmayan bakiye hak edildiği yılda kalır ve yeni yıl, o yıl hak edilenle başlar.',
6175
+ 'hr.cf_section': 'Devir',
6176
+ 'hr.cf_section_desc':
6177
+ 'Bir izin yılı bittiğinde kalanlar: ne kadarı gelecek yıla geçer ve kullanmak için ne kadar süre kalır.',
6178
+ 'hr.cf_unassign_no_fallback':
6179
+ 'Bunun altındaki hiçbir basamakta devir kuralı yok; bu yüzden onlardan yeni yıla hiçbir şey geçmez.',
6180
+ 'hr.cf_unassign_title': '{subject} için devir dursun mu?',
5921
6181
  'hr.chain_actions_for': '{name} için işlemler',
5922
6182
  'hr.chain_add_approver': 'Onaylayan ekle',
5923
6183
  'hr.chain_add_step': 'Adım ekle',
@@ -6084,6 +6344,10 @@ export const tr: Record<string, Message> = {
6084
6344
  'hr.employment_intern': 'Stajyer',
6085
6345
  'hr.employment_part_time': 'Yarı zamanlı',
6086
6346
  'hr.employment_temporary': 'Geçici',
6347
+ 'hr.filter_clear': 'Herkesi göster',
6348
+ 'hr.filter_department': '{name} ve altındaki departmanlar',
6349
+ 'hr.filter_department_unnamed': 'Bir departman ve altındaki departmanlar',
6350
+ 'hr.filter_office_unnamed': 'Bir ofis',
6087
6351
  'hr.general_country_desc':
6088
6352
  'Modül açıldığında kullanılır: ilk ofis bu ülkede oluşturulur ve tatil takvimi bu ülke için hazırlanan paketten doldurulur.',
6089
6353
  'hr.general_country_hint':
@@ -6326,6 +6590,10 @@ export const tr: Record<string, Message> = {
6326
6590
  'hr.nav': 'Kişiler',
6327
6591
  'hr.no_people': 'Henüz kimse yok',
6328
6592
  'hr.no_people_desc': 'Rehberi başlatmak için ilk kişiyi ekleyin.',
6593
+ 'hr.no_people_match': 'Eşleşen kimse yok',
6594
+ 'hr.no_people_match_filtered':
6595
+ 'Şirketin bu bölümünde eşleşen kimse yok. Tüm rehberde aramak için herkesi gösterin.',
6596
+ 'hr.no_people_match_search': 'Yazdığınızla eşleşen bir ad yok.',
6329
6597
  'hr.not_clocked_in': 'Giriş yapılmadı',
6330
6598
  'hr.offboard': 'İşi bitir',
6331
6599
  'hr.offboard_already': 'Bu kişi zaten ayrıldı',
@@ -6438,6 +6706,7 @@ export const tr: Record<string, Message> = {
6438
6706
  'hr.offices_timezones': 'Saat dilimi',
6439
6707
  'hr.offices_title': 'Ofisler',
6440
6708
  'hr.on_break_since': '{time} saatinden beri molada',
6709
+ 'hr.on_leave_note': 'Şu anda izinde',
6441
6710
  'hr.org_archive_blocked_children': {
6442
6711
  one: 'Altındaki {count} departman bağlısız kalır. Önce onu taşıyın veya arşivleyin.',
6443
6712
  other: 'Altındaki {count} departman bağlısız kalır. Önce onları taşıyın veya arşivleyin.',
@@ -6509,7 +6778,7 @@ export const tr: Record<string, Message> = {
6509
6778
  'hr.org_root': 'En üst kademe',
6510
6779
  'hr.org_search_label': 'Departmanları ada veya koda göre ara',
6511
6780
  'hr.org_search_placeholder': 'Departman ara',
6512
- 'hr.org_see_people': { one: 'Buradaki {count} kişiyi gör', other: 'Buradaki {count} kişiyi gör' },
6781
+ 'hr.org_see_people': { one: '{count} kişiyi gör', other: '{count} kişiyi gör' },
6513
6782
  'hr.org_stat_levels': 'Kademe',
6514
6783
  'hr.org_stat_people': 'Yerleştirilen kişi',
6515
6784
  'hr.org_stat_positions': 'Pozisyonlar',
@@ -6547,7 +6816,7 @@ export const tr: Record<string, Message> = {
6547
6816
  'hr.periods_kind_hint': 'Ayın ne için kapatıldığı. İki tür de aynı günleri kapatır.',
6548
6817
  'hr.periods_lock': 'Kapat',
6549
6818
  'hr.periods_lock_adjustments':
6550
- '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.',
6819
+ 'Tarihi dönemin içine düşen bir politika değişikliği o günleri kapatıldıkları hâlde bırakır; doğurduğu fark açık bir dönemde elle düzeltme olarak kaydedilmelidir. Dönemi daha sonra gerekçesini yazarak yeniden açabilirsiniz.',
6551
6820
  'hr.periods_lock_body': 'Bu dönemdeki her kayıtlı gün {scope} için yeniden hesaplanamaz olur.',
6552
6821
  'hr.periods_lock_confirm': 'Dönemi kapat',
6553
6822
  'hr.periods_lock_error': 'Dönem kapatılamadı',
@@ -6598,6 +6867,9 @@ export const tr: Record<string, Message> = {
6598
6867
  'hr.person_create_error': 'Bu kişi eklenemedi — hiçbir şey kaydedilmedi',
6599
6868
  'hr.person_created': '{name} dizine eklendi',
6600
6869
  'hr.person_error': 'Bu kişinin kaydı yüklenemedi',
6870
+ 'hr.person_hidden': 'Gizli',
6871
+ 'hr.person_hidden_hint':
6872
+ 'Kişisel iletişim bilgileri ve çalışma tarihleri yalnızca sorumlu olduğunuz kişiler için gösterilir.',
6601
6873
  'hr.person_manage_denied': 'Bu çalışma alanına kişi ekleme yetkiniz yok',
6602
6874
  'hr.person_offboard_error': 'İş bitirilemedi — hiçbir şey değişmedi',
6603
6875
  'hr.person_offboarded': '{name} ayrıldı',
@@ -6606,8 +6878,10 @@ export const tr: Record<string, Message> = {
6606
6878
  'hr.person_updated': 'Kaydedildi',
6607
6879
  'hr.personal_email': 'Kişisel e-posta',
6608
6880
  'hr.phone': 'Telefon',
6881
+ 'hr.policy_kind_accrual': 'Hakediş',
6882
+ 'hr.policy_kind_carry_forward': 'Devir',
6609
6883
  'hr.reject': 'Reddet',
6610
- 'hr.reject_confirm_body': 'Bildirim alır ve kendisi için hiçbir şey değişmez. Yeni bir talep gönderebilir.',
6884
+ 'hr.reject_confirm_body': 'Kendisi için hiçbir şey değişmez. Yeni bir talep gönderebilir.',
6611
6885
  'hr.reject_confirm_title': 'Bu talep reddedilsin mi?',
6612
6886
  'hr.request_leave': 'İzin talep et',
6613
6887
  'hr.retry': 'Yeniden dene',
@@ -6631,7 +6905,7 @@ export const tr: Record<string, Message> = {
6631
6905
  'hr.schedule_assigned': '{name}, {date} tarihinden itibaren bu vardiyada',
6632
6906
  'hr.schedule_auto_out': 'Unutulan çıkışı şu süre sonra kapat',
6633
6907
  'hr.schedule_auto_out_hint':
6634
- 'Çıkış yapmayı unutan kişi bu süre dolunca otomatik olarak çıkarılır ve gün incelemeye işaretlenir. Kapalıyken gün bir düzeltme bekler.',
6908
+ 'Çıkış yapmayı unutan kişi bu süre dolunca otomatik olarak çıkarılır ve gün, tamamlanmamış olarak işaretli kalmak yerine bu kadar sayılır. Kapalıyken gün açık kalır ve bir düzeltme bekler.',
6635
6909
  'hr.schedule_auto_out_off': 'Bir insana bırak',
6636
6910
  'hr.schedule_break': 'Mola',
6637
6911
  'hr.schedule_break_hint': 'Mola ücretsizdir ve günün toplamından düşülür.',
@@ -6679,13 +6953,8 @@ export const tr: Record<string, Message> = {
6679
6953
  'hr.schedule_saved': 'Vardiya kaydedildi',
6680
6954
  'hr.schedule_start': 'Başlangıç',
6681
6955
  'hr.schedule_time_missing': 'Her çalışma gününün bir başlangıcı ve bitişi olmalı.',
6682
- 'hr.schedule_tz_fixed': 'Tek bir sabit dilim',
6683
- 'hr.schedule_tz_hint': '09:00 bir saat okumasıdır. Bu, kimin saati olduğunu söyler.',
6684
- 'hr.schedule_tz_label': 'Dilim',
6685
- 'hr.schedule_tz_mode': 'Saat dilimi',
6686
- 'hr.schedule_tz_office': 'Kişinin ofisi',
6687
- 'hr.schedule_tz_person': 'Kişinin kendi saat dilimi',
6688
- 'hr.schedule_tz_required': 'Bu vardiyanın okunacağı dilimi seçin.',
6956
+ 'hr.schedule_tz_note':
6957
+ '09:00, kişinin bulunduğu yerde saat dokuz demektir: profilinde kendi saat dilimi yazılı değilse birincil ofisinin dilimi geçerlidir.',
6689
6958
  'hr.schedule_week': 'Çalışma haftası',
6690
6959
  'hr.schedule_week_empty': 'Bütün günler kapalı — ölçülecek bir şey kalmaz.',
6691
6960
  'hr.schedule_week_total': 'Haftada {hours}',