From f3b6759ab7ca55141b45df786967ce8efcb5ffb2 Mon Sep 17 00:00:00 2001 From: 0ko <0ko@noreply.codeberg.org> Date: Tue, 2 Apr 2024 18:43:12 +0500 Subject: [PATCH] [I18N] Allow custom repo size format Following https://codeberg.org/forgejo/forgejo/pulls/2528#issuecomment-1721846 - simplify the code - allow to have custom format in translations - provide proper Russian translation because test depends on it --- models/repo/repo.go | 11 ++--------- options/locale/locale_en-US.ini | 1 + options/locale/locale_ru-RU.ini | 3 ++- tests/integration/size_translations_test.go | 2 +- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/models/repo/repo.go b/models/repo/repo.go index 350dc86d4b..86bd368d0b 100644 --- a/models/repo/repo.go +++ b/models/repo/repo.go @@ -234,6 +234,7 @@ type SizeDetail struct { } // SizeDetails forms a struct with various size details about repository +// Note: SizeDetailsString below expects it to have 2 entries func (repo *Repository) SizeDetails() []SizeDetail { sizeDetails := []SizeDetail{ { @@ -250,16 +251,8 @@ func (repo *Repository) SizeDetails() []SizeDetail { // SizeDetailsString returns a concatenation of all repository size details as a string func (repo *Repository) SizeDetailsString(locale translation.Locale) string { - var str strings.Builder sizeDetails := repo.SizeDetails() - for i, detail := range sizeDetails { - if i > 0 { - // TODO: use semicolon if decimal point of user localization is a comma - str.WriteString(", ") - } - str.WriteString(fmt.Sprintf("%s: %s", detail.Name, locale.TrSize(detail.Size))) - } - return str.String() + return locale.TrString("repo.size_format", sizeDetails[0].Name, locale.TrSize(sizeDetails[0].Size), sizeDetails[1].Name, locale.TrSize(sizeDetails[1].Size)) } func (repo *Repository) LogString() string { diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 7660af8be4..e595f40269 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1011,6 +1011,7 @@ owner_helper = Some organizations may not show up in the dropdown due to a maxim repo_name = Repository name repo_name_helper = Good repository names use short, memorable and unique keywords. repo_size = Repository Size +size_format = %[1]s: %[2]s, %[3]s: %[4]s template = Template template_select = Select a template. template_helper = Make repository a template diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini index 55e850e473..760b7b2528 100644 --- a/options/locale/locale_ru-RU.ini +++ b/options/locale/locale_ru-RU.ini @@ -993,6 +993,7 @@ owner_helper=Некоторые организации могут не отоб repo_name=Название репозитория repo_name_helper=Лучшие названия репозиториев состоят из коротких, легко запоминаемых и уникальных ключевых слов. repo_size=Размер репозитория +size_format = `%[1]s: %[2]s; %[3]s: %[4]s` template=Шаблон template_select=Выбрать шаблон. template_helper=Сделать репозиторий шаблоном @@ -3773,4 +3774,4 @@ keyword_search_unavailable = Поиск по ключевым словам не match_tooltip = Включать только результаты, точно соответствующие запросу code_search_unavailable = Поиск по коду сейчас недоступен. Уточните подробности у администратора. runner_kind = Поиск раннеров... -code_search_by_git_grep = Эти результаты получены через «git grep». Результатов может быть больше, если администратор сервера включит индексатор кода. \ No newline at end of file +code_search_by_git_grep = Эти результаты получены через «git grep». Результатов может быть больше, если администратор сервера включит индексатор кода. diff --git a/tests/integration/size_translations_test.go b/tests/integration/size_translations_test.go index 0a296ad385..78cd16795d 100644 --- a/tests/integration/size_translations_test.go +++ b/tests/integration/size_translations_test.go @@ -87,7 +87,7 @@ func TestDataSizeTranslation(t *testing.T) { fullSize, exists := repo.Attr("data-tooltip-content") assert.True(t, exists) fullSize = noDigits.ReplaceAllString(fullSize, "") - assert.Equal(t, "git: КиБ, lfs: Б", fullSize) + assert.Equal(t, "git: КиБ; lfs: Б", fullSize) // Check if file sizes are correclty translated testFileSizeTranslated(t, session, path.Join(testUser, testRepoName, "src/branch/main/137byteFile.txt"), "137 Б")