Fix URL label translation and formatting

- Add localization keys for "open_url" and "open_original_page" in EN/DE
- Create URLUtil.openUrlLabel() helper function for consistent formatting
- Replace incorrect string concatenation with proper localized labels
- Fix: "example.comopen" now displays as "Open example.com" (EN) or "example.com öffnen" (DE)
- Update BookmarkDetailLegacyView, BookmarkDetailView2, and BookmarkCardView
This commit is contained in:
Ilyas Hallak 2025-10-30 21:14:40 +01:00
parent cdfa6dc4c5
commit db3cbf41d4
6 changed files with 19 additions and 7 deletions

View File

@ -105,6 +105,8 @@
"More" = "Mehr"; "More" = "Mehr";
"New Bookmark" = "Neues Lesezeichen"; "New Bookmark" = "Neues Lesezeichen";
"No articles in the queue" = "Keine Artikel in der Warteschlange"; "No articles in the queue" = "Keine Artikel in der Warteschlange";
"open_url" = "%@ öffnen";
"open_original_page" = "Originalseite öffnen";
"No bookmarks" = "Keine Lesezeichen"; "No bookmarks" = "Keine Lesezeichen";
"No bookmarks found in %@." = "Keine Lesezeichen in %@ gefunden."; "No bookmarks found in %@." = "Keine Lesezeichen in %@ gefunden.";
"No bookmarks found." = "Keine Lesezeichen gefunden."; "No bookmarks found." = "Keine Lesezeichen gefunden.";

View File

@ -101,6 +101,8 @@
"More" = "More"; "More" = "More";
"New Bookmark" = "New Bookmark"; "New Bookmark" = "New Bookmark";
"No articles in the queue" = "No articles in the queue"; "No articles in the queue" = "No articles in the queue";
"open_url" = "Open %@";
"open_original_page" = "Open original page";
"No bookmarks" = "No bookmarks"; "No bookmarks" = "No bookmarks";
"No bookmarks found in %@." = "No bookmarks found in %@."; "No bookmarks found in %@." = "No bookmarks found in %@.";
"No bookmarks found." = "No bookmarks found."; "No bookmarks found." = "No bookmarks found.";

View File

@ -126,7 +126,7 @@ struct BookmarkDetailLegacyView: View {
}) { }) {
HStack { HStack {
Image(systemName: "safari") Image(systemName: "safari")
Text((URLUtil.extractDomain(from: "open " + viewModel.bookmarkDetail.url) ?? "Open original page")) Text(URLUtil.openUrlLabel(for: viewModel.bookmarkDetail.url))
} }
.font(.title3.bold()) .font(.title3.bold())
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)
@ -402,7 +402,7 @@ struct BookmarkDetailLegacyView: View {
}) { }) {
HStack { HStack {
Image(systemName: "safari") Image(systemName: "safari")
Text((URLUtil.extractDomain(from: viewModel.bookmarkDetail.url) ?? "Open original page") + "open") Text(URLUtil.openUrlLabel(for: viewModel.bookmarkDetail.url))
} }
.font(.title3.bold()) .font(.title3.bold())
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)
@ -456,7 +456,7 @@ struct BookmarkDetailLegacyView: View {
Button(action: { Button(action: {
URLUtil.open(url: viewModel.bookmarkDetail.url, urlOpener: appSettings.urlOpener) URLUtil.open(url: viewModel.bookmarkDetail.url, urlOpener: appSettings.urlOpener)
}) { }) {
Text((URLUtil.extractDomain(from: viewModel.bookmarkDetail.url) ?? "Open original page") + " open") Text(URLUtil.openUrlLabel(for: viewModel.bookmarkDetail.url))
.font(.subheadline) .font(.subheadline)
.foregroundColor(.secondary) .foregroundColor(.secondary)
} }

View File

@ -411,7 +411,7 @@ struct BookmarkDetailView2: View {
Button(action: { Button(action: {
URLUtil.open(url: viewModel.bookmarkDetail.url, urlOpener: appSettings.urlOpener) URLUtil.open(url: viewModel.bookmarkDetail.url, urlOpener: appSettings.urlOpener)
}) { }) {
Text((URLUtil.extractDomain(from: viewModel.bookmarkDetail.url) ?? "Open original page") + " open") Text(URLUtil.openUrlLabel(for: viewModel.bookmarkDetail.url))
.font(.subheadline) .font(.subheadline)
.foregroundColor(.secondary) .foregroundColor(.secondary)
} }
@ -501,7 +501,7 @@ struct BookmarkDetailView2: View {
}) { }) {
HStack { HStack {
Image(systemName: "safari") Image(systemName: "safari")
Text((URLUtil.extractDomain(from: "open " + viewModel.bookmarkDetail.url) ?? "Open original page")) Text(URLUtil.openUrlLabel(for: viewModel.bookmarkDetail.url))
} }
.font(.title3.bold()) .font(.title3.bold())
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)

View File

@ -254,7 +254,7 @@ struct BookmarkCardView: View {
} }
} }
HStack { HStack {
Label((URLUtil.extractDomain(from: bookmark.url) ?? "Original Site") + " open", systemImage: "safari") Label(URLUtil.openUrlLabel(for: bookmark.url), systemImage: "safari")
.onTapGesture { .onTapGesture {
URLUtil.open(url: bookmark.url, urlOpener: appSettings.urlOpener) URLUtil.open(url: bookmark.url, urlOpener: appSettings.urlOpener)
} }
@ -335,7 +335,7 @@ struct BookmarkCardView: View {
} }
} }
HStack { HStack {
Label((URLUtil.extractDomain(from: bookmark.url) ?? "Original Site") + " open", systemImage: "safari") Label(URLUtil.openUrlLabel(for: bookmark.url), systemImage: "safari")
.onTapGesture { .onTapGesture {
URLUtil.open(url: bookmark.url, urlOpener: appSettings.urlOpener) URLUtil.open(url: bookmark.url, urlOpener: appSettings.urlOpener)
} }

View File

@ -44,4 +44,12 @@ struct URLUtil {
guard let url = URL(string: urlString), let host = url.host else { return nil } guard let url = URL(string: urlString), let host = url.host else { return nil }
return host.replacingOccurrences(of: "www.", with: "") return host.replacingOccurrences(of: "www.", with: "")
} }
static func openUrlLabel(for urlString: String) -> String {
if let domain = extractDomain(from: urlString) {
return String(format: "open_url".localized, domain)
} else {
return "open_original_page".localized
}
}
} }