forge
ExploreLog in

Tahinli/forge

public
0 watching
★ 0
13.0 KiB
1//! Strings for this page group. See `docs` in `super` for the pattern.
2
3use super::Lang;
4use std::fmt::Display;
5
6#[derive(Clone, Copy, Debug, PartialEq, Eq)]
7pub enum K {
8 // pulls_list.rs
9 PrStateOpenLabel,
10 PrStateMergedLabel,
11 PrStateClosedLabel,
12 StateOpen,
13 StateMerged,
14 StateClosed,
15 ListStateNavLabel,
16 NewPullRequest,
17 SearchTitles,
18 SortLabel,
19 Search,
20 FiltersApplied,
21 ClearFilters,
22 NoPullRequestsYet,
23 NoPullRequestsMatch,
24 SortNewest,
25 SortOldest,
26 SortUpdated,
27 MetaBeforeTime,
28 MetaAfterTime,
29 Newer,
30 Older,
31
32 // pull_files.rs
33 FinishReview,
34 ReviewSummary,
35 ReviewType,
36 CommentChoice,
37 ApproveChoice,
38 RequestChangesChoice,
39 SubmitReview,
40 DiscardPending,
41
42 // pull_branch.rs
43 BranchErrProtected,
44 BranchErrDefault,
45 BranchErrMoved,
46 BranchErrMissing,
47 BranchErrNotAllowed,
48 BranchPrefix,
49 BranchWasDeleted,
50 BranchStillHere,
51 RestoreBranch,
52 DeleteBranch,
53
54 // compare.rs
55 ComparingPrefix,
56 Unrelated,
57 NothingToCompare,
58 Committed,
59 BrowseFiles,
60 OpenPullRequest,
61 TitleLabel,
62 DescriptionLabel,
63 CreatePullRequest,
64 AlreadyOpen,
65 ViewIt,
66 ArchivedNoPulls,
67 CompareBranches,
68 BasePrefix,
69 HeadPrefix,
70 BranchOrOwner,
71 Compare,
72 UnknownBranches,
73
74 // Diff section subjects (pull_files.rs, compare.rs).
75 ThisPullRequest,
76 ThisComparison,
77}
78
79pub fn t(lang: Lang, key: K) -> &'static str {
80 use K::*;
81 use Lang::*;
82 match (key, lang) {
83 (PrStateOpenLabel, En) => "Open pull request",
84 (PrStateOpenLabel, Tr) => "Açık çekme isteği",
85 (PrStateMergedLabel, En) => "Merged pull request",
86 (PrStateMergedLabel, Tr) => "Birleştirilmiş çekme isteği",
87 (PrStateClosedLabel, En) => "Closed pull request",
88 (PrStateClosedLabel, Tr) => "Kapatılmış çekme isteği",
89 (StateOpen, En) => "Open",
90 (StateOpen, Tr) => "Açık",
91 (StateMerged, En) => "Merged",
92 (StateMerged, Tr) => "Birleştirildi",
93 (StateClosed, En) => "Closed",
94 (StateClosed, Tr) => "Kapatıldı",
95 (ListStateNavLabel, En) => "Pull requests by state",
96 (ListStateNavLabel, Tr) => "Duruma göre çekme istekleri",
97 (NewPullRequest, En) => "New pull request",
98 (NewPullRequest, Tr) => "Yeni çekme isteği",
99 (SearchTitles, En) => "Search titles",
100 (SearchTitles, Tr) => "Başlıklarda ara",
101 (SortLabel, En) => "Sort",
102 (SortLabel, Tr) => "Sırala",
103 (Search, En) => "Search",
104 (Search, Tr) => "Ara",
105 (FiltersApplied, En) => "Filters applied · ",
106 (FiltersApplied, Tr) => "Filtreler uygulandı · ",
107 (ClearFilters, En) => "Clear filters",
108 (ClearFilters, Tr) => "Filtreleri temizle",
109 (NoPullRequestsYet, En) => "No pull requests yet",
110 (NoPullRequestsYet, Tr) => "Henüz çekme isteği yok",
111 (NoPullRequestsMatch, En) => "No pull requests match these filters.",
112 (NoPullRequestsMatch, Tr) => "Bu filtrelere uyan çekme isteği yok.",
113 (SortNewest, En) => "Newest",
114 (SortNewest, Tr) => "En yeni",
115 (SortOldest, En) => "Oldest",
116 (SortOldest, Tr) => "En eski",
117 (SortUpdated, En) => "Recently updated",
118 (SortUpdated, Tr) => "Son güncellenen",
119 (MetaBeforeTime, En) => " opened ",
120 (MetaBeforeTime, Tr) => " · ",
121 (MetaAfterTime, En) => " by ",
122 (MetaAfterTime, Tr) => " tarafından açıldı · ",
123 (Newer, En) => "Newer",
124 (Newer, Tr) => "Daha yeni",
125 (Older, En) => "Older",
126 (Older, Tr) => "Daha eski",
127
128 (FinishReview, En) => "Finish your review",
129 (FinishReview, Tr) => "İncelemeyi tamamla",
130 (ReviewSummary, En) => "Review summary",
131 (ReviewSummary, Tr) => "İnceleme özeti",
132 (ReviewType, En) => "Review type",
133 (ReviewType, Tr) => "İnceleme türü",
134 (CommentChoice, En) => " Comment",
135 (CommentChoice, Tr) => " Yorum",
136 (ApproveChoice, En) => " Approve",
137 (ApproveChoice, Tr) => " Onayla",
138 (RequestChangesChoice, En) => " Request changes",
139 (RequestChangesChoice, Tr) => " Değişiklik iste",
140 (SubmitReview, En) => "Submit review",
141 (SubmitReview, Tr) => "İncelemeyi gönder",
142 (DiscardPending, En) => "Discard pending comments",
143 (DiscardPending, Tr) => "Bekleyen yorumları sil",
144
145 (BranchErrProtected, En) => "This branch is protected, so it cannot be deleted.",
146 (BranchErrProtected, Tr) => "Bu dal korumalı olduğu için silinemez.",
147 (BranchErrDefault, En) => "The default branch cannot be deleted.",
148 (BranchErrDefault, Tr) => "Varsayılan dal silinemez.",
149 (BranchErrMoved, En) => {
150 "The branch has changed since this page loaded, or it already exists. Reload and try again."
151 }
152 (BranchErrMoved, Tr) => {
153 "Dal, sayfa yüklendikten sonra değişti ya da zaten var. Sayfayı yenileyip tekrar deneyin."
154 }
155 (BranchErrMissing, En) => "The branch or its commit is missing, so it cannot be changed.",
156 (BranchErrMissing, Tr) => "Dal ya da commit'i eksik olduğu için değiştirilemez.",
157 (BranchErrNotAllowed, En) => {
158 "A branch can only be deleted or restored once its pull request is merged or closed."
159 }
160 (BranchErrNotAllowed, Tr) => {
161 "Bir dal, çekme isteği birleştirildikten ya da kapatıldıktan sonra silinebilir veya geri yüklenebilir."
162 }
163 (BranchPrefix, En) => "The branch ",
164 (BranchPrefix, Tr) => "Dal ",
165 (BranchWasDeleted, En) => " was deleted.",
166 (BranchWasDeleted, Tr) => " silindi.",
167 (BranchStillHere, En) => " is still here.",
168 (BranchStillHere, Tr) => " hâlâ duruyor.",
169 (RestoreBranch, En) => "Restore branch",
170 (RestoreBranch, Tr) => "Dalı geri yükle",
171 (DeleteBranch, En) => "Delete branch",
172 (DeleteBranch, Tr) => "Dalı sil",
173
174 (ComparingPrefix, En) => "Comparing ",
175 (ComparingPrefix, Tr) => "Karşılaştırma: ",
176 (Unrelated, En) => "base and head have entirely different histories",
177 (Unrelated, Tr) => "base ve head'in geçmişleri tamamen farklı.",
178 (NothingToCompare, En) => "There isn't anything to compare.",
179 (NothingToCompare, Tr) => "Karşılaştırılacak bir şey yok.",
180 (Committed, En) => "committed",
181 (Committed, Tr) => "commit etti",
182 (BrowseFiles, En) => "Browse files",
183 (BrowseFiles, Tr) => "Dosyalara göz at",
184 (OpenPullRequest, En) => "Open a pull request",
185 (OpenPullRequest, Tr) => "Çekme isteği aç",
186 (TitleLabel, En) => "Title ",
187 (TitleLabel, Tr) => "Başlık ",
188 (DescriptionLabel, En) => "Description",
189 (DescriptionLabel, Tr) => "Açıklama",
190 (CreatePullRequest, En) => "Create pull request",
191 (CreatePullRequest, Tr) => "Çekme isteği oluştur",
192 (AlreadyOpen, En) => "A pull request is already open for this comparison: ",
193 (AlreadyOpen, Tr) => "Bu karşılaştırma için zaten açık bir çekme isteği var. ",
194 (ViewIt, En) => "view it",
195 (ViewIt, Tr) => "Görüntüle",
196 (ArchivedNoPulls, En) => "This repository is archived, so pull requests can't be opened.",
197 (ArchivedNoPulls, Tr) => "Bu depo arşivlendiği için çekme isteği açılamaz.",
198 (CompareBranches, En) => "Compare branches",
199 (CompareBranches, Tr) => "Dalları karşılaştır",
200 (BasePrefix, En) => "Base ",
201 (BasePrefix, Tr) => "Base ",
202 (HeadPrefix, En) => "Head ",
203 (HeadPrefix, Tr) => "Head ",
204 (BranchOrOwner, En) => "branch or owner:branch",
205 (BranchOrOwner, Tr) => "dal veya owner:branch",
206 (Compare, En) => "Compare",
207 (Compare, Tr) => "Karşılaştır",
208 (UnknownBranches, En) => "unknown base or head branch",
209 (UnknownBranches, Tr) => "bilinmeyen base veya head dalı",
210 (ThisPullRequest, En) => "this pull request",
211 (ThisPullRequest, Tr) => "bu çekme isteği",
212 (ThisComparison, En) => "this comparison",
213 (ThisComparison, Tr) => "bu karşılaştırma",
214 }
215}
216
217/// "3 comments" / "1 comment", and "3 yorum" in Turkish.
218pub fn comments(lang: Lang, count: i64) -> String {
219 match lang {
220 Lang::En => format!("{count} comment{}", if count == 1 { "" } else { "s" }),
221 Lang::Tr => format!("{count} yorum"),
222 }
223}
224
225/// "1 commit" / "3 commits". Turkish keeps the English word "commit".
226pub fn commit_count(lang: Lang, count: usize) -> String {
227 match lang {
228 Lang::En => format!("{count} commit{}", if count == 1 { "" } else { "s" }),
229 Lang::Tr => format!("{count} commit"),
230 }
231}
232
233/// The review bar's pending comment line.
234pub fn pending_comments(lang: Lang, count: usize) -> String {
235 match (lang, count) {
236 (Lang::En, 0) => "No pending comments.".to_owned(),
237 (Lang::En, 1) => "1 pending comment.".to_owned(),
238 (Lang::En, n) => format!("{n} pending comments."),
239 (Lang::Tr, 0) => "Bekleyen yorum yok.".to_owned(),
240 (Lang::Tr, n) => format!("{n} bekleyen yorum."),
241 }
242}
243
244/// The "Open N" state tab on the list.
245pub fn tab_open(lang: Lang, count: impl Display) -> String {
246 match lang {
247 Lang::En => format!("Open {count}"),
248 Lang::Tr => format!("Açık {count}"),
249 }
250}
251
252/// The "Closed N" state tab on the list.
253pub fn tab_closed(lang: Lang, count: impl Display) -> String {
254 match lang {
255 Lang::En => format!("Closed {count}"),
256 Lang::Tr => format!("Kapalı {count}"),
257 }
258}
259
260/// The "All N" state tab on the list.
261pub fn tab_all(lang: Lang, count: impl Display) -> String {
262 match lang {
263 Lang::En => format!("All {count}"),
264 Lang::Tr => format!("Tümü {count}"),
265 }
266}
267
268/// The pager's "Page N" label.
269pub fn page_number(lang: Lang, page: impl Display) -> String {
270 match lang {
271 Lang::En => format!("Page {page}"),
272 Lang::Tr => format!("Sayfa {page}"),
273 }
274}
275
276/// The browser title of the pull request list.
277pub fn list_title(lang: Lang, owner: &str, repo: &str) -> String {
278 match lang {
279 Lang::En => format!("{owner}/{repo} \u{b7} Pull requests"),
280 Lang::Tr => format!("{owner}/{repo} \u{b7} Çekme istekleri"),
281 }
282}
283
284#[cfg(test)]
285mod tests {
286 use super::*;
287
288 const ALL: &[K] = &[
289 K::PrStateOpenLabel,
290 K::PrStateMergedLabel,
291 K::PrStateClosedLabel,
292 K::StateOpen,
293 K::StateMerged,
294 K::StateClosed,
295 K::ListStateNavLabel,
296 K::NewPullRequest,
297 K::SearchTitles,
298 K::SortLabel,
299 K::Search,
300 K::FiltersApplied,
301 K::ClearFilters,
302 K::NoPullRequestsYet,
303 K::NoPullRequestsMatch,
304 K::SortNewest,
305 K::SortOldest,
306 K::SortUpdated,
307 K::MetaBeforeTime,
308 K::MetaAfterTime,
309 K::Newer,
310 K::Older,
311 K::FinishReview,
312 K::ReviewSummary,
313 K::ReviewType,
314 K::CommentChoice,
315 K::ApproveChoice,
316 K::RequestChangesChoice,
317 K::SubmitReview,
318 K::DiscardPending,
319 K::BranchErrProtected,
320 K::BranchErrDefault,
321 K::BranchErrMoved,
322 K::BranchErrMissing,
323 K::BranchErrNotAllowed,
324 K::BranchPrefix,
325 K::BranchWasDeleted,
326 K::BranchStillHere,
327 K::RestoreBranch,
328 K::DeleteBranch,
329 K::ComparingPrefix,
330 K::Unrelated,
331 K::NothingToCompare,
332 K::Committed,
333 K::BrowseFiles,
334 K::OpenPullRequest,
335 K::TitleLabel,
336 K::DescriptionLabel,
337 K::CreatePullRequest,
338 K::AlreadyOpen,
339 K::ViewIt,
340 K::ArchivedNoPulls,
341 K::CompareBranches,
342 K::BasePrefix,
343 K::HeadPrefix,
344 K::BranchOrOwner,
345 K::Compare,
346 K::UnknownBranches,
347 K::ThisPullRequest,
348 K::ThisComparison,
349 ];
350
351 #[test]
352 fn every_key_has_both_languages() {
353 let mut differing = 0;
354 for &key in ALL {
355 let en = t(Lang::En, key);
356 let tr = t(Lang::Tr, key);
357 assert!(!en.is_empty(), "{key:?} has an empty English string");
358 assert!(!tr.is_empty(), "{key:?} has an empty Turkish string");
359 if en != tr {
360 differing += 1;
361 }
362 }
363 assert!(differing >= 3);
364 }
365
366 #[test]
367 fn counted_strings_match_english() {
368 assert_eq!(comments(Lang::En, 1), "1 comment");
369 assert_eq!(comments(Lang::En, 3), "3 comments");
370 assert_eq!(comments(Lang::Tr, 3), "3 yorum");
371 assert_eq!(commit_count(Lang::En, 1), "1 commit");
372 assert_eq!(commit_count(Lang::En, 2), "2 commits");
373 assert_eq!(pending_comments(Lang::En, 0), "No pending comments.");
374 assert_eq!(pending_comments(Lang::Tr, 2), "2 bekleyen yorum.");
375 assert_eq!(tab_open(Lang::En, 2), "Open 2");
376 assert_eq!(tab_open(Lang::Tr, 2), "Açık 2");
377 assert_eq!(page_number(Lang::Tr, 4), "Sayfa 4");
378 assert_eq!(list_title(Lang::En, "a", "b"), "a/b \u{b7} Pull requests");
379 }
380}