forge
ExploreLog in

Tahinli/forge

public
0 watching
★ 0
24.6 KiB
1//! Strings for this page group. See `docs` in `super` for the pattern.
2
3use super::Lang;
4
5#[derive(Clone, Copy, Debug, PartialEq, Eq)]
6pub enum K {
7 ActiveField,
8 ArchivedHookNote,
9 AddPullIntro,
10 AddPullMirror,
11 AddPushIntro,
12 AddPushMirror,
13 AddWebhook,
14 AddWebhookIntro,
15 ArchivedNotice,
16 BackToWebhooks,
17 ClearSecret,
18 ColActive,
19 ColDirection,
20 ColEnabled,
21 ColEvents,
22 ColInterval,
23 ColLastDelivery,
24 ColLastSync,
25 ColResult,
26 CreateWebhook,
27 CurrentUrl,
28 DeleteConfirm,
29 DeleteIntro,
30 DeleteMirror,
31 DeleteTextPull,
32 DeleteTextPush,
33 DeleteWebhook,
34 DirectionPull,
35 DirectionPush,
36 EditWebhook,
37 EnabledField,
38 ErrIntervalMax,
39 ErrIntervalNotWhole,
40 ErrNoEvent,
41 ErrUrlMissing,
42 ErrUrlRequired,
43 ErrorLabel,
44 EvCreate,
45 EvDelete,
46 EvIssueComment,
47 EvIssues,
48 EvPullRequest,
49 EvPullRequestReview,
50 EvPush,
51 EvRelease,
52 Events,
53 HookArchivedNotice,
54 HookNoticeConfirm,
55 HookNoticeCreated,
56 HookNoticeDeleted,
57 HookNoticeRedelivered,
58 HookNoticeSaved,
59 HookNoticeTested,
60 IntervalField,
61 LastSync,
62 ManualOnly,
63 Mirrors,
64 MirrorsIntro,
65 Never,
66 No,
67 NoDeliveries,
68 NoMirrors,
69 NoWebhooks,
70 NoneYet,
71 NoResponse,
72 NoticeConfirm,
73 NoticeCreated,
74 NoticeDeleted,
75 NoticePullCreated,
76 NoticePullNotEmpty,
77 NoticeSaved,
78 NoticeSynced,
79 PayloadUrl,
80 PullMirror,
81 PushMirror,
82 RecentDeliveries,
83 Redeliver,
84 RemoteUrl,
85 RepositoryUrl,
86 RequestBody,
87 RequestHeaders,
88 Response,
89 ResponseBody,
90 ResponseHeaders,
91 SaveMirror,
92 SaveWebhook,
93 Secret,
94 SecretHintNew,
95 SecretHintSet,
96 SecretHintUnset,
97 SecretOptional,
98 SecretSet,
99 SecretUnset,
100 SendTestPing,
101 SignedWith,
102 StateFailed,
103 StateGaveUp,
104 StateOk,
105 StatePending,
106 Status,
107 StatusFailed,
108 StatusLower,
109 StatusNotRun,
110 StatusOk,
111 SyncHeading,
112 SyncIntro,
113 SyncNow,
114 Test,
115 TestIntro,
116 UrlHintKeep,
117 UrlHintNew,
118 UsernameOptional,
119 Webhooks,
120 WebhooksIntro,
121 Yes,
122}
123
124/// Every key, so the tests can walk them.
125#[cfg(test)]
126pub const ALL: &[K] = &[
127 K::ActiveField,
128 K::ArchivedHookNote,
129 K::AddPullIntro,
130 K::AddPullMirror,
131 K::AddPushIntro,
132 K::AddPushMirror,
133 K::AddWebhook,
134 K::AddWebhookIntro,
135 K::ArchivedNotice,
136 K::BackToWebhooks,
137 K::ClearSecret,
138 K::ColActive,
139 K::ColDirection,
140 K::ColEnabled,
141 K::ColEvents,
142 K::ColInterval,
143 K::ColLastDelivery,
144 K::ColLastSync,
145 K::ColResult,
146 K::CreateWebhook,
147 K::CurrentUrl,
148 K::DeleteConfirm,
149 K::DeleteIntro,
150 K::DeleteMirror,
151 K::DeleteTextPull,
152 K::DeleteTextPush,
153 K::DeleteWebhook,
154 K::DirectionPull,
155 K::DirectionPush,
156 K::EditWebhook,
157 K::EnabledField,
158 K::ErrIntervalMax,
159 K::ErrIntervalNotWhole,
160 K::ErrNoEvent,
161 K::ErrUrlMissing,
162 K::ErrUrlRequired,
163 K::ErrorLabel,
164 K::EvCreate,
165 K::EvDelete,
166 K::EvIssueComment,
167 K::EvIssues,
168 K::EvPullRequest,
169 K::EvPullRequestReview,
170 K::EvPush,
171 K::EvRelease,
172 K::Events,
173 K::HookArchivedNotice,
174 K::HookNoticeConfirm,
175 K::HookNoticeCreated,
176 K::HookNoticeDeleted,
177 K::HookNoticeRedelivered,
178 K::HookNoticeSaved,
179 K::HookNoticeTested,
180 K::IntervalField,
181 K::LastSync,
182 K::ManualOnly,
183 K::Mirrors,
184 K::MirrorsIntro,
185 K::Never,
186 K::No,
187 K::NoDeliveries,
188 K::NoMirrors,
189 K::NoWebhooks,
190 K::NoneYet,
191 K::NoResponse,
192 K::NoticeConfirm,
193 K::NoticeCreated,
194 K::NoticeDeleted,
195 K::NoticePullCreated,
196 K::NoticePullNotEmpty,
197 K::NoticeSaved,
198 K::NoticeSynced,
199 K::PayloadUrl,
200 K::PullMirror,
201 K::PushMirror,
202 K::RecentDeliveries,
203 K::Redeliver,
204 K::RemoteUrl,
205 K::RepositoryUrl,
206 K::RequestBody,
207 K::RequestHeaders,
208 K::Response,
209 K::ResponseBody,
210 K::ResponseHeaders,
211 K::SaveMirror,
212 K::SaveWebhook,
213 K::Secret,
214 K::SecretHintNew,
215 K::SecretHintSet,
216 K::SecretHintUnset,
217 K::SecretOptional,
218 K::SecretSet,
219 K::SecretUnset,
220 K::SendTestPing,
221 K::SignedWith,
222 K::StateFailed,
223 K::StateGaveUp,
224 K::StateOk,
225 K::StatePending,
226 K::Status,
227 K::StatusFailed,
228 K::StatusLower,
229 K::StatusNotRun,
230 K::StatusOk,
231 K::SyncHeading,
232 K::SyncIntro,
233 K::SyncNow,
234 K::Test,
235 K::TestIntro,
236 K::UrlHintKeep,
237 K::UrlHintNew,
238 K::UsernameOptional,
239 K::Webhooks,
240 K::WebhooksIntro,
241 K::Yes,
242];
243
244/// The phrase a key names, in a user's language.
245pub fn t(lang: Lang, key: K) -> &'static str {
246 use K::*;
247 use Lang::*;
248 match (key, lang) {
249 (ActiveField, En) => "Active: deliver events to this URL",
250 (ActiveField, Tr) => "Etkin: olaylar bu URL'ye teslim edilir",
251 (ArchivedHookNote, En) => "The webhook cannot be changed while the repository is archived.",
252 (ArchivedHookNote, Tr) => "Depo arşivlenmiş olduğu için web kancası değiştirilemez.",
253 (AddPullIntro, En) => {
254 "This repository is empty. A pull mirror fills it from a remote: branches and tags are fetched now, on the interval and on demand, and pushes are refused. It can only be added while the repository has no refs."
255 }
256 (AddPullIntro, Tr) => {
257 "Bu depo boş. Çekme yansısı depoyu uzak bir depodan doldurur: dallar ve etiketler şimdi, aralıkla ve istendiğinde çekilir; göndermeler reddedilir. Yalnızca depoda hiç referans yokken eklenebilir."
258 }
259 (AddPullMirror, En) => "Add pull mirror",
260 (AddPullMirror, Tr) => "Çekme yansısı ekle",
261 (AddPushIntro, En) => {
262 "Our branches and tags are pushed to this remote after each push, and on the interval. The remote's own refs that we do not have are removed."
263 }
264 (AddPushIntro, Tr) => {
265 "Dallarımız ve etiketlerimiz her göndermeden sonra ve aralıkla bu uzak depoya gönderilir. Uzak depoda bizde olmayan kendi referansları silinir."
266 }
267 (AddPushMirror, En) => "Add push mirror",
268 (AddPushMirror, Tr) => "Gönderme yansısı ekle",
269 (AddWebhook, En) => "Add webhook",
270 (AddWebhook, Tr) => "Web kancası ekle",
271 (AddWebhookIntro, En) => {
272 "A ping event is sent to the URL as soon as the webhook is created."
273 }
274 (AddWebhookIntro, Tr) => {
275 "Web kancası oluşturulur oluşturulmaz URL'ye bir ping olayı gönderilir."
276 }
277 (ArchivedNotice, En) => {
278 "This repository is archived. Mirrors are read-only: they cannot be changed, synced or deleted."
279 }
280 (ArchivedNotice, Tr) => {
281 "Bu depo arşivlenmiş. Yansılar salt okunurdur: değiştirilemez, eşitlenemez ya da silinemez."
282 }
283 (BackToWebhooks, En) => "Back to webhooks",
284 (BackToWebhooks, Tr) => "Web kancalarına dön",
285 (ClearSecret, En) => "Clear the stored password or token",
286 (ClearSecret, Tr) => "Kayıtlı parola veya belirteci temizle",
287 (ColActive, En) => "Active",
288 (ColActive, Tr) => "Etkin",
289 (ColDirection, En) => "Direction",
290 (ColDirection, Tr) => "Yön",
291 (ColEnabled, En) => "Enabled",
292 (ColEnabled, Tr) => "Etkin",
293 (ColEvents, En) => "Events",
294 (ColEvents, Tr) => "Olaylar",
295 (ColInterval, En) => "Interval",
296 (ColInterval, Tr) => "Aralık",
297 (ColLastDelivery, En) => "Last delivery",
298 (ColLastDelivery, Tr) => "Son teslimat",
299 (ColLastSync, En) => "Last sync",
300 (ColLastSync, Tr) => "Son eşitleme",
301 (ColResult, En) => "Result",
302 (ColResult, Tr) => "Sonuç",
303 (CreateWebhook, En) => "Create webhook",
304 (CreateWebhook, Tr) => "Web kancası oluştur",
305 (CurrentUrl, En) => "Current URL:",
306 (CurrentUrl, Tr) => "Mevcut URL:",
307 (DeleteConfirm, En) => "I understand this cannot be undone",
308 (DeleteConfirm, Tr) => "Bunun geri alınamayacağını anlıyorum",
309 (DeleteIntro, En) => {
310 "Deleting removes the webhook and its delivery history. Events stop being sent to its URL at once."
311 }
312 (DeleteIntro, Tr) => {
313 "Silmek, web kancasını ve teslimat geçmişini kaldırır. Olaylar bu URL'ye hemen gönderilmez."
314 }
315 (DeleteMirror, En) => "Delete mirror",
316 (DeleteMirror, Tr) => "Yansıyı sil",
317 (DeleteTextPull, En) => {
318 "Stop mirroring; the repository becomes a normal repository. Its refs stay as they are."
319 }
320 (DeleteTextPull, Tr) => {
321 "Yansılamayı durdurun; depo normal bir depoya dönüşür. Referansları olduğu gibi kalır."
322 }
323 (DeleteTextPush, En) => "Stop pushing to this remote. The remote keeps the refs it has.",
324 (DeleteTextPush, Tr) => {
325 "Bu uzak depoya göndermeyi durdurun. Uzak depo sahip olduğu referansları korur."
326 }
327 (DeleteWebhook, En) => "Delete webhook",
328 (DeleteWebhook, Tr) => "Web kancasını sil",
329 (DirectionPull, En) => "Pull",
330 (DirectionPull, Tr) => "Çekme",
331 (DirectionPush, En) => "Push",
332 (DirectionPush, Tr) => "Gönderme",
333 (EditWebhook, En) => "Edit webhook",
334 (EditWebhook, Tr) => "Web kancasını düzenle",
335 (EnabledField, En) => "Enabled: sync on the interval and after pushes",
336 (EnabledField, Tr) => "Etkin: aralıkla ve göndermelerden sonra eşitlenir",
337 (ErrIntervalMax, En) => "The sync interval can be at most one year.",
338 (ErrIntervalMax, Tr) => "Eşitleme aralığı en fazla bir yıl olabilir.",
339 (ErrIntervalNotWhole, En) => "The sync interval must be a whole number of minutes.",
340 (ErrIntervalNotWhole, Tr) => "Eşitleme aralığı dakika cinsinden tam sayı olmalıdır.",
341 (ErrNoEvent, En) => "Choose at least one event.",
342 (ErrNoEvent, Tr) => "En az bir olay seçin.",
343 (ErrUrlMissing, En) => "Enter the URL the events are sent to.",
344 (ErrUrlMissing, Tr) => "Olayların gönderileceği URL'yi girin.",
345 (ErrUrlRequired, En) => "Enter the URL of the repository to mirror.",
346 (ErrUrlRequired, Tr) => "Yansılanacak deponun URL'sini girin.",
347 (ErrorLabel, En) => "Error",
348 (ErrorLabel, Tr) => "Hata",
349 (EvCreate, En) => "Branch and tag creation",
350 (EvCreate, Tr) => "Dal ve etiket oluşturma",
351 (EvDelete, En) => "Branch and tag deletion",
352 (EvDelete, Tr) => "Dal ve etiket silme",
353 (EvIssueComment, En) => "Comments on issues and pull requests",
354 (EvIssueComment, Tr) => "Sorun ve çekme isteklerindeki yorumlar",
355 (EvIssues, En) => "Issues: opened, closed, reopened, edited, labels, assignees",
356 (EvIssues, Tr) => {
357 "Sorunlar: açıldı, kapatıldı, yeniden açıldı, düzenlendi, etiketler, atananlar"
358 }
359 (EvPullRequest, En) => "Pull requests: opened, closed, reopened, merged, updated",
360 (EvPullRequest, Tr) => {
361 "Çekme istekleri: açıldı, kapatıldı, yeniden açıldı, birleştirildi, güncellendi"
362 }
363 (EvPullRequestReview, En) => "Pull request reviews",
364 (EvPullRequestReview, Tr) => "Çekme isteği incelemeleri",
365 (EvPush, En) => "Pushes to a branch or tag",
366 (EvPush, Tr) => "Bir dala veya etikete gönderimler",
367 (EvRelease, En) => "Releases: published, updated, deleted",
368 (EvRelease, Tr) => "Sürümler: yayımlandı, güncellendi, silindi",
369 (Events, En) => "Events",
370 (Events, Tr) => "Olaylar",
371 (HookArchivedNotice, En) => {
372 "This repository is archived. Webhooks are read-only: hooks cannot be changed, tested or redelivered."
373 }
374 (HookArchivedNotice, Tr) => {
375 "Bu depo arşivlenmiş. Web kancaları salt okunurdur: değiştirilemez, test edilemez ya da yeniden teslim edilemez."
376 }
377 (HookNoticeConfirm, En) => {
378 "Tick the confirmation box to delete the webhook. Nothing was deleted."
379 }
380 (HookNoticeConfirm, Tr) => {
381 "Web kancasını silmek için onay kutusunu işaretleyin. Hiçbir şey silinmedi."
382 }
383 (HookNoticeCreated, En) => "Webhook created. A ping was queued.",
384 (HookNoticeCreated, Tr) => "Web kancası oluşturuldu. Bir ping sıraya alındı.",
385 (HookNoticeDeleted, En) => "Webhook deleted.",
386 (HookNoticeDeleted, Tr) => "Web kancası silindi.",
387 (HookNoticeRedelivered, En) => "The delivery was queued again.",
388 (HookNoticeRedelivered, Tr) => "Teslimat yeniden sıraya alındı.",
389 (HookNoticeSaved, En) => "Webhook saved.",
390 (HookNoticeSaved, Tr) => "Web kancası kaydedildi.",
391 (HookNoticeTested, En) => "A test ping was queued.",
392 (HookNoticeTested, Tr) => "Bir test pingi sıraya alındı.",
393 (IntervalField, En) => "Sync interval in minutes (0 = manual only, at least 10)",
394 (IntervalField, Tr) => "Dakika cinsinden eşitleme aralığı (0 = yalnızca elle, en az 10)",
395 (LastSync, En) => "Last sync:",
396 (LastSync, Tr) => "Son eşitleme:",
397 (ManualOnly, En) => "manual only",
398 (ManualOnly, Tr) => "yalnızca elle",
399 (Mirrors, En) => "Mirrors",
400 (Mirrors, Tr) => "Yansılar",
401 (MirrorsIntro, En) => {
402 "A pull mirror keeps this repository in step with a remote: branches and tags are fetched on the interval and on demand, and pushes are refused. A push mirror sends branches and tags to a remote after every push. Pull requests and issues stay local."
403 }
404 (MirrorsIntro, Tr) => {
405 "Çekme yansısı bu depoyu uzak bir depoyla eşit tutar: dallar ve etiketler aralıkla ya da istendiğinde çekilir, göndermeler reddedilir. Gönderme yansısı her göndermeden sonra dalları ve etiketleri uzak depoya gönderir. Çekme istekleri ve sorunlar yerel kalır."
406 }
407 (Never, En) => "never",
408 (Never, Tr) => "hiç",
409 (No, En) => "no",
410 (No, Tr) => "hayır",
411 (NoDeliveries, En) => "No deliveries yet.",
412 (NoDeliveries, Tr) => "Henüz teslimat yok.",
413 (NoMirrors, En) => "No mirrors yet.",
414 (NoMirrors, Tr) => "Henüz yansı yok.",
415 (NoWebhooks, En) => "No webhooks yet.",
416 (NoWebhooks, Tr) => "Henüz web kancası yok.",
417 (NoneYet, En) => "none yet",
418 (NoneYet, Tr) => "henüz yok",
419 (NoResponse, En) => "no response",
420 (NoResponse, Tr) => "yanıt yok",
421 (NoticeConfirm, En) => {
422 "Tick the confirmation box to delete the mirror. Nothing was deleted."
423 }
424 (NoticeConfirm, Tr) => {
425 "Yansıyı silmek için onay kutusunu işaretleyin. Hiçbir şey silinmedi."
426 }
427 (NoticeCreated, En) => {
428 "Push mirror created. It will be pushed after the next push or on its interval."
429 }
430 (NoticeCreated, Tr) => {
431 "Gönderme yansısı oluşturuldu. Bir sonraki göndermeden sonra ya da aralığı dolduğunda gönderilecek."
432 }
433 (NoticeDeleted, En) => "Mirror deleted.",
434 (NoticeDeleted, Tr) => "Yansı silindi.",
435 (NoticePullCreated, En) => "Pull mirror created. The first sync is queued.",
436 (NoticePullCreated, Tr) => "Çekme yansısı oluşturuldu. İlk eşitleme sıraya alındı.",
437 (NoticePullNotEmpty, En) => {
438 "A pull mirror can only be added to an empty repository. Nothing was changed."
439 }
440 (NoticePullNotEmpty, Tr) => {
441 "Çekme yansısı yalnızca boş bir depoya eklenebilir. Hiçbir şey değiştirilmedi."
442 }
443 (NoticeSaved, En) => "Mirror saved.",
444 (NoticeSaved, Tr) => "Yansı kaydedildi.",
445 (NoticeSynced, En) => "A sync was queued.",
446 (NoticeSynced, Tr) => "Bir eşitleme sıraya alındı.",
447 (PayloadUrl, En) => "Payload URL",
448 (PayloadUrl, Tr) => "Yük URL'si",
449 (PullMirror, En) => "Pull mirror",
450 (PullMirror, Tr) => "Çekme yansısı",
451 (PushMirror, En) => "Push mirror",
452 (PushMirror, Tr) => "Gönderme yansısı",
453 (RecentDeliveries, En) => "Recent deliveries",
454 (RecentDeliveries, Tr) => "Son teslimatlar",
455 (Redeliver, En) => "Redeliver",
456 (Redeliver, Tr) => "Yeniden teslim et",
457 (RemoteUrl, En) => "Remote URL",
458 (RemoteUrl, Tr) => "Uzak URL",
459 (RepositoryUrl, En) => "Repository URL",
460 (RepositoryUrl, Tr) => "Depo URL'si",
461 (RequestBody, En) => "Request body",
462 (RequestBody, Tr) => "İstek gövdesi",
463 (RequestHeaders, En) => "Request headers",
464 (RequestHeaders, Tr) => "İstek üst bilgileri",
465 (Response, En) => "Response",
466 (Response, Tr) => "Yanıt",
467 (ResponseBody, En) => "Response body",
468 (ResponseBody, Tr) => "Yanıt gövdesi",
469 (ResponseHeaders, En) => "Response headers",
470 (ResponseHeaders, Tr) => "Yanıt üst bilgileri",
471 (SaveMirror, En) => "Save mirror",
472 (SaveMirror, Tr) => "Yansıyı kaydet",
473 (SaveWebhook, En) => "Save webhook",
474 (SaveWebhook, Tr) => "Web kancasını kaydet",
475 (Secret, En) => "Secret",
476 (Secret, Tr) => "Gizli anahtar",
477 (SecretHintNew, En) => {
478 "Used to sign each request with HMAC-SHA256. It is stored sealed and is never shown again."
479 }
480 (SecretHintNew, Tr) => {
481 "Her isteği HMAC-SHA256 ile imzalamak için kullanılır. Mühürlü olarak saklanır ve bir daha gösterilmez."
482 }
483 (SecretHintSet, En) => {
484 "A secret is set. Leave the field blank to keep it, or type a new one to replace it."
485 }
486 (SecretHintSet, Tr) => {
487 "Bir gizli anahtar ayarlı. Olduğu gibi bırakmak için alanı boş bırakın ya da yenisini yazarak değiştirin."
488 }
489 (SecretHintUnset, En) => "No secret is set. Type one to add it.",
490 (SecretHintUnset, Tr) => "Gizli anahtar ayarlı değil. Eklemek için bir tane yazın.",
491 (SecretOptional, En) => "Password or token (optional)",
492 (SecretOptional, Tr) => "Parola veya belirteç (isteğe bağlı)",
493 (SecretSet, En) => {
494 "A password or token is set. Leave the field blank to keep it, or type a new one to replace it."
495 }
496 (SecretSet, Tr) => {
497 "Bir parola veya belirteç ayarlı. Olduğu gibi bırakmak için alanı boş bırakın ya da yenisini yazarak değiştirin."
498 }
499 (SecretUnset, En) => "No password or token is set. Type one if the remote needs it.",
500 (SecretUnset, Tr) => {
501 "Parola veya belirteç ayarlı değil. Uzak sunucu gerektiriyorsa bir tane yazın."
502 }
503 (SendTestPing, En) => "Send test ping",
504 (SendTestPing, Tr) => "Test pingi gönder",
505 (SignedWith, En) => " Requests are signed with it, so the receiver can check them.",
506 (SignedWith, Tr) => " İstekler bununla imzalanır, böylece alıcı bunları doğrulayabilir.",
507 (StateFailed, En) => "failed, will retry",
508 (StateFailed, Tr) => "başarısız, yeniden denenecek",
509 (StateGaveUp, En) => "gave up",
510 (StateGaveUp, Tr) => "vazgeçildi",
511 (StateOk, En) => "ok",
512 (StateOk, Tr) => "tamam",
513 (StatePending, En) => "pending",
514 (StatePending, Tr) => "beklemede",
515 (Status, En) => "Status",
516 (Status, Tr) => "Durum",
517 (StatusFailed, En) => "failed",
518 (StatusFailed, Tr) => "başarısız",
519 (StatusLower, En) => "status",
520 (StatusLower, Tr) => "durum",
521 (StatusNotRun, En) => "not run yet",
522 (StatusNotRun, Tr) => "henüz çalışmadı",
523 (StatusOk, En) => "ok",
524 (StatusOk, Tr) => "tamam",
525 (SyncHeading, En) => "Sync",
526 (SyncHeading, Tr) => "Eşitleme",
527 (SyncIntro, En) => "Queues a sync now. The result shows in the list.",
528 (SyncIntro, Tr) => "Şimdi bir eşitleme sıraya alır. Sonuç listede görünür.",
529 (SyncNow, En) => "Sync now",
530 (SyncNow, Tr) => "Şimdi eşitle",
531 (Test, En) => "Test",
532 (Test, Tr) => "Test",
533 (TestIntro, En) => {
534 "Sends a ping event to the URL, to check that it is reachable and signs requests correctly."
535 }
536 (TestIntro, Tr) => {
537 "URL'ye bir ping olayı gönderir; erişilebilir olduğunu ve istekleri doğru imzaladığını denetler."
538 }
539 (UrlHintKeep, En) => "Leave blank to keep the current URL.",
540 (UrlHintKeep, Tr) => "Mevcut URL'yi korumak için boş bırakın.",
541 (UrlHintNew, En) => {
542 "HTTPS only, unless the instance allows HTTP. Addresses inside the network are refused unless the instance allows them."
543 }
544 (UrlHintNew, Tr) => {
545 "Sunucu izin vermedikçe yalnızca HTTPS kullanılır. Ağ içindeki adresler de sunucu izin vermedikçe reddedilir."
546 }
547 (UsernameOptional, En) => "Username (optional)",
548 (UsernameOptional, Tr) => "Kullanıcı adı (isteğe bağlı)",
549 (Webhooks, En) => "Webhooks",
550 (Webhooks, Tr) => "Web kancaları",
551 (WebhooksIntro, En) => {
552 "Each active webhook receives the events it subscribes to as signed JSON POST requests. The last delivery shows whether the receiver answered with a 2xx status."
553 }
554 (WebhooksIntro, Tr) => {
555 "Etkin her web kancası, abone olduğu olayları imzalı JSON POST istekleri olarak alır. Son teslimat, alıcının 2xx durumuyla yanıt verip vermediğini gösterir."
556 }
557 (Yes, En) => "yes",
558 (Yes, Tr) => "evet",
559 }
560}
561
562/// "The sync interval must be 0 (manual only) or at least {min} minutes."
563pub fn interval_too_short(lang: Lang, min: u32) -> String {
564 match lang {
565 Lang::En => format!("The sync interval must be 0 (manual only) or at least {min} minutes."),
566 Lang::Tr => {
567 format!("Eşitleme aralığı 0 (yalnızca elle) ya da en az {min} dakika olmalıdır.")
568 }
569 }
570}
571
572/// "The username can be at most {max} characters and cannot contain a colon."
573pub fn username_too_long(lang: Lang, max: usize) -> String {
574 match lang {
575 Lang::En => {
576 format!("The username can be at most {max} characters and cannot contain a colon.")
577 }
578 Lang::Tr => format!(
579 "Kullanıcı adı en fazla {max} karakter olabilir ve iki nokta üst üste içeremez."
580 ),
581 }
582}
583
584/// "The password or token can be at most {max} characters."
585pub fn password_too_long(lang: Lang, max: usize) -> String {
586 match lang {
587 Lang::En => format!("The password or token can be at most {max} characters."),
588 Lang::Tr => format!("Parola veya belirteç en fazla {max} karakter olabilir."),
589 }
590}
591
592/// "The secret can be at most {max} characters. Nothing was saved."
593pub fn secret_too_long(lang: Lang, max: usize) -> String {
594 match lang {
595 Lang::En => format!("The secret can be at most {max} characters. Nothing was saved."),
596 Lang::Tr => {
597 format!("Gizli anahtar en fazla {max} karakter olabilir. Hiçbir şey kaydedilmedi.")
598 }
599 }
600}
601
602/// "every 8 h" or "8 saatte bir".
603pub fn every_hours(lang: Lang, hours: u32) -> String {
604 match lang {
605 Lang::En => format!("every {hours} h"),
606 Lang::Tr => format!("{hours} saatte bir"),
607 }
608}
609
610/// "every 90 min" or "90 dakikada bir".
611pub fn every_minutes(lang: Lang, minutes: u32) -> String {
612 match lang {
613 Lang::En => format!("every {minutes} min"),
614 Lang::Tr => format!("{minutes} dakikada bir"),
615 }
616}
617
618/// "The last 50 deliveries. Open one to see what was sent and what came back."
619pub fn recent_deliveries(lang: Lang, shown: u32) -> String {
620 match lang {
621 Lang::En => format!(
622 "The last {shown} deliveries. Open one to see what was sent and what came back."
623 ),
624 Lang::Tr => {
625 format!("Son {shown} teslimat. Birini açıp gönderileni ve alınan yanıtı görün.")
626 }
627 }
628}
629
630#[cfg(test)]
631mod tests {
632 use super::*;
633
634 #[test]
635 fn every_key_has_an_english_and_a_turkish_phrase() {
636 for key in ALL {
637 assert!(!t(Lang::En, *key).is_empty(), "{key:?} has no English");
638 assert!(!t(Lang::Tr, *key).is_empty(), "{key:?} has no Turkish");
639 }
640 }
641
642 #[test]
643 fn turkish_differs_from_english_for_some_keys() {
644 let differing = ALL
645 .iter()
646 .filter(|key| t(Lang::En, **key) != t(Lang::Tr, **key))
647 .count();
648 assert!(differing >= 3, "only {differing} keys differ");
649 }
650
651 #[test]
652 fn helpers_keep_english_wording() {
653 assert_eq!(every_hours(Lang::En, 8), "every 8 h");
654 assert_eq!(every_minutes(Lang::En, 90), "every 90 min");
655 assert_eq!(
656 recent_deliveries(Lang::En, 50),
657 "The last 50 deliveries. Open one to see what was sent and what came back."
658 );
659 }
660}