@things-factory/saas 0.0.0-stage → 10.1.236

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 (83) hide show
  1. package/README.md +19 -2
  2. package/dist-client/bootstrap.d.ts +1 -0
  3. package/dist-client/bootstrap.js +5 -0
  4. package/dist-client/bootstrap.js.map +1 -0
  5. package/dist-client/components/saas-bill-editor.d.ts +59 -0
  6. package/dist-client/components/saas-bill-editor.js +211 -0
  7. package/dist-client/components/saas-bill-editor.js.map +1 -0
  8. package/dist-client/entity360/saas-account-360.d.ts +12 -0
  9. package/dist-client/entity360/saas-account-360.js +231 -0
  10. package/dist-client/entity360/saas-account-360.js.map +1 -0
  11. package/dist-client/index.d.ts +3 -0
  12. package/dist-client/index.js +4 -0
  13. package/dist-client/index.js.map +1 -0
  14. package/dist-client/pages/saas-account-list.d.ts +57 -0
  15. package/dist-client/pages/saas-account-list.js +175 -0
  16. package/dist-client/pages/saas-account-list.js.map +1 -0
  17. package/dist-client/pages/saas-account-page.d.ts +54 -0
  18. package/dist-client/pages/saas-account-page.js +352 -0
  19. package/dist-client/pages/saas-account-page.js.map +1 -0
  20. package/dist-client/pages/saas-cost-trend.d.ts +23 -0
  21. package/dist-client/pages/saas-cost-trend.js +219 -0
  22. package/dist-client/pages/saas-cost-trend.js.map +1 -0
  23. package/dist-client/route.d.ts +1 -0
  24. package/dist-client/route.js +16 -0
  25. package/dist-client/route.js.map +1 -0
  26. package/dist-client/tsconfig.tsbuildinfo +1 -0
  27. package/dist-client/words.d.ts +47 -0
  28. package/dist-client/words.js +39 -0
  29. package/dist-client/words.js.map +1 -0
  30. package/dist-server/index.d.ts +1 -0
  31. package/dist-server/index.js +9 -0
  32. package/dist-server/index.js.map +1 -0
  33. package/dist-server/role-tasks.d.ts +2 -0
  34. package/dist-server/role-tasks.js +16 -0
  35. package/dist-server/role-tasks.js.map +1 -0
  36. package/dist-server/service/checks.d.ts +32 -0
  37. package/dist-server/service/checks.js +83 -0
  38. package/dist-server/service/checks.js.map +1 -0
  39. package/dist-server/service/index.d.ts +20 -0
  40. package/dist-server/service/index.js +38 -0
  41. package/dist-server/service/index.js.map +1 -0
  42. package/dist-server/service/saas-access.d.ts +20 -0
  43. package/dist-server/service/saas-access.js +36 -0
  44. package/dist-server/service/saas-access.js.map +1 -0
  45. package/dist-server/service/saas-account.d.ts +43 -0
  46. package/dist-server/service/saas-account.js +166 -0
  47. package/dist-server/service/saas-account.js.map +1 -0
  48. package/dist-server/service/saas-bill.d.ts +41 -0
  49. package/dist-server/service/saas-bill.js +160 -0
  50. package/dist-server/service/saas-bill.js.map +1 -0
  51. package/dist-server/service/saas-mutation.d.ts +12 -0
  52. package/dist-server/service/saas-mutation.js +103 -0
  53. package/dist-server/service/saas-mutation.js.map +1 -0
  54. package/dist-server/service/saas-query.d.ts +69 -0
  55. package/dist-server/service/saas-query.js +215 -0
  56. package/dist-server/service/saas-query.js.map +1 -0
  57. package/dist-server/service/saas-rules.d.ts +138 -0
  58. package/dist-server/service/saas-rules.js +217 -0
  59. package/dist-server/service/saas-rules.js.map +1 -0
  60. package/dist-server/service/saas-seat.d.ts +25 -0
  61. package/dist-server/service/saas-seat.js +105 -0
  62. package/dist-server/service/saas-seat.js.map +1 -0
  63. package/dist-server/service/saas-service.d.ts +119 -0
  64. package/dist-server/service/saas-service.js +492 -0
  65. package/dist-server/service/saas-service.js.map +1 -0
  66. package/dist-server/service/saas-subscription.d.ts +44 -0
  67. package/dist-server/service/saas-subscription.js +174 -0
  68. package/dist-server/service/saas-subscription.js.map +1 -0
  69. package/dist-server/service/saas-trend-type.d.ts +9 -0
  70. package/dist-server/service/saas-trend-type.js +37 -0
  71. package/dist-server/service/saas-trend-type.js.map +1 -0
  72. package/dist-server/service/saas-type.d.ts +113 -0
  73. package/dist-server/service/saas-type.js +430 -0
  74. package/dist-server/service/saas-type.js.map +1 -0
  75. package/dist-server/tsconfig.tsbuildinfo +1 -0
  76. package/package.json +49 -4
  77. package/things-factory.config.js +13 -0
  78. package/translations/en.json +185 -0
  79. package/translations/es.json +185 -0
  80. package/translations/ja.json +185 -0
  81. package/translations/ko.json +185 -0
  82. package/translations/ms.json +185 -0
  83. package/translations/zh.json +185 -0
@@ -0,0 +1,185 @@
1
+ {
2
+ "button.saas-bill-add-line": "줄 추가",
3
+ "button.saas-bill-new": "청구 기록 쓰기",
4
+ "button.saas-cost-trend": "비용 추이",
5
+ "button.saas-open-account": "계정 화면",
6
+ "error.saas-account-name-required": "서비스 이름을 입력하세요.",
7
+ "error.saas-account-not-found": "계정을 찾지 못했습니다. 새로 고친 뒤 다시 하세요.",
8
+ "error.saas-admin-not-found": "관리자는 이 사업장의 직원이어야 합니다.",
9
+ "error.saas-alert-rate-invalid": "증가 알림 비율은 0 이상 10 이하의 비율로 입력하세요(20%는 0.2).",
10
+ "error.saas-amount-invalid": "금액은 0 이상의 숫자로 입력하세요.",
11
+ "error.saas-amount-required": "정액·약정은 1회 청구 금액이 필요합니다.",
12
+ "error.saas-asset-not-found": "자산을 찾지 못했습니다.",
13
+ "error.saas-bill-lines-required": "청구 기록에는 줄이 하나 이상 있어야 합니다.",
14
+ "error.saas-bill-month-taken": "이 계정에는 {month} 청구 기록이 이미 있습니다. 그 기록을 고치세요.",
15
+ "error.saas-bill-not-found": "청구 기록을 찾지 못했습니다. 새로 고친 뒤 다시 하세요.",
16
+ "error.saas-bill-on-sub-account": "하위 계정은 상위 계정이 청구합니다.",
17
+ "error.saas-bill-subscription-not-found": "이 계정의 구독이 아닌 줄이 있습니다.",
18
+ "error.saas-billing-day-invalid": "결제일은 {min}~{max} 사이의 정수입니다.",
19
+ "error.saas-billing-invalid": "과금 방식을 고르세요.",
20
+ "error.saas-closed-on-required": "해지일을 입력하세요.",
21
+ "error.saas-counterparty-not-found": "공급자를 찾지 못했습니다.",
22
+ "error.saas-currency-invalid": "'{value}'은(는) 통화 코드가 아닙니다(KRW, USD).",
23
+ "error.saas-day-invalid": "날짜를 YYYY-MM-DD 로 입력하세요.",
24
+ "error.saas-department-not-found": "부서를 찾지 못했습니다.",
25
+ "error.saas-ended-before-start": "해지일이 시작일보다 앞섭니다.",
26
+ "error.saas-ended-on-required": "해지일을 입력하세요.",
27
+ "error.saas-every-months-invalid": "주기는 {min}~{max}개월 사이의 정수입니다.",
28
+ "error.saas-month-invalid": "월을 YYYY-MM 으로 입력하세요(앞이 뒤보다 먼저).",
29
+ "error.saas-notice-days-invalid": "해지 통보는 {min}~{max}일 사이의 정수입니다.",
30
+ "error.saas-owned-asset-required": "보유 라이선스는 자산 대장의 자산을 고르세요. 취득가액은 자산이 갖습니다.",
31
+ "error.saas-parent-has-subscriptions": "구독이 있는 계정은 다른 계정 아래로 옮길 수 없습니다.",
32
+ "error.saas-parent-invalid": "상위 계정은 맨 위 계정만 될 수 있고, 자기 자신은 안 됩니다.",
33
+ "error.saas-parent-not-found": "상위 계정을 찾지 못했습니다.",
34
+ "error.saas-payment-account-not-found": "결제 수단을 찾지 못했습니다.",
35
+ "error.saas-renewal-on-required": "「갱신 안 함」은 갱신일이 필요합니다.",
36
+ "error.saas-seat-employee-not-found": "직원을 찾지 못했습니다.",
37
+ "error.saas-seat-holder-required": "좌석 사용자를 고르거나 이름을 입력하세요.",
38
+ "error.saas-seat-price-required": "좌석 과금은 수량(1 이상)과 단가가 필요합니다.",
39
+ "error.saas-seat-until-before-from": "회수일이 시작일보다 앞섭니다.",
40
+ "error.saas-start-on-invalid": "시작일을 YYYY-MM-DD 로 입력하세요.",
41
+ "error.saas-subscription-name-required": "상품·플랜 이름을 입력하세요.",
42
+ "error.saas-subscription-not-found": "구독을 찾지 못했습니다. 새로 고친 뒤 다시 하세요.",
43
+ "error.saas-subscription-on-sub-account": "하위 계정은 상위 계정이 청구합니다. 구독은 상위 계정에 적으세요.",
44
+ "error.saas-term-end-required": "약정은 약정 끝나는 날(갱신일)이 필요합니다.",
45
+ "error.saas-trend-too-long": "한 번에 {max}개월까지 볼 수 있습니다.",
46
+ "field.saas-account-admins": "관리자",
47
+ "field.saas-account-billing-day": "결제일",
48
+ "field.saas-account-billing-email": "청구 메일",
49
+ "field.saas-account-closed-on": "해지일",
50
+ "field.saas-account-counterparty": "공급자",
51
+ "field.saas-account-currency": "통화",
52
+ "field.saas-account-description": "메모",
53
+ "field.saas-account-identifier": "계정 식별자",
54
+ "field.saas-account-increase-alert-rate": "증가 알림 비율",
55
+ "field.saas-account-name": "서비스",
56
+ "field.saas-account-parent": "상위 계정",
57
+ "field.saas-account-payment-account": "결제 수단",
58
+ "field.saas-account-purpose": "용도",
59
+ "field.saas-account-secret-location": "비밀 보관 위치",
60
+ "field.saas-account-status": "상태",
61
+ "field.saas-account-trend": "최근 12개월",
62
+ "field.saas-admin-employee": "관리자",
63
+ "field.saas-bill-billed-on": "청구일",
64
+ "field.saas-bill-description": "메모",
65
+ "field.saas-bill-line-amount": "금액",
66
+ "field.saas-bill-line-label": "항목",
67
+ "field.saas-bill-line-subscription": "구독",
68
+ "field.saas-bill-lines": "내역",
69
+ "field.saas-bill-month": "청구월",
70
+ "field.saas-bill-total": "합계",
71
+ "field.saas-seat-description": "메모",
72
+ "field.saas-seat-employee": "직원",
73
+ "field.saas-seat-from-on": "시작일",
74
+ "field.saas-seat-holder": "직원 아닌 사용자",
75
+ "field.saas-seat-until-on": "회수일",
76
+ "field.saas-subscription-amount": "금액",
77
+ "field.saas-subscription-asset": "자산",
78
+ "field.saas-subscription-auto-renew": "자동 갱신",
79
+ "field.saas-subscription-billing": "과금 방식",
80
+ "field.saas-subscription-budget": "월 예산",
81
+ "field.saas-subscription-department": "담당 부서",
82
+ "field.saas-subscription-description": "메모",
83
+ "field.saas-subscription-ended-on": "해지일",
84
+ "field.saas-subscription-every-months": "주기(개월)",
85
+ "field.saas-subscription-name": "상품·플랜",
86
+ "field.saas-subscription-notice-days": "해지 통보(일 전)",
87
+ "field.saas-subscription-quantity": "수량",
88
+ "field.saas-subscription-renewal-on": "갱신일",
89
+ "field.saas-subscription-seats-held": "좌석 사용",
90
+ "field.saas-subscription-start-on": "시작일",
91
+ "field.saas-subscription-status": "상태",
92
+ "field.saas-subscription-unit-price": "단가",
93
+ "field.saas-trend-account": "계정·구독",
94
+ "field.saas-trend-currency": "통화",
95
+ "field.saas-trend-department": "부서",
96
+ "field.saas-trend-month-over-month": "전월 대비",
97
+ "field.saas-trend-total": "합계",
98
+ "field.saas-trend-year-over-year": "전년 대비",
99
+ "task.saas.administering.description": "관리자로 지정된 계정의 구독·좌석·청구 기록을 읽고 바꾼다. 계정 자체와 관리자 지정은 바꾸지 못한다.",
100
+ "task.saas.administering.name": "구독 계정 관리자",
101
+ "task.saas.keeping.description": "구독 서비스의 계정·구독·좌석·청구 기록을 모두 읽고 바꾼다.",
102
+ "task.saas.keeping.name": "구독 서비스 관리",
103
+ "task.saas.reading.description": "구독 서비스의 계정·구독·좌석·청구 기록과 비용 추이를 읽는다.",
104
+ "task.saas.reading.name": "구독 서비스 열람",
105
+ "text.my-saas-account-empty": "관리자로 지정된 계정이 없습니다.",
106
+ "text.my-saas-account-empty-description": "계정의 관리자는 경영지원이 지정합니다.",
107
+ "text.saas-360-budget": "월 예산 {budget}",
108
+ "text.saas-360-changes": "변경 이력",
109
+ "text.saas-360-changes-empty": "바뀐 것이 없습니다. 이력은 2026-10-30 부터 쌓입니다.",
110
+ "text.saas-360-months": "최근 12개월과 앞으로 3개월",
111
+ "text.saas-360-next-renewal": "다음 갱신일",
112
+ "text.saas-360-payments": "{vendor} 출금",
113
+ "text.saas-360-payments-empty": "이 공급자로 나간 은행 줄이 없습니다.",
114
+ "text.saas-360-payments-no-vendor": "공급자를 정하면 그 공급자로 나간 은행 줄이 여기 보입니다.",
115
+ "text.saas-360-seats": "좌석 {quantity} · 사용 {held}",
116
+ "text.saas-360-source-bank": "은행 출금",
117
+ "text.saas-360-source-bill": "청구 기록",
118
+ "text.saas-account-billing-day": "매월 {day}일 결제",
119
+ "text.saas-account-empty": "등록된 계정이 없습니다.",
120
+ "text.saas-account-empty-description": "AWS·Microsoft 365·도메인 등록 대행사처럼 청구서가 나오는 계정을 추가하세요.",
121
+ "text.saas-account-secret-at": "비밀 보관: {where}",
122
+ "text.saas-account-status-active": "사용",
123
+ "text.saas-account-status-closed": "해지",
124
+ "text.saas-account-under": "{name} 아래",
125
+ "text.saas-admins-empty": "관리자가 없습니다.",
126
+ "text.saas-alert-bill-increased": "{account}: 청구 {amount} — 전월 대비 허용 {limit} 초과",
127
+ "text.saas-alert-seat-bill-differs": "{account} · {subscription}: 청구 {amount} — 좌석 수 × 단가 {limit} 와 다름",
128
+ "text.saas-alert-usage-over-budget": "{account} · {subscription}: 사용량 {amount} — 월 예산 {limit} 초과",
129
+ "text.saas-bill-line-none": "(구독 없음 — 세금·크레딧)",
130
+ "text.saas-bill-saved": "{month} 청구 기록을 저장했습니다.",
131
+ "text.saas-bill-total": "합계 {total} {currency}",
132
+ "text.saas-billing-commitment": "약정",
133
+ "text.saas-billing-fixed": "정액",
134
+ "text.saas-billing-owned": "보유",
135
+ "text.saas-billing-seat": "좌석",
136
+ "text.saas-billing-usage": "사용량",
137
+ "text.saas-bills-empty": "청구 기록이 없습니다.",
138
+ "text.saas-change-field-amount": "금액",
139
+ "text.saas-change-field-assetId": "자산",
140
+ "text.saas-change-field-autoRenew": "자동 갱신",
141
+ "text.saas-change-field-billing": "과금 방식",
142
+ "text.saas-change-field-billingDay": "결제일",
143
+ "text.saas-change-field-budget": "월 예산",
144
+ "text.saas-change-field-closedOn": "해지일",
145
+ "text.saas-change-field-counterpartyId": "공급자",
146
+ "text.saas-change-field-currency": "통화",
147
+ "text.saas-change-field-departmentId": "담당 부서",
148
+ "text.saas-change-field-endedOn": "해지일",
149
+ "text.saas-change-field-everyMonths": "주기",
150
+ "text.saas-change-field-identifier": "계정 식별자",
151
+ "text.saas-change-field-increaseAlertRate": "증가 알림 비율",
152
+ "text.saas-change-field-name": "이름",
153
+ "text.saas-change-field-noticeDays": "해지 통보",
154
+ "text.saas-change-field-parentId": "상위 계정",
155
+ "text.saas-change-field-paymentAccountId": "결제 수단",
156
+ "text.saas-change-field-quantity": "수량",
157
+ "text.saas-change-field-renewalOn": "갱신일",
158
+ "text.saas-change-field-startOn": "시작일",
159
+ "text.saas-change-field-status": "상태",
160
+ "text.saas-change-field-unitPrice": "단가",
161
+ "text.saas-seats-empty": "좌석이 없습니다.",
162
+ "text.saas-seats-no-plan": "좌석 과금 구독이 없습니다. 구독 탭에서 과금 방식을 「좌석」으로 정하면 여기서 좌석을 적습니다.",
163
+ "text.saas-subscription-status-active": "사용",
164
+ "text.saas-subscription-status-cancelled": "해지",
165
+ "text.saas-subscription-status-cancelling": "갱신 안 함",
166
+ "text.saas-subscriptions-empty": "구독이 없습니다.",
167
+ "text.saas-tab-admins": "관리자",
168
+ "text.saas-tab-bills": "청구 기록",
169
+ "text.saas-tab-seats": "좌석",
170
+ "text.saas-tab-subscriptions": "구독",
171
+ "text.saas-trend-accounts": "계정·구독별",
172
+ "text.saas-trend-alerts": "{month} 청구에서 알릴 것",
173
+ "text.saas-trend-all": "전체",
174
+ "text.saas-trend-departments": "부서별",
175
+ "text.saas-trend-empty": "이 기간에 청구 기록이 없습니다. 계정의 청구 기록 탭에서 달마다 씁니다.",
176
+ "text.saas-trend-expected": "예상",
177
+ "text.saas-trend-no-department": "(부서 없음)",
178
+ "text.saas-trend-rest": "(구독 없음 — 세금·크레딧)",
179
+ "title.my-saas-account-list": "내가 관리하는 구독 서비스",
180
+ "title.saas-account-list": "구독 서비스",
181
+ "title.saas-account-page": "구독 서비스 계정",
182
+ "title.saas-bill-edit": "{month} 청구 기록",
183
+ "title.saas-bill-new": "청구 기록 쓰기",
184
+ "title.saas-cost-trend": "구독 비용 추이"
185
+ }
@@ -0,0 +1,185 @@
1
+ {
2
+ "button.saas-bill-add-line": "Add a line",
3
+ "button.saas-bill-new": "Write a bill",
4
+ "button.saas-cost-trend": "Cost trend",
5
+ "button.saas-open-account": "Account screen",
6
+ "error.saas-account-name-required": "Name the service.",
7
+ "error.saas-account-not-found": "The account was not found - reload and try again.",
8
+ "error.saas-admin-not-found": "An admin is an employee of this domain.",
9
+ "error.saas-alert-rate-invalid": "Give the rise alert rate as a part from 0 to 10 (0.2 for 20%).",
10
+ "error.saas-amount-invalid": "Give the amount as a number of zero or more.",
11
+ "error.saas-amount-required": "A fixed fee or a commitment takes what one billing costs.",
12
+ "error.saas-asset-not-found": "The asset was not found.",
13
+ "error.saas-bill-lines-required": "A bill takes at least one line.",
14
+ "error.saas-bill-month-taken": "The account already has a bill for {month} - change that one.",
15
+ "error.saas-bill-not-found": "The bill was not found - reload and try again.",
16
+ "error.saas-bill-on-sub-account": "An account under another is billed by its parent.",
17
+ "error.saas-bill-subscription-not-found": "A line names a subscription not of this account.",
18
+ "error.saas-billing-day-invalid": "The billing day is a whole number from {min} to {max}.",
19
+ "error.saas-billing-invalid": "Pick how it is billed.",
20
+ "error.saas-closed-on-required": "Give the day it was closed.",
21
+ "error.saas-counterparty-not-found": "The vendor was not found.",
22
+ "error.saas-currency-invalid": "'{value}' is not a currency code (KRW, USD).",
23
+ "error.saas-day-invalid": "Write the day as YYYY-MM-DD.",
24
+ "error.saas-department-not-found": "The department was not found.",
25
+ "error.saas-ended-before-start": "It ended before it started.",
26
+ "error.saas-ended-on-required": "Give the day it ended.",
27
+ "error.saas-every-months-invalid": "Every is a whole number of months from {min} to {max}.",
28
+ "error.saas-month-invalid": "Give the months as YYYY-MM, the first before the last.",
29
+ "error.saas-notice-days-invalid": "The notice is a whole number of days from {min} to {max}.",
30
+ "error.saas-owned-asset-required": "A license owned points at its asset in the register - its cost is there.",
31
+ "error.saas-parent-has-subscriptions": "An account with subscriptions cannot go under another.",
32
+ "error.saas-parent-invalid": "An account is under a top account only, and not under itself.",
33
+ "error.saas-parent-not-found": "The parent account was not found.",
34
+ "error.saas-payment-account-not-found": "The payment account was not found.",
35
+ "error.saas-renewal-on-required": "Not renewing takes the day it would renew.",
36
+ "error.saas-seat-employee-not-found": "The employee was not found.",
37
+ "error.saas-seat-holder-required": "Pick the employee who holds the seat, or write a name.",
38
+ "error.saas-seat-price-required": "A seat plan takes its seats (one or more) and the price of one.",
39
+ "error.saas-seat-until-before-from": "It was taken back before it was given.",
40
+ "error.saas-start-on-invalid": "Write the day it started as YYYY-MM-DD.",
41
+ "error.saas-subscription-name-required": "Name the product or plan.",
42
+ "error.saas-subscription-not-found": "The subscription was not found - reload and try again.",
43
+ "error.saas-subscription-on-sub-account": "An account under another is billed by its parent - subscribe there.",
44
+ "error.saas-term-end-required": "A commitment takes the day its term ends.",
45
+ "error.saas-trend-too-long": "Up to {max} months at once.",
46
+ "field.saas-account-admins": "Admins",
47
+ "field.saas-account-billing-day": "Billing day",
48
+ "field.saas-account-billing-email": "Billing email",
49
+ "field.saas-account-closed-on": "Closed on",
50
+ "field.saas-account-counterparty": "Vendor",
51
+ "field.saas-account-currency": "Currency",
52
+ "field.saas-account-description": "Notes",
53
+ "field.saas-account-identifier": "Account id",
54
+ "field.saas-account-increase-alert-rate": "Rise alert rate",
55
+ "field.saas-account-name": "Service",
56
+ "field.saas-account-parent": "Parent account",
57
+ "field.saas-account-payment-account": "Paid from",
58
+ "field.saas-account-purpose": "Purpose",
59
+ "field.saas-account-secret-location": "Secrets kept at",
60
+ "field.saas-account-status": "Status",
61
+ "field.saas-account-trend": "Last 12 months",
62
+ "field.saas-admin-employee": "Admin",
63
+ "field.saas-bill-billed-on": "Billed on",
64
+ "field.saas-bill-description": "Notes",
65
+ "field.saas-bill-line-amount": "Amount",
66
+ "field.saas-bill-line-label": "Label",
67
+ "field.saas-bill-line-subscription": "Subscription",
68
+ "field.saas-bill-lines": "Lines",
69
+ "field.saas-bill-month": "Month",
70
+ "field.saas-bill-total": "Total",
71
+ "field.saas-seat-description": "Notes",
72
+ "field.saas-seat-employee": "Employee",
73
+ "field.saas-seat-from-on": "From",
74
+ "field.saas-seat-holder": "Other holder",
75
+ "field.saas-seat-until-on": "Taken back",
76
+ "field.saas-subscription-amount": "Amount",
77
+ "field.saas-subscription-asset": "Asset",
78
+ "field.saas-subscription-auto-renew": "Auto-renew",
79
+ "field.saas-subscription-billing": "Billing",
80
+ "field.saas-subscription-budget": "Monthly budget",
81
+ "field.saas-subscription-department": "Department",
82
+ "field.saas-subscription-description": "Notes",
83
+ "field.saas-subscription-ended-on": "Ended",
84
+ "field.saas-subscription-every-months": "Every (months)",
85
+ "field.saas-subscription-name": "Product / plan",
86
+ "field.saas-subscription-notice-days": "Notice (days)",
87
+ "field.saas-subscription-quantity": "Qty",
88
+ "field.saas-subscription-renewal-on": "Renews",
89
+ "field.saas-subscription-seats-held": "Seats held",
90
+ "field.saas-subscription-start-on": "Started",
91
+ "field.saas-subscription-status": "Status",
92
+ "field.saas-subscription-unit-price": "Unit price",
93
+ "field.saas-trend-account": "Account / subscription",
94
+ "field.saas-trend-currency": "Currency",
95
+ "field.saas-trend-department": "Department",
96
+ "field.saas-trend-month-over-month": "vs last month",
97
+ "field.saas-trend-total": "Total",
98
+ "field.saas-trend-year-over-year": "vs last year",
99
+ "task.saas.administering.description": "Reads and changes the subscriptions, seats and bills of the accounts one is named an admin of - not the account or its admins.",
100
+ "task.saas.administering.name": "Subscription account admin",
101
+ "task.saas.keeping.description": "Reads and changes the subscription accounts, subscriptions, seats and bills.",
102
+ "task.saas.keeping.name": "Keeping subscriptions",
103
+ "task.saas.reading.description": "Reads the subscription accounts, subscriptions, seats, bills and the cost trend.",
104
+ "task.saas.reading.name": "Reading subscriptions",
105
+ "text.my-saas-account-empty": "You administer no account.",
106
+ "text.my-saas-account-empty-description": "An account's admins are named by finance.",
107
+ "text.saas-360-budget": "budget {budget} a month",
108
+ "text.saas-360-changes": "What changed",
109
+ "text.saas-360-changes-empty": "Nothing changed. Changes are kept from 2026-10-30.",
110
+ "text.saas-360-months": "The last 12 months and the next 3",
111
+ "text.saas-360-next-renewal": "Next renewal",
112
+ "text.saas-360-payments": "Paid to {vendor}",
113
+ "text.saas-360-payments-empty": "No bank line paid this vendor.",
114
+ "text.saas-360-payments-no-vendor": "Name the vendor to see the bank lines that paid it here.",
115
+ "text.saas-360-seats": "{quantity} seats · {held} held",
116
+ "text.saas-360-source-bank": "bank",
117
+ "text.saas-360-source-bill": "bill",
118
+ "text.saas-account-billing-day": "paid on day {day}",
119
+ "text.saas-account-empty": "No accounts yet.",
120
+ "text.saas-account-empty-description": "Add the accounts bills come from - AWS, Microsoft 365, a domain registrar.",
121
+ "text.saas-account-secret-at": "secrets at: {where}",
122
+ "text.saas-account-status-active": "In use",
123
+ "text.saas-account-status-closed": "Closed",
124
+ "text.saas-account-under": "under {name}",
125
+ "text.saas-admins-empty": "No admins.",
126
+ "text.saas-alert-bill-increased": "{account}: billed {amount} - over the {limit} allowed after last month",
127
+ "text.saas-alert-seat-bill-differs": "{account} · {subscription}: billed {amount} - not seats times price {limit}",
128
+ "text.saas-alert-usage-over-budget": "{account} · {subscription}: usage {amount} - over the monthly budget {limit}",
129
+ "text.saas-bill-line-none": "(no subscription - tax, credits)",
130
+ "text.saas-bill-saved": "The bill of {month} is saved.",
131
+ "text.saas-bill-total": "Total {total} {currency}",
132
+ "text.saas-billing-commitment": "Commitment",
133
+ "text.saas-billing-fixed": "Fixed",
134
+ "text.saas-billing-owned": "Owned",
135
+ "text.saas-billing-seat": "Seats",
136
+ "text.saas-billing-usage": "Usage",
137
+ "text.saas-bills-empty": "No bills.",
138
+ "text.saas-change-field-amount": "amount",
139
+ "text.saas-change-field-assetId": "asset",
140
+ "text.saas-change-field-autoRenew": "auto-renew",
141
+ "text.saas-change-field-billing": "billing",
142
+ "text.saas-change-field-billingDay": "billing day",
143
+ "text.saas-change-field-budget": "budget",
144
+ "text.saas-change-field-closedOn": "closed on",
145
+ "text.saas-change-field-counterpartyId": "vendor",
146
+ "text.saas-change-field-currency": "currency",
147
+ "text.saas-change-field-departmentId": "department",
148
+ "text.saas-change-field-endedOn": "ended",
149
+ "text.saas-change-field-everyMonths": "every (months)",
150
+ "text.saas-change-field-identifier": "account id",
151
+ "text.saas-change-field-increaseAlertRate": "rise alert rate",
152
+ "text.saas-change-field-name": "name",
153
+ "text.saas-change-field-noticeDays": "notice",
154
+ "text.saas-change-field-parentId": "parent account",
155
+ "text.saas-change-field-paymentAccountId": "paid from",
156
+ "text.saas-change-field-quantity": "quantity",
157
+ "text.saas-change-field-renewalOn": "renews",
158
+ "text.saas-change-field-startOn": "started",
159
+ "text.saas-change-field-status": "status",
160
+ "text.saas-change-field-unitPrice": "unit price",
161
+ "text.saas-seats-empty": "No seats.",
162
+ "text.saas-seats-no-plan": "No seat plan. Set a subscription's billing to Seats on the Subscriptions tab to write its seats here.",
163
+ "text.saas-subscription-status-active": "In use",
164
+ "text.saas-subscription-status-cancelled": "Ended",
165
+ "text.saas-subscription-status-cancelling": "Not renewing",
166
+ "text.saas-subscriptions-empty": "No subscriptions.",
167
+ "text.saas-tab-admins": "Admins",
168
+ "text.saas-tab-bills": "Bills",
169
+ "text.saas-tab-seats": "Seats",
170
+ "text.saas-tab-subscriptions": "Subscriptions",
171
+ "text.saas-trend-accounts": "By account and subscription",
172
+ "text.saas-trend-alerts": "Worth telling in the bills of {month}",
173
+ "text.saas-trend-all": "All",
174
+ "text.saas-trend-departments": "By department",
175
+ "text.saas-trend-empty": "No bills in these months. Write them month by month on an account's Bills tab.",
176
+ "text.saas-trend-expected": "expected",
177
+ "text.saas-trend-no-department": "(no department)",
178
+ "text.saas-trend-rest": "(no subscription - tax, credits)",
179
+ "title.my-saas-account-list": "Subscriptions I administer",
180
+ "title.saas-account-list": "Subscriptions",
181
+ "title.saas-account-page": "Subscription account",
182
+ "title.saas-bill-edit": "Bill of {month}",
183
+ "title.saas-bill-new": "Write a bill",
184
+ "title.saas-cost-trend": "Subscription cost trend"
185
+ }
@@ -0,0 +1,185 @@
1
+ {
2
+ "button.saas-bill-add-line": "Add a line",
3
+ "button.saas-bill-new": "Write a bill",
4
+ "button.saas-cost-trend": "Cost trend",
5
+ "button.saas-open-account": "Account screen",
6
+ "error.saas-account-name-required": "Name the service.",
7
+ "error.saas-account-not-found": "The account was not found - reload and try again.",
8
+ "error.saas-admin-not-found": "An admin is an employee of this domain.",
9
+ "error.saas-alert-rate-invalid": "Give the rise alert rate as a part from 0 to 10 (0.2 for 20%).",
10
+ "error.saas-amount-invalid": "Give the amount as a number of zero or more.",
11
+ "error.saas-amount-required": "A fixed fee or a commitment takes what one billing costs.",
12
+ "error.saas-asset-not-found": "The asset was not found.",
13
+ "error.saas-bill-lines-required": "A bill takes at least one line.",
14
+ "error.saas-bill-month-taken": "The account already has a bill for {month} - change that one.",
15
+ "error.saas-bill-not-found": "The bill was not found - reload and try again.",
16
+ "error.saas-bill-on-sub-account": "An account under another is billed by its parent.",
17
+ "error.saas-bill-subscription-not-found": "A line names a subscription not of this account.",
18
+ "error.saas-billing-day-invalid": "The billing day is a whole number from {min} to {max}.",
19
+ "error.saas-billing-invalid": "Pick how it is billed.",
20
+ "error.saas-closed-on-required": "Give the day it was closed.",
21
+ "error.saas-counterparty-not-found": "The vendor was not found.",
22
+ "error.saas-currency-invalid": "'{value}' is not a currency code (KRW, USD).",
23
+ "error.saas-day-invalid": "Write the day as YYYY-MM-DD.",
24
+ "error.saas-department-not-found": "The department was not found.",
25
+ "error.saas-ended-before-start": "It ended before it started.",
26
+ "error.saas-ended-on-required": "Give the day it ended.",
27
+ "error.saas-every-months-invalid": "Every is a whole number of months from {min} to {max}.",
28
+ "error.saas-month-invalid": "Give the months as YYYY-MM, the first before the last.",
29
+ "error.saas-notice-days-invalid": "The notice is a whole number of days from {min} to {max}.",
30
+ "error.saas-owned-asset-required": "A license owned points at its asset in the register - its cost is there.",
31
+ "error.saas-parent-has-subscriptions": "An account with subscriptions cannot go under another.",
32
+ "error.saas-parent-invalid": "An account is under a top account only, and not under itself.",
33
+ "error.saas-parent-not-found": "The parent account was not found.",
34
+ "error.saas-payment-account-not-found": "The payment account was not found.",
35
+ "error.saas-renewal-on-required": "Not renewing takes the day it would renew.",
36
+ "error.saas-seat-employee-not-found": "The employee was not found.",
37
+ "error.saas-seat-holder-required": "Pick the employee who holds the seat, or write a name.",
38
+ "error.saas-seat-price-required": "A seat plan takes its seats (one or more) and the price of one.",
39
+ "error.saas-seat-until-before-from": "It was taken back before it was given.",
40
+ "error.saas-start-on-invalid": "Write the day it started as YYYY-MM-DD.",
41
+ "error.saas-subscription-name-required": "Name the product or plan.",
42
+ "error.saas-subscription-not-found": "The subscription was not found - reload and try again.",
43
+ "error.saas-subscription-on-sub-account": "An account under another is billed by its parent - subscribe there.",
44
+ "error.saas-term-end-required": "A commitment takes the day its term ends.",
45
+ "error.saas-trend-too-long": "Up to {max} months at once.",
46
+ "field.saas-account-admins": "Admins",
47
+ "field.saas-account-billing-day": "Billing day",
48
+ "field.saas-account-billing-email": "Billing email",
49
+ "field.saas-account-closed-on": "Closed on",
50
+ "field.saas-account-counterparty": "Vendor",
51
+ "field.saas-account-currency": "Currency",
52
+ "field.saas-account-description": "Notes",
53
+ "field.saas-account-identifier": "Account id",
54
+ "field.saas-account-increase-alert-rate": "Rise alert rate",
55
+ "field.saas-account-name": "Service",
56
+ "field.saas-account-parent": "Parent account",
57
+ "field.saas-account-payment-account": "Paid from",
58
+ "field.saas-account-purpose": "Purpose",
59
+ "field.saas-account-secret-location": "Secrets kept at",
60
+ "field.saas-account-status": "Status",
61
+ "field.saas-account-trend": "Last 12 months",
62
+ "field.saas-admin-employee": "Admin",
63
+ "field.saas-bill-billed-on": "Billed on",
64
+ "field.saas-bill-description": "Notes",
65
+ "field.saas-bill-line-amount": "Amount",
66
+ "field.saas-bill-line-label": "Label",
67
+ "field.saas-bill-line-subscription": "Subscription",
68
+ "field.saas-bill-lines": "Lines",
69
+ "field.saas-bill-month": "Month",
70
+ "field.saas-bill-total": "Total",
71
+ "field.saas-seat-description": "Notes",
72
+ "field.saas-seat-employee": "Employee",
73
+ "field.saas-seat-from-on": "From",
74
+ "field.saas-seat-holder": "Other holder",
75
+ "field.saas-seat-until-on": "Taken back",
76
+ "field.saas-subscription-amount": "Amount",
77
+ "field.saas-subscription-asset": "Asset",
78
+ "field.saas-subscription-auto-renew": "Auto-renew",
79
+ "field.saas-subscription-billing": "Billing",
80
+ "field.saas-subscription-budget": "Monthly budget",
81
+ "field.saas-subscription-department": "Department",
82
+ "field.saas-subscription-description": "Notes",
83
+ "field.saas-subscription-ended-on": "Ended",
84
+ "field.saas-subscription-every-months": "Every (months)",
85
+ "field.saas-subscription-name": "Product / plan",
86
+ "field.saas-subscription-notice-days": "Notice (days)",
87
+ "field.saas-subscription-quantity": "Qty",
88
+ "field.saas-subscription-renewal-on": "Renews",
89
+ "field.saas-subscription-seats-held": "Seats held",
90
+ "field.saas-subscription-start-on": "Started",
91
+ "field.saas-subscription-status": "Status",
92
+ "field.saas-subscription-unit-price": "Unit price",
93
+ "field.saas-trend-account": "Account / subscription",
94
+ "field.saas-trend-currency": "Currency",
95
+ "field.saas-trend-department": "Department",
96
+ "field.saas-trend-month-over-month": "vs last month",
97
+ "field.saas-trend-total": "Total",
98
+ "field.saas-trend-year-over-year": "vs last year",
99
+ "task.saas.administering.description": "Reads and changes the subscriptions, seats and bills of the accounts one is named an admin of - not the account or its admins.",
100
+ "task.saas.administering.name": "Subscription account admin",
101
+ "task.saas.keeping.description": "Reads and changes the subscription accounts, subscriptions, seats and bills.",
102
+ "task.saas.keeping.name": "Keeping subscriptions",
103
+ "task.saas.reading.description": "Reads the subscription accounts, subscriptions, seats, bills and the cost trend.",
104
+ "task.saas.reading.name": "Reading subscriptions",
105
+ "text.my-saas-account-empty": "You administer no account.",
106
+ "text.my-saas-account-empty-description": "An account's admins are named by finance.",
107
+ "text.saas-360-budget": "budget {budget} a month",
108
+ "text.saas-360-changes": "What changed",
109
+ "text.saas-360-changes-empty": "Nothing changed. Changes are kept from 2026-10-30.",
110
+ "text.saas-360-months": "The last 12 months and the next 3",
111
+ "text.saas-360-next-renewal": "Next renewal",
112
+ "text.saas-360-payments": "Paid to {vendor}",
113
+ "text.saas-360-payments-empty": "No bank line paid this vendor.",
114
+ "text.saas-360-payments-no-vendor": "Name the vendor to see the bank lines that paid it here.",
115
+ "text.saas-360-seats": "{quantity} seats · {held} held",
116
+ "text.saas-360-source-bank": "bank",
117
+ "text.saas-360-source-bill": "bill",
118
+ "text.saas-account-billing-day": "paid on day {day}",
119
+ "text.saas-account-empty": "No accounts yet.",
120
+ "text.saas-account-empty-description": "Add the accounts bills come from - AWS, Microsoft 365, a domain registrar.",
121
+ "text.saas-account-secret-at": "secrets at: {where}",
122
+ "text.saas-account-status-active": "In use",
123
+ "text.saas-account-status-closed": "Closed",
124
+ "text.saas-account-under": "under {name}",
125
+ "text.saas-admins-empty": "No admins.",
126
+ "text.saas-alert-bill-increased": "{account}: billed {amount} - over the {limit} allowed after last month",
127
+ "text.saas-alert-seat-bill-differs": "{account} · {subscription}: billed {amount} - not seats times price {limit}",
128
+ "text.saas-alert-usage-over-budget": "{account} · {subscription}: usage {amount} - over the monthly budget {limit}",
129
+ "text.saas-bill-line-none": "(no subscription - tax, credits)",
130
+ "text.saas-bill-saved": "The bill of {month} is saved.",
131
+ "text.saas-bill-total": "Total {total} {currency}",
132
+ "text.saas-billing-commitment": "Commitment",
133
+ "text.saas-billing-fixed": "Fixed",
134
+ "text.saas-billing-owned": "Owned",
135
+ "text.saas-billing-seat": "Seats",
136
+ "text.saas-billing-usage": "Usage",
137
+ "text.saas-bills-empty": "No bills.",
138
+ "text.saas-change-field-amount": "amount",
139
+ "text.saas-change-field-assetId": "asset",
140
+ "text.saas-change-field-autoRenew": "auto-renew",
141
+ "text.saas-change-field-billing": "billing",
142
+ "text.saas-change-field-billingDay": "billing day",
143
+ "text.saas-change-field-budget": "budget",
144
+ "text.saas-change-field-closedOn": "closed on",
145
+ "text.saas-change-field-counterpartyId": "vendor",
146
+ "text.saas-change-field-currency": "currency",
147
+ "text.saas-change-field-departmentId": "department",
148
+ "text.saas-change-field-endedOn": "ended",
149
+ "text.saas-change-field-everyMonths": "every (months)",
150
+ "text.saas-change-field-identifier": "account id",
151
+ "text.saas-change-field-increaseAlertRate": "rise alert rate",
152
+ "text.saas-change-field-name": "name",
153
+ "text.saas-change-field-noticeDays": "notice",
154
+ "text.saas-change-field-parentId": "parent account",
155
+ "text.saas-change-field-paymentAccountId": "paid from",
156
+ "text.saas-change-field-quantity": "quantity",
157
+ "text.saas-change-field-renewalOn": "renews",
158
+ "text.saas-change-field-startOn": "started",
159
+ "text.saas-change-field-status": "status",
160
+ "text.saas-change-field-unitPrice": "unit price",
161
+ "text.saas-seats-empty": "No seats.",
162
+ "text.saas-seats-no-plan": "No seat plan. Set a subscription's billing to Seats on the Subscriptions tab to write its seats here.",
163
+ "text.saas-subscription-status-active": "In use",
164
+ "text.saas-subscription-status-cancelled": "Ended",
165
+ "text.saas-subscription-status-cancelling": "Not renewing",
166
+ "text.saas-subscriptions-empty": "No subscriptions.",
167
+ "text.saas-tab-admins": "Admins",
168
+ "text.saas-tab-bills": "Bills",
169
+ "text.saas-tab-seats": "Seats",
170
+ "text.saas-tab-subscriptions": "Subscriptions",
171
+ "text.saas-trend-accounts": "By account and subscription",
172
+ "text.saas-trend-alerts": "Worth telling in the bills of {month}",
173
+ "text.saas-trend-all": "All",
174
+ "text.saas-trend-departments": "By department",
175
+ "text.saas-trend-empty": "No bills in these months. Write them month by month on an account's Bills tab.",
176
+ "text.saas-trend-expected": "expected",
177
+ "text.saas-trend-no-department": "(no department)",
178
+ "text.saas-trend-rest": "(no subscription - tax, credits)",
179
+ "title.my-saas-account-list": "Subscriptions I administer",
180
+ "title.saas-account-list": "Subscriptions",
181
+ "title.saas-account-page": "Subscription account",
182
+ "title.saas-bill-edit": "Bill of {month}",
183
+ "title.saas-bill-new": "Write a bill",
184
+ "title.saas-cost-trend": "Subscription cost trend"
185
+ }