From db3cbf41d4c8ddead92df4ec615f085d02382fea Mon Sep 17 00:00:00 2001 From: Ilyas Hallak Date: Thu, 30 Oct 2025 21:14:40 +0100 Subject: [PATCH] Fix URL label translation and formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- readeck/Localizations/de.lproj/Localizable.strings | 2 ++ readeck/Localizations/en.lproj/Localizable.strings | 2 ++ readeck/UI/BookmarkDetail/BookmarkDetailLegacyView.swift | 6 +++--- readeck/UI/BookmarkDetail/BookmarkDetailView2.swift | 4 ++-- readeck/UI/Bookmarks/BookmarkCardView.swift | 4 ++-- readeck/UI/Utils/URLUtil.swift | 8 ++++++++ 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/readeck/Localizations/de.lproj/Localizable.strings b/readeck/Localizations/de.lproj/Localizable.strings index 25a4a98..7120e61 100644 --- a/readeck/Localizations/de.lproj/Localizable.strings +++ b/readeck/Localizations/de.lproj/Localizable.strings @@ -105,6 +105,8 @@ "More" = "Mehr"; "New Bookmark" = "Neues Lesezeichen"; "No articles in the queue" = "Keine Artikel in der Warteschlange"; +"open_url" = "%@ öffnen"; +"open_original_page" = "Originalseite öffnen"; "No bookmarks" = "Keine Lesezeichen"; "No bookmarks found in %@." = "Keine Lesezeichen in %@ gefunden."; "No bookmarks found." = "Keine Lesezeichen gefunden."; diff --git a/readeck/Localizations/en.lproj/Localizable.strings b/readeck/Localizations/en.lproj/Localizable.strings index bf5bb2a..dfe7fca 100644 --- a/readeck/Localizations/en.lproj/Localizable.strings +++ b/readeck/Localizations/en.lproj/Localizable.strings @@ -101,6 +101,8 @@ "More" = "More"; "New Bookmark" = "New Bookmark"; "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 found in %@." = "No bookmarks found in %@."; "No bookmarks found." = "No bookmarks found."; diff --git a/readeck/UI/BookmarkDetail/BookmarkDetailLegacyView.swift b/readeck/UI/BookmarkDetail/BookmarkDetailLegacyView.swift index ef242ef..334bf83 100644 --- a/readeck/UI/BookmarkDetail/BookmarkDetailLegacyView.swift +++ b/readeck/UI/BookmarkDetail/BookmarkDetailLegacyView.swift @@ -126,7 +126,7 @@ struct BookmarkDetailLegacyView: View { }) { HStack { Image(systemName: "safari") - Text((URLUtil.extractDomain(from: "open " + viewModel.bookmarkDetail.url) ?? "Open original page")) + Text(URLUtil.openUrlLabel(for: viewModel.bookmarkDetail.url)) } .font(.title3.bold()) .frame(maxWidth: .infinity) @@ -402,7 +402,7 @@ struct BookmarkDetailLegacyView: View { }) { HStack { Image(systemName: "safari") - Text((URLUtil.extractDomain(from: viewModel.bookmarkDetail.url) ?? "Open original page") + "open") + Text(URLUtil.openUrlLabel(for: viewModel.bookmarkDetail.url)) } .font(.title3.bold()) .frame(maxWidth: .infinity) @@ -456,7 +456,7 @@ struct BookmarkDetailLegacyView: View { Button(action: { 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) .foregroundColor(.secondary) } diff --git a/readeck/UI/BookmarkDetail/BookmarkDetailView2.swift b/readeck/UI/BookmarkDetail/BookmarkDetailView2.swift index 833c22c..a3eae94 100644 --- a/readeck/UI/BookmarkDetail/BookmarkDetailView2.swift +++ b/readeck/UI/BookmarkDetail/BookmarkDetailView2.swift @@ -411,7 +411,7 @@ struct BookmarkDetailView2: View { Button(action: { 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) .foregroundColor(.secondary) } @@ -501,7 +501,7 @@ struct BookmarkDetailView2: View { }) { HStack { Image(systemName: "safari") - Text((URLUtil.extractDomain(from: "open " + viewModel.bookmarkDetail.url) ?? "Open original page")) + Text(URLUtil.openUrlLabel(for: viewModel.bookmarkDetail.url)) } .font(.title3.bold()) .frame(maxWidth: .infinity) diff --git a/readeck/UI/Bookmarks/BookmarkCardView.swift b/readeck/UI/Bookmarks/BookmarkCardView.swift index 32a2080..7c2303f 100644 --- a/readeck/UI/Bookmarks/BookmarkCardView.swift +++ b/readeck/UI/Bookmarks/BookmarkCardView.swift @@ -254,7 +254,7 @@ struct BookmarkCardView: View { } } HStack { - Label((URLUtil.extractDomain(from: bookmark.url) ?? "Original Site") + " open", systemImage: "safari") + Label(URLUtil.openUrlLabel(for: bookmark.url), systemImage: "safari") .onTapGesture { URLUtil.open(url: bookmark.url, urlOpener: appSettings.urlOpener) } @@ -335,7 +335,7 @@ struct BookmarkCardView: View { } } HStack { - Label((URLUtil.extractDomain(from: bookmark.url) ?? "Original Site") + " open", systemImage: "safari") + Label(URLUtil.openUrlLabel(for: bookmark.url), systemImage: "safari") .onTapGesture { URLUtil.open(url: bookmark.url, urlOpener: appSettings.urlOpener) } diff --git a/readeck/UI/Utils/URLUtil.swift b/readeck/UI/Utils/URLUtil.swift index 7a9b9a7..b8f6159 100644 --- a/readeck/UI/Utils/URLUtil.swift +++ b/readeck/UI/Utils/URLUtil.swift @@ -44,4 +44,12 @@ struct URLUtil { guard let url = URL(string: urlString), let host = url.host else { return nil } 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 + } + } }