diff --git a/Makefile b/Makefile
index 62cf4e536d..f9c02cfbf3 100644
--- a/Makefile
+++ b/Makefile
@@ -418,7 +418,7 @@ lint-frontend: lint-js lint-css
 lint-frontend-fix: lint-js-fix lint-css-fix
 
 .PHONY: lint-backend
-lint-backend: lint-go lint-go-vet lint-editorconfig lint-renovate
+lint-backend: lint-go lint-go-vet lint-editorconfig lint-renovate lint-locale
 
 .PHONY: lint-backend-fix
 lint-backend-fix: lint-go-fix lint-go-vet lint-editorconfig
@@ -461,6 +461,10 @@ lint-renovate: node_modules
 	@if grep --quiet --extended-regexp -e '^( WARN:|ERROR:)' .lint-renovate ; then cat .lint-renovate ; rm .lint-renovate ; exit 1 ; fi
 	@rm .lint-renovate
 
+.PHONY: lint-locale
+lint-locale:
+	$(GO) run build/lint-locale.go
+
 .PHONY: lint-md
 lint-md: node_modules
 	npx markdownlint docs *.md
diff --git a/build/lint-locale.go b/build/lint-locale.go
new file mode 100644
index 0000000000..d403eaa70d
--- /dev/null
+++ b/build/lint-locale.go
@@ -0,0 +1,156 @@
+// Copyright 2024 The Forgejo Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+//nolint:forbidigo
+package main
+
+import (
+	"fmt"
+	"html"
+	"io/fs"
+	"os"
+	"path/filepath"
+	"regexp"
+	"slices"
+	"strings"
+
+	"github.com/microcosm-cc/bluemonday"
+	"github.com/sergi/go-diff/diffmatchpatch"
+	"gopkg.in/ini.v1" //nolint:depguard
+)
+
+var (
+	policy     *bluemonday.Policy
+	tagRemover *strings.Replacer
+	safeURL    = "https://TO-BE-REPLACED.COM"
+
+	// Matches href="", href="#", href="%s", href="#%s", href="%[1]s" and href="#%[1]s".
+	placeHolderRegex = regexp.MustCompile(`href="#?(%s|%\[\d\]s)?"`)
+)
+
+func initBlueMondayPolicy() {
+	policy = bluemonday.NewPolicy()
+
+	policy.RequireParseableURLs(true)
+	policy.AllowURLSchemes("https")
+
+	// Only allow safe URL on href.
+	// Only allow target="_blank".
+	// Only allow rel="nopener noreferrer", rel="noopener" and rel="noreferrer".
+	// Only allow placeholder on id and class.
+	policy.AllowAttrs("href").Matching(regexp.MustCompile("^" + regexp.QuoteMeta(safeURL) + "$")).OnElements("a")
+	policy.AllowAttrs("target").Matching(regexp.MustCompile("^_blank$")).OnElements("a")
+	policy.AllowAttrs("rel").Matching(regexp.MustCompile("^(noopener|noreferrer|noopener noreferrer)$")).OnElements("a")
+	policy.AllowAttrs("id", "class").Matching(regexp.MustCompile(`^%s|%\[\d\]s$`)).OnElements("a")
+
+	// Only allow positional placeholder as class.
+	positionalPlaceholderRe := regexp.MustCompile(`^%\[\d\]s$`)
+	policy.AllowAttrs("class").Matching(positionalPlaceholderRe).OnElements("strong")
+	policy.AllowAttrs("id").Matching(positionalPlaceholderRe).OnElements("code")
+
+	// Allowed elements with no attributes. Must be a recognized tagname.
+	policy.AllowElements("strong", "br", "b", "strike", "code", "i")
+
+	// TODO: Remove <c> in `actions.workflow.dispatch.trigger_found`.
+	policy.AllowNoAttrs().OnElements("c")
+}
+
+func initRemoveTags() {
+	oldnew := []string{}
+	for _, el := range []string{
+		"email@example.com", "correu@example.com", "epasts@domens.lv", "email@exemplo.com", "eposta@ornek.com", "email@példa.hu", "email@esempio.it",
+		"user", "utente", "lietotājs", "gebruiker", "usuário", "Benutzer", "Bruker",
+		"server", "servidor", "kiszolgáló", "serveris",
+		"label", "etichetta", "etiķete", "rótulo", "Label", "utilizador",
+		"filename", "bestandsnaam", "dosyaadi", "fails", "nome do arquivo",
+	} {
+		oldnew = append(oldnew, "<"+el+">", "REPLACED-TAG")
+	}
+
+	tagRemover = strings.NewReplacer(oldnew...)
+}
+
+func preprocessTranslationValue(value string) string {
+	// href should be a parsable URL, replace placeholder strings with a safe url.
+	value = placeHolderRegex.ReplaceAllString(value, `href="`+safeURL+`"`)
+
+	// Remove tags that aren't tags but will be parsed as tags. We already know they are safe and sound.
+	value = tagRemover.Replace(value)
+
+	return value
+}
+
+func checkLocaleContent(localeContent []byte) []string {
+	// Same configuration as Forgejo uses.
+	cfg := ini.Empty(ini.LoadOptions{
+		IgnoreContinuation: true,
+	})
+	cfg.NameMapper = ini.SnackCase
+
+	if err := cfg.Append(localeContent); err != nil {
+		panic(err)
+	}
+
+	dmp := diffmatchpatch.New()
+	errors := []string{}
+
+	for _, section := range cfg.Sections() {
+		for _, key := range section.Keys() {
+			var trKey string
+			if section.Name() == "" || section.Name() == "DEFAULT" || section.Name() == "common" {
+				trKey = key.Name()
+			} else {
+				trKey = section.Name() + "." + key.Name()
+			}
+
+			keyValue := preprocessTranslationValue(key.Value())
+
+			if html.UnescapeString(policy.Sanitize(keyValue)) != keyValue {
+				// Create a nice diff of the difference.
+				diffs := dmp.DiffMain(keyValue, html.UnescapeString(policy.Sanitize(keyValue)), false)
+				diffs = dmp.DiffCleanupSemantic(diffs)
+				diffs = dmp.DiffCleanupEfficiency(diffs)
+
+				errors = append(errors, trKey+": "+dmp.DiffPrettyText(diffs))
+			}
+		}
+	}
+	return errors
+}
+
+func main() {
+	initBlueMondayPolicy()
+	initRemoveTags()
+
+	localeDir := filepath.Join("options", "locale")
+	localeFiles, err := os.ReadDir(localeDir)
+	if err != nil {
+		panic(err)
+	}
+
+	if !slices.ContainsFunc(localeFiles, func(e fs.DirEntry) bool { return strings.HasSuffix(e.Name(), ".ini") }) {
+		fmt.Println("No locale files found")
+		os.Exit(1)
+	}
+
+	exitCode := 0
+	for _, localeFile := range localeFiles {
+		if !strings.HasSuffix(localeFile.Name(), ".ini") {
+			continue
+		}
+
+		localeContent, err := os.ReadFile(filepath.Join(localeDir, localeFile.Name()))
+		if err != nil {
+			panic(err)
+		}
+
+		if err := checkLocaleContent(localeContent); len(err) > 0 {
+			fmt.Println(localeFile.Name())
+			fmt.Println(strings.Join(err, "\n"))
+			fmt.Println()
+			exitCode = 1
+		}
+	}
+
+	os.Exit(exitCode)
+}
diff --git a/build/lint-locale_test.go b/build/lint-locale_test.go
new file mode 100644
index 0000000000..b33dc9af2b
--- /dev/null
+++ b/build/lint-locale_test.go
@@ -0,0 +1,65 @@
+// Copyright 2024 The Forgejo Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+package main
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestLocalizationPolicy(t *testing.T) {
+	initBlueMondayPolicy()
+	initRemoveTags()
+
+	t.Run("Remove tags", func(t *testing.T) {
+		assert.Empty(t, checkLocaleContent([]byte(`hidden_comment_types_description = Comment types checked here will not be shown inside issue pages. Checking "Label" for example removes all "<user> added/removed <label>" comments.`)))
+
+		assert.EqualValues(t, []string{"key: \x1b[31m<not-an-allowed-key>\x1b[0m REPLACED-TAG"}, checkLocaleContent([]byte(`key = "<not-an-allowed-key> <label>"`)))
+		assert.EqualValues(t, []string{"key: \x1b[31m<user@example.com>\x1b[0m REPLACED-TAG"}, checkLocaleContent([]byte(`key = "<user@example.com> <email@example.com>"`)))
+		assert.EqualValues(t, []string{"key: \x1b[31m<tag>\x1b[0m REPLACED-TAG \x1b[31m</tag>\x1b[0m"}, checkLocaleContent([]byte(`key = "<tag> <email@example.com> </tag>"`)))
+	})
+
+	t.Run("Specific exception", func(t *testing.T) {
+		assert.Empty(t, checkLocaleContent([]byte(`workflow.dispatch.trigger_found = This workflow has a <c>workflow_dispatch</c> event trigger.`)))
+		assert.Empty(t, checkLocaleContent([]byte(`pulls.title_desc_one = wants to merge %[1]d commit from <code>%[2]s</code> into <code id="%[4]s">%[3]s</code>`)))
+		assert.Empty(t, checkLocaleContent([]byte(`editor.commit_directly_to_this_branch = Commit directly to the <strong class="%[2]s">%[1]s</strong> branch.`)))
+
+		assert.EqualValues(t, []string{"workflow.dispatch.trigger_found: This workflow has a \x1b[31m<d>\x1b[0mworkflow_dispatch\x1b[31m</d>\x1b[0m event trigger."}, checkLocaleContent([]byte(`workflow.dispatch.trigger_found = This workflow has a <d>workflow_dispatch</d> event trigger.`)))
+		assert.EqualValues(t, []string{"key: <code\x1b[31m id=\"branch_targe\"\x1b[0m>%[3]s</code>"}, checkLocaleContent([]byte(`key = <code id="branch_targe">%[3]s</code>`)))
+		assert.EqualValues(t, []string{"key: <a\x1b[31m class=\"ui sh\"\x1b[0m href=\"https://TO-BE-REPLACED.COM\">"}, checkLocaleContent([]byte(`key = <a class="ui sh" href="%[3]s">`)))
+		assert.EqualValues(t, []string{"key: <a\x1b[31m class=\"js-click-me\"\x1b[0m href=\"https://TO-BE-REPLACED.COM\">"}, checkLocaleContent([]byte(`key = <a class="js-click-me" href="%[3]s">`)))
+		assert.EqualValues(t, []string{"key: <strong\x1b[31m class=\"branch-target\"\x1b[0m>%[1]s</strong>"}, checkLocaleContent([]byte(`key = <strong class="branch-target">%[1]s</strong>`)))
+	})
+
+	t.Run("General safe tags", func(t *testing.T) {
+		assert.Empty(t, checkLocaleContent([]byte("error404 = The page you are trying to reach either <strong>does not exist</strong> or <strong>you are not authorized</strong> to view it.")))
+		assert.Empty(t, checkLocaleContent([]byte("teams.specific_repositories_helper = Members will only have access to repositories explicitly added to the team. Selecting this <strong>will not</strong> automatically remove repositories already added with <i>All repositories</i>.")))
+		assert.Empty(t, checkLocaleContent([]byte("sqlite_helper = File path for the SQLite3 database.<br>Enter an absolute path if you run Forgejo as a service.")))
+		assert.Empty(t, checkLocaleContent([]byte("hi_user_x = Hi <b>%s</b>,")))
+
+		assert.EqualValues(t, []string{"error404: The page you are trying to reach either <strong\x1b[31m title='aaa'\x1b[0m>does not exist</strong> or <strong>you are not authorized</strong> to view it."}, checkLocaleContent([]byte("error404 = The page you are trying to reach either <strong title='aaa'>does not exist</strong> or <strong>you are not authorized</strong> to view it.")))
+	})
+
+	t.Run("<a>", func(t *testing.T) {
+		assert.Empty(t, checkLocaleContent([]byte(`admin.new_user.text = Please <a href="%s">click here</a> to manage this user from the admin panel.`)))
+		assert.Empty(t, checkLocaleContent([]byte(`access_token_desc = Selected token permissions limit authorization only to the corresponding <a href="%[1]s" target="_blank">API</a> routes. Read the <a href="%[2]s" target="_blank">documentation</a> for more information.`)))
+		assert.Empty(t, checkLocaleContent([]byte(`webauthn_desc = Security keys are hardware devices containing cryptographic keys. They can be used for two-factor authentication. Security keys must support the <a rel="noreferrer" target="_blank" href="%s">WebAuthn Authenticator</a> standard.`)))
+		assert.Empty(t, checkLocaleContent([]byte("issues.closed_at = `closed this issue <a id=\"%[1]s\" href=\"#%[1]s\">%[2]s</a>`")))
+
+		assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"https://example.com\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="https://example.com">`)))
+		assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"javascript:alert('1')\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="javascript:alert('1')">`)))
+		assert.EqualValues(t, []string{"key: <a href=\"https://TO-BE-REPLACED.COM\"\x1b[31m download\x1b[0m>"}, checkLocaleContent([]byte(`key = <a href="%s" download>`)))
+		assert.EqualValues(t, []string{"key: <a href=\"https://TO-BE-REPLACED.COM\"\x1b[31m target=\"_self\"\x1b[0m>"}, checkLocaleContent([]byte(`key = <a href="%s" target="_self">`)))
+		assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"https://example.com/%s\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="https://example.com/%s">`)))
+		assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"https://example.com/?q=%s\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="https://example.com/?q=%s">`)))
+		assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"%s/open-redirect\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="%s/open-redirect">`)))
+		assert.EqualValues(t, []string{"key: \x1b[31m<a href=\"%s?q=open-redirect\">\x1b[0m"}, checkLocaleContent([]byte(`key = <a href="%s?q=open-redirect">`)))
+	})
+
+	t.Run("Escaped HTML characters", func(t *testing.T) {
+		assert.Empty(t, checkLocaleContent([]byte("activity.git_stats_push_to_branch = `إلى %s و\"`")))
+
+		assert.EqualValues(t, []string{"key: و\x1b[31m&nbsp\x1b[0m\x1b[32m\u00a0\x1b[0m"}, checkLocaleContent([]byte(`key = و&nbsp;`)))
+	})
+}
diff --git a/options/locale/locale_ar.ini b/options/locale/locale_ar.ini
index 76fe2a3fdd..f92cec14c2 100644
--- a/options/locale/locale_ar.ini
+++ b/options/locale/locale_ar.ini
@@ -960,7 +960,7 @@ settings.recent_deliveries = التوصيل الأخيرة
 projects.new = مشروع جديد
 file_history = تاريخ
 editor.directory_is_a_file = اسم المجلد "%s" مستخدم فعلا لاسم ملف في هذا المستودع.
-editor.commit_directly_to_this_branch = أودع مباشرةً إلى فرع <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch = أودع مباشرةً إلى فرع <strong class="%[2]s">%[1]s</strong>.
 editor.unable_to_upload_files = تعذر رفع الملفات إلى "%s" برسالة الخطأ: %v
 settings.webhook.payload = المحتوى
 invisible_runes_header = `يحتوي هذا الملف على محارف يونيكود غير مرئية`
@@ -1105,7 +1105,7 @@ activity.git_stats_pushed_1 = دفع
 activity.git_stats_pushed_n = دفعوا
 activity.git_stats_commit_1 = %d إيداع
 activity.git_stats_commit_n = %d إيداعا
-activity.git_stats_push_to_branch = إلى %s و&nbsp;
+activity.git_stats_push_to_branch = `إلى %s و"`
 activity.git_stats_push_to_all_branches = إلى كل الفروع.
 activity.git_stats_on_default_branch = في %s،
 activity.git_stats_file_1 = %d ملف
@@ -1115,7 +1115,7 @@ activity.git_stats_files_changed_n = تغيّروا
 activity.git_stats_additions = وحدثت
 activity.git_stats_addition_1 = %d إضافة
 activity.git_stats_addition_n = %d إضافة
-activity.git_stats_and_deletions = و&nbsp;
+activity.git_stats_and_deletions = `و"`
 activity.git_stats_deletion_1 = %d إزالة
 activity.git_stats_deletion_n = %d إزالة
 settings.mirror_settings.direction = الاتجاه
diff --git a/options/locale/locale_bg.ini b/options/locale/locale_bg.ini
index ca11b20ff2..1387bdd0e2 100644
--- a/options/locale/locale_bg.ini
+++ b/options/locale/locale_bg.ini
@@ -846,7 +846,7 @@ editor.propose_file_change = Предлагане на промяна на фа
 editor.create_new_branch = Създаване на <strong>нов клон</strong> за това подаване и започване на заявка за сливане.
 editor.create_new_branch_np = Създаване на <strong>нов клон</strong> за това подаване.
 editor.filename_is_invalid = Името на файла е невалидно: „%s“.
-editor.commit_directly_to_this_branch = Подаване директно към клона <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch = Подаване директно към клона <strong class="%[2]s">%[1]s</strong>.
 editor.branch_already_exists = Клонът „%s“ вече съществува в това хранилище.
 editor.file_already_exists = Файл с име „%s“ вече съществува в това хранилище.
 editor.commit_empty_file_header = Подаване на празен файл
@@ -997,7 +997,7 @@ pulls.cmd_instruction_hint = Вижте инструкциите за коман
 pulls.showing_only_single_commit = Показани са само промените в подаване %[1]s
 issues.lock_no_reason = заключи и ограничи обсъждането до сътрудници %s
 pulls.expand_files = Разгъване на всички файлове
-pulls.title_desc_few = иска да слее %[1]d подавания от <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
+pulls.title_desc_few = иска да слее %[1]d подавания от <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
 issues.content_history.deleted = изтрито
 activity.git_stats_exclude_merges = С изключение на сливанията,
 activity.navbar.pulse = Последна дейност
@@ -1017,7 +1017,7 @@ pulls.collapse_files = Свиване на всички файлове
 pulls.show_all_commits = Показване на всички подавания
 diff.whitespace_button = Празни знаци
 issues.content_history.edited = редактирано
-pulls.title_desc_one = иска да слее %[1]d подаване от <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = иска да слее %[1]d подаване от <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
 pulls.showing_specified_commit_range = Показани са само промените между %[1]s..%[2]s
 pulls.merged_title_desc_one = сля %[1]d подаване от <code>%[2]s</code> в <code>%[3]s</code> %[4]s
 pulls.no_merge_access = Не сте упълномощени за сливане на тази заявка за сливане.
diff --git a/options/locale/locale_cs-CZ.ini b/options/locale/locale_cs-CZ.ini
index 829df0124f..a400aed94b 100644
--- a/options/locale/locale_cs-CZ.ini
+++ b/options/locale/locale_cs-CZ.ini
@@ -1036,7 +1036,7 @@ blocked_users = Zablokovaní uživatelé
 change_password = Změnit heslo
 user_block_success = Uživatel byl úspěšně zablokován.
 user_unblock_success = Uživatel byl úspěšně odblokován.
-access_token_desc = Oprávnění vybraného tokenu omezují autorizaci pouze na příslušné cesty <a %s>API</a>. Pro více informací si přečtěte <a %s>dokumentaci</a>.
+access_token_desc = Oprávnění vybraného tokenu omezují autorizaci pouze na příslušné cesty <a href="%[1]s" target="_blank">API</a>. Pro více informací si přečtěte <a href="%[2]s" target="_blank">dokumentaci</a>.
 blocked_users_none = Nemáte žádné zablokované uživatele.
 blocked_since = Zablokován od %s
 hints = Nápovědy
@@ -1360,7 +1360,7 @@ editor.fail_to_apply_patch=Nelze použít záplatu „%s“
 editor.new_patch=Nová záplata
 editor.commit_message_desc=Přidat volitelný rozšířený popis…
 editor.signoff_desc=Přidat Signed-off-by podpis přispěvatele na konec zprávy o commitu.
-editor.commit_directly_to_this_branch=Odeslat přímo do větve <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Odeslat přímo do větve <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Vytvořit <strong>novou větev</strong> pro tento commit a vytvořit žádost o sloučení.
 editor.create_new_branch_np=Vytvořte <strong>novou větev</strong> z tohoto commitu.
 editor.propose_file_change=Navrhnout změnu souboru
@@ -1725,7 +1725,7 @@ issues.error_modifying_due_date=Změna termínu dokončení selhala.
 issues.error_removing_due_date=Odstranění termínu dokončení selhalo.
 issues.push_commit_1=přidal/a %d commit %s
 issues.push_commits_n=přidal/a %d commity %s
-issues.force_push_codes=`vynucené nahrání %[1]s od <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> do <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes=`vynucené nahrání %[1]s od <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> do <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare=Porovnat
 issues.due_date_form=rrrr-mm-dd
 issues.due_date_form_add=Přidat termín dokončení
@@ -1841,7 +1841,7 @@ pulls.nothing_to_compare_have_tag=Vybraná větev/značka je stejná.
 pulls.nothing_to_compare_and_allow_empty_pr=Tyto větve jsou stejné. Tato žádost o sloučení bude prázdná.
 pulls.has_pull_request=`Žádost o sloučení mezi těmito větvemi již existuje: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Vytvořit žádost o sloučení
-pulls.title_desc_few=chce sloučit %[1]d commity z větve <code>%[2]s</code> do <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=chce sloučit %[1]d commity z větve <code>%[2]s</code> do <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=sloučil %[1]d commity z větve <code>%[2]s</code> do větve <code>%[3]s</code> před %[4]s
 pulls.change_target_branch_at=`změnil/a cílovou větev z <b>%s</b> na <b>%s</b> %s`
 pulls.tab_conversation=Konverzace
@@ -2765,7 +2765,7 @@ settings.protect_enable_merge_desc = Kdokoli s přístupem k zápisu bude moci s
 settings.archive.text = Archivováním repozitáře jej celý převedete do stavu pouze pro čtení. Bude skryt z nástěnky. Nikdo (ani vy!) nebude moci vytvářet nové commity ani otevírat problémy a žádosti o sloučení.
 settings.event_pull_request_review_request_desc = Bylo požádáno o posouzení žádosti o sloučení nebo bylo toto požádání odstraněno.
 error.broken_git_hook = Zdá se, že u tohoto repozitáře jsou rozbité Git hooks. Pro jejich opravení se prosím řiďte pokyny v <a target="_blank" rel="noreferrer" href="%s">dokumentaci</a> a poté odešlete několik commitů pro obnovení stavu.
-pulls.title_desc_one = žádá o sloučení %[1]d commitu z <code>%[2]s</code> do <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = žádá o sloučení %[1]d commitu z <code>%[2]s</code> do <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_one = sloučil %[1]d commit z <code>%[2]s</code> do <code>%[3]s</code> %[4]s
 open_with_editor = Otevřít pomocí %s
 commits.search_branch = Tato větev
diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini
index 997dd8c2a0..b96d185142 100644
--- a/options/locale/locale_de-DE.ini
+++ b/options/locale/locale_de-DE.ini
@@ -936,7 +936,7 @@ select_permissions=Berechtigungen auswählen
 permission_no_access=Kein Zugriff
 permission_read=Lesen
 permission_write=Lesen und Schreiben
-access_token_desc=Ausgewählte Token-Berechtigungen beschränken die Authentifizierung auf die entsprechenden <a %s>API</a>-Routen. Lies die <a %s>Dokumentation</a> für mehr Informationen.
+access_token_desc=Ausgewählte Token-Berechtigungen beschränken die Authentifizierung auf die entsprechenden <a href="%[1]s" target="_blank">API</a>-Routen. Lies die <a href="%[2]s" target="_blank">Dokumentation</a> für mehr Informationen.
 at_least_one_permission=Du musst mindestens eine Berechtigung auswählen, um ein Token zu erstellen
 permissions_list=Berechtigungen:
 
@@ -1353,7 +1353,7 @@ editor.fail_to_apply_patch=Patch „%s“ nicht anwendbar
 editor.new_patch=Neuer Patch
 editor.commit_message_desc=Eine ausführlichere (optionale) Beschreibung hinzufügen …
 editor.signoff_desc=Am Ende der Commit-Nachricht einen „Signed-off-by“-Anhang vom Committer hinzufügen.
-editor.commit_directly_to_this_branch=Direkt in den Branch „<strong class="branch-name">%s</strong>“ einchecken.
+editor.commit_directly_to_this_branch=Direkt in den Branch „<strong class="%[2]s">%[1]s</strong>“ einchecken.
 editor.create_new_branch=Einen <strong>neuen Branch</strong> für diesen Commit erstellen und einen Pull-Request starten.
 editor.create_new_branch_np=Erstelle einen <strong>neuen Branch</strong> für diesen Commit.
 editor.propose_file_change=Dateiänderung vorschlagen
@@ -1719,7 +1719,7 @@ issues.error_modifying_due_date=Fehler beim Ändern des Fälligkeitsdatums.
 issues.error_removing_due_date=Fehler beim Entfernen des Fälligkeitsdatums.
 issues.push_commit_1=hat %d Commit %s hinzugefügt
 issues.push_commits_n=hat %d Commits %s hinzugefügt
-issues.force_push_codes=`hat %[6]s %[1]s von <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> zu <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> force-gepusht`
+issues.force_push_codes=`hat %[6]s %[1]s von <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> zu <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> force-gepusht`
 issues.force_push_compare=Vergleichen
 issues.due_date_form=JJJJ-MM-TT
 issues.due_date_form_add=Fälligkeitsdatum hinzufügen
@@ -1834,7 +1834,7 @@ pulls.nothing_to_compare=Diese Branches sind identisch. Es muss kein Pull-Reques
 pulls.nothing_to_compare_and_allow_empty_pr=Diese Branches sind gleich. Der Pull-Request wird leer sein.
 pulls.has_pull_request=`Es existiert bereits ein Pull-Request zwischen diesen beiden Branches: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Pull-Request erstellen
-pulls.title_desc_few=möchte %[1]d Commits von <code>%[2]s</code> nach <code id="branch_target">%[3]s</code> zusammenführen
+pulls.title_desc_few=möchte %[1]d Commits von <code>%[2]s</code> nach <code id="%[4]s">%[3]s</code> zusammenführen
 pulls.merged_title_desc_few=hat %[1]d Commits von <code>%[2]s</code> nach <code>%[3]s</code> %[4]s zusammengeführt
 pulls.change_target_branch_at=`hat den Zielbranch von <b>%s</b> nach <b>%s</b> %s geändert`
 pulls.tab_conversation=Diskussion
@@ -2751,7 +2751,7 @@ activity.navbar.code_frequency = Code-Frequenz
 file_follow = Symlink folgen
 error.broken_git_hook = Die Git-Hooks des Repositorys scheinen kaputt zu sein. Bitte folge der <a target="_blank" rel="noreferrer" href="%s">Dokumentation</a> um sie zu reparieren, dann pushe einige Commits um den Status zu aktualisieren.
 pulls.merged_title_desc_one = hat %[1]d Commit von <code>%[2]s</code> nach <code>%[3]s</code> %[4]s zusammengeführt
-pulls.title_desc_one = möchte %[1]d Commit von <code>%[2]s</code> nach <code id="branch_target">%[3]s</code> zusammenführen
+pulls.title_desc_one = möchte %[1]d Commit von <code>%[2]s</code> nach <code id="%[4]s">%[3]s</code> zusammenführen
 open_with_editor = Öffnen mit %s
 commits.search_branch = Dieser Branch
 pulls.ready_for_review = Bereit zum Review?
diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini
index 05af282d5a..d6b617bcd2 100644
--- a/options/locale/locale_el-GR.ini
+++ b/options/locale/locale_el-GR.ini
@@ -932,7 +932,7 @@ select_permissions=Επιλογή δικαιωμάτων
 permission_no_access=Καμία πρόσβαση
 permission_read=Αναγνωσμένες
 permission_write=Ανάγνωση και εγγραφή
-access_token_desc=Τα επιλεγμένα δικαιώματα διακριτικών περιορίζουν την άδεια μόνο στις αντίστοιχες διαδρομές <a %s>API</a>. Διαβάστε το εγχειρίδιο <a %s></a> για περισσότερες πληροφορίες.
+access_token_desc=Τα επιλεγμένα δικαιώματα διακριτικών περιορίζουν την άδεια μόνο στις αντίστοιχες διαδρομές <a href="%[1]s" target="_blank">API</a>. Διαβάστε το εγχειρίδιο <a href="%[2]s" target="_blank"></a> για περισσότερες πληροφορίες.
 at_least_one_permission=Πρέπει να επιλέξετε τουλάχιστον ένα δικαίωμα για να δημιουργήσετε ένα διακριτικό
 permissions_list=Δικαιώματα:
 
@@ -1350,7 +1350,7 @@ editor.fail_to_apply_patch=`Αδυναμία εφαρμογής της επιδ
 editor.new_patch=Νέο patch
 editor.commit_message_desc=Προσθήκη προαιρετικής εκτενούς περιγραφής…
 editor.signoff_desc=Προσθέστε ένα πρόσθετο Signed-off-by στο τέλος του μηνύματος καταγραφής της υποβολής.
-editor.commit_directly_to_this_branch=Υποβολή απευθείας στο κλάδο <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Υποβολή απευθείας στο κλάδο <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτή την υποβολή και ξεκινήστε ένα pull request.
 editor.create_new_branch_np=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτή την υποβολή.
 editor.propose_file_change=Πρόταση αλλαγής αρχείου
@@ -1716,7 +1716,7 @@ issues.error_modifying_due_date=Προέκυψε σφάλμα κατά την α
 issues.error_removing_due_date=Προέκυψε σφάλμα κατά την κατάργηση ημερομηνίας παράδοσης.
 issues.push_commit_1=πρόσθεσε %d υποβολή %s
 issues.push_commits_n=πρόσθεσε %d υποβολές %s
-issues.force_push_codes=`έκανε force-push %[1]s από το <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> στο <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes=`έκανε force-push %[1]s από το <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> στο <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare=Σύγκριση
 issues.due_date_form=εεεε-μμ-ηη
 issues.due_date_form_add=Προσθήκη ημερομηνίας παράδοσης
@@ -1831,7 +1831,7 @@ pulls.nothing_to_compare=Αυτοί οι κλάδοι είναι ίδιοι. Δ
 pulls.nothing_to_compare_and_allow_empty_pr=Αυτοί οι κλάδοι είναι ίδιοι. Αυτό το PR θα είναι κενό.
 pulls.has_pull_request=`Υπάρχει ήδη pull request μεταξύ αυτών των κλάδων: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Δημιουργία pull request
-pulls.title_desc_few=θέλει να συγχωνεύσει %[1]d υποβολές από <code>%[2]s</code> σε <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=θέλει να συγχωνεύσει %[1]d υποβολές από <code>%[2]s</code> σε <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=συγχώνευσε %[1]d υποβολές από <code>%[2]s</code> σε <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`άλλαξε τον κλάδο προορισμού από <b>%s</b> σε <b>%s</b> %s`
 pulls.tab_conversation=Συζήτηση
@@ -2744,7 +2744,7 @@ n_commit_one = %s υποβολή
 stars = Αστέρια
 n_branch_one = %s κλάδος
 commits.search_branch = Αυτός ο κλάδος
-pulls.title_desc_one = : θα ήθελε να συγχωνεύσει %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = : θα ήθελε να συγχωνεύσει %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_one = συγχώνευσε %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code>%[3]s</code> %[4]s
 n_commit_few = %s υποβολές
 settings.sourcehut_builds.secrets = Μυστικά
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 289b8aa17f..0700ee1624 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -935,7 +935,7 @@ select_permissions = Select permissions
 permission_no_access = No access
 permission_read = Read
 permission_write = Read and write
-access_token_desc = Selected token permissions limit authorization only to the corresponding <a %s>API</a> routes. Read the <a %s>documentation</a> for more information.
+access_token_desc = Selected token permissions limit authorization only to the corresponding <a href="%[1]s" target="_blank">API</a> routes. Read the <a href="%[2]s" target="_blank">documentation</a> for more information.
 at_least_one_permission = You must select at least one permission to create a token
 permissions_list = Permissions:
 
@@ -1372,7 +1372,7 @@ editor.fail_to_apply_patch = Unable to apply patch "%s"
 editor.new_patch = New patch
 editor.commit_message_desc = Add an optional extended description…
 editor.signoff_desc = Add a Signed-off-by trailer by the committer at the end of the commit log message.
-editor.commit_directly_to_this_branch = Commit directly to the <strong class="branch-name">%s</strong> branch.
+editor.commit_directly_to_this_branch = Commit directly to the <strong class="%[2]s">%[1]s</strong> branch.
 editor.create_new_branch = Create a <strong>new branch</strong> for this commit and start a pull request.
 editor.create_new_branch_np = Create a <strong>new branch</strong> for this commit.
 editor.propose_file_change = Propose file change
@@ -1740,7 +1740,7 @@ issues.time_spent_from_all_authors = `Total time spent: %s`
 issues.due_date = Due date
 issues.push_commit_1 = added %d commit %s
 issues.push_commits_n = added %d commits %s
-issues.force_push_codes = `force-pushed %[1]s from <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> to <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes = `force-pushed %[1]s from <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> to <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare = Compare
 issues.due_date_form = yyyy-mm-dd
 issues.due_date_form_edit = Edit
@@ -1859,8 +1859,8 @@ pulls.nothing_to_compare_have_tag = The selected branch/tag are equal.
 pulls.nothing_to_compare_and_allow_empty_pr = These branches are equal. This PR will be empty.
 pulls.has_pull_request = `A pull request between these branches already exists: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create = Create pull request
-pulls.title_desc_one = wants to merge %[1]d commit from <code>%[2]s</code> into <code id="branch_target">%[3]s</code>
-pulls.title_desc_few = wants to merge %[1]d commits from <code>%[2]s</code> into <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = wants to merge %[1]d commit from <code>%[2]s</code> into <code id="%[4]s">%[3]s</code>
+pulls.title_desc_few = wants to merge %[1]d commits from <code>%[2]s</code> into <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_one = merged %[1]d commit from <code>%[2]s</code> into <code>%[3]s</code> %[4]s
 pulls.merged_title_desc_few = merged %[1]d commits from <code>%[2]s</code> into <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at = `changed target branch from <b>%s</b> to <b>%s</b> %s`
diff --git a/options/locale/locale_eo.ini b/options/locale/locale_eo.ini
index 1c36206eb1..64b1908b46 100644
--- a/options/locale/locale_eo.ini
+++ b/options/locale/locale_eo.ini
@@ -202,7 +202,6 @@ app_desc = Senpena kaj memgastigebla Git-servo
 install = Facile instalebla
 lightweight = Malpeza
 license = Libera fontkodo
-platform_desc = Forgejo ruleblas ĉie ajn <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> bittradukeblas: Windows, macOS, Linux, ARM, etc. Elektu laŭplaĉe!
 install_desc = Simple aŭ <a target="_blank" rel="noopener noreferrer" href="%[1]s">prenu la ruldosieron</a> por via operaciumo, aŭ instalu enuje per <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, aŭ instalu <a target="_blank" rel="noopener noreferrer" href="%[3]s">pakaĵe</a>.
 lightweight_desc = Forgejo ne penigos vian servilon, kaj eĉ ruleblas je Raspberry Pi. Konservu vian komputpotencon!
 platform = Plursistema
diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini
index 0c06cdcece..1a6ac696d3 100644
--- a/options/locale/locale_es-ES.ini
+++ b/options/locale/locale_es-ES.ini
@@ -932,7 +932,7 @@ select_permissions=Seleccionar permisos
 permission_no_access=Sin acceso
 permission_read=Leídas
 permission_write=Lectura y escritura
-access_token_desc=Los permisos de los tokens seleccionados limitan la autorización sólo a las rutas <a %s>API</a> correspondientes. Lea la <a %s>documentación</a> para más información.
+access_token_desc=Los permisos de los tokens seleccionados limitan la autorización sólo a las rutas <a href="%[1]s" target="_blank">>API</a> correspondientes. Lea la <a href="%[2]s" target="_blank">>documentación</a> para más información.
 at_least_one_permission=Debe seleccionar al menos un permiso para crear un token
 permissions_list=Permisos:
 
@@ -1349,7 +1349,7 @@ editor.fail_to_apply_patch=`No se puede aplicar el parche "%s"`
 editor.new_patch=Nuevo parche
 editor.commit_message_desc=Añadir una descripción extendida opcional…
 editor.signoff_desc=Añadir un trailer firmado por el committer al final del mensaje de registro de confirmación.
-editor.commit_directly_to_this_branch=Hacer commit directamente en la rama <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Hacer commit directamente en la rama <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Crear una <strong>nueva rama</strong> para este commit y hacer un pull request.
 editor.create_new_branch_np=Crear una <strong>nueva rama</strong> para este commit.
 editor.propose_file_change=Proponer cambio de archivo
@@ -1715,7 +1715,7 @@ issues.error_modifying_due_date=Fallo al modificar la fecha de vencimiento.
 issues.error_removing_due_date=Fallo al eliminar la fecha de vencimiento.
 issues.push_commit_1=añadió %d commit %s
 issues.push_commits_n=añadió %d commits %s
-issues.force_push_codes=`hizo push forzado %[1]s de <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> a <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes=`hizo push forzado %[1]s de <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> a <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare=Comparar
 issues.due_date_form=aaaa-mm-dd
 issues.due_date_form_add=Añadir fecha de vencimiento
@@ -1830,7 +1830,7 @@ pulls.nothing_to_compare=Estas ramas son iguales. No hay necesidad para crear un
 pulls.nothing_to_compare_and_allow_empty_pr=Estas ramas son iguales. Este PR estará vacío.
 pulls.has_pull_request=`Ya existe un pull request entre estas ramas: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Crear pull request
-pulls.title_desc_few=quiere fusionar %[1]d commits de <code>%[2]s</code> en <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=quiere fusionar %[1]d commits de <code>%[2]s</code> en <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=fusionó %[1]d commits de <code>%[2]s</code> en <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`cambió la rama objetivo de <b>%s</b> a <b>%s</b> %s`
 pulls.tab_conversation=Conversación
@@ -2735,7 +2735,7 @@ pulls.blocked_by_user = No puedes crear una pull request en este repositorio por
 issues.comment.blocked_by_user = No puedes crear un comentario en esta incidencia porque estás bloqueado por el propietario del repositorio o el autor de la incidencia.
 comments.edit.already_changed = No fue posible guardar los cambios al comentario. Parece que el contenido ya fue modificado por otro usuario. Actualiza la página e intenta editar de nuevo para evitar sobrescribir los cambios
 pulls.edit.already_changed = No fue posible guardar los cambios al pull request. Parece que el contenido ya fue modificado por otro usuario. Actualiza la página e intenta editar de nuevo para evitar sobrescribir los cambios
-pulls.title_desc_one = quiere fusionar %[1]d commit de <code>%[2]s</code> en <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = quiere fusionar %[1]d commit de <code>%[2]s</code> en <code id="%[4]s">%[3]s</code>
 pulls.ready_for_review = Listo para revisar?
 activity.navbar.contributors = Contribuidores
 pulls.cmd_instruction_hint = Ver instrucciones para la línea de comandos
diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini
index a9e150a7cb..297785a0c8 100644
--- a/options/locale/locale_fa-IR.ini
+++ b/options/locale/locale_fa-IR.ini
@@ -149,7 +149,6 @@ missing_csrf=درخواست بد: بلیط CSRF ندارد
 app_desc=یک سرویس گیت بی‌درد سر و راحت
 install=راه‌اندازی ساده
 platform=مستقل از سکو
-platform_desc=گیت همه جا اجرا می‌شود <a target="_blank" rel="noopener noreferrer" href="http://golang.org/"> بریم!</a> می‌توانید Windows, macOS, Linux, ARM و ... هر کدام را دوست داشتید انتخاب کنید!
 lightweight=ابزارک سبک
 lightweight_desc=گیتی با حداقل منابع میتوانید برای روی دستگاه Raspberry Pi اجرا شود و مصرف انرژی شما را کاهش دهد!
 license=متن باز
@@ -985,7 +984,7 @@ editor.commit_changes=تغییرات کامیت
 editor.add_tmpl=افزودن '<filename>'
 editor.commit_message_desc=توضیحی تخصصی به دلخواه اضافه نمایید…
 editor.signoff_desc=یک تریلر Signed-off-by توسط committer در انتهای پیام گزارش commit اضافه کنید.
-editor.commit_directly_to_this_branch=ثبت کامیت به صورت مستقیم در انشعاب <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=ثبت کامیت به صورت مستقیم در انشعاب <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=یک <strong> شاخه جدید</strong> برای این commit ایجاد کنید و تقاضای واکشی را شروع کنید.
 editor.create_new_branch_np=یک <strong> شاخه جدید </strong> برای کامیت بسازید.
 editor.propose_file_change=پیشنهاد تغییر پرونده
@@ -1254,7 +1253,7 @@ issues.error_modifying_due_date=تغییر موعد مقرر با شکست مو
 issues.error_removing_due_date=حذف موعد مقرر با شکست مواجه شد.
 issues.push_commit_1=%d اعمال تغییر اضافه شده است %s
 issues.push_commits_n=%d اعمال تغییرات اضافه شده است %s
-issues.force_push_codes=`پوش شده اجباری %[1]s از <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> به <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes=`پوش شده اجباری %[1]s از <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> به <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare=مقایسه
 issues.due_date_form=yyyy-mm-dd
 issues.due_date_form_add=افزودن موعد مقرر
@@ -1340,7 +1339,7 @@ pulls.nothing_to_compare=این شاخه‎ها یکی هستند. نیازی ب
 pulls.nothing_to_compare_and_allow_empty_pr=این شاخه ها برابر هستند. این PR خالی خواهد بود.
 pulls.has_pull_request=`A درخواست pull بین این شاخه ها از قبل وجود دارد: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=ایجاد تقاضای واکشی
-pulls.title_desc_few=قصد ادغام %[1]d تغییر را از <code>%[2]s</code> به <code id="branch_target">%[3]s</code> دارد
+pulls.title_desc_few=قصد ادغام %[1]d تغییر را از <code>%[2]s</code> به <code id="%[4]s">%[3]s</code> دارد
 pulls.merged_title_desc_few=%[1]d کامیت ادغام شده از <code>%[2]s</code> به <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`هدف شاخه از <b>%s</b> به <b>%s</b> %s تغییر کرد`
 pulls.tab_conversation=گفتگو
diff --git a/options/locale/locale_fi-FI.ini b/options/locale/locale_fi-FI.ini
index 2ccbbf0978..bae6c8e59d 100644
--- a/options/locale/locale_fi-FI.ini
+++ b/options/locale/locale_fi-FI.ini
@@ -928,7 +928,7 @@ editor.cancel_lower=Peru
 editor.commit_signed_changes=Commitoi vahvistetut muutokset
 editor.commit_changes=Kommitoi muutokset
 editor.add_tmpl=Lisää "<filename>"
-editor.commit_directly_to_this_branch=Commitoi suoraan <strong class="branch-name">%s</strong> haaraan.
+editor.commit_directly_to_this_branch=Commitoi suoraan <strong class="%[2]s">%[1]s</strong> haaraan.
 editor.create_new_branch=Luo <strong>uusi haara</strong> tälle commitille ja aloita vetopyyntö.
 editor.create_new_branch_np=Luo <strong>uusi haara</strong> tälle commitille.
 editor.cancel=Peruuta
@@ -1148,7 +1148,7 @@ pulls.nothing_to_compare=Nämä haarat vastaavat toisiaan. Ei ole tarvetta luoda
 pulls.nothing_to_compare_and_allow_empty_pr=Nämä haarat vastaavat toisiaan. Vetopyyntö tulee olemaan tyhjä.
 pulls.has_pull_request=`Vetopyyntö haarojen välillä on jo olemassa: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Luo vetopyyntö
-pulls.title_desc_few=haluaa yhdistää %[1]d committia lähteestä <code>%[2]s</code> kohteeseen <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=haluaa yhdistää %[1]d committia lähteestä <code>%[2]s</code> kohteeseen <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=yhdistetty %[1]d committia lähteestä <code>%[2]s</code> kohteeseen <code>%[3]s</code> %[4]s
 pulls.tab_conversation=Keskustelu
 pulls.tab_commits=Commitit
@@ -2447,7 +2447,7 @@ runners.runner_manage_panel = Hallinnoi testinajajia
 variables = Muuttujat
 variables.management = Hallinnoi muuttujia
 variables.creation = Lisää muuttuja
-runs.no_workflows.quick_start = Etkö tiedä kuinka Forgejo Actions toimii? Katso <a target="_blank" rel="noopener noreferrer" href="%s" >aloitusohje</a>.
+runs.no_workflows.quick_start = Etkö tiedä kuinka Forgejo Actions toimii? Katso <a target="_blank" rel="noopener noreferrer" href="%s">aloitusohje</a>.
 runners.new = Luo uusi testinajaja
 runners.version = Versio
 runs.expire_log_message = Lokitiedostot on tyhjätty vanhenemisen vuoksi.
diff --git a/options/locale/locale_fil.ini b/options/locale/locale_fil.ini
index 6bc508020c..15353be168 100644
--- a/options/locale/locale_fil.ini
+++ b/options/locale/locale_fil.ini
@@ -766,7 +766,7 @@ ssh_principal_deletion_success = Tinanggal na ang principal.
 principal_state_desc = Ginamit ang principal na ito sa huling 7 araw
 tokens_desc = Ang mga token na ito ay nagbibigay ng pag-access sa iyong account gamit ang Forgejo API.
 generate_token_name_duplicate = Ginamit na ang <strong>%s</strong> bilang isang pangalan ng application. Gumamit ng bago.
-access_token_desc = Ang mga piniling pahintulot sa token ay nililimitahan ang awtorisasyon sa mga kakulang na <a %s>API</a> route. Basahin ang <a %s>dokumentasyon</a> para sa higit pang impormasyon.
+access_token_desc = Ang mga piniling pahintulot sa token ay nililimitahan ang awtorisasyon sa mga kakulang na <a href="%[1]s" target="_blank">API</a> route. Basahin ang <a href="%[2]s" target="_blank">dokumentasyon</a> para sa higit pang impormasyon.
 uploaded_avatar_is_too_big = Ang laki ng na-upload na file (%d KiB) ay lumalagpas sa pinakamalaking laki (%d KiB).
 update_avatar_success = Nabago na ang iyong avatar.
 update_user_avatar_success = Nabago na ang avatar ng user.
@@ -1482,7 +1482,7 @@ milestones.title = Pamagat
 milestones.desc = paglalarawan
 pulls.blocked_by_user = Hindi ka makakagawa ng hiling sa paghila sa repositoryo na ito dahil na-block ka ng may-ari ng repositoryo.
 pulls.no_merge_access = Hindi ka pinapayagang isali ang [pull request] na ito.
-editor.commit_directly_to_this_branch = Direktang mag-commit sa branch na <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch = Direktang mag-commit sa branch na <strong class="%[2]s">%[1]s</strong>.
 editor.branch_already_exists = Umiiral na ang branch na "%s" sa repositoryo na ito.
 editor.file_editing_no_longer_exists = Ang file na ine-edit, "%s", ay hindi na umiiral sa repositoryo na ito.
 editor.filename_is_a_directory = Ang pangalan ng file "%s" ay ginagamit na bilang pangalan ng direktoryo sa repositoryo na ito.
@@ -1584,12 +1584,12 @@ projects.column.new_title = Pangalan
 projects.card_type.desc = Mga preview ng card
 commits.desc = I-browse ang history ng pagbabago ng source code.
 commits.search.tooltip = Maari kang mag-prefix ng mga keyword gamit ang "author:", "committer:", "after:", o "before:", hal. "revert author:Nijika before:2022-10-09".
-issues.force_push_codes = `puwersahang itinulak ang %[1]s mula <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> sa <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes = `puwersahang itinulak ang %[1]s mula <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> sa <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.push_commit_1 = idinagdag ang %d commit %s
 issues.push_commits_n = idinagdag ang %d mga [commit] %s
 issues.new.no_reviewers = Walang mga tagasuri
-pulls.title_desc_one = hinihiling na isama ang %[1]d commit mula <code>%[2]s</code> patungong <code id="branch_target">%[3]s</code>
-pulls.title_desc_few = hiniling na isama ang %[1]d mga commit mula sa <code>%[2]s</code> patungong <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = hinihiling na isama ang %[1]d commit mula <code>%[2]s</code> patungong <code id="%[4]s">%[3]s</code>
+pulls.title_desc_few = hiniling na isama ang %[1]d mga commit mula sa <code>%[2]s</code> patungong <code id="%[4]s">%[3]s</code>
 issues.review.add_review_request = hiniling ang pagsuri mula kay %s %s
 pulls.status_checks_details = Mga detalye
 activity.git_stats_author_n = %d mga may-akda
diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini
index e26a36867d..d914b558e8 100644
--- a/options/locale/locale_fr-FR.ini
+++ b/options/locale/locale_fr-FR.ini
@@ -223,7 +223,7 @@ platform_desc=Forgejo est confirmé fonctionner sur des systèmes d'exploitation
 lightweight=Léger
 lightweight_desc=Forgejo utilise peu de ressources. Il peut même tourner sur un Raspberry Pi très bon marché. Économisez l'énergie de vos serveurs !
 license=Open Source
-license_desc=Toutes les sources sont sur <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a> ! Rejoignez-nous et <a target="_blank" rel="noopener noreferrer" href="https ://codeberg.org/forgejo/forgejo">contribuez</a> à rendre ce projet encore meilleur. Ne craignez pas de devenir un·e contributeur·trice !
+license_desc=Toutes les sources sont sur <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a> ! Rejoignez-nous et <a target="_blank" rel="noopener noreferrer" href="%[2]s">contribuez</a> à rendre ce projet encore meilleur. Ne craignez pas de devenir un·e contributeur·trice !
 
 [install]
 install=Installation
@@ -938,7 +938,7 @@ select_permissions=Sélectionner les autorisations
 permission_no_access=Aucun accès
 permission_read=Lecture
 permission_write=Lecture et écriture
-access_token_desc=Les autorisations des jetons sélectionnées se limitent aux <a %s>routes API</a> correspondantes. Lisez la <a %s>documentation</a> pour plus d’informations.
+access_token_desc=Les autorisations des jetons sélectionnées se limitent aux <a href="%[1]s" target="_blank">routes API</a> correspondantes. Lisez la <a href="%[2]s" target="_blank">documentation</a> pour plus d’informations.
 at_least_one_permission=Vous devez sélectionner au moins une permission pour créer un jeton
 permissions_list=Autorisations :
 
@@ -1360,7 +1360,7 @@ editor.fail_to_apply_patch=`Impossible d'appliquer le correctif "%s"`
 editor.new_patch=Nouveau correctif
 editor.commit_message_desc=Ajouter une description détaillée facultative…
 editor.signoff_desc=Créditer l'auteur "Signed-off-by:" en pied de révision.
-editor.commit_directly_to_this_branch=Réviser directement dans la branche <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Réviser directement dans la branche <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Créer une <strong>nouvelle branche</strong> pour cette révision et initier une demande d'ajout.
 editor.create_new_branch_np=Créer une <strong>nouvelle branche</strong> pour cette révision.
 editor.propose_file_change=Proposer une modification du fichier
@@ -1726,7 +1726,7 @@ issues.error_modifying_due_date=Impossible de modifier l'échéance.
 issues.error_removing_due_date=Impossible de supprimer l'échéance.
 issues.push_commit_1=a ajouté %d révision %s
 issues.push_commits_n=a ajouté %d révisions %s
-issues.force_push_codes=`a forcé %[1]s de <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> à <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s.`
+issues.force_push_codes=`a forcé %[1]s de <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> à <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s.`
 issues.force_push_compare=Comparer
 issues.due_date_form=aaaa-mm-jj
 issues.due_date_form_add=Ajouter une échéance
@@ -1841,7 +1841,7 @@ pulls.nothing_to_compare=Ces branches sont identiques. Il n’y a pas besoin de
 pulls.nothing_to_compare_and_allow_empty_pr=Ces branches sont égales. Cette demande d'ajout sera vide.
 pulls.has_pull_request='Il existe déjà une demande d'ajout entre ces deux branches : <a href="%[1]s">%[2]s#%[3]d</a>'
 pulls.create=Créer une demande d'ajout
-pulls.title_desc_few=souhaite fusionner %[1]d révision(s) depuis <code>%[2]s</code> vers <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=souhaite fusionner %[1]d révision(s) depuis <code>%[2]s</code> vers <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=a fusionné %[1]d révision(s) à partir de <code>%[2]s</code> vers <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`a remplacée la branche cible <b>%s</b> par <b>%s</b> %s`
 pulls.tab_conversation=Discussion
@@ -2765,7 +2765,7 @@ error.broken_git_hook = Les hooks Git de ce dépôt semblent cassés. Référez
 settings.confirmation_string = Chaine de confirmation
 pulls.agit_explanation = Créé par le workflow AGit. AGit permet aux contributeurs de proposer des modifications en utilisant "git push" sans créer une bifurcation ou une nouvelle branche.
 pulls.merged_title_desc_one = fusionné %[1]d commit depuis <code>%[2]s</code> vers <code>%[3]s</code> %[4]s
-pulls.title_desc_one = veut fusionner %[1]d commit depuis <code>%[2]s</code> vers <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = veut fusionner %[1]d commit depuis <code>%[2]s</code> vers <code id="%[4]s">%[3]s</code>
 stars = Étoiles
 n_tag_few = %s étiquettes
 editor.commit_id_not_matching = Le fichier a été modifié pendant que vous l'éditiez. Appliquez les modifications à une nouvelle branche puis procédez à la fusion.
diff --git a/options/locale/locale_gl.ini b/options/locale/locale_gl.ini
index 94e915e3bf..74108be0c8 100644
--- a/options/locale/locale_gl.ini
+++ b/options/locale/locale_gl.ini
@@ -181,8 +181,7 @@ user_kind = Buscar usuarios...
 platform = Multiplataforma
 app_desc = Um servizo Git autoxestionado e fácil de usar
 install = Fácil de instalar
-platform_desc = Forgejo execútase en calquera lugar onde <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> poida compilar para: Windows, MacOS, Linux, ARM, etc. Escolla seu preferido!
-install_desc = Simplemente <a target="_blank" rel="noopener noreferrer" href="%[1]s">executa o binario</a> para a túa plataforma, envíao con < un target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a> ou consígueo <a target="_blank" rel=" noopener noreferrer" href="%[3]s">empaquetado</a>.
+install_desc = Simplemente <a target="_blank" rel="noopener noreferrer" href="%[1]s">executa o binario</a> para a túa plataforma, envíao con <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a> ou consígueo <a target="_blank" rel="noopener noreferrer" href="%[3]s">empaquetado</a>.
 
 [error]
 occurred = Ocorreu un erro
diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini
index fd6d48d8b0..aae5a6ad71 100644
--- a/options/locale/locale_hu-HU.ini
+++ b/options/locale/locale_hu-HU.ini
@@ -203,7 +203,6 @@ not_found = A cél nem található.
 app_desc=Fájdalommentes, saját gépre telepíthető Git szolgáltatás
 install=Könnyen telepíthető
 platform=Keresztplatformos
-platform_desc=A Forgejo minden platformon fut, ahol a <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> fordíthat: Windows, macOS, Linux, ARM, stb. Válassza azt, amelyet szereti!
 lightweight=Könnyűsúlyú
 license=Nyílt forráskódú
 
@@ -812,7 +811,7 @@ editor.cancel_lower=Mégse
 editor.commit_changes=Változások Véglegesítése
 editor.add_tmpl='<filename>' hozzáadása
 editor.commit_message_desc=Opcionális hosszabb leírás hozzáadása…
-editor.commit_directly_to_this_branch=Mentés egyenesen a(z) <strong class="branch-name">%s</strong> ágba.
+editor.commit_directly_to_this_branch=Mentés egyenesen a(z) <strong class="%[2]s">%[1]s</strong> ágba.
 editor.create_new_branch=Hozzon létre egy <strong>új ágat</strong> ennek a commit-nak és indíts egy egyesítési kérést.
 editor.propose_file_change=Változtatás ajánlása
 editor.new_branch_name_desc=Új ág neve…
@@ -1033,7 +1032,7 @@ pulls.filter_branch=Ágra szűrés
 pulls.no_results=Nincs találat.
 pulls.nothing_to_compare=Ezek az ágak egyenlőek. Nincs szükség egyesítési kérésre.
 pulls.create=Egyesítési kérés létrehozása
-pulls.title_desc_few=egyesíteni szeretné %[1]d változás(oka)t a(z) <code>%[2]s</code>-ból <code id="branch_target">%[3]s</code>-ba
+pulls.title_desc_few=egyesíteni szeretné %[1]d változás(oka)t a(z) <code>%[2]s</code>-ból <code id="%[4]s">%[3]s</code>-ba
 pulls.merged_title_desc_few=egyesítve %[1]d változás(ok) a <code>%[2]s</code>-ból <code>%[3]s</code>-ba %[4]s
 pulls.tab_conversation=Beszélgetés
 pulls.tab_commits=Commit-ok
diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini
index 36f1265c3e..5cd3033119 100644
--- a/options/locale/locale_id-ID.ini
+++ b/options/locale/locale_id-ID.ini
@@ -98,7 +98,6 @@ name=Nama
 app_desc=Sebuah layanan hosting Git sendiri yang tanpa kesulitan
 install=Mudah dipasang
 platform=Lintas platform
-platform_desc=Forgejo bisa digunakan di mana <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> bisa dijalankan: Windows, macOS, Linux, ARM, dll. Silahkan pilih yang Anda suka!
 lightweight=Ringan
 lightweight_desc=Forgejo hanya membutuhkan persyaratan minimal dan bisa berjalan pada Raspberry Pi yang murah. Bisa menghemat listrik!
 license=Sumber Terbuka
@@ -623,7 +622,7 @@ editor.cancel_lower=Batalkan
 editor.commit_changes=Perubahan komitmen
 editor.add_tmpl=Tambahkan '<filename>'
 editor.commit_message_desc=Tambahkan deskripsi opsional yang panjang…
-editor.commit_directly_to_this_branch=Komitmen langsung ke <strong class="branch-name">%s</strong> cabang.
+editor.commit_directly_to_this_branch=Komitmen langsung ke <strong class="%[2]s">%[1]s</strong> cabang.
 editor.create_new_branch=Membuat <strong>new branch</strong> untuk tarik komit ini mulai permintaan.
 editor.create_new_branch_np=Buat <strong>cabang baru</strong> untuk komit ini.
 editor.propose_file_change=Usul perubahan berkas
@@ -752,7 +751,7 @@ pulls.compare_changes=Permintaan Tarik Baru
 pulls.filter_branch=Penyaringan cabang
 pulls.no_results=Hasil tidak ditemukan.
 pulls.create=Buat Permintaan Tarik
-pulls.title_desc_few=ingin menggabungkan komit %[1]d dari <code>%[2]s</code> menuju <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=ingin menggabungkan komit %[1]d dari <code>%[2]s</code> menuju <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=commit %[1]d telah digabungkan dari <code>%[2]s</code> menjadi <code>%[3]s</code> %[4]s
 pulls.tab_conversation=Percakapan
 pulls.tab_commits=Melakukan
diff --git a/options/locale/locale_is-IS.ini b/options/locale/locale_is-IS.ini
index 0cb6c0f7ab..b07bf4b829 100644
--- a/options/locale/locale_is-IS.ini
+++ b/options/locale/locale_is-IS.ini
@@ -133,7 +133,6 @@ network_error=Netkerfisvilla
 app_desc=Þrautalaus og sjálfhýst Git þjónusta
 install=Einföld uppsetning
 platform=Fjölvettvangur
-platform_desc=Forgejo virkar hvar sem að <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> gerir: Linux, macOS, Windows, ARM o. s. frv. Veldu það sem þú vilt!
 lightweight=Létt
 lightweight_desc=Forgejo hefur lágar lágmarkskröfur og getur keyrt á ódýrum Raspberry Pi. Sparaðu orku!
 license=Frjáls Hugbúnaður
@@ -891,7 +890,7 @@ pulls.new=Ný Sameiningarbeiðni
 pulls.view=Skoða Sameiningarbeiðni
 pulls.compare_changes=Ný Sameiningarbeiðni
 pulls.create=Skapa Sameiningarbeiðni
-pulls.title_desc_few=vill sameina %[1]d framlög frá <code>%[2]s</code> í <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=vill sameina %[1]d framlög frá <code>%[2]s</code> í <code id="%[4]s">%[3]s</code>
 pulls.tab_conversation=Umræða
 pulls.tab_commits=Framlög
 pulls.tab_files=Skráum Breytt
diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini
index dc58d62c7c..361c9821f3 100644
--- a/options/locale/locale_it-IT.ini
+++ b/options/locale/locale_it-IT.ini
@@ -217,7 +217,6 @@ server_internal = Errore interno del server
 app_desc=Un servizio auto-ospitato per Git pronto all'uso
 install=Facile da installare
 platform=Multipiattaforma
-platform_desc=Forgejo funziona ovunque <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> possa essere compilato: Windows, macOS, Linux, ARM, etc. Scegli ciò che ami!
 lightweight=Leggero
 lightweight_desc=Forgejo ha requisiti minimi bassi e può funzionare su un economico Raspberry Pi. Risparmia l'energia della tua macchina!
 license=Open Source
@@ -1000,7 +999,7 @@ valid_until_date = Valido fino a %s
 ssh_signonly = SSH è attualmente disabilitato quindi queste chiavi sono usate solo per la firma di verifica dei commit.
 social_desc = Questi profili social possono essere usati per accedere al tuo profilo. Assicurati di riconoscerli tutti.
 permission_write = Leggi e scrivi
-access_token_desc = I permessi token selezionati limitano l'autorizzazione solo alle corrispondenti vie <a %s>API</a>. Leggi la <a %s>documentazione</a> per ulteriori informazioni.
+access_token_desc = I permessi token selezionati limitano l'autorizzazione solo alle corrispondenti vie <a href="%[1]s" target="_blank">API</a>. Leggi la <a href="%[2]s" target="_blank">documentazione</a> per ulteriori informazioni.
 create_oauth2_application_success = Hai correttamente creato una nuova applicazione OAuth2.
 update_oauth2_application_success = Hai correttamente aggiornato l'applicazione OAuth2.
 oauth2_redirect_uris = URI per la reindirizzazione. Usa una nuova riga per ogni URI.
@@ -1305,7 +1304,7 @@ editor.patching=Patching:
 editor.new_patch=Nuova Patch
 editor.commit_message_desc=Aggiungi una descrizione estesa facoltativa…
 editor.signoff_desc=Aggiungi "firmato da" dal committer alla fine del messaggio di log di commit.
-editor.commit_directly_to_this_branch=Fai un commit direttamente sul ramo <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Fai un commit direttamente sul ramo <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Crea un <strong> nuovo ramo</strong> per questo commit e avvia una richiesta di modifica.
 editor.create_new_branch_np=Crea un <strong>nuovo ramo</strong> per questo commit.
 editor.propose_file_change=Proponi la modifica del file
@@ -1596,7 +1595,7 @@ issues.error_modifying_due_date=Impossibile modificare la scadenza.
 issues.error_removing_due_date=Impossibile rimuovere la scadenza.
 issues.push_commit_1=ha aggiunto %d commit %s
 issues.push_commits_n=ha aggiunto %d commit %s
-issues.force_push_codes=`ha forzato l'immissione %[1]s da <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> a <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes=`ha forzato l'immissione %[1]s da <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> a <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare=Confronta
 issues.due_date_form=aaaa-mm-dd
 issues.due_date_form_add=Aggiungi scadenza
@@ -1693,7 +1692,7 @@ pulls.nothing_to_compare=Questi rami sono uguali. Non c'è bisogno di creare una
 pulls.nothing_to_compare_and_allow_empty_pr=Questi rami sono uguali. Questa richiesta sarà vuota.
 pulls.has_pull_request=`Una richiesta di modifica fra questi rami esiste già: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Crea richiesta di modifica
-pulls.title_desc_few=vuole unire %[1]d commit da <code>%[2]s</code> a <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=vuole unire %[1]d commit da <code>%[2]s</code> a <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=ha unito %[1]d commit da <code>%[2]s</code> a <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`cambiato il ramo di destinazione da <b>%s</b> a <b>%s</b> %s`
 pulls.tab_conversation=Conversazione
@@ -2740,7 +2739,7 @@ settings.ignore_stale_approvals = Ignora approvazioni stantie
 settings.protected_branch_required_rule_name = Nome regola richiesta
 settings.protect_status_check_patterns_desc = Inserisci sequenze per specificare quali controlli dello stato devono passare prima che i rami possano essere fusi con i rami che soddisfano questa regola. Ogni riga specifica una sequenza. Le sequenze non possono essere vuote.
 settings.authorization_header_desc = Verrà inclusa come intestazione dell'autorizzazione per le richieste quando presente. Esempi: %s.
-pulls.title_desc_one = vuole fondere %[1]d commit da <code>%[2]s</code> in <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = vuole fondere %[1]d commit da <code>%[2]s</code> in <code id="%[4]s">%[3]s</code>
 settings.protect_unprotected_file_patterns_desc = File non protetti dei quali è consentita la modifica direttamente se l'utente ha permesso di scrittura, saltandole restrizioni di immissione. Più sequenze possono essere separate usando il punto e virgola (";"). Vedi la documentazione su <a href="%[1]s">%[2]s</a> per la sintassi delle sequenze glob. Esempi <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
 settings.protect_protected_file_patterns_desc = I file non protetti non possono essere modificati direttamente neanche se l'utente ha il permesso di aggiungere, modificare o eliminare file in questo ramo. Più sequenze possono essere separate usando il punto e virgola (";"). Vedi la documentazione su <a href="%s">%s</a> per la sintassi della sequenze. Esempi: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
 settings.protect_no_valid_status_check_patterns = Nessuna sequenza valida per il controllo dello stato.
diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini
index 3e90125042..c4988edd6e 100644
--- a/options/locale/locale_ja-JP.ini
+++ b/options/locale/locale_ja-JP.ini
@@ -218,7 +218,6 @@ app_desc=自分で立てる、超簡単 Git サービス
 install=簡単インストール
 install_desc=シンプルに、プラットフォームに応じて<a target="_blank" rel="noopener noreferrer" href="%[1]s">バイナリを実行</a>したり、<a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>で動かしたり、<a target="_blank" rel="noopener noreferrer" href="%[3]s">パッケージ</a>を使うだけ。
 platform=クロスプラットフォーム
-platform_desc=Forgejoは<a target="_blank" rel="noopener noreferrer" href="%s">Go</a>でコンパイルできる環境ならどこでも動きます: Windows、macOS、Linux、ARM等々、好きなものを選んでください!
 lightweight=軽量
 lightweight_desc=Forgejo の最小動作要件は小さくて、安価な Raspberry Pi でも動きます。エネルギー消費を節約しましょう!
 license=オープンソース
@@ -934,7 +933,7 @@ select_permissions=許可の選択
 permission_no_access=アクセス不可
 permission_read=読み取り
 permission_write=読み取りと書き込み
-access_token_desc=選択したトークン権限に応じて、関連する<a %s>API</a>ルートのみに許可が制限されます。 詳細は<a %s>ドキュメント</a>を参照してください。
+access_token_desc=選択したトークン権限に応じて、関連する<a href="%[1]s" target="_blank">API</a>ルートのみに許可が制限されます。 詳細は<a href="%[2]s" target="_blank">ドキュメント</a>を参照してください。
 at_least_one_permission=トークンを作成するには、少なくともひとつの許可を選択する必要があります
 permissions_list=許可:
 
@@ -1355,7 +1354,7 @@ editor.fail_to_apply_patch=`パッチを適用できません "%s"`
 editor.new_patch=新しいパッチ
 editor.commit_message_desc=詳細な説明を追加…
 editor.signoff_desc=コミットログメッセージの最後にコミッターの Signed-off-by 行を追加
-editor.commit_directly_to_this_branch=ブランチ<strong class="branch-name">%s</strong>へ直接コミットする。
+editor.commit_directly_to_this_branch=ブランチ<strong class="%[2]s">%[1]s</strong>へ直接コミットする。
 editor.create_new_branch=<strong>新しいブランチ</strong>にコミットしてプルリクエストを作成する。
 editor.create_new_branch_np=<strong>新しいブランチ</strong>にコミットする。
 editor.propose_file_change=ファイル修正を提案
@@ -1721,7 +1720,7 @@ issues.error_modifying_due_date=期日を変更できませんでした。
 issues.error_removing_due_date=期日を削除できませんでした。
 issues.push_commit_1=が %d コミット追加 %s
 issues.push_commits_n=が %d コミット追加 %s
-issues.force_push_codes=`が %[1]s を強制プッシュ ( <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> から <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> へ ) %[6]s`
+issues.force_push_codes=`が %[1]s を強制プッシュ ( <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> から <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> へ ) %[6]s`
 issues.force_push_compare=比較
 issues.due_date_form=yyyy-mm-dd
 issues.due_date_form_add=期日の追加
@@ -1836,7 +1835,7 @@ pulls.nothing_to_compare=同じブランチ同士のため、 プルリクエス
 pulls.nothing_to_compare_and_allow_empty_pr=これらのブランチは内容が同じです。 空のプルリクエストになります。
 pulls.has_pull_request=`同じブランチのプルリクエストはすでに存在します: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=プルリクエストを作成
-pulls.title_desc_few=が <code>%[2]s</code> から <code id="branch_target">%[3]s</code> への %[1]d コミットのマージを希望しています
+pulls.title_desc_few=が <code>%[2]s</code> から <code id="%[4]s">%[3]s</code> への %[1]d コミットのマージを希望しています
 pulls.merged_title_desc_few=が %[1]d 個のコミットを <code>%[2]s</code> から <code>%[3]s</code> へマージ %[4]s
 pulls.change_target_branch_at=`がターゲットブランチを <b>%s</b> から <b>%s</b> に変更 %s`
 pulls.tab_conversation=会話
@@ -2779,7 +2778,7 @@ issues.archived_label_description = (アーカイブ済) %s
 settings.web_hook_name_sourcehut_builds = SourceHut Builds
 settings.matrix.room_id_helper = ルームIDは、Element web clientのRoom Settings > Advanced > Internal room IDから取得できます。例:%s。
 pulls.merged_title_desc_one = %[4]s の <code>%[2]s</code> から %[1]d 件のコミットを <code>%[3]s</code> へマージした
-pulls.title_desc_one = <code id="branch_target">%[3]s</code> から %[1]d 件のコミットを <code>%[2]s</code> へマージしたい
+pulls.title_desc_one = <code id="%[4]s">%[3]s</code> から %[1]d 件のコミットを <code>%[2]s</code> へマージしたい
 pulls.ready_for_review = レビューの準備ができていますか?
 settings.transfer.button = 所有権を移送する
 settings.transfer.modal.title = 所有権を移送
diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini
index 9c5b6ca3c1..5b90b1020b 100644
--- a/options/locale/locale_ko-KR.ini
+++ b/options/locale/locale_ko-KR.ini
@@ -778,7 +778,7 @@ editor.or=혹은
 editor.cancel_lower=취소
 editor.commit_changes=변경 내용을 커밋
 editor.commit_message_desc=선택적 확장 설명 추가…
-editor.commit_directly_to_this_branch=<strong class="branch-name">%s</strong> 브랜치에서 직접 커밋해주세요.
+editor.commit_directly_to_this_branch=<strong class="%[2]s">%[1]s</strong> 브랜치에서 직접 커밋해주세요.
 editor.create_new_branch=이 커밋에 대한 <strong>새로운 브랜치</strong>를 만들고 끌어오기 요청을 시작합니다.
 editor.new_branch_name_desc=새로운 브랜치 이름…
 editor.cancel=취소
@@ -973,7 +973,7 @@ pulls.compare_compare=다음으로부터 풀
 pulls.filter_branch=Filter Branch
 pulls.no_results=결과를 찾을 수 없습니다.
 pulls.create=풀 리퀘스트 생성
-pulls.title_desc_few=<code>%[2]s</code> 에서 <code id="branch_target">%[3]s</code> 로 %[1]d개의 커밋들을 병합하려함
+pulls.title_desc_few=<code>%[2]s</code> 에서 <code id="%[4]s">%[3]s</code> 로 %[1]d개의 커밋들을 병합하려함
 pulls.merged_title_desc_few=님이 <code>%[2]s</code> 에서 <code>%[3]s</code> 로 %[1]d 커밋을 %[4]s 병합함
 pulls.tab_conversation=대화
 pulls.tab_commits=커밋
@@ -1081,7 +1081,6 @@ contributors.contribution_type.commits=커밋
 
 search=검색
 search.search_repo=저장소 검색
-search.results="<a href=\"%s\">%s</a> 에서 \"%s\" 에 대한 검색 결과"
 search.code_no_results=검색어와 일치하는 소스코드가 없습니다.
 
 settings=설정
diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini
index 48c739bb30..aeaddf3b9c 100644
--- a/options/locale/locale_lv-LV.ini
+++ b/options/locale/locale_lv-LV.ini
@@ -187,7 +187,6 @@ app_desc=Viegli uzstādāms Git serviss
 install=Vienkārši instalējams
 install_desc=Vienkārši <a target="_blank" rel="noopener noreferrer" href="%[1]s">jāpalaiž izpildāmais fails</a> vajadzīgajai platformai, jāizmanto <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, vai jāiegūst <a target="_blank" rel="noopener noreferrer" href="%[3]s">pakotne</a>.
 platform=Pieejama dažādām platformām
-platform_desc=Forgejo iespējams uzstādīt jebkur, kam <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> var nokompilēt: Windows, macOS, Linux, ARM utt. Izvēlies to, kas tev patīk!
 lightweight=Viegla
 lightweight_desc=Forgejo ir miminālas prasības un to var darbināt uz nedārga Raspberry Pi datora. Ietaupi savai ierīcei resursus!
 license=Atvērtā pirmkoda
@@ -830,7 +829,7 @@ select_permissions=Norādiet tiesības
 permission_no_access=Nav piekļuves
 permission_read=Skatīšanās
 permission_write=Skatīšanās un raksīšanas
-access_token_desc=Atzīmētie pilnvaras apgabali ierobežo autentifikāciju tikai atbilstošiem <a %s>API</a> izsaukumiem. Sīkāka informācija pieejama <a %s>dokumentācijā</a>.
+access_token_desc=Atzīmētie pilnvaras apgabali ierobežo autentifikāciju tikai atbilstošiem <a href="%[1]s" target="_blank">>API</a> izsaukumiem. Sīkāka informācija pieejama <a href="%[2]s" target="_blank">>dokumentācijā</a>.
 at_least_one_permission=Nepieciešams norādīt vismaz vienu tiesību, lai izveidotu pilnvaru
 permissions_list=Tiesības:
 
@@ -1231,7 +1230,7 @@ editor.fail_to_apply_patch=`Neizdevās pielietot ielāpu "%s"`
 editor.new_patch=Jauns ielāps
 editor.commit_message_desc=Pievienot neobligātu paplašinātu aprakstu…
 editor.signoff_desc=Pievienot revīzijas žurnāla ziņojuma beigās Signed-off-by ar revīzijas autoru.
-editor.commit_directly_to_this_branch=Apstiprināt revīzijas izmaiņas atzarā <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Apstiprināt revīzijas izmaiņas atzarā <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Izveidot <strong>jaunu atzaru</strong> un izmaiņu pieprasījumu šai revīzijai.
 editor.create_new_branch_np=Izveidot <strong>jaunu atzaru</strong> šai revīzijai.
 editor.propose_file_change=Ieteikt faila izmaiņas
@@ -1597,7 +1596,7 @@ issues.error_modifying_due_date=Neizdevās izmainīt izpildes termiņu.
 issues.error_removing_due_date=Neizdevās noņemt izpildes termiņu.
 issues.push_commit_1=iesūtīja %d revīziju %s
 issues.push_commits_n=iesūtīja %d revīzijas %s
-issues.force_push_codes=`veica piespiedu izmaiņu iesūtīšanu atzarā %[1]s no revīzijas <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> uz <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes=`veica piespiedu izmaiņu iesūtīšanu atzarā %[1]s no revīzijas <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> uz <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare=Salīdzināt
 issues.due_date_form=dd.mm.yyyy
 issues.due_date_form_add=Pievienot izpildes termiņu
@@ -1712,7 +1711,7 @@ pulls.nothing_to_compare=Nav ko salīdzināt, jo bāzes un salīdzināmie atzari
 pulls.nothing_to_compare_and_allow_empty_pr=Šie atzari ir vienādi. Izveidotais izmaiņu pieprasījums būs tukšs.
 pulls.has_pull_request=`Izmaiņu pieprasījums starp šiem atzariem jau eksistē: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Izveidot izmaiņu pieprasījumu
-pulls.title_desc_few=vēlas sapludināt %[1]d revīzijas no <code>%[2]s</code> uz <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=vēlas sapludināt %[1]d revīzijas no <code>%[2]s</code> uz <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=sapludināja %[1]d revīzijas no <code>%[2]s</code> uz <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`nomainīja mērķa atzaru no <b>%s</b> uz <b>%s</b> %s`
 pulls.tab_conversation=Saruna
diff --git a/options/locale/locale_nds.ini b/options/locale/locale_nds.ini
index f59e0151a3..46c27fbea1 100644
--- a/options/locale/locale_nds.ini
+++ b/options/locale/locale_nds.ini
@@ -839,7 +839,7 @@ add_email_confirmation_sent = Eene Utwiesens-E-Mail is an »%s« schickt worden.
 ssh_desc = Deese publiken SSH-Slötels sünd mit dienem Konto verbunnen. De tohörig privaate Slötel gifft kumpleten Togriep up diene Repositoriums. SSH-Slötels, wat utwiest worden sünd, könen bruukt worden, um SSH-unnerschreven Git-Kommitterens uttowiesen.
 keep_email_private_popup = Dat word diene E-Mail-Adress vun dienem Profil verburgen. Dann is dat nich mehr de Normaalweert för Kommitterens, wat du över de Internett-Schnittstee maakst, so as Datei-Upladens un Bewarkens, un word nich in Tosamenföhrens-Kommitterens bruukt. In Stee daarvun kann eene besünnere Adress %s bruukt worden, um Kommitterens mit dienem Konto to verbinnen. Wees wiss, dat dat Ännern vun deeser Instellen bestahn Kommitterens nich ännert.
 ssh_helper = <strong>Bruukst du Hülp?</strong> Kiek de Inföhren an, wo du <a href="%s">diene eegenen SSH-Slötels maakst</a> of hülp <a href="%s">gewohnten Probleemen</a> of, över wat man mit SSH mennigmaal strukelt.
-access_token_desc = Utköört Teken-Verlöövnissen begrenzen dat Anmellen blots up de tohörig <a %s>API</a>-Padden. Lees de <a %s>Dokumenteren</a> för mehr Informatioonen.
+access_token_desc = Utköört Teken-Verlöövnissen begrenzen dat Anmellen blots up de tohörig <a href="%[1]s" target="_blank">API</a>-Padden. Lees de <a href="%[2]s" target="_blank">Dokumenteren</a> för mehr Informatioonen.
 oauth2_confidential_client = Diskreeter Klient. Köör dat för Programmen ut, wat dat Geheimnis diskreet behanneln, as Internett-Sieden. Köör dat nich för stedenwies Programmen ut, as Schrievdisk- un Telefoon-Programmens.
 gpg_helper = <strong>Bruukst du Hülp?</strong> Kiek de Inföhren <a href="%s">över GPG</a> an.
 gpg_desc = Deese publiken GPG-Slötels sünd mit dienem Konto verbunnen un worden bruukt, um diene Kommitterens uttowiesen. Holl de tohörig privaaten Slötels seker, denn daarmit kann man Kommitterens mit diener Unnerschrift unnerschrieven.
@@ -1126,7 +1126,7 @@ editor.patching = Plackt:
 editor.fail_to_apply_patch = Kann Plack »%s« nich anwennen
 editor.new_patch = Nejer Plack
 editor.commit_message_desc = Wenn du willst, föög een wiederes Beschrieven hento …
-editor.commit_directly_to_this_branch = Kommitteer stracks up de <strong class="branch-name">%s</strong>-Twieg.
+editor.commit_directly_to_this_branch = Kommitteer stracks up de <strong class="%[2]s">%[1]s</strong>-Twieg.
 editor.propose_file_change = Datei-Ännern vörslagen
 editor.new_branch_name = Benööm de Twieg för deeses Kommitteren
 editor.new_branch_name_desc = Nejer Twig-Naam …
@@ -1561,7 +1561,7 @@ issues.due_date_invalid = Dat Anstahns-Datum is ungültig of buten de Rieg. Bidd
 issues.dependency.remove = Wegdoon
 issues.dependency.issue_close_blocks = Deeses Gefall blockeert dat Dichtmaken vun deesen Gefallens
 issues.review.outdated_description = Inholl hett sik ännert, siet deeser Kommentaar schreven worden is
-issues.force_push_codes = `hett %[1]s vun <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> to <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s dwangsschuven`
+issues.force_push_codes = `hett %[1]s vun <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> to <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s dwangsschuven`
 issues.dependency.pr_remove_text = Dat word de Ofhangen vun deesem Haalvörslag wegdoon. Wiedermaken?
 issues.review.pending = Staht ut
 issues.review.option.hide_outdated_comments = Verollte Kommentarens verbargen
@@ -1599,7 +1599,7 @@ pulls.filter_changes_by_commit = Na Kommitteren filtern
 pulls.nothing_to_compare = Deese Twiegen sünd gliek. ’t is nich nödig, eenen Haalvörslag to maken.
 pulls.nothing_to_compare_have_tag = De utköört Twieg/Mark sünd gliek.
 pulls.create = Haalvörslag maken
-pulls.title_desc_one = will %[1]d Kommitteren vun <code>%[2]s</code> na <code id="branch_target">%[3]s</code> tosamenföhren
+pulls.title_desc_one = will %[1]d Kommitteren vun <code>%[2]s</code> na <code id="%[4]s">%[3]s</code> tosamenföhren
 pulls.merged_title_desc_one = hett %[1]d Kommitteren vun <code>%[2]s</code> na <code>%[3]s</code> %[4]s tosamenföhrt
 pulls.change_target_branch_at = `hett de Enn-Twieg vun <b>%s</b> to <b>%s</b> %s ännert`
 pulls.tab_conversation = Snack
@@ -1649,7 +1649,7 @@ issues.content_history.delete_from_history = Ut Histoorje lösken
 pulls.compare_changes = Nejer Haalvörslag
 pulls.allow_edits_from_maintainers_desc = Brukers, well dat Recht hebben, to de Grund-Twieg to schrieven, düren ok up deesen Twieg schuuven
 pulls.nothing_to_compare_and_allow_empty_pr = Deese Twiegen sünd gliek. De HV word leeg wesen.
-pulls.title_desc_few = will %[1]d Kommitterens vun <code>%[2]s</code> na <code id="branch_target">%[3]s</code> tosamenföhren
+pulls.title_desc_few = will %[1]d Kommitterens vun <code>%[2]s</code> na <code id="%[4]s">%[3]s</code> tosamenföhren
 pulls.data_broken = Deeser Haalvörslag is kaputt, denn de Gabel-Informatioon fehlt.
 pulls.waiting_count_1 = %d Nakieken staht ut
 issues.content_history.deleted = lösket
diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini
index cbf418f9be..6f2bee0145 100644
--- a/options/locale/locale_nl-NL.ini
+++ b/options/locale/locale_nl-NL.ini
@@ -1028,7 +1028,7 @@ visibility.private_tooltip = Alleen zichtbaar voor leden van organisaties waarbi
 user_unblock_success = De gebruiker is succesvol gedeblokkeerd.
 user_block_success = De gebruiker is succesvol geblokkeerd.
 blocked_since = Geblokkeerd sinds %s
-access_token_desc = Geselecteerde token machtigingen beperken autorisatie alleen tot de bijbehorende <a %s>API</a> routes. Lees de <a %s>documentatie</a> voor meer informatie.
+access_token_desc = Geselecteerde token machtigingen beperken autorisatie alleen tot de bijbehorende <a href="%[1]s" target="_blank">API</a> routes. Lees de <a href="%[2]s" target="_blank">documentatie</a> voor meer informatie.
 oauth2_confidential_client = Vertrouwelijke client. Selecteer deze optie voor apps die het geheim bewaren, zoals webapps. Niet selecteren voor native apps, waaronder desktop- en mobiele apps.
 authorized_oauth2_applications_description = Je hebt deze applicaties van derden toegang verleend tot je persoonlijke Forgejo-account. Trek de toegang in voor applicaties die niet langer in gebruik zijn.
 hidden_comment_types.ref_tooltip = Reacties waarbij naar deze issue werd verwezen vanuit een ander issue/commit/…
@@ -1309,7 +1309,7 @@ editor.patching=Patchen:
 editor.new_patch=Nieuwe patch
 editor.commit_message_desc=Voeg een optionele uitgebreide omschrijving toe…
 editor.signoff_desc=Voeg een Signed-off-by toe aan het einde van het commit logbericht.
-editor.commit_directly_to_this_branch=Commit direct naar de branch '<strong class="branch-name">%s</strong>'.
+editor.commit_directly_to_this_branch=Commit direct naar de branch '<strong class="%[2]s">%[1]s</strong>'.
 editor.create_new_branch=Maak een <strong>nieuwe branch</strong> voor deze commit en start van een pull request.
 editor.create_new_branch_np=Maak een <strong>nieuwe branch</strong> voor deze commit.
 editor.propose_file_change=Stel bestandswijziging voor
@@ -1599,7 +1599,7 @@ issues.error_modifying_due_date=Deadline aanpassen mislukt.
 issues.error_removing_due_date=Deadline verwijderen mislukt.
 issues.push_commit_1=toegevoegd %d commit %s
 issues.push_commits_n=toegevoegd %d commits %s
-issues.force_push_codes=`force-push %[1]s van <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> naar <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes=`force-push %[1]s van <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> naar <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare=Vergelijk
 issues.due_date_form=jjjj-mm-dd
 issues.due_date_form_add=Vervaldatum toevoegen
@@ -1696,7 +1696,7 @@ pulls.nothing_to_compare=Deze branches zijn gelijk. Er is geen pull request nodi
 pulls.nothing_to_compare_and_allow_empty_pr=Deze branches zijn gelijk. Deze pull verzoek zal leeg zijn.
 pulls.has_pull_request=`Een pull-verzoek tussen deze branches bestaat al: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Pull request aanmaken
-pulls.title_desc_few=wilt %[1]d commits van <code>%[2]s</code> samenvoegen met <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=wilt %[1]d commits van <code>%[2]s</code> samenvoegen met <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=heeft %[1]d commits samengevoegd van <code>%[2]s</code> naar <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at='doelbranch aangepast van <b>%s</b> naar <b>%s</b> %s'
 pulls.tab_conversation=Discussie
@@ -2745,7 +2745,7 @@ activity.navbar.code_frequency = Code frequentie
 activity.navbar.recent_commits = Recente commits
 file_follow = Volg symlink
 error.broken_git_hook = it hooks van deze repository lijken kapot te zijn. Volg alsjeblieft <a target="_blank" rel="noreferrer" href="%s">de documentatie</a> om ze te repareren, push daarna wat commits om de status te vernieuwen.
-pulls.title_desc_one = wilt %[1]d commit van <code>%[2]s</code> samenvoegen in <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = wilt %[1]d commit van <code>%[2]s</code> samenvoegen in <code id="%[4]s">%[3]s</code>
 open_with_editor = Open met %s
 commits.search_branch = Deze branch
 pulls.merged_title_desc_one = heeft %[1]d commit van <code>%[2]s</code> samengevoegd in <code>%[3]s</code> %[4]s
diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini
index cecafc9870..7a5cb42b1e 100644
--- a/options/locale/locale_pl-PL.ini
+++ b/options/locale/locale_pl-PL.ini
@@ -1152,7 +1152,7 @@ editor.commit_signed_changes=Zatwierdź podpisane zmiany
 editor.commit_changes=Zatwierdź zmiany
 editor.add_tmpl=Dodanie '<filename>'
 editor.commit_message_desc=Dodaj dodatkowy rozszerzony opis…
-editor.commit_directly_to_this_branch=Zmieniaj bezpośrednio gałąź <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Zmieniaj bezpośrednio gałąź <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Stwórz <strong>nową gałąź</strong> dla tego commita i rozpocznij Pull Request.
 editor.create_new_branch_np=Stwórz <strong>nową gałąź</strong> dla tego commita.
 editor.propose_file_change=Zaproponuj zmiany w pliku
@@ -1482,7 +1482,7 @@ pulls.no_results=Nie znaleziono wyników.
 pulls.nothing_to_compare=Te gałęzie są sobie równe. Nie ma potrzeby tworzyć Pull Requesta.
 pulls.nothing_to_compare_and_allow_empty_pr=Te gałęzie są równe. Ten PR będzie pusty.
 pulls.create=Utwórz Pull Request
-pulls.title_desc_few=chce scalić %[1]d commity/ów z <code>%[2]s</code> do <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=chce scalić %[1]d commity/ów z <code>%[2]s</code> do <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=scala %[1]d commity/ów z <code>%[2]s</code> do <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`zmienia gałąź docelową z <b>%s</b> na <b>%s</b> %s`
 pulls.tab_conversation=Dyskusja
diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini
index 73211f7139..a941f270e4 100644
--- a/options/locale/locale_pt-BR.ini
+++ b/options/locale/locale_pt-BR.ini
@@ -217,7 +217,6 @@ server_internal = Erro interno do servidor
 app_desc=Um serviço de hospedagem Git amigável
 install=Fácil de instalar
 platform=Multi-plataforma
-platform_desc=Forgejo roda em qualquer sistema em que <a target="_blank" rel="noopener noreferrer" href="%s">Go</a> consegue compilar: Windows, macOS, Linux, ARM, etc. Escolha qual você gosta mais!
 lightweight=Leve e rápido
 lightweight_desc=Forgejo utiliza poucos recursos e consegue mesmo rodar no barato Raspberry Pi. Economize energia elétrica da sua máquina!
 license=Código aberto
@@ -1032,7 +1031,7 @@ user_block_success = O usuário foi bloqueado.
 twofa_recovery_tip = Caso perca o seu dispositivo, você poderá usar uma chave de uso único para recuperar o acesso à sua conta.
 webauthn_key_loss_warning = Caso perca as suas chaves de segurança, você perderá o acesso à sua conta.
 blocked_users_none = Nenhum usuário bloqueado.
-access_token_desc = As permissões selecionadas para o token limitam o acesso apenas às <a %s>rotas da API</a> correspondentes. Veja a <a %s>documentação</a> para mais informações.
+access_token_desc = As permissões selecionadas para o token limitam o acesso apenas às <a href="%[1]s" target="_blank">rotas da API</a> correspondentes. Veja a <a href="%[2]s" target="_blank">documentação</a> para mais informações.
 webauthn_alternative_tip = Você talvez queira configurar um método adicional de autenticação.
 change_password = Alterar senha
 hints = Dicas
@@ -1344,7 +1343,7 @@ editor.fail_to_apply_patch=`Não foi possível aplicar a correção "%s"`
 editor.new_patch=Novo patch
 editor.commit_message_desc=Adicione uma descrição detalhada (opcional)...
 editor.signoff_desc=Adicione um assinado-por-committer no final do log do commit.
-editor.commit_directly_to_this_branch=Commit diretamente no branch <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Commit diretamente no branch <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Crie um <strong>novo branch</strong> para este commit e crie um pull request.
 editor.create_new_branch_np=Crie um <strong>novo branch</strong> para este commit.
 editor.propose_file_change=Propor alteração de arquivo
@@ -1699,7 +1698,7 @@ issues.error_modifying_due_date=Falha ao modificar a data limite.
 issues.error_removing_due_date=Falha ao remover a data limite.
 issues.push_commit_1=adicionou %d commit %s
 issues.push_commits_n=adicionou %d commits %s
-issues.force_push_codes=`forçou o push %[1]s de <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> para <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes=`forçou o push %[1]s de <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> para <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare=Comparar
 issues.due_date_form=dd/mm/aaaa
 issues.due_date_form_add=Adicionar data limite
@@ -1813,7 +1812,7 @@ pulls.nothing_to_compare=Estes branches são iguais. Não há nenhuma necessidad
 pulls.nothing_to_compare_and_allow_empty_pr=Estes branches são iguais. Este PR ficará vazio.
 pulls.has_pull_request=`Um pull request entre esses branches já existe: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Criar pull request
-pulls.title_desc_few=quer mesclar %[1]d commits de <code>%[2]s</code> em <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=quer mesclar %[1]d commits de <code>%[2]s</code> em <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=mesclou %[1]d commits de <code>%[2]s</code> em <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`mudou o branch de destino de <b>%s</b> para <b>%s</b> %s`
 pulls.tab_conversation=Conversação
@@ -2691,7 +2690,7 @@ settings.confirm_wiki_branch_rename = Renomar o ramo da wiki
 pulls.merged_title_desc_one = mesclou %[1]d commit de <code>%[2]s</code> em <code>%[3]s</code> %[4]s
 activity.navbar.recent_commits = Commits recentes
 size_format = %[1]s: %[2]s; %[3]s: %[4]s
-pulls.title_desc_one = quer mesclar %[1]d commit de <code>%[2]s</code> em <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = quer mesclar %[1]d commit de <code>%[2]s</code> em <code id="%[4]s">%[3]s</code>
 pulls.cmd_instruction_merge_desc = Mescle as alterações e enviar para o Forgejo.
 pulls.ready_for_review = Pronto para revisão?
 commits.search_branch = Este ramo
diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini
index d368402a6a..8a2279fe8a 100644
--- a/options/locale/locale_pt-PT.ini
+++ b/options/locale/locale_pt-PT.ini
@@ -934,7 +934,7 @@ select_permissions=Escolher permissões
 permission_no_access=Sem acesso
 permission_read=Lidas
 permission_write=Leitura e escrita
-access_token_desc=As permissões dos códigos escolhidos limitam a autorização apenas às rotas da <a %s>API</a> correspondentes. Leia a <a %s>documentação</a> para obter mais informação.
+access_token_desc=As permissões dos códigos escolhidos limitam a autorização apenas às rotas da <a href="%[1]s" target="_blank">API</a> correspondentes. Leia a <a href="%[2]s" target="_blank">documentação</a> para obter mais informação.
 at_least_one_permission=Tem que escolher pelo menos uma permissão para criar um código
 permissions_list=Permissões:
 
@@ -1358,7 +1358,7 @@ editor.fail_to_apply_patch=`Não foi possível aplicar o remendo (patch) "%s"`
 editor.new_patch=Novo remendo (patch)
 editor.commit_message_desc=Adicionar uma descrição alargada opcional…
 editor.signoff_desc=Adicionar "Assinado-por" seguido do autor do cometimento no fim da mensagem do registo de cometimentos.
-editor.commit_directly_to_this_branch=Cometer imediatamente no ramo <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Cometer imediatamente no ramo <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Crie um <strong>novo ramo</strong> para este cometimento e inicie um pedido de integração.
 editor.create_new_branch_np=Criar um <strong>novo ramo</strong> para este cometimento.
 editor.propose_file_change=Propor modificação do ficheiro
@@ -1724,7 +1724,7 @@ issues.error_modifying_due_date=Falhou a modificação da data de vencimento.
 issues.error_removing_due_date=Falhou a remoção da data de vencimento.
 issues.push_commit_1=adicionou %d cometimento %s
 issues.push_commits_n=adicionou %d cometimentos %s
-issues.force_push_codes=`forçou o envio %[1]s de <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> para <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes=`forçou o envio %[1]s de <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> para <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare=Comparar
 issues.due_date_form=aaaa-mm-dd
 issues.due_date_form_add=Adicionar data de vencimento
@@ -1840,7 +1840,7 @@ pulls.nothing_to_compare_have_tag=O ramo/etiqueta escolhidos são iguais.
 pulls.nothing_to_compare_and_allow_empty_pr=Estes ramos são iguais. Este pedido de integração ficará vazio.
 pulls.has_pull_request=`Já existe um pedido de integração entre estes ramos: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Criar um pedido de integração
-pulls.title_desc_few=quer integrar %[1]d cometimento(s) do ramo <code>%[2]s</code> no ramo <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=quer integrar %[1]d cometimento(s) do ramo <code>%[2]s</code> no ramo <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=integrou %[1]d cometimento(s) do ramo <code>%[2]s</code> no ramo <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`mudou o ramo de destino de <b>%s</b> para <b>%s</b> %s`
 pulls.tab_conversation=Diálogo
@@ -2733,7 +2733,7 @@ migrate.forgejo.description = Migrar dados de codeberg.org ou de outras instânc
 n_commit_one = %s cometimento
 editor.commit_id_not_matching = O ficheiro foi modificado enquanto o estava a editar. Cometa para um ramo novo e depois integre.
 commits.search_branch = Este ramo
-pulls.title_desc_one = quer integrar %[1]d cometimento do ramo <code>%[2]s</code> no ramo <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = quer integrar %[1]d cometimento do ramo <code>%[2]s</code> no ramo <code id="%[4]s">%[3]s</code>
 pulls.reopen_failed.base_branch = O pedido de integração não pode ser reaberto porque o ramo base já não existe.
 activity.navbar.code_frequency = Frequência de programação
 settings.units.add_more = Habilitar mais
diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini
index 2324567c45..3507b2ea67 100644
--- a/options/locale/locale_ru-RU.ini
+++ b/options/locale/locale_ru-RU.ini
@@ -934,7 +934,7 @@ select_permissions=Выбрать разрешения
 permission_no_access=Нет доступа
 permission_read=Чтение
 permission_write=Чтение и запись
-access_token_desc=Выбранные области действия токена ограничивают авторизацию только соответствующими маршрутами <a %s>API</a>. Читайте <a %s>документацию</a> для получения дополнительной информации.
+access_token_desc=Выбранные области действия токена ограничивают авторизацию только соответствующими маршрутами <a href="%[1]s" target="_blank">API</a>. Читайте <a href="%[2]s" target="_blank">документацию</a> для получения дополнительной информации.
 at_least_one_permission=Необходимо выбрать хотя бы одно разрешение для создания токена
 permissions_list=Разрешения:
 
@@ -1340,7 +1340,7 @@ editor.fail_to_apply_patch=Невозможно применить патч «%s
 editor.new_patch=Новая правка
 editor.commit_message_desc=Добавьте необязательное расширенное описание…
 editor.signoff_desc=Добавить трейлер Signed-off-by с автором коммита в конце сообщения коммита.
-editor.commit_directly_to_this_branch=Сохранить коммит напрямую в ветвь <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Сохранить коммит напрямую в ветвь <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Сохранить коммит в <strong>новую ветвь</strong> и начать запрос на слияние.
 editor.create_new_branch_np=Создать <strong>новую ветвь</strong> для этого коммита.
 editor.propose_file_change=Предложить изменение файла
@@ -1705,7 +1705,7 @@ issues.error_modifying_due_date=Не удалось изменить срок в
 issues.error_removing_due_date=Не удалось убрать срок выполнения.
 issues.push_commit_1=добавлен %d коммит %s
 issues.push_commits_n=добавлены %d коммита(ов) %s
-issues.force_push_codes=`форсированное обновление изменений %[1]s <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> вместо <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> %[6]s`
+issues.force_push_codes=`форсированное обновление изменений %[1]s <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> вместо <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> %[6]s`
 issues.force_push_compare=Сравнить
 issues.due_date_form=гггг-мм-дд
 issues.due_date_form_add=Добавить срок выполнения
@@ -1816,8 +1816,8 @@ pulls.nothing_to_compare=Нечего сравнивать, родительск
 pulls.nothing_to_compare_and_allow_empty_pr=Ветви идентичны. Этот PR будет пустым.
 pulls.has_pull_request=`Запрос на слияние этих ветвей уже существует: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Создать запрос на слияние
-pulls.title_desc_one=хочет влить %[1]d коммит из <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
-pulls.title_desc_few=хочет влить %[1]d коммит(ов) из <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
+pulls.title_desc_one=хочет влить %[1]d коммит из <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
+pulls.title_desc_few=хочет влить %[1]d коммит(ов) из <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_one=слит %[1]d коммит из <code>%[2]s</code> в <code>%[3]s</code> %[4]s
 pulls.merged_title_desc_few=слито %[1]d коммит(ов) из <code>%[2]s</code> в <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`изменил(а) целевую ветвь с <b>%s</b> на <b>%s</b> %s`
diff --git a/options/locale/locale_si-LK.ini b/options/locale/locale_si-LK.ini
index bfb22176e8..d3006c26af 100644
--- a/options/locale/locale_si-LK.ini
+++ b/options/locale/locale_si-LK.ini
@@ -116,7 +116,6 @@ missing_csrf=නරක ඉල්ලීම: CSRF ටෝකන් නොමැත
 app_desc=වේදනාකාරී, ස්වයං-සත්කාරක Git සේවාවක්
 install=ස්ථාපනයට පහසුය
 platform=හරස් වේදිකාව
-platform_desc=Forgejo ඕනෑම තැනක ධාවනය <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> සඳහා සම්පාදනය කළ හැකිය: වින්ඩෝස්, මැකෝස්, ලිනක්ස්, ARM, ආදිය ඔබ ආදරය කරන එකක් තෝරන්න!
 lightweight=සැහැල්ලු
 lightweight_desc=Forgejo අඩු අවම අවශ්යතා ඇති අතර මිල අඩු Raspberry Pi මත ධාවනය කළ හැකිය. ඔබේ යන්ත්ර ශක්තිය සුරකින්න!
 license=විවෘත මූලාශ්‍ර
@@ -923,7 +922,7 @@ editor.commit_changes=වෙනස්කම් සිදු කරන්න
 editor.add_tmpl='<filename>' එකතු කරන්න
 editor.commit_message_desc=විකල්ප දීර්ඝ විස්තරයක් එක් කරන්න…
 editor.signoff_desc=කැපවූ ලොග් පණිවිඩය අවසානයේ දී කැපකරු විසින් සිග්නෙඩ්-ඕෆ්-විසින් ට්රේලරයක් එක් කරන්න.
-editor.commit_directly_to_this_branch=<strong class="branch-name">%s</strong> ශාඛාවට කෙලින්ම කැප කරන්න.
+editor.commit_directly_to_this_branch=<strong class="%[2]s">%[1]s</strong> ශාඛාවට කෙලින්ම කැප කරන්න.
 editor.create_new_branch=මෙම කැප කිරීම සඳහා <strong>නව ශාඛාවක්</strong> සාදා අදින්න ඉල්ලීමක් ආරම්භ කරන්න.
 editor.create_new_branch_np=මෙම කැප කිරීම සඳහා <strong>නව ශාඛාවක්</strong> සාදන්න.
 editor.propose_file_change=ගොනු වෙනස් කිරීම යෝජනා කරන්න
@@ -1098,12 +1097,12 @@ issues.reopen_comment_issue=අදහස් දක්වා විවෘත ක
 issues.create_comment=අදහස
 issues.closed_at=`මෙම ගැටළුව වසා <a id="%[1]s" href="#%[1]s">%[2]s</a>`
 issues.reopened_at=`මෙම ගැටළුව නැවත විවෘත කරන ලදි <a id="%[1]s" href="#%[1]s">%[2]s</a>`
-issues.ref_issue_from=<a href="%[3]s">මෙම නිකුතුව %[4]s හි</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>
-issues.ref_pull_from=<a href="%[3]s">මෙම අදින්න ඉල්ලීම%[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>
-issues.ref_closing_from=<a href="%[3]s">මෙම ගැටළුව වසා දමනු ඇත%[4]s මෙම ගැටළුව</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>
-issues.ref_reopening_from=<a href="%[3]s">මෙම ගැටළුව නැවත විවෘත කරනු ඇත%[4]s මෙම ගැටළුව</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>
-issues.ref_closed_from=<a href="%[3]s">මෙම නිකුතුව%[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>
-issues.ref_reopened_from=<a href="%[3]s">මෙම නිකුතුව%[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>නැවත විවෘත කරන ලදි
+issues.ref_issue_from=`<a href="%[3]s">මෙම නිකුතුව %[4]s හි</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
+issues.ref_pull_from=`<a href="%[3]s">මෙම අදින්න ඉල්ලීම%[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
+issues.ref_closing_from=`<a href="%[3]s">මෙම ගැටළුව වසා දමනු ඇත%[4]s මෙම ගැටළුව</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
+issues.ref_reopening_from=`<a href="%[3]s">මෙම ගැටළුව නැවත විවෘත කරනු ඇත%[4]s මෙම ගැටළුව</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
+issues.ref_closed_from=`<a href="%[3]s">මෙම නිකුතුව%[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
+issues.ref_reopened_from=`<a href="%[3]s">මෙම නිකුතුව%[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>නැවත විවෘත කරන ලදි`
 issues.ref_from=`හිම%[1]s`
 issues.role.owner=හිමිකරු
 issues.role.member=සාමාජික
@@ -1183,7 +1182,7 @@ issues.error_modifying_due_date=නියමිත දිනය වෙනස්
 issues.error_removing_due_date=නියමිත දිනය ඉවත් කිරීමට අපොහොසත් විය.
 issues.push_commit_1=එකතු %d කැප %s
 issues.push_commits_n=එකතු %d විවරයන් %s
-issues.force_push_codes=`බලය-pushed%[1]s සිට <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> <a class="ui sha" href="%[5]s"><code>%[4]s ගේ</code></a> %[6]s`
+issues.force_push_codes=`බලය-pushed%[1]s සිට <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> <a class="%[7]s" href="%[5]s"><code>%[4]s ගේ</code></a> %[6]s`
 issues.force_push_compare=සසඳන්න
 issues.due_date_form=Yyy-mm-dd
 issues.due_date_form_add=නියමිත දිනය එකතු කරන්න
@@ -1269,7 +1268,7 @@ pulls.nothing_to_compare=මෙම ශාඛා සමාන වේ. අදි
 pulls.nothing_to_compare_and_allow_empty_pr=මෙම ශාඛා සමාන වේ. මෙම මහජන සම්බන්ධතා හිස් වනු ඇත.
 pulls.has_pull_request=`මෙම ශාඛා අතර අදින්න ඉල්ලීම දැනටමත් පවතී: <a href="%[1]s">%[2]s #%[3]d</a>`
 pulls.create=අදින්න ඉල්ලීම නිර්මාණය
-pulls.title_desc_few=%[1]d සිට <code>%[2]s</code> දක්වා <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=%[1]d සිට <code>%[2]s</code> දක්වා <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=මර්ජ්%[1]d සිට <code>%[2]s</code> දක්වා <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`ඉලක්කගත ශාඛාව <b>%s</b> සිට <b>%s</b> %sදක්වා වෙනස් කර ඇත`
 pulls.tab_conversation=සංවාදය
@@ -1280,7 +1279,7 @@ pulls.cant_reopen_deleted_branch=ශාඛාව මකා දැමූ නි
 pulls.merged=සංයුක්ත කෙරිණි
 pulls.manually_merged=අතින් සංයුක්ත කර ඇත
 pulls.is_closed=අදින්න ඉල්ලීම වසා දමා ඇත.
-pulls.title_wip_desc=<a href="#">අහම්බෙන් ඒකාබද්ධ කිරීමෙන් අදින්න ඉල්ලීම වැළැක්වීම සඳහා <strong>%s</strong></a> සමඟ මාතෘකාව ආරම්භ කරන්න.
+pulls.title_wip_desc=`<a href="#">අහම්බෙන් ඒකාබද්ධ කිරීමෙන් අදින්න ඉල්ලීම වැළැක්වීම සඳහා <strong>%s</strong></a> සමඟ මාතෘකාව ආරම්භ කරන්න.`
 pulls.cannot_merge_work_in_progress=මෙම අදින්න ඉල්ලීම ක්රියාත්මක වන කාර්යයක් ලෙස සලකුණු කර ඇත.
 pulls.still_in_progress=තවමත් ක්රියාත්මක වෙමින් තිබේද?
 pulls.add_prefix=<strong>%s</strong> උපසර්ගය එකතු කරන්න
diff --git a/options/locale/locale_sk-SK.ini b/options/locale/locale_sk-SK.ini
index 29824c5b4d..9b7fb5fcd8 100644
--- a/options/locale/locale_sk-SK.ini
+++ b/options/locale/locale_sk-SK.ini
@@ -187,7 +187,6 @@ app_desc=Jednoducho prístupný vlastný Git
 install=Jednoduchá inštalácia
 install_desc=Jednoducho <a target="_blank" rel="noopener noreferrer" href="%[1]s">spustite binárku</a> pre vašu platformu, pošlite ju ako <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, alebo ju získajte <a target="_blank" rel="noopener noreferrer" href="%[3]s">ako balíček</a>.
 platform=Multiplatformový
-platform_desc=Forgejo beží všade kde je možné preložiť <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a>: Windows, macOS, Linux, ARM, a podobne. Vyberte si!
 lightweight=Ľahká
 lightweight_desc=Forgejo má minimálne požiadavky a môže bežať na Raspberry Pi. Šetrite energiou vášho stroja!
 license=Otvorený zdrojový kód
@@ -1030,7 +1029,7 @@ editor.cancel_lower=Zrušiť
 editor.commit_signed_changes=Odoslať podpísané zmeny
 editor.commit_changes=Odoslať zmeny
 editor.patch=Použiť patch
-editor.commit_directly_to_this_branch=Odoslať zmeny revízie priamo do vetvy <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Odoslať zmeny revízie priamo do vetvy <strong class="%[2]s">%[1]s</strong>.
 editor.cancel=Zrušiť
 editor.commit_empty_file_header=Odoslať prázdny súbor
 editor.commit_empty_file_text=Súbor, ktorý sa chystáte odoslať, je prázdny. Pokračovať?
diff --git a/options/locale/locale_sl.ini b/options/locale/locale_sl.ini
index 56ef337d83..703a5879ea 100644
--- a/options/locale/locale_sl.ini
+++ b/options/locale/locale_sl.ini
@@ -312,7 +312,7 @@ appearance = Videz
 password = Geslo
 authorized_oauth2_applications_description = Tem aplikacijam tretjih oseb ste odobrili dostop do svojega osebnega računa Forgejo. Prosimo, da prekličete dostop do aplikacij, ki jih ne uporabljate več.
 social_desc = S temi družabnimi računi se lahko prijavite v svoj račun. Prepričajte se, da jih vse prepoznate.
-access_token_desc = Izbrana dovoljenja žetona omejujejo avtorizacijo samo na ustrezne poti <a %s>API</a>. Za več informacij preberite <a %s>dokumentacijo</a>.
+access_token_desc = Izbrana dovoljenja žetona omejujejo avtorizacijo samo na ustrezne poti <a href="%[1]s" target="_blank">API</a>. Za več informacij preberite <a href="%[2]s" target="_blank">dokumentacijo</a>.
 oauth2_client_secret_hint = Skrivnost se ne bo več prikazala, ko zapustite ali osvežite to stran. Prepričajte se, da ste jo shranili.
 twofa_desc = Za zaščito računa pred krajo gesla lahko uporabite pametni telefon ali drugo napravo za prejemanje časovno omejenih enkratnih gesel ("TOTP").
 twofa_recovery_tip = Če napravo izgubite, boste lahko z obnovitvenim ključem za enkratno uporabo ponovno pridobili dostop do računa.
diff --git a/options/locale/locale_sr-SP.ini b/options/locale/locale_sr-SP.ini
index e091f91a68..a9c7308f28 100644
--- a/options/locale/locale_sr-SP.ini
+++ b/options/locale/locale_sr-SP.ini
@@ -266,7 +266,7 @@ editor.commit_changes=Изврши комит промена
 editor.add=Додај '%s'
 editor.update=Ажурирај '%s'
 editor.delete=Уклони '%s'
-editor.commit_directly_to_this_branch=Изврши комит директно на <strong class="branch-name">%s</strong> грану.
+editor.commit_directly_to_this_branch=Изврши комит директно на <strong class="%[2]s">%[1]s</strong> грану.
 editor.create_new_branch=Креирај <strong>нову грану</strong> за овај комит и поднеси захтев за спајање.
 editor.cancel=Откажи
 editor.branch_already_exists=Грана '%s' већ постоји за ово спремиште.
diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini
index a96e2cc1dc..4bced1db39 100644
--- a/options/locale/locale_sv-SE.ini
+++ b/options/locale/locale_sv-SE.ini
@@ -850,7 +850,7 @@ editor.commit_signed_changes=Committa signerade ändringar
 editor.commit_changes=Checka in ändringar
 editor.add_tmpl=Lägg till '<filename>'
 editor.commit_message_desc=Lägg till en valfri utökad beskrivning…
-editor.commit_directly_to_this_branch=Checka in direkt till grenen <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Checka in direkt till grenen <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Skapa en <strong>ny gren</strong> för denna incheckning och påbörja en hämtningsbegäran.
 editor.create_new_branch_np=Skapa en <strong>ny branch</strong> för den här committen.
 editor.propose_file_change=Föreslå filändring
@@ -1158,7 +1158,7 @@ pulls.filter_branch=Filtrera gren
 pulls.no_results=Inga resultat hittades.
 pulls.nothing_to_compare=Dessa brancher är ekvivalenta. Det finns ingen anledning att skapa en pull-request.
 pulls.create=Skapa Pullförfrågan
-pulls.title_desc_few=vill sammanfoga %[1]d incheckningar från <code>s[2]s</code> in i <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=vill sammanfoga %[1]d incheckningar från <code>s[2]s</code> in i <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=sammanfogade %[1]d incheckningar från <code>%[2]s</code> in i <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`ändrade mål-branch från <b>%s</b> till <b>%s</b>%s`
 pulls.tab_conversation=Konversation
diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini
index d5fc65e261..87dd127d0c 100644
--- a/options/locale/locale_tr-TR.ini
+++ b/options/locale/locale_tr-TR.ini
@@ -214,7 +214,6 @@ app_desc=Zahmetsiz, kendi sunucunuzda barındırabileceğiniz Git servisi
 install=Kurulumu kolay
 install_desc=Platformunuz için <a target="_blank" rel="noopener noreferrer" href="%[1]s">ikili dosyayı çalıştırın</a>, <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a> ile yükleyin veya <a target="_blank" rel="noopener noreferrer" href="%[3]s">paket</a> olarak edinin.
 platform=Farklı platformlarda çalışablir
-platform_desc=Forgejo <a target="_blank" rel="noopener noreferrer" href="http://golang.org/">Go</a> ile derleme yapılabilecek her yerde çalışmaktadır: Windows, macOS, Linux, ARM, vb. Hangisini seviyorsanız onu seçin!
 lightweight=Hafif
 lightweight_desc=Forgejo'nın minimal gereksinimleri çok düşüktür ve ucuz bir Raspberry Pi üzerinde çalışabilmektedir. Makine enerjinizden tasarruf edin!
 license=Açık Kaynak
@@ -908,7 +907,7 @@ select_permissions=İzinleri seçin
 permission_no_access=Erişim Yok
 permission_read=Okunmuş
 permission_write=Okuma ve Yazma
-access_token_desc=Seçili token izinleri, yetkilendirmeyi ilgili <a %s>API</a> yollarıyla sınırlandıracaktır. Daha fazla bilgi için <a %s>belgeleri</a> okuyun.
+access_token_desc=Seçili token izinleri, yetkilendirmeyi ilgili <a href="%[1]s" target="_blank">API</a> yollarıyla sınırlandıracaktır. Daha fazla bilgi için <a href="%[2]s" target="_blank">belgeleri</a> okuyun.
 at_least_one_permission=Bir token oluşturmak için en azından bir izin seçmelisiniz
 permissions_list=İzinler:
 
@@ -1318,7 +1317,7 @@ editor.fail_to_apply_patch=`"%s" yaması uygulanamıyor`
 editor.new_patch=Yeni Yama
 editor.commit_message_desc=İsteğe bağlı uzun bir açıklama ekleyin…
 editor.signoff_desc=İşleme günlüğü mesajının sonuna işleyen tarafından imzalanan bir fragman ekleyin.
-editor.commit_directly_to_this_branch=Doğrudan <strong class="branch-name">%s</strong> bölümüne uygula.
+editor.commit_directly_to_this_branch=Doğrudan <strong class="%[2]s">%[1]s</strong> bölümüne uygula.
 editor.create_new_branch=Bu işleme için <strong>yeni bir dal</strong> oluşturun ve bir değişiklik isteği başlatın.
 editor.create_new_branch_np=Bu işleme için <strong>yeni bir dal</strong> oluştur.
 editor.propose_file_change=Dosya değişikliği öner
@@ -1684,7 +1683,7 @@ issues.error_modifying_due_date=Bitiş tarihi değiştirilemedi.
 issues.error_removing_due_date=Bitiş tarihi silinemedi.
 issues.push_commit_1=%d işlemeyi %s ekledi
 issues.push_commits_n=%d işlemeyi %s ekledi
-issues.force_push_codes=`%[1]s <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> hedefinden <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> hedefine zorla gönderildi %[6]s`
+issues.force_push_codes=`%[1]s <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> hedefinden <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> hedefine zorla gönderildi %[6]s`
 issues.force_push_compare=Karşılaştır
 issues.due_date_form=yyyy-aa-gg
 issues.due_date_form_add=Bitiş tarihi ekle
@@ -1799,7 +1798,7 @@ pulls.nothing_to_compare=Bu dallar eşit. Değişiklik isteği oluşturmaya gere
 pulls.nothing_to_compare_and_allow_empty_pr=Bu dallar eşittir. Bu Dİ boş olacak.
 pulls.has_pull_request=`Bu dallar arasında zaten bir değişiklik isteği var: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Değişiklik İsteği Oluştur
-pulls.title_desc_few=<code>%[2]s</code> içindeki %[1]d işlemeyi <code id="branch_target">%[3]s</code> ile birleştirmek istiyor
+pulls.title_desc_few=<code>%[2]s</code> içindeki %[1]d işlemeyi <code id="%[4]s">%[3]s</code> ile birleştirmek istiyor
 pulls.merged_title_desc_few=%[4]s <code>%[2]s</code> içindeki %[1]d işlemeyi <code>%[3]s</code> ile birleştirdi
 pulls.change_target_branch_at='hedef dal <b>%s</b> adresinden <b>%s</b>%s adresine değiştirildi'
 pulls.tab_conversation=Sohbet
diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini
index c75f9b4cde..9a98b4be81 100644
--- a/options/locale/locale_uk-UA.ini
+++ b/options/locale/locale_uk-UA.ini
@@ -1140,7 +1140,7 @@ editor.commit_changes=Закомітити зміни
 editor.add_tmpl=Додати «<filename>»
 editor.commit_message_desc=Додати необов'язковий розширений опис…
 editor.signoff_desc=Додати повідомленню в журналі комітів рядок Signed-off-by від свого імені.
-editor.commit_directly_to_this_branch=Зробіть коміт прямо в гілку <strong class="branch-name">%s</strong>.
+editor.commit_directly_to_this_branch=Зробіть коміт прямо в гілку <strong class="%[2]s">%[1]s</strong>.
 editor.create_new_branch=Створити <strong>нову гілку</strong> для цього коміту та відкрити запит на злиття.
 editor.create_new_branch_np=Створити <strong>нову гілку</strong> для цього коміту.
 editor.propose_file_change=Запропонувати зміну файлу
@@ -1411,7 +1411,7 @@ issues.error_modifying_due_date=Не вдалося змінити дату за
 issues.error_removing_due_date=Не вдалося видалити дату завершення.
 issues.push_commit_1=додав %d коміт %s
 issues.push_commits_n=додав %d коміти(-ів) %s
-issues.force_push_codes=`примусово залито %[1]s з <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> до <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes=`примусово залито %[1]s з <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> до <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare=Порівняти
 issues.due_date_form=рррр-мм-дд
 issues.due_date_form_add=Додати дату завершення
@@ -1497,7 +1497,7 @@ pulls.nothing_to_compare=Ці гілки однакові. Немає необх
 pulls.nothing_to_compare_and_allow_empty_pr=Одинакові гілки. Цей PR буде порожнім.
 pulls.has_pull_request=`Запит злиття для цих гілок вже існує: <a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=Створити запит на злиття
-pulls.title_desc_few=хоче злити %[1]d комітів з <code>%[2]s</code> в <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=хоче злити %[1]d комітів з <code>%[2]s</code> в <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=злито %[1]d комітів з <code>%[2]s</code> до <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`змінена цільова гілка з <b>%s</b> на <b>%s</b> %s`
 pulls.tab_conversation=Обговорення
diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini
index 492a43b63b..0f2b99be32 100644
--- a/options/locale/locale_zh-CN.ini
+++ b/options/locale/locale_zh-CN.ini
@@ -935,7 +935,7 @@ select_permissions=选择权限
 permission_no_access=无访问权限
 permission_read=可读
 permission_write=读写
-access_token_desc=所选令牌权限仅限于对应的 <a %s>API</a> 路由的授权。阅读 <a %s>文档</a> 以获取更多信息。
+access_token_desc=所选令牌权限仅限于对应的 <a href="%[1]s" target="_blank">API</a> 路由的授权。阅读 <a href="%[2]s" target="_blank">文档</a> 以获取更多信息。
 at_least_one_permission=你需要选择至少一个权限才能创建令牌
 permissions_list=权限:
 
@@ -1359,7 +1359,7 @@ editor.fail_to_apply_patch=无法应用补丁 %s
 editor.new_patch=新补丁
 editor.commit_message_desc=添加一个可选的扩展描述…
 editor.signoff_desc=在提交日志消息末尾添加签署人信息。
-editor.commit_directly_to_this_branch=直接提交至 <strong class="branch-name">%s</strong> 分支。
+editor.commit_directly_to_this_branch=直接提交至 <strong class="%[2]s">%[1]s</strong> 分支。
 editor.create_new_branch=为此提交创建一个 <strong>新的分支</strong> 并发起合并请求。
 editor.create_new_branch_np=为此提交创建 <strong>新分支</strong>。
 editor.propose_file_change=提议文件更改
@@ -1725,7 +1725,7 @@ issues.error_modifying_due_date=修改到期时间失败。
 issues.error_removing_due_date=删除到期时间失败。
 issues.push_commit_1=于 %[2]s 推送了 %[1]d 个提交
 issues.push_commits_n=于 %[2]s 推送了 %[1]d 个提交
-issues.force_push_codes=`于 %[6]s 强制推送 %[1]s,从 <a class="ui sha" href="%[3]s"><code>%[2]s</code></a>,至 <a class="ui sha" href="%[5]s"><code>%[4]s</code></a>`
+issues.force_push_codes=`于 %[6]s 强制推送 %[1]s,从 <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a>,至 <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a>`
 issues.force_push_compare=比较
 issues.due_date_form=yyyy-mm-dd
 issues.due_date_form_add=设置到期时间
@@ -1841,7 +1841,7 @@ pulls.nothing_to_compare_have_tag=所选分支/标签相同。
 pulls.nothing_to_compare_and_allow_empty_pr=这些分支是相等的,此合并请求将为空。
 pulls.has_pull_request=这些分支之间的合并请求已存在: <a href="%[1]s">%[2]s#%[3]d</a>
 pulls.create=创建合并请求
-pulls.title_desc_few=请求将 %[1]d 次代码提交从 <code>%[2]s</code> 合并至 <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=请求将 %[1]d 次代码提交从 <code>%[2]s</code> 合并至 <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=于 %[4]s 将 %[1]d 次代码提交从 <code>%[2]s</code>合并至 <code>%[3]s</code>
 pulls.change_target_branch_at=将目标分支从 <b>%s</b> 更改为 <b>%s</b> %s
 pulls.tab_conversation=对话内容
@@ -2761,7 +2761,7 @@ error.broken_git_hook = 该仓库的 Git 钩子似乎已经损坏,请按照 <a
 pulls.merged_title_desc_one = 已将来自 <code>%[2]s</code> 的 %[1]d 提交合并入 <code>%[3]s</code> %[4]s
 commits.search_branch = 此分支
 open_with_editor = 使用 %s 打开
-pulls.title_desc_one = 想要将来自 <code>%[2]s</code> 的 %[1]d 提交合并到 <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = 想要将来自 <code>%[2]s</code> 的 %[1]d 提交合并到 <code id="%[4]s">%[3]s</code>
 settings.rename_branch_failed_protected = 无法重命名受保护的分支 %s。
 stars = 点赞
 settings.confirmation_string = 确认输入
diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini
index 2558c1d43b..37eaf38270 100644
--- a/options/locale/locale_zh-HK.ini
+++ b/options/locale/locale_zh-HK.ini
@@ -478,7 +478,7 @@ editor.preview_changes=預覽更改
 editor.or=或
 editor.cancel_lower=取消
 editor.commit_changes=提交更改嗎?
-editor.commit_directly_to_this_branch=直接提交到 <strong class="branch-name">%s</strong> 分支。
+editor.commit_directly_to_this_branch=直接提交到 <strong class="%[2]s">%[1]s</strong> 分支。
 editor.create_new_branch=建立 <strong>新的分支</strong> 為此提交和開始合併請求。
 editor.cancel=取消
 editor.no_changes_to_show=沒有可以顯示的變更。
diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini
index 8a333cc49e..90181ba4d0 100644
--- a/options/locale/locale_zh-TW.ini
+++ b/options/locale/locale_zh-TW.ini
@@ -215,7 +215,6 @@ server_internal = 伺服器內部錯誤
 app_desc=一套極易架設的 Git 服務
 install=安裝容易
 platform=跨平台
-platform_desc=Forgejo 可以在所有能編譯 <a target="_blank" rel="noopener noreferrer" href="%s">Go 語言</a>的平台上執行:Windows,macOS,Linux,ARM 等。挑一個您喜歡的吧!
 lightweight=輕量級
 lightweight_desc=一片便宜的 Raspberry Pi 就可以滿足 Forgejo 的最低需求。節省您的機器資源!
 license=開放原始碼
@@ -1027,7 +1026,7 @@ webauthn_key_loss_warning = 如果您弄丟了您的安全金鑰,您將無法
 user_unblock_success = 已成功解除對此使用者的封鎖。
 webauthn_alternative_tip = 您可能想新增一個額外的驗證方法。
 user_block_success = 已成功封鎖此使用者。
-access_token_desc = 選擇的符記僅授權相對應的 <a %s>API路徑</a>。請參閱<a %s>文件</a>來了解更多。
+access_token_desc = 選擇的符記僅授權相對應的 <a href="%[1]s" target="_blank">API路徑</a>。請參閱<a href="%[2]s" target="_blank">文件</a>來了解更多。
 oauth2_application_locked = 可以在組態中設定 Forgejo 預先註冊一些 OAuth2 應用程式。為了避免不可預料的情況,它們無法被編輯或是移除。請參閱 OAuth2 文件來了解更多。
 hidden_comment_types_description = 在這裡選取的留言種類將不會顯示於問題頁面中。舉例來說,核取「標籤」將隱藏所有「使用者新增/移除了<標籤>」留言。
 authorized_oauth2_applications_description = 您已授權給這些第三方應用程式取用您的 Forgejo 個人帳號的權限。請撤銷您不再使用的應用程式的權限。
@@ -1307,7 +1306,7 @@ editor.fail_to_apply_patch=無法套用補綴「%s」
 editor.new_patch=新增補綴
 editor.commit_message_desc=(選填)加入詳細說明…
 editor.signoff_desc=在提交訊息底部加入提交者的「Signed-off-by」資訊。
-editor.commit_directly_to_this_branch=直接提交到 <strong class="branch-name">%s</strong> 分支。
+editor.commit_directly_to_this_branch=直接提交到 <strong class="%[2]s">%[1]s</strong> 分支。
 editor.create_new_branch=為此提交建立<strong>新分支</strong>並提出合併請求。
 editor.create_new_branch_np=為本次提交建立<strong>新分支</strong>。
 editor.propose_file_change=提出檔案變更
@@ -1643,7 +1642,7 @@ issues.error_modifying_due_date=無法修改截止日期。
 issues.error_removing_due_date=無法移除截止日期。
 issues.push_commit_1=加入了 %d 個提交 %s
 issues.push_commits_n=加入了 %d 個提交 %s
-issues.force_push_codes=`強制推送了 %[1]s 自 <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> 至 <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> %[6]s`
+issues.force_push_codes=`強制推送了 %[1]s 自 <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> 至 <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
 issues.force_push_compare=比較
 issues.due_date_form=yyyy年mm月dd日
 issues.due_date_form_add=新增截止日期
@@ -1745,7 +1744,7 @@ pulls.nothing_to_compare=這些分支的內容相同,無需建立合併請求
 pulls.nothing_to_compare_and_allow_empty_pr=這些分支的內容相同,此合併請求將會是空白的。
 pulls.has_pull_request=`已有介於這些分支間的合併請求:<a href="%[1]s">%[2]s#%[3]d</a>`
 pulls.create=建立合併請求
-pulls.title_desc_few=請求將 %[1]d 次程式碼提交從 <code>%[2]s</code> 合併至 <code id="branch_target">%[3]s</code>
+pulls.title_desc_few=請求將 %[1]d 次程式碼提交從 <code>%[2]s</code> 合併至 <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_few=將 %[1]d 次提交從 <code>%[2]s</code> 合併至 <code>%[3]s</code> %[4]s
 pulls.change_target_branch_at=`將目標分支從 <b>%s</b> 更改為 <b>%s</b> %s`
 pulls.tab_conversation=對話內容
@@ -2626,7 +2625,7 @@ signing.wont_sign.approved = 因為合併請求沒有被核可,這個合併不
 activity.navbar.recent_commits = 最近的提交
 issues.comment.blocked_by_user = 因為您被該儲存庫的所有者或問題的提出者封鎖,您不能在這則問題上留言。
 pulls.closed = 合併請求已關閉
-pulls.title_desc_one = 想從 <code>%[2]s</code> 合併 %[1]d 個提交至 <code id="branch_target">%[3]s</code>
+pulls.title_desc_one = 想從 <code>%[2]s</code> 合併 %[1]d 個提交至 <code id="%[4]s">%[3]s</code>
 pulls.merged_title_desc_one = 於 %[4]s 自 <code>%[2]s</code> 合併了 %[1]d 個提交至 <code>%[3]s</code>
 issues.archived_label_description = (已封存)%s
 signing.wont_sign.always = 永遠簽署提交。
diff --git a/templates/repo/editor/commit_form.tmpl b/templates/repo/editor/commit_form.tmpl
index 9f81b1d3a0..f8c1beb027 100644
--- a/templates/repo/editor/commit_form.tmpl
+++ b/templates/repo/editor/commit_form.tmpl
@@ -26,7 +26,7 @@
 					<input type="radio" class="js-quick-pull-choice-option" name="commit_choice" value="direct" button_text="{{ctx.Locale.Tr "repo.editor.commit_changes"}}" {{if eq .commit_choice "direct"}}checked{{end}}>
 					<label>
 						{{svg "octicon-git-commit"}}
-						{{ctx.Locale.Tr "repo.editor.commit_directly_to_this_branch" .BranchName}}
+						{{ctx.Locale.Tr "repo.editor.commit_directly_to_this_branch" .BranchName "branch-name"}}
 						{{if not .CanCommitToBranch.CanCommitToBranch}}
 						<div class="ui visible small warning message">
 							{{ctx.Locale.Tr "repo.editor.no_commit_to_branch"}}
diff --git a/templates/repo/issue/view_content/comments.tmpl b/templates/repo/issue/view_content/comments.tmpl
index 78fa854dbe..fb4ceb10c1 100644
--- a/templates/repo/issue/view_content/comments.tmpl
+++ b/templates/repo/issue/view_content/comments.tmpl
@@ -549,7 +549,7 @@
 				<span class="text grey muted-links">
 					{{template "shared/user/authorlink" .Poster}}
 					{{if .IsForcePush}}
-						{{ctx.Locale.Tr "repo.issues.force_push_codes" $.Issue.PullRequest.HeadBranch (ShortSha .OldCommit) ($.Issue.Repo.CommitLink .OldCommit) (ShortSha .NewCommit) ($.Issue.Repo.CommitLink .NewCommit) $createdStr}}
+						{{ctx.Locale.Tr "repo.issues.force_push_codes" $.Issue.PullRequest.HeadBranch (ShortSha .OldCommit) ($.Issue.Repo.CommitLink .OldCommit) (ShortSha .NewCommit) ($.Issue.Repo.CommitLink .NewCommit) $createdStr "ui sha"}}
 					{{else}}
 						{{ctx.Locale.TrN (len .Commits) "repo.issues.push_commit_1" "repo.issues.push_commits_n" (len .Commits) $createdStr}}
 					{{end}}
diff --git a/templates/repo/issue/view_title.tmpl b/templates/repo/issue/view_title.tmpl
index f60d958a1c..f63cea1856 100644
--- a/templates/repo/issue/view_title.tmpl
+++ b/templates/repo/issue/view_title.tmpl
@@ -79,11 +79,11 @@
 					{{end}}
 				{{else}}
 					{{if .Issue.OriginalAuthor}}
-						<span id="pull-desc-display" class="pull-desc">{{.Issue.OriginalAuthor}} {{ctx.Locale.TrN .NumCommits "repo.pulls.title_desc_one" "repo.pulls.title_desc_few" .NumCommits $headHref $baseHref}}</span>
+						<span id="pull-desc-display" class="pull-desc">{{.Issue.OriginalAuthor}} {{ctx.Locale.TrN .NumCommits "repo.pulls.title_desc_one" "repo.pulls.title_desc_few" .NumCommits $headHref $baseHref "branch_target"}}</span>
 					{{else}}
 						<span id="pull-desc-display" class="pull-desc">
 							<a {{if gt .Issue.Poster.ID 0}}href="{{.Issue.Poster.HomeLink}}"{{end}}>{{.Issue.Poster.GetDisplayName}}</a>
-							{{ctx.Locale.TrN .NumCommits "repo.pulls.title_desc_one" "repo.pulls.title_desc_few" .NumCommits $headHref $baseHref}}
+							{{ctx.Locale.TrN .NumCommits "repo.pulls.title_desc_one" "repo.pulls.title_desc_few" .NumCommits $headHref $baseHref "branch_target"}}
 						</span>
 					{{end}}
 					{{if .MadeUsingAGit}}
diff --git a/templates/user/settings/applications.tmpl b/templates/user/settings/applications.tmpl
index 04d4dcdb18..5354bef4e3 100644
--- a/templates/user/settings/applications.tmpl
+++ b/templates/user/settings/applications.tmpl
@@ -75,7 +75,7 @@
 						{{ctx.Locale.Tr "settings.select_permissions"}}
 					</summary>
 					<p class="activity meta">
-						<p>{{ctx.Locale.Tr "settings.access_token_desc" (HTMLFormat `href="%s/api/swagger" target="_blank"` AppSubUrl) (`href="https://forgejo.org/docs/latest/user/token-scope/" target="_blank"`|SafeHTML)}}</p>
+						<p>{{ctx.Locale.Tr "settings.access_token_desc" (printf "%s/api/swagger" AppSubUrl) "https://forgejo.org/docs/latest/user/token-scope/"}}</p>
 					</p>
 					<div class="scoped-access-token"
 						data-is-admin="{{if .IsAdmin}}true{{else}}false{{end}}"