From 525c231020b60de4d8f68631223322e008939577 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 24 Jan 2023 11:33:54 -0800 Subject: [PATCH 01/10] udpates more chinese strings --- .../zh-Hans.lproj/Localizable.strings | 32 +++++++++----- .../zh-Hans.lproj/LaunchScreen.strings | 44 +------------------ 2 files changed, 22 insertions(+), 54 deletions(-) diff --git a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings index 5cce13d03..93f890f84 100644 --- a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings +++ b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings @@ -1,17 +1,17 @@ -"googleAuthButton" = "Continue with Google"; -"registrationViewSignUpHeadline" = "Sign Up"; -"error.network" = "We are having trouble connecting to the internet."; -"error.generic" = "Something went wrong, please try again."; -"extensionAppUnauthorized" = "Please login to Omnivore from the app before saving your first link."; -"loginError.invalidCreds" = "The login credentials provided are invalid."; -"saveArticleSavedState" = "Saved to Omnivore"; -"saveArticleProcessingState" = "Saved to Omnivore"; -"dismissButton" = "Dismiss"; +"googleAuthButton" = "使用 Google 账号"; +"registrationViewSignUpHeadline" = "注册"; +"error.network" = "我们在连接到互联网时遇到问题."; +"error.generic" = "哦!出现了小问题,请您重试."; +"extensionAppUnauthorized" = "请在保存您的第一个链接之前从应用程序登录 Omnivore."; +"loginError.invalidCreds" = "提供的登录凭据无效."; +"saveArticleSavedState" = "正在保存到 Omnivore 中"; +"saveArticleProcessingState" = "已经保存到 Omnivore 中"; +"dismissButton" = "撤回"; "labels.generic" = "标签"; "emails.generic" = "电子邮件"; "subscriptions.generic" = "订阅"; -"textToSpeech.generic" = "文本转语音"; +"textToSpeech.generic" = "文章转语音"; "privacy.policy.generic" = "隐私策略"; "termsAndConditions.generic" = "条款与条件"; "feedback.generic" = "反馈"; @@ -24,7 +24,7 @@ "newsletters.generic" = "新闻稿件"; "all.generic" = "全部"; "archived.generic" = "存档"; -"highlighted.generic" = "高亮"; +"highlighted.generic" = "荧光笔"; "files.generic" = "文件"; "newest.generic" = "最新"; "oldest.generic" = "最早"; @@ -37,3 +37,13 @@ "no.current.subscriptions.message" = "您当前没有任何订阅。"; "clubs.generic" = "读书俱乐部"; "pushNotifications.generic" = "推送通知"; + + +// Unreferenced +"signInScreenHeadline" = "保存并分享喜爱的网页."; +"registrationViewSignInHeadline" = "登录"; +"registrationViewHeadline" = "青衿之志,履践致远。"; +"username.validation.error.invalidPattern" = "用户名中间只能包含字母、数字和下划线."; +"username.validation.error.tooshort" = "用户名应至少包含 3 个英文字符."; +"username.validation.error.toolong" = "用户名不能超过 15 个英文字符."; +"saveArticleSavingState" = "保存中..."; diff --git a/apple/Resources/zh-Hans.lproj/LaunchScreen.strings b/apple/Resources/zh-Hans.lproj/LaunchScreen.strings index 9f9a352a9..8b1378917 100644 --- a/apple/Resources/zh-Hans.lproj/LaunchScreen.strings +++ b/apple/Resources/zh-Hans.lproj/LaunchScreen.strings @@ -1,43 +1 @@ -"labels.generic" = "标签"; -"emails.generic" = "电子邮件"; -"subscriptions.generic" = "订阅"; -"textToSpeech.generic" = "文章转语音"; -"privacy.policy.generic" = "隐私策略"; -"termsAndConditions.generic" = "条款与条件"; -"feedback.generic" = "反馈"; -"manageAccount.generic" = "管理帐户"; -"logout.generic" = "注销"; -"done.generic" = "完成"; -"cancel.generic" = "取消"; -"inbox.generic" = "收集箱"; -"readLater.generic" = "稍后阅读"; -"newsletters.generic" = "新闻通讯"; -"all.generic" = "全部"; -"archived.generic" = "存档"; -"highlighted.generic" = "荧光笔"; -"files.generic" = "文件"; -"newest.generic" = "最新"; -"oldest.generic" = "最早"; -"recentlyRead.generic" = "最近阅读"; -"recentlyPublished.generic" = "最近发布"; -"create.label.message" = "创建新标签"; -"create.new.email.message" = "创建新的电子邮件地址"; -"newsletters.description" = "将 PDF 添加到您的书库,或使用 Omnivore 电子邮件地址订阅新闻通讯."; -"labels.purpose.description" = "使用标签创建精选的链接集合."; -"no.current.subscriptions.message" = "您当前没有订阅."; -"signInScreenHeadline" = "保存并分享喜爱的网页."; -"googleAuthButton" = "使用Google账号"; -"registrationViewSignInHeadline" = "登录"; -"registrationViewSignUpHeadline" = "注册"; -"registrationViewHeadline" = "青衿之志,履践致远。"; -"username.validation.error.invalidPattern" = "用户名中间只能包含字母、数字和下划线."; -"username.validation.error.tooshort" = "用户名应至少包含三个英文字符."; -"username.validation.error.toolong" = "用户名不能超过 15 个英文字符."; -"error.network" = "我们在连接到互联网时遇到问题."; -"error.generic" = "噢!出现了小问题,请您重试."; -"extensionAppUnauthorized" = "请在保存您的第一个链接之前从应用程序登录 Omnivore."; -"loginError.invalidCreds" = "提供的登录凭据无效."; -"saveArticleSavingState" = "保存中..."; -"saveArticleSavedState" = "已保存到 Omnivore 中"; -"saveArticleProcessingState" = "正在保存到 Omnivore 中"; -"dismissButton" = "撤回"; + From 0515f123c7d0d9f3ae3ab2131a12b8a02a18aee8 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 24 Jan 2023 12:05:42 -0800 Subject: [PATCH 02/10] add additional english strings to .strings file --- .../Resources/en.lproj/Localizable.strings | 163 ++++++++++++++++++ 1 file changed, 163 insertions(+) diff --git a/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings b/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings index 491638ab9..a3e97cdbd 100644 --- a/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings +++ b/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings @@ -37,3 +37,166 @@ "no.current.subscriptions.message" = "You have no current Subscriptions."; "clubs.generic" = "Clubs"; "pushNotifications.generic" = "Push Notifications"; + +// Add strings below to chinese file + + +// share extension +"shareExtension.createLabel" = "Create Label"; +"shareExtension.moreActions" = "More Actions"; + +// audio player +"audioPlayer.replay" = "Replay"; + +// Highlights List Card +"highlightCard.highlightByYou" = "Highlight by you"; +"highlightCard.highlightByOther" = "Highlight by "; +"highlightCard.noHighlightsOnPage" = "You have not added any highlights or notes to this page."; + +// Labels View +"labelsView.assignNameColor" = "Assign a name and color."; + +// Manage Account View +"manageAccount.delete" = "Delete Account"; +"manageAccount.resetCache" = "Reset Data Cache"; +"manageAccount.confirmDeleteMessage" = "Are you sure you want to delete your account? This action can't be undone."; + +// Newsletter Emails View +"newsletterEmails.existing" = "Existing Emails (Tap to copy)"; + +// Profile View +"profile.confirmLogoutMessage" = "Are you sure you want to logout?"; + +// Devices View +"devices.tokensTitle" = "Registered device tokens (swipe to remove)"; +"devices.created" = "Created: "; + +// Push Notification Settings +"notifications.enabled" = "Notifications Enabled"; +"notifications.explainer" = "Enabling push notifications gives Omnivore device permission to send notifications,\nbut you are in charge of which notifications are sent."; +"notifications.trigger.explainer" = "Push notifications are triggered using your \n[account rules](https://omnivore.app/settings/rules) which you can edit online."; +"notifications.enable" = "Enable Push Notifications?"; + "notifications.general.explainer" = "Get notified when newsletter links reach your inbox. Or receive reminders that you set from our share extension."; +"notifications.option.deny" = "No Thanks"; +"notifications.option.enable" = "Yes Please"; + +// Community Modal +"community.headline" = "Help build the Omnivore Community"; +"community.appstore.review" = "Review on the AppStore"; +"community.tweet" = "Tweet about Omnivore"; +"community.follow.twitter" = "Follow us on Twitter"; +"community.join.discord" = "Join us on Discord"; +"community.star.github" = "Star on GitHub"; + +// Clubs View +"clubs.learn.title" = "Learn more about clubs"; +"clubs.name" = "Club Name"; +"clubs.create" = "Create a new club"; +"clubs.create" = "Your clubs"; +"clubs.not.a.member.message" = "You are not a member of any clubs.\nCreate a new club and send the invite link to your friends get started.\n\nDuring the beta you are limited to creating three clubs, and each club\ncan have a maximum of twelve users." +"clubs.error.copying" = "Error copying invite URL"; +"clubs.admin.deny.viewing" = "The admin of this club does not allow viewing all members."; +"clubs.no.members" = "This club does not have any members. Add users to your club by sending\nthem the invite link."; +"clubs.leave" = "Leave Club"; +"clubs.leave.confirm" = "Are you sure you want to leave this club? No data will be deleted, but you will stop receiving recommendations from the club."; +"clubs.none.joined" = "You do not have any clubs you can post to.\nJoin a club or create your own to start recommending articles."; + +// Subscriptions +"subscriptions.error.retrieving" = "Sorry, we were unable to retrieve your subscriptions."; +"subscriptions.none" = "You have no current subscriptions."; +//"subscriptions.error.retrieving" = "Last received: \(updatedDate.formatted())"; // unused for now + +// Text to Speech +"texttospeech.language.default" = "Default Language"; +"texttospeech.settings.audio" = "Audio Settings"; +"texttospeech.settings.enable.prefetch" = "Enable audio prefetch"; +"texttospeech.beta.signup.in.process" = "Signing up for beta"; +"texttospeech.beta.realistic.voice.limit" = "You are in the ultra realistic voices beta. During the beta you can listen to 10,000 words of audio per day."; +"texttospeech.beta.request.received" = "Your request to join the ultra realistic voices demo has been received. You will be informed by email when a spot is available."; +"texttospeech.beta.waitlist" = "Ultra realistic voices are currently in limited beta. Enabling the feature will add you to the beta queue."; + +// Sign in/up +"registration.no.account" = "Don't have an account?"; +"registration.forgot.password" = "Forgot your password?"; +"registration.status.check" = "Check Status"; +"registration.use.different.email" = "Use a different email?"; +"registration.full.name" = "Full Name"; +"registration.username" = "Username"; +"registration.already.have.account" = "Already have an account?"; +"registration.bio" = "Bio (optional)"; +"registration.welcome" = "Welcome to Omnivore!"; +"registration.username.assigned.prefix" = "Your username is:"; +"registration.change.username" = "Change Username"; +"registration.edit" = "Edit"; + +// Recommendation +"recommendation.to.prefix" = "To:"; +"recommendation.add.note" = "Add a note (optional)"; +//"recommendation.to.prefix" = "Include your \(viewModel.highlightCount) highlight\(viewModel.highlightCount > 1 ? "s" : """; // unused for now +"recommendation.error" = "Error recommending this page"; + +// Web Reader +"reader.copy.link" = "Copy Link"; +"reader.save" = "Save to Omnivore"; +"reader.error" = "An error occurred"; + +// Debug Menu +"menu.debug.title" = "Debug Menu"; +"menu.debug.api.env" = "API Environment:"; + +// Navigation +"navigation.select.link" = "Select a link from the feed"; +"navigation.select.sidebar.toggle" = "Toggle sidebar"; + +// Welcome View +"welcome.title" = "Read-it-later for serious readers."; +"welcome.learn.more" = "Learn more"; +"welcome.signup.agreement" = "By signing up, you agree to Omnivore’s\n"; +"welcome.title.terms.of.service" = "Terms of Service"; +"welcome.title.and.joiner" = " and "; +"welcome.title.email.continue" = "Continue with Email"; + +// Keyboard Commands +"keyboard.command.decrease.font" = "Decrease Font Size"; +"keyboard.command.increase.font" = "Increase Font Size"; +"keyboard.command.decrease.font" = "Decrease Margin"; +"keyboard.command.increase.margin" = "Increase Margin"; +"keyboard.command.decrease.line.spacing" = "Decrease Line Spacing"; +"keyboard.command.increase.line.spacing" = "Increase Line Spacing"; + +// Library +//"library.by.author.suffix" = "by \(author)" // unused +//"Recommended by \(byStr) in \(inStr)" // unused + + +// Generic +"generic.snooze" = "Snooze"; +"generic.close" = "Close"; +"generic.create" = "Create"; +"generic.confirm" = "Confirm"; +"generic.profile" = "Profile"; +"generic.next" = "Next"; +"generic.name" = "Name"; +"generic.ok" = "Ok"; +"generic.retry" = "Retry"; +"generic.email" = "Email"; +"generic.password" = "Password"; +"generic.submit" = "Submit"; +"generic.continue" = "Continue"; +"generic.send" = "Send"; +"generic.options" = "Options"; +"generic.open" = "Open"; +"generic.changes.apply" = "Apply Changes"; +"generic.title" = "Title"; +"generic.author" = "Author"; +"generic.description" = "Description"; +"generic.save" = "Save"; +"generic.loading" = "Loading..."; +"generic.font.family" = "Font Family"; +"generic.high.contrast.text" = "High Contrast Text"; +"generic.font" = "Font"; +"generic.highlight" = "Highlight"; + +// TODO: search navigationTitle, toggle, section, button, Label + + From 575e08851f21abd67de56e6e9c007669035402d1 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 24 Jan 2023 12:14:07 -0800 Subject: [PATCH 03/10] rearrange some strings --- .../Resources/en.lproj/Localizable.strings | 53 +++--- .../zh-Hans.lproj/Localizable.strings | 169 +++++++++++++++++- 2 files changed, 187 insertions(+), 35 deletions(-) diff --git a/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings b/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings index a3e97cdbd..cd75d8e84 100644 --- a/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings +++ b/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings @@ -1,45 +1,17 @@ "googleAuthButton" = "Continue with Google"; "registrationViewSignUpHeadline" = "Sign Up"; "error.network" = "We are having trouble connecting to the internet."; -"error.generic" = "Something went wrong, please try again."; "extensionAppUnauthorized" = "Please login to Omnivore from the app before saving your first link."; "loginError.invalidCreds" = "The login credentials provided are invalid."; "saveArticleSavedState" = "Saved to Omnivore"; "saveArticleProcessingState" = "Saved to Omnivore"; "dismissButton" = "Dismiss"; -"labels.generic" = "Labels"; -"emails.generic" = "Emails"; -"subscriptions.generic" = "Subscriptions"; -"textToSpeech.generic" = "Text to Speech"; -"privacy.policy.generic" = "Privacy Policy"; -"termsAndConditions.generic" = "Terms and Conditions"; -"feedback.generic" = "Feedback"; -"manageAccount.generic" = "Manage Account"; -"logout.generic" = "Logout"; -"done.generic" = "Done"; -"cancel.generic" = "Cancel"; -"inbox.generic" = "Inbox"; -"readLater.generic" = "Read Later"; -"newsletters.generic" = "Newsletters"; -"all.generic" = "All"; -"archived.generic" = "Archived"; -"highlighted.generic" = "Highlighted"; -"files.generic" = "Files"; -"newest.generic" = "Newest"; -"oldest.generic" = "Oldest"; -"recentlyRead.generic" = "Recently Read"; -"recentlyPublished.generic" = "Recently Published"; "create.label.message" = "Create a new Label"; "create.new.email.message" = "Create a new email address"; "newsletters.description" = "Add PDFs to your library, or subscribe to newsletters using an Omnivore email address."; "labels.purpose.description" = "Use labels to create curated collections of links."; "no.current.subscriptions.message" = "You have no current Subscriptions."; -"clubs.generic" = "Clubs"; -"pushNotifications.generic" = "Push Notifications"; - -// Add strings below to chinese file - // share extension "shareExtension.createLabel" = "Create Label"; @@ -196,6 +168,31 @@ "generic.high.contrast.text" = "High Contrast Text"; "generic.font" = "Font"; "generic.highlight" = "Highlight"; +"labels.generic" = "Labels"; +"emails.generic" = "Emails"; +"subscriptions.generic" = "Subscriptions"; +"textToSpeech.generic" = "Text to Speech"; +"privacy.policy.generic" = "Privacy Policy"; +"termsAndConditions.generic" = "Terms and Conditions"; +"feedback.generic" = "Feedback"; +"manageAccount.generic" = "Manage Account"; +"logout.generic" = "Logout"; +"done.generic" = "Done"; +"cancel.generic" = "Cancel"; +"inbox.generic" = "Inbox"; +"readLater.generic" = "Read Later"; +"newsletters.generic" = "Newsletters"; +"all.generic" = "All"; +"archived.generic" = "Archived"; +"highlighted.generic" = "Highlighted"; +"files.generic" = "Files"; +"newest.generic" = "Newest"; +"oldest.generic" = "Oldest"; +"recentlyRead.generic" = "Recently Read"; +"recentlyPublished.generic" = "Recently Published"; +"clubs.generic" = "Clubs"; +"error.generic" = "Something went wrong, please try again."; +"pushNotifications.generic" = "Push Notifications"; // TODO: search navigationTitle, toggle, section, button, Label diff --git a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings index 93f890f84..dcbec04db 100644 --- a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings +++ b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings @@ -1,13 +1,173 @@ "googleAuthButton" = "使用 Google 账号"; "registrationViewSignUpHeadline" = "注册"; "error.network" = "我们在连接到互联网时遇到问题."; -"error.generic" = "哦!出现了小问题,请您重试."; "extensionAppUnauthorized" = "请在保存您的第一个链接之前从应用程序登录 Omnivore."; "loginError.invalidCreds" = "提供的登录凭据无效."; "saveArticleSavedState" = "正在保存到 Omnivore 中"; "saveArticleProcessingState" = "已经保存到 Omnivore 中"; "dismissButton" = "撤回"; +"create.label.message" = "创建新标签"; +"create.new.email.message" = "创建新的电子邮件地址"; +"newsletters.description" = "将 PDF 添加到您的资料库,或使用 Omnivore 电子邮件地址订阅新闻稿件。"; +"labels.purpose.description" = "使用标签创建精选的链接集合。"; +"no.current.subscriptions.message" = "您当前没有任何订阅。"; + +// share extension +"shareExtension.createLabel" = "Create Label"; +"shareExtension.moreActions" = "More Actions"; + +// audio player +"audioPlayer.replay" = "Replay"; + +// Highlights List Card +"highlightCard.highlightByYou" = "Highlight by you"; +"highlightCard.highlightByOther" = "Highlight by "; +"highlightCard.noHighlightsOnPage" = "You have not added any highlights or notes to this page."; + +// Labels View +"labelsView.assignNameColor" = "Assign a name and color."; + +// Manage Account View +"manageAccount.delete" = "Delete Account"; +"manageAccount.resetCache" = "Reset Data Cache"; +"manageAccount.confirmDeleteMessage" = "Are you sure you want to delete your account? This action can't be undone."; + +// Newsletter Emails View +"newsletterEmails.existing" = "Existing Emails (Tap to copy)"; + +// Profile View +"profile.confirmLogoutMessage" = "Are you sure you want to logout?"; + +// Devices View +"devices.tokensTitle" = "Registered device tokens (swipe to remove)"; +"devices.created" = "Created: "; + +// Push Notification Settings +"notifications.enabled" = "Notifications Enabled"; +"notifications.explainer" = "Enabling push notifications gives Omnivore device permission to send notifications,\nbut you are in charge of which notifications are sent."; +"notifications.trigger.explainer" = "Push notifications are triggered using your \n[account rules](https://omnivore.app/settings/rules) which you can edit online."; +"notifications.enable" = "Enable Push Notifications?"; + "notifications.general.explainer" = "Get notified when newsletter links reach your inbox. Or receive reminders that you set from our share extension."; +"notifications.option.deny" = "No Thanks"; +"notifications.option.enable" = "Yes Please"; + +// Community Modal +"community.headline" = "Help build the Omnivore Community"; +"community.appstore.review" = "Review on the AppStore"; +"community.tweet" = "Tweet about Omnivore"; +"community.follow.twitter" = "Follow us on Twitter"; +"community.join.discord" = "Join us on Discord"; +"community.star.github" = "Star on GitHub"; + +// Clubs View +"clubs.learn.title" = "Learn more about clubs"; +"clubs.name" = "Club Name"; +"clubs.create" = "Create a new club"; +"clubs.create" = "Your clubs"; +"clubs.not.a.member.message" = "You are not a member of any clubs.\nCreate a new club and send the invite link to your friends get started.\n\nDuring the beta you are limited to creating three clubs, and each club\ncan have a maximum of twelve users." +"clubs.error.copying" = "Error copying invite URL"; +"clubs.admin.deny.viewing" = "The admin of this club does not allow viewing all members."; +"clubs.no.members" = "This club does not have any members. Add users to your club by sending\nthem the invite link."; +"clubs.leave" = "Leave Club"; +"clubs.leave.confirm" = "Are you sure you want to leave this club? No data will be deleted, but you will stop receiving recommendations from the club."; +"clubs.none.joined" = "You do not have any clubs you can post to.\nJoin a club or create your own to start recommending articles."; + +// Subscriptions +"subscriptions.error.retrieving" = "Sorry, we were unable to retrieve your subscriptions."; +"subscriptions.none" = "You have no current subscriptions."; +//"subscriptions.error.retrieving" = "Last received: \(updatedDate.formatted())"; // unused for now + +// Text to Speech +"texttospeech.language.default" = "Default Language"; +"texttospeech.settings.audio" = "Audio Settings"; +"texttospeech.settings.enable.prefetch" = "Enable audio prefetch"; +"texttospeech.beta.signup.in.process" = "Signing up for beta"; +"texttospeech.beta.realistic.voice.limit" = "You are in the ultra realistic voices beta. During the beta you can listen to 10,000 words of audio per day."; +"texttospeech.beta.request.received" = "Your request to join the ultra realistic voices demo has been received. You will be informed by email when a spot is available."; +"texttospeech.beta.waitlist" = "Ultra realistic voices are currently in limited beta. Enabling the feature will add you to the beta queue."; + +// Sign in/up +"registration.no.account" = "Don't have an account?"; +"registration.forgot.password" = "Forgot your password?"; +"registration.status.check" = "Check Status"; +"registration.use.different.email" = "Use a different email?"; +"registration.full.name" = "Full Name"; +"registration.username" = "Username"; +"registration.already.have.account" = "Already have an account?"; +"registration.bio" = "Bio (optional)"; +"registration.welcome" = "Welcome to Omnivore!"; +"registration.username.assigned.prefix" = "Your username is:"; +"registration.change.username" = "Change Username"; +"registration.edit" = "Edit"; + +// Recommendation +"recommendation.to.prefix" = "To:"; +"recommendation.add.note" = "Add a note (optional)"; +//"recommendation.to.prefix" = "Include your \(viewModel.highlightCount) highlight\(viewModel.highlightCount > 1 ? "s" : """; // unused for now +"recommendation.error" = "Error recommending this page"; + +// Web Reader +"reader.copy.link" = "Copy Link"; +"reader.save" = "Save to Omnivore"; +"reader.error" = "An error occurred"; + +// Debug Menu +"menu.debug.title" = "Debug Menu"; +"menu.debug.api.env" = "API Environment:"; + +// Navigation +"navigation.select.link" = "Select a link from the feed"; +"navigation.select.sidebar.toggle" = "Toggle sidebar"; + +// Welcome View +"welcome.title" = "Read-it-later for serious readers."; +"welcome.learn.more" = "Learn more"; +"welcome.signup.agreement" = "By signing up, you agree to Omnivore’s\n"; +"welcome.title.terms.of.service" = "Terms of Service"; +"welcome.title.and.joiner" = " and "; +"welcome.title.email.continue" = "Continue with Email"; + +// Keyboard Commands +"keyboard.command.decrease.font" = "Decrease Font Size"; +"keyboard.command.increase.font" = "Increase Font Size"; +"keyboard.command.decrease.font" = "Decrease Margin"; +"keyboard.command.increase.margin" = "Increase Margin"; +"keyboard.command.decrease.line.spacing" = "Decrease Line Spacing"; +"keyboard.command.increase.line.spacing" = "Increase Line Spacing"; + +// Library +//"library.by.author.suffix" = "by \(author)" // unused +//"Recommended by \(byStr) in \(inStr)" // unused + + +// Generic +"generic.snooze" = "Snooze"; +"generic.close" = "Close"; +"generic.create" = "Create"; +"generic.confirm" = "Confirm"; +"generic.profile" = "Profile"; +"generic.next" = "Next"; +"generic.name" = "Name"; +"generic.ok" = "Ok"; +"generic.retry" = "Retry"; +"generic.email" = "Email"; +"generic.password" = "Password"; +"generic.submit" = "Submit"; +"generic.continue" = "Continue"; +"generic.send" = "Send"; +"generic.options" = "Options"; +"generic.open" = "Open"; +"generic.changes.apply" = "Apply Changes"; +"generic.title" = "Title"; +"generic.author" = "Author"; +"generic.description" = "Description"; +"generic.save" = "Save"; +"generic.loading" = "Loading..."; +"generic.font.family" = "Font Family"; +"generic.high.contrast.text" = "High Contrast Text"; +"generic.font" = "Font"; +"generic.highlight" = "Highlight"; "labels.generic" = "标签"; "emails.generic" = "电子邮件"; "subscriptions.generic" = "订阅"; @@ -30,15 +190,10 @@ "oldest.generic" = "最早"; "recentlyRead.generic" = "最近阅读"; "recentlyPublished.generic" = "最近发布"; -"create.label.message" = "创建新标签"; -"create.new.email.message" = "创建新的电子邮件地址"; -"newsletters.description" = "将 PDF 添加到您的资料库,或使用 Omnivore 电子邮件地址订阅新闻稿件。"; -"labels.purpose.description" = "使用标签创建精选的链接集合。"; -"no.current.subscriptions.message" = "您当前没有任何订阅。"; "clubs.generic" = "读书俱乐部"; +"error.generic" = "哦!出现了小问题,请您重试."; "pushNotifications.generic" = "推送通知"; - // Unreferenced "signInScreenHeadline" = "保存并分享喜爱的网页."; "registrationViewSignInHeadline" = "登录"; From 67f2d312c5ac1a7f63bf50041df128ecaee800b9 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 24 Jan 2023 12:21:19 -0800 Subject: [PATCH 04/10] rearrange more strings --- .../Resources/en.lproj/Localizable.strings | 30 ++++++++----------- .../zh-Hans.lproj/Localizable.strings | 28 ++++++++--------- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings b/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings index cd75d8e84..c016c589d 100644 --- a/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings +++ b/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings @@ -1,21 +1,9 @@ -"googleAuthButton" = "Continue with Google"; -"registrationViewSignUpHeadline" = "Sign Up"; -"error.network" = "We are having trouble connecting to the internet."; -"extensionAppUnauthorized" = "Please login to Omnivore from the app before saving your first link."; -"loginError.invalidCreds" = "The login credentials provided are invalid."; -"saveArticleSavedState" = "Saved to Omnivore"; -"saveArticleProcessingState" = "Saved to Omnivore"; -"dismissButton" = "Dismiss"; - -"create.label.message" = "Create a new Label"; -"create.new.email.message" = "Create a new email address"; -"newsletters.description" = "Add PDFs to your library, or subscribe to newsletters using an Omnivore email address."; -"labels.purpose.description" = "Use labels to create curated collections of links."; -"no.current.subscriptions.message" = "You have no current Subscriptions."; - // share extension "shareExtension.createLabel" = "Create Label"; "shareExtension.moreActions" = "More Actions"; +"saveArticleSavedState" = "Saved to Omnivore"; +"saveArticleProcessingState" = "Saved to Omnivore"; +"extensionAppUnauthorized" = "Please login to Omnivore from the app before saving your first link."; // audio player "audioPlayer.replay" = "Replay"; @@ -27,6 +15,8 @@ // Labels View "labelsView.assignNameColor" = "Assign a name and color."; +"create.label.message" = "Create a new Label"; +"labels.purpose.description" = "Use labels to create curated collections of links."; // Manage Account View "manageAccount.delete" = "Delete Account"; @@ -35,6 +25,9 @@ // Newsletter Emails View "newsletterEmails.existing" = "Existing Emails (Tap to copy)"; +"create.new.email.message" = "Create a new email address"; +"newsletters.description" = "Add PDFs to your library, or subscribe to newsletters using an Omnivore email address."; +"no.current.subscriptions.message" = "You have no current Subscriptions."; // Profile View "profile.confirmLogoutMessage" = "Are you sure you want to logout?"; @@ -100,6 +93,9 @@ "registration.username.assigned.prefix" = "Your username is:"; "registration.change.username" = "Change Username"; "registration.edit" = "Edit"; +"googleAuthButton" = "Continue with Google"; +"registrationViewSignUpHeadline" = "Sign Up"; +"loginError.invalidCreds" = "The login credentials provided are invalid."; // Recommendation "recommendation.to.prefix" = "To:"; @@ -193,7 +189,7 @@ "clubs.generic" = "Clubs"; "error.generic" = "Something went wrong, please try again."; "pushNotifications.generic" = "Push Notifications"; +"dismissButton" = "Dismiss"; +"error.network" = "We are having trouble connecting to the internet."; // TODO: search navigationTitle, toggle, section, button, Label - - diff --git a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings index dcbec04db..24e89ee4e 100644 --- a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings +++ b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings @@ -1,21 +1,9 @@ -"googleAuthButton" = "使用 Google 账号"; -"registrationViewSignUpHeadline" = "注册"; -"error.network" = "我们在连接到互联网时遇到问题."; -"extensionAppUnauthorized" = "请在保存您的第一个链接之前从应用程序登录 Omnivore."; -"loginError.invalidCreds" = "提供的登录凭据无效."; -"saveArticleSavedState" = "正在保存到 Omnivore 中"; -"saveArticleProcessingState" = "已经保存到 Omnivore 中"; -"dismissButton" = "撤回"; - -"create.label.message" = "创建新标签"; -"create.new.email.message" = "创建新的电子邮件地址"; -"newsletters.description" = "将 PDF 添加到您的资料库,或使用 Omnivore 电子邮件地址订阅新闻稿件。"; -"labels.purpose.description" = "使用标签创建精选的链接集合。"; -"no.current.subscriptions.message" = "您当前没有任何订阅。"; - // share extension "shareExtension.createLabel" = "Create Label"; "shareExtension.moreActions" = "More Actions"; +"saveArticleSavedState" = "正在保存到 Omnivore 中"; +"saveArticleProcessingState" = "已经保存到 Omnivore 中"; +"extensionAppUnauthorized" = "请在保存您的第一个链接之前从应用程序登录 Omnivore."; // audio player "audioPlayer.replay" = "Replay"; @@ -27,6 +15,8 @@ // Labels View "labelsView.assignNameColor" = "Assign a name and color."; +"create.label.message" = "创建新标签"; +"labels.purpose.description" = "使用标签创建精选的链接集合。"; // Manage Account View "manageAccount.delete" = "Delete Account"; @@ -35,6 +25,9 @@ // Newsletter Emails View "newsletterEmails.existing" = "Existing Emails (Tap to copy)"; +"create.new.email.message" = "创建新的电子邮件地址"; +"newsletters.description" = "将 PDF 添加到您的资料库,或使用 Omnivore 电子邮件地址订阅新闻稿件。"; +"no.current.subscriptions.message" = "您当前没有任何订阅。"; // Profile View "profile.confirmLogoutMessage" = "Are you sure you want to logout?"; @@ -100,6 +93,9 @@ "registration.username.assigned.prefix" = "Your username is:"; "registration.change.username" = "Change Username"; "registration.edit" = "Edit"; +"googleAuthButton" = "使用 Google 账号"; +"registrationViewSignUpHeadline" = "注册"; +"loginError.invalidCreds" = "提供的登录凭据无效."; // Recommendation "recommendation.to.prefix" = "To:"; @@ -193,6 +189,8 @@ "clubs.generic" = "读书俱乐部"; "error.generic" = "哦!出现了小问题,请您重试."; "pushNotifications.generic" = "推送通知"; +"dismissButton" = "撤回"; +"error.network" = "我们在连接到互联网时遇到问题."; // Unreferenced "signInScreenHeadline" = "保存并分享喜爱的网页."; From 622649bb91190f96e43d90ee1998148eb8ef35d7 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 24 Jan 2023 13:17:04 -0800 Subject: [PATCH 05/10] convert from dot syntax to camelcase in english strings file --- .../Resources/en.lproj/Localizable.strings | 280 +++++++++--------- .../zh-Hans.lproj/Localizable.strings | 2 +- 2 files changed, 141 insertions(+), 141 deletions(-) diff --git a/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings b/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings index c016c589d..e9f7167fe 100644 --- a/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings +++ b/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings @@ -1,136 +1,136 @@ // share extension -"shareExtension.createLabel" = "Create Label"; -"shareExtension.moreActions" = "More Actions"; +"shareExtensionCreateLabel" = "Create Label"; +"shareExtensionMoreActions" = "More Actions"; "saveArticleSavedState" = "Saved to Omnivore"; "saveArticleProcessingState" = "Saved to Omnivore"; "extensionAppUnauthorized" = "Please login to Omnivore from the app before saving your first link."; // audio player -"audioPlayer.replay" = "Replay"; +"audioPlayerReplay" = "Replay"; // Highlights List Card -"highlightCard.highlightByYou" = "Highlight by you"; -"highlightCard.highlightByOther" = "Highlight by "; -"highlightCard.noHighlightsOnPage" = "You have not added any highlights or notes to this page."; +"highlightCardHighlightByYou" = "Highlight by you"; +"highlightCardHighlightByOther" = "Highlight by "; +"highlightCardNoHighlightsOnPage" = "You have not added any highlights or notes to this page."; // Labels View -"labelsView.assignNameColor" = "Assign a name and color."; -"create.label.message" = "Create a new Label"; -"labels.purpose.description" = "Use labels to create curated collections of links."; +"labelsViewAssignNameColor" = "Assign a name and color."; +"createLabelMessage" = "Create a new Label"; +"labelsPurposeDescription" = "Use labels to create curated collections of links."; // Manage Account View -"manageAccount.delete" = "Delete Account"; -"manageAccount.resetCache" = "Reset Data Cache"; -"manageAccount.confirmDeleteMessage" = "Are you sure you want to delete your account? This action can't be undone."; +"manageAccountDelete" = "Delete Account"; +"manageAccountResetCache" = "Reset Data Cache"; +"manageAccountConfirmDeleteMessage" = "Are you sure you want to delete your account? This action can't be undone."; // Newsletter Emails View -"newsletterEmails.existing" = "Existing Emails (Tap to copy)"; -"create.new.email.message" = "Create a new email address"; -"newsletters.description" = "Add PDFs to your library, or subscribe to newsletters using an Omnivore email address."; -"no.current.subscriptions.message" = "You have no current Subscriptions."; +"newsletterEmailsExisting" = "Existing Emails (Tap to copy)"; +"createNewEmailMessage" = "Create a new email address"; +"newslettersDescription" = "Add PDFs to your library, or subscribe to newsletters using an Omnivore email address."; +"noCurrentSubscriptionsMessage" = "You have no current Subscriptions."; // Profile View -"profile.confirmLogoutMessage" = "Are you sure you want to logout?"; +"profileConfirmLogoutMessage" = "Are you sure you want to logout?"; // Devices View -"devices.tokensTitle" = "Registered device tokens (swipe to remove)"; -"devices.created" = "Created: "; +"devicesTokensTitle" = "Registered device tokens (swipe to remove)"; +"devicesCreated" = "Created: "; // Push Notification Settings -"notifications.enabled" = "Notifications Enabled"; -"notifications.explainer" = "Enabling push notifications gives Omnivore device permission to send notifications,\nbut you are in charge of which notifications are sent."; -"notifications.trigger.explainer" = "Push notifications are triggered using your \n[account rules](https://omnivore.app/settings/rules) which you can edit online."; -"notifications.enable" = "Enable Push Notifications?"; - "notifications.general.explainer" = "Get notified when newsletter links reach your inbox. Or receive reminders that you set from our share extension."; -"notifications.option.deny" = "No Thanks"; -"notifications.option.enable" = "Yes Please"; +"notificationsEnabled" = "Notifications Enabled"; +"notificationsExplainer" = "Enabling push notifications gives Omnivore device permission to send notifications,\nbut you are in charge of which notifications are sent."; +"notificationsTriggerExplainer" = "Push notifications are triggered using your \n[account rules](https://omnivore.app/settings/rules) which you can edit online."; +"notificationsEnable" = "Enable Push Notifications?"; + "notificationsGeneralExplainer" = "Get notified when newsletter links reach your inbox. Or receive reminders that you set from our share extension."; +"notificationsOptionDeny" = "No Thanks"; +"notificationsOptionEnable" = "Yes Please"; // Community Modal -"community.headline" = "Help build the Omnivore Community"; -"community.appstore.review" = "Review on the AppStore"; -"community.tweet" = "Tweet about Omnivore"; -"community.follow.twitter" = "Follow us on Twitter"; -"community.join.discord" = "Join us on Discord"; -"community.star.github" = "Star on GitHub"; +"communityHeadline" = "Help build the Omnivore Community"; +"communityAppstoreReview" = "Review on the AppStore"; +"communityTweet" = "Tweet about Omnivore"; +"communityFollowTwitter" = "Follow us on Twitter"; +"communityJoinDiscord" = "Join us on Discord"; +"communityStarGithub" = "Star on GitHub"; // Clubs View -"clubs.learn.title" = "Learn more about clubs"; -"clubs.name" = "Club Name"; -"clubs.create" = "Create a new club"; -"clubs.create" = "Your clubs"; -"clubs.not.a.member.message" = "You are not a member of any clubs.\nCreate a new club and send the invite link to your friends get started.\n\nDuring the beta you are limited to creating three clubs, and each club\ncan have a maximum of twelve users." -"clubs.error.copying" = "Error copying invite URL"; -"clubs.admin.deny.viewing" = "The admin of this club does not allow viewing all members."; -"clubs.no.members" = "This club does not have any members. Add users to your club by sending\nthem the invite link."; -"clubs.leave" = "Leave Club"; -"clubs.leave.confirm" = "Are you sure you want to leave this club? No data will be deleted, but you will stop receiving recommendations from the club."; -"clubs.none.joined" = "You do not have any clubs you can post to.\nJoin a club or create your own to start recommending articles."; +"clubsLearnTitle" = "Learn more about clubs"; +"clubsName" = "Club Name"; +"clubsCreate" = "Create a new club"; +"clubsYours" = "Your clubs"; +"clubsNotAMemberMessage" = "You are not a member of any clubs.\nCreate a new club and send the invite link to your friends get started.\n\nDuring the beta you are limited to creating three clubs, and each club\ncan have a maximum of twelve users." +"clubsErrorCopying" = "Error copying invite URL"; +"clubsAdminDenyViewing" = "The admin of this club does not allow viewing all members."; +"clubsNoMembers" = "This club does not have any members. Add users to your club by sending\nthem the invite link."; +"clubsLeave" = "Leave Club"; +"clubsLeaveConfirm" = "Are you sure you want to leave this club? No data will be deleted, but you will stop receiving recommendations from the club."; +"clubsNoneJoined" = "You do not have any clubs you can post to.\nJoin a club or create your own to start recommending articles."; // Subscriptions -"subscriptions.error.retrieving" = "Sorry, we were unable to retrieve your subscriptions."; -"subscriptions.none" = "You have no current subscriptions."; +"subscriptionsErrorRetrieving" = "Sorry, we were unable to retrieve your subscriptions."; +"subscriptionsNone" = "You have no current subscriptions."; //"subscriptions.error.retrieving" = "Last received: \(updatedDate.formatted())"; // unused for now // Text to Speech -"texttospeech.language.default" = "Default Language"; -"texttospeech.settings.audio" = "Audio Settings"; -"texttospeech.settings.enable.prefetch" = "Enable audio prefetch"; -"texttospeech.beta.signup.in.process" = "Signing up for beta"; -"texttospeech.beta.realistic.voice.limit" = "You are in the ultra realistic voices beta. During the beta you can listen to 10,000 words of audio per day."; -"texttospeech.beta.request.received" = "Your request to join the ultra realistic voices demo has been received. You will be informed by email when a spot is available."; -"texttospeech.beta.waitlist" = "Ultra realistic voices are currently in limited beta. Enabling the feature will add you to the beta queue."; +"texttospeechLanguageDefault" = "Default Language"; +"texttospeechSettingsAudio" = "Audio Settings"; +"texttospeechSettingsEnablePrefetch" = "Enable audio prefetch"; +"texttospeechBetaSignupInProcess" = "Signing up for beta"; +"texttospeechBetaRealisticVoiceLimit" = "You are in the ultra realistic voices beta. During the beta you can listen to 10,000 words of audio per day."; +"texttospeechBetaRequestReceived" = "Your request to join the ultra realistic voices demo has been received. You will be informed by email when a spot is available."; +"texttospeechBetaWaitlist" = "Ultra realistic voices are currently in limited beta. Enabling the feature will add you to the beta queue."; // Sign in/up -"registration.no.account" = "Don't have an account?"; -"registration.forgot.password" = "Forgot your password?"; -"registration.status.check" = "Check Status"; -"registration.use.different.email" = "Use a different email?"; -"registration.full.name" = "Full Name"; -"registration.username" = "Username"; -"registration.already.have.account" = "Already have an account?"; -"registration.bio" = "Bio (optional)"; -"registration.welcome" = "Welcome to Omnivore!"; -"registration.username.assigned.prefix" = "Your username is:"; -"registration.change.username" = "Change Username"; -"registration.edit" = "Edit"; +"registrationNoAccount" = "Don't have an account?"; +"registrationForgotPassword" = "Forgot your password?"; +"registrationStatusCheck" = "Check Status"; +"registrationUseDifferentEmail" = "Use a different email?"; +"registrationFullName" = "Full Name"; +"registrationUsername" = "Username"; +"registrationAlreadyHaveAccount" = "Already have an account?"; +"registrationBio" = "Bio (optional)"; +"registrationWelcome" = "Welcome to Omnivore!"; +"registrationUsernameAssignedPrefix" = "Your username is:"; +"registrationChangeUsername" = "Change Username"; +"registrationEdit" = "Edit"; "googleAuthButton" = "Continue with Google"; "registrationViewSignUpHeadline" = "Sign Up"; -"loginError.invalidCreds" = "The login credentials provided are invalid."; +"loginErrorInvalidCreds" = "The login credentials provided are invalid."; // Recommendation -"recommendation.to.prefix" = "To:"; -"recommendation.add.note" = "Add a note (optional)"; -//"recommendation.to.prefix" = "Include your \(viewModel.highlightCount) highlight\(viewModel.highlightCount > 1 ? "s" : """; // unused for now -"recommendation.error" = "Error recommending this page"; +"recommendationToPrefix" = "To:"; +"recommendationAddNote" = "Add a note (optional)"; +//"recommendationToPrefix" = "Include your \(viewModel.highlightCount) highlight\(viewModel.highlightCount > 1 ? "s" : """; // unused for now +"recommendationError" = "Error recommending this page"; // Web Reader -"reader.copy.link" = "Copy Link"; -"reader.save" = "Save to Omnivore"; -"reader.error" = "An error occurred"; +"readerCopyLink" = "Copy Link"; +"readerSave" = "Save to Omnivore"; +"readerError" = "An error occurred"; // Debug Menu -"menu.debug.title" = "Debug Menu"; -"menu.debug.api.env" = "API Environment:"; +"menuDebugTitle" = "Debug Menu"; +"menuDebugApiEnv" = "API Environment:"; // Navigation -"navigation.select.link" = "Select a link from the feed"; -"navigation.select.sidebar.toggle" = "Toggle sidebar"; +"navigationSelectLink" = "Select a link from the feed"; +"navigationSelectSidebarToggle" = "Toggle sidebar"; // Welcome View -"welcome.title" = "Read-it-later for serious readers."; -"welcome.learn.more" = "Learn more"; -"welcome.signup.agreement" = "By signing up, you agree to Omnivore’s\n"; -"welcome.title.terms.of.service" = "Terms of Service"; -"welcome.title.and.joiner" = " and "; -"welcome.title.email.continue" = "Continue with Email"; +"welcomeTitle" = "Read-it-later for serious readers."; +"welcomeLearnMore" = "Learn more"; +"welcomeSignupAgreement" = "By signing up, you agree to Omnivore’s\n"; +"welcomeTitleTermsOfService" = "Terms of Service"; +"welcomeTitleAndJoiner" = " and "; +"welcomeTitleEmailContinue" = "Continue with Email"; // Keyboard Commands -"keyboard.command.decrease.font" = "Decrease Font Size"; -"keyboard.command.increase.font" = "Increase Font Size"; -"keyboard.command.decrease.font" = "Decrease Margin"; -"keyboard.command.increase.margin" = "Increase Margin"; -"keyboard.command.decrease.line.spacing" = "Decrease Line Spacing"; -"keyboard.command.increase.line.spacing" = "Increase Line Spacing"; +"keyboardCommandDecreaseFont" = "Decrease Font Size"; +"keyboardCommandIncreaseFont" = "Increase Font Size"; +"keyboardCommandDecreaseMargin" = "Decrease Margin"; +"keyboardCommandIncreaseMargin" = "Increase Margin"; +"keyboardCommandDecreaseLineSpacing" = "Decrease Line Spacing"; +"keyboardCommandIncreaseLineSpacing" = "Increase Line Spacing"; // Library //"library.by.author.suffix" = "by \(author)" // unused @@ -138,58 +138,58 @@ // Generic -"generic.snooze" = "Snooze"; -"generic.close" = "Close"; -"generic.create" = "Create"; -"generic.confirm" = "Confirm"; -"generic.profile" = "Profile"; -"generic.next" = "Next"; -"generic.name" = "Name"; -"generic.ok" = "Ok"; -"generic.retry" = "Retry"; -"generic.email" = "Email"; -"generic.password" = "Password"; -"generic.submit" = "Submit"; -"generic.continue" = "Continue"; -"generic.send" = "Send"; -"generic.options" = "Options"; -"generic.open" = "Open"; -"generic.changes.apply" = "Apply Changes"; -"generic.title" = "Title"; -"generic.author" = "Author"; -"generic.description" = "Description"; -"generic.save" = "Save"; -"generic.loading" = "Loading..."; -"generic.font.family" = "Font Family"; -"generic.high.contrast.text" = "High Contrast Text"; -"generic.font" = "Font"; -"generic.highlight" = "Highlight"; -"labels.generic" = "Labels"; -"emails.generic" = "Emails"; -"subscriptions.generic" = "Subscriptions"; -"textToSpeech.generic" = "Text to Speech"; -"privacy.policy.generic" = "Privacy Policy"; -"termsAndConditions.generic" = "Terms and Conditions"; -"feedback.generic" = "Feedback"; -"manageAccount.generic" = "Manage Account"; -"logout.generic" = "Logout"; -"done.generic" = "Done"; -"cancel.generic" = "Cancel"; -"inbox.generic" = "Inbox"; -"readLater.generic" = "Read Later"; -"newsletters.generic" = "Newsletters"; -"all.generic" = "All"; -"archived.generic" = "Archived"; -"highlighted.generic" = "Highlighted"; -"files.generic" = "Files"; -"newest.generic" = "Newest"; -"oldest.generic" = "Oldest"; -"recentlyRead.generic" = "Recently Read"; -"recentlyPublished.generic" = "Recently Published"; -"clubs.generic" = "Clubs"; -"error.generic" = "Something went wrong, please try again."; -"pushNotifications.generic" = "Push Notifications"; +"genericSnooze" = "Snooze"; +"genericClose" = "Close"; +"genericCreate" = "Create"; +"genericConfirm" = "Confirm"; +"genericProfile" = "Profile"; +"genericNext" = "Next"; +"genericName" = "Name"; +"genericOk" = "Ok"; +"genericRetry" = "Retry"; +"genericEmail" = "Email"; +"genericPassword" = "Password"; +"genericSubmit" = "Submit"; +"genericContinue" = "Continue"; +"genericSend" = "Send"; +"genericOptions" = "Options"; +"genericOpen" = "Open"; +"genericChangeApply" = "Apply Changes"; +"genericTitle" = "Title"; +"genericAuthor" = "Author"; +"genericDescription" = "Description"; +"genericSave" = "Save"; +"genericLoading" = "Loading..."; +"genericFontFamily" = "Font Family"; +"genericHighContrastText" = "High Contrast Text"; +"genericFont" = "Font"; +"genericHighlight" = "Highlight"; +"labelsGeneric" = "Labels"; +"emailsGeneric" = "Emails"; +"subscriptionsGeneric" = "Subscriptions"; +"textToSpeechGeneric" = "Text to Speech"; +"privacyPolicyGeneric" = "Privacy Policy"; +"termsAndConditionsGeneric" = "Terms and Conditions"; +"feedbackGeneric" = "Feedback"; +"manageAccountGeneric" = "Manage Account"; +"logoutGeneric" = "Logout"; +"doneGeneric" = "Done"; +"cancelGeneric" = "Cancel"; +"inboxGeneric" = "Inbox"; +"readLaterGeneric" = "Read Later"; +"newslettersGeneric" = "Newsletters"; +"allGeneric" = "All"; +"archivedGeneric" = "Archived"; +"highlightedGeneric" = "Highlighted"; +"filesGeneric" = "Files"; +"newestGeneric" = "Newest"; +"oldestGeneric" = "Oldest"; +"recentlyReadGeneric" = "Recently Read"; +"recentlyPublishedGeneric" = "Recently Published"; +"clubsGeneric" = "Clubs"; +"errorGeneric" = "Something went wrong, please try again."; +"pushNotificationsGeneric" = "Push Notifications"; "dismissButton" = "Dismiss"; -"error.network" = "We are having trouble connecting to the internet."; +"errorNetwork" = "We are having trouble connecting to the internet."; // TODO: search navigationTitle, toggle, section, button, Label diff --git a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings index 24e89ee4e..81ea46179 100644 --- a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings +++ b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings @@ -57,7 +57,7 @@ "clubs.learn.title" = "Learn more about clubs"; "clubs.name" = "Club Name"; "clubs.create" = "Create a new club"; -"clubs.create" = "Your clubs"; +"clubsYours" = "Your clubs"; "clubs.not.a.member.message" = "You are not a member of any clubs.\nCreate a new club and send the invite link to your friends get started.\n\nDuring the beta you are limited to creating three clubs, and each club\ncan have a maximum of twelve users." "clubs.error.copying" = "Error copying invite URL"; "clubs.admin.deny.viewing" = "The admin of this club does not allow viewing all members."; From 2c65e2a9ddff1f1ec2b91094e055f1f941d1b123 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 24 Jan 2023 13:25:40 -0800 Subject: [PATCH 06/10] convert from dot syntax to camelcase in chinese strings file --- .../zh-Hans.lproj/Localizable.strings | 287 +++++++++--------- 1 file changed, 139 insertions(+), 148 deletions(-) diff --git a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings index 81ea46179..36ed18392 100644 --- a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings +++ b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings @@ -1,136 +1,136 @@ // share extension -"shareExtension.createLabel" = "Create Label"; -"shareExtension.moreActions" = "More Actions"; +"shareExtensionCreateLabel" = "Create Label"; +"shareExtensionMoreActions" = "More Actions"; "saveArticleSavedState" = "正在保存到 Omnivore 中"; "saveArticleProcessingState" = "已经保存到 Omnivore 中"; "extensionAppUnauthorized" = "请在保存您的第一个链接之前从应用程序登录 Omnivore."; // audio player -"audioPlayer.replay" = "Replay"; +"audioPlayerReplay" = "Replay"; // Highlights List Card -"highlightCard.highlightByYou" = "Highlight by you"; -"highlightCard.highlightByOther" = "Highlight by "; -"highlightCard.noHighlightsOnPage" = "You have not added any highlights or notes to this page."; +"highlightCardHighlightByYou" = "Highlight by you"; +"highlightCardHighlightByOther" = "Highlight by "; +"highlightCardNoHighlightsOnPage" = "You have not added any highlights or notes to this page."; // Labels View -"labelsView.assignNameColor" = "Assign a name and color."; -"create.label.message" = "创建新标签"; -"labels.purpose.description" = "使用标签创建精选的链接集合。"; +"labelsViewAssignNameColor" = "Assign a name and color."; +"createLabelMessage" = "创建新标签"; +"labelsPurposeDescription" = "使用标签创建精选的链接集合。"; // Manage Account View -"manageAccount.delete" = "Delete Account"; -"manageAccount.resetCache" = "Reset Data Cache"; -"manageAccount.confirmDeleteMessage" = "Are you sure you want to delete your account? This action can't be undone."; +"manageAccountDelete" = "Delete Account"; +"manageAccountResetCache" = "Reset Data Cache"; +"manageAccountConfirmDeleteMessage" = "Are you sure you want to delete your account? This action can't be undone."; // Newsletter Emails View -"newsletterEmails.existing" = "Existing Emails (Tap to copy)"; -"create.new.email.message" = "创建新的电子邮件地址"; -"newsletters.description" = "将 PDF 添加到您的资料库,或使用 Omnivore 电子邮件地址订阅新闻稿件。"; -"no.current.subscriptions.message" = "您当前没有任何订阅。"; +"newsletterEmailsExisting" = "Existing Emails (Tap to copy)"; +"createNewEmailMessage" = "创建新的电子邮件地址"; +"newslettersDescription" = "将 PDF 添加到您的资料库,或使用 Omnivore 电子邮件地址订阅新闻稿件。"; +"noCurrentSubscriptionsMessage" = "您当前没有任何订阅。"; // Profile View -"profile.confirmLogoutMessage" = "Are you sure you want to logout?"; +"profileConfirmLogoutMessage" = "Are you sure you want to logout?"; // Devices View -"devices.tokensTitle" = "Registered device tokens (swipe to remove)"; -"devices.created" = "Created: "; +"devicesTokensTitle" = "Registered device tokens (swipe to remove)"; +"devicesCreated" = "Created: "; // Push Notification Settings -"notifications.enabled" = "Notifications Enabled"; -"notifications.explainer" = "Enabling push notifications gives Omnivore device permission to send notifications,\nbut you are in charge of which notifications are sent."; -"notifications.trigger.explainer" = "Push notifications are triggered using your \n[account rules](https://omnivore.app/settings/rules) which you can edit online."; -"notifications.enable" = "Enable Push Notifications?"; - "notifications.general.explainer" = "Get notified when newsletter links reach your inbox. Or receive reminders that you set from our share extension."; -"notifications.option.deny" = "No Thanks"; -"notifications.option.enable" = "Yes Please"; +"notificationsEnabled" = "Notifications Enabled"; +"notificationsExplainer" = "Enabling push notifications gives Omnivore device permission to send notifications,\nbut you are in charge of which notifications are sent."; +"notificationsTriggerExplainer" = "Push notifications are triggered using your \n[account rules](https://omnivore.app/settings/rules) which you can edit online."; +"notificationsEnable" = "Enable Push Notifications?"; + "notificationsGeneralExplainer" = "Get notified when newsletter links reach your inbox. Or receive reminders that you set from our share extension."; +"notificationsOptionDeny" = "No Thanks"; +"notificationsOptionEnable" = "Yes Please"; // Community Modal -"community.headline" = "Help build the Omnivore Community"; -"community.appstore.review" = "Review on the AppStore"; -"community.tweet" = "Tweet about Omnivore"; -"community.follow.twitter" = "Follow us on Twitter"; -"community.join.discord" = "Join us on Discord"; -"community.star.github" = "Star on GitHub"; +"communityHeadline" = "Help build the Omnivore Community"; +"communityAppstoreReview" = "Review on the AppStore"; +"communityTweet" = "Tweet about Omnivore"; +"communityFollowTwitter" = "Follow us on Twitter"; +"communityJoinDiscord" = "Join us on Discord"; +"communityStarGithub" = "Star on GitHub"; // Clubs View -"clubs.learn.title" = "Learn more about clubs"; -"clubs.name" = "Club Name"; -"clubs.create" = "Create a new club"; +"clubsLearnTitle" = "Learn more about clubs"; +"clubsName" = "Club Name"; +"clubsCreate" = "Create a new club"; "clubsYours" = "Your clubs"; -"clubs.not.a.member.message" = "You are not a member of any clubs.\nCreate a new club and send the invite link to your friends get started.\n\nDuring the beta you are limited to creating three clubs, and each club\ncan have a maximum of twelve users." -"clubs.error.copying" = "Error copying invite URL"; -"clubs.admin.deny.viewing" = "The admin of this club does not allow viewing all members."; -"clubs.no.members" = "This club does not have any members. Add users to your club by sending\nthem the invite link."; -"clubs.leave" = "Leave Club"; -"clubs.leave.confirm" = "Are you sure you want to leave this club? No data will be deleted, but you will stop receiving recommendations from the club."; -"clubs.none.joined" = "You do not have any clubs you can post to.\nJoin a club or create your own to start recommending articles."; +"clubsNotAMemberMessage" = "You are not a member of any clubs.\nCreate a new club and send the invite link to your friends get started.\n\nDuring the beta you are limited to creating three clubs, and each club\ncan have a maximum of twelve users." +"clubsErrorCopying" = "Error copying invite URL"; +"clubsAdminDenyViewing" = "The admin of this club does not allow viewing all members."; +"clubsNoMembers" = "This club does not have any members. Add users to your club by sending\nthem the invite link."; +"clubsLeave" = "Leave Club"; +"clubsLeaveConfirm" = "Are you sure you want to leave this club? No data will be deleted, but you will stop receiving recommendations from the club."; +"clubsNoneJoined" = "You do not have any clubs you can post to.\nJoin a club or create your own to start recommending articles."; // Subscriptions -"subscriptions.error.retrieving" = "Sorry, we were unable to retrieve your subscriptions."; -"subscriptions.none" = "You have no current subscriptions."; +"subscriptionsErrorRetrieving" = "Sorry, we were unable to retrieve your subscriptions."; +"subscriptionsNone" = "You have no current subscriptions."; //"subscriptions.error.retrieving" = "Last received: \(updatedDate.formatted())"; // unused for now // Text to Speech -"texttospeech.language.default" = "Default Language"; -"texttospeech.settings.audio" = "Audio Settings"; -"texttospeech.settings.enable.prefetch" = "Enable audio prefetch"; -"texttospeech.beta.signup.in.process" = "Signing up for beta"; -"texttospeech.beta.realistic.voice.limit" = "You are in the ultra realistic voices beta. During the beta you can listen to 10,000 words of audio per day."; -"texttospeech.beta.request.received" = "Your request to join the ultra realistic voices demo has been received. You will be informed by email when a spot is available."; -"texttospeech.beta.waitlist" = "Ultra realistic voices are currently in limited beta. Enabling the feature will add you to the beta queue."; +"texttospeechLanguageDefault" = "Default Language"; +"texttospeechSettingsAudio" = "Audio Settings"; +"texttospeechSettingsEnablePrefetch" = "Enable audio prefetch"; +"texttospeechBetaSignupInProcess" = "Signing up for beta"; +"texttospeechBetaRealisticVoiceLimit" = "You are in the ultra realistic voices beta. During the beta you can listen to 10,000 words of audio per day."; +"texttospeechBetaRequestReceived" = "Your request to join the ultra realistic voices demo has been received. You will be informed by email when a spot is available."; +"texttospeechBetaWaitlist" = "Ultra realistic voices are currently in limited beta. Enabling the feature will add you to the beta queue."; // Sign in/up -"registration.no.account" = "Don't have an account?"; -"registration.forgot.password" = "Forgot your password?"; -"registration.status.check" = "Check Status"; -"registration.use.different.email" = "Use a different email?"; -"registration.full.name" = "Full Name"; -"registration.username" = "Username"; -"registration.already.have.account" = "Already have an account?"; -"registration.bio" = "Bio (optional)"; -"registration.welcome" = "Welcome to Omnivore!"; -"registration.username.assigned.prefix" = "Your username is:"; -"registration.change.username" = "Change Username"; -"registration.edit" = "Edit"; +"registrationNoAccount" = "Don't have an account?"; +"registrationForgotPassword" = "Forgot your password?"; +"registrationStatusCheck" = "Check Status"; +"registrationUseDifferentEmail" = "Use a different email?"; +"registrationFullName" = "Full Name"; +"registrationUsername" = "Username"; +"registrationAlreadyHaveAccount" = "Already have an account?"; +"registrationBio" = "Bio (optional)"; +"registrationWelcome" = "Welcome to Omnivore!"; +"registrationUsernameAssignedPrefix" = "Your username is:"; +"registrationChangeUsername" = "Change Username"; +"registrationEdit" = "Edit"; "googleAuthButton" = "使用 Google 账号"; "registrationViewSignUpHeadline" = "注册"; -"loginError.invalidCreds" = "提供的登录凭据无效."; +"loginErrorInvalidCreds" = "提供的登录凭据无效."; // Recommendation -"recommendation.to.prefix" = "To:"; -"recommendation.add.note" = "Add a note (optional)"; -//"recommendation.to.prefix" = "Include your \(viewModel.highlightCount) highlight\(viewModel.highlightCount > 1 ? "s" : """; // unused for now -"recommendation.error" = "Error recommending this page"; +"recommendationToPrefix" = "To:"; +"recommendationAddNote" = "Add a note (optional)"; +//"recommendationToPrefix" = "Include your \(viewModel.highlightCount) highlight\(viewModel.highlightCount > 1 ? "s" : """; // unused for now +"recommendationError" = "Error recommending this page"; // Web Reader -"reader.copy.link" = "Copy Link"; -"reader.save" = "Save to Omnivore"; -"reader.error" = "An error occurred"; +"readerCopyLink" = "Copy Link"; +"readerSave" = "Save to Omnivore"; +"readerError" = "An error occurred"; // Debug Menu -"menu.debug.title" = "Debug Menu"; -"menu.debug.api.env" = "API Environment:"; +"menuDebugTitle" = "Debug Menu"; +"menuDebugApiEnv" = "API Environment:"; // Navigation -"navigation.select.link" = "Select a link from the feed"; -"navigation.select.sidebar.toggle" = "Toggle sidebar"; +"navigationSelectLink" = "Select a link from the feed"; +"navigationSelectSidebarToggle" = "Toggle sidebar"; // Welcome View -"welcome.title" = "Read-it-later for serious readers."; -"welcome.learn.more" = "Learn more"; -"welcome.signup.agreement" = "By signing up, you agree to Omnivore’s\n"; -"welcome.title.terms.of.service" = "Terms of Service"; -"welcome.title.and.joiner" = " and "; -"welcome.title.email.continue" = "Continue with Email"; +"welcomeTitle" = "Read-it-later for serious readers."; +"welcomeLearnMore" = "Learn more"; +"welcomeSignupAgreement" = "By signing up, you agree to Omnivore’s\n"; +"welcomeTitleTermsOfService" = "Terms of Service"; +"welcomeTitleAndJoiner" = " and "; +"welcomeTitleEmailContinue" = "Continue with Email"; // Keyboard Commands -"keyboard.command.decrease.font" = "Decrease Font Size"; -"keyboard.command.increase.font" = "Increase Font Size"; -"keyboard.command.decrease.font" = "Decrease Margin"; -"keyboard.command.increase.margin" = "Increase Margin"; -"keyboard.command.decrease.line.spacing" = "Decrease Line Spacing"; -"keyboard.command.increase.line.spacing" = "Increase Line Spacing"; +"keyboardCommandDecreaseFont" = "Decrease Font Size"; +"keyboardCommandIncreaseFont" = "Increase Font Size"; +"keyboardCommandDecreaseMargin" = "Decrease Margin"; +"keyboardCommandIncreaseMargin" = "Increase Margin"; +"keyboardCommandDecreaseLineSpacing" = "Decrease Line Spacing"; +"keyboardCommandIncreaseLineSpacing" = "Increase Line Spacing"; // Library //"library.by.author.suffix" = "by \(author)" // unused @@ -138,65 +138,56 @@ // Generic -"generic.snooze" = "Snooze"; -"generic.close" = "Close"; -"generic.create" = "Create"; -"generic.confirm" = "Confirm"; -"generic.profile" = "Profile"; -"generic.next" = "Next"; -"generic.name" = "Name"; -"generic.ok" = "Ok"; -"generic.retry" = "Retry"; -"generic.email" = "Email"; -"generic.password" = "Password"; -"generic.submit" = "Submit"; -"generic.continue" = "Continue"; -"generic.send" = "Send"; -"generic.options" = "Options"; -"generic.open" = "Open"; -"generic.changes.apply" = "Apply Changes"; -"generic.title" = "Title"; -"generic.author" = "Author"; -"generic.description" = "Description"; -"generic.save" = "Save"; -"generic.loading" = "Loading..."; -"generic.font.family" = "Font Family"; -"generic.high.contrast.text" = "High Contrast Text"; -"generic.font" = "Font"; -"generic.highlight" = "Highlight"; -"labels.generic" = "标签"; -"emails.generic" = "电子邮件"; -"subscriptions.generic" = "订阅"; -"textToSpeech.generic" = "文章转语音"; -"privacy.policy.generic" = "隐私策略"; -"termsAndConditions.generic" = "条款与条件"; -"feedback.generic" = "反馈"; -"manageAccount.generic" = "管理帐户"; -"logout.generic" = "退出登陆"; -"done.generic" = "完成"; -"cancel.generic" = "取消"; -"inbox.generic" = "收集箱"; -"readLater.generic" = "稍后阅读"; -"newsletters.generic" = "新闻稿件"; -"all.generic" = "全部"; -"archived.generic" = "存档"; -"highlighted.generic" = "荧光笔"; -"files.generic" = "文件"; -"newest.generic" = "最新"; -"oldest.generic" = "最早"; -"recentlyRead.generic" = "最近阅读"; -"recentlyPublished.generic" = "最近发布"; -"clubs.generic" = "读书俱乐部"; -"error.generic" = "哦!出现了小问题,请您重试."; -"pushNotifications.generic" = "推送通知"; +"genericSnooze" = "Snooze"; +"genericClose" = "Close"; +"genericCreate" = "Create"; +"genericConfirm" = "Confirm"; +"genericProfile" = "Profile"; +"genericNext" = "Next"; +"genericName" = "Name"; +"genericOk" = "Ok"; +"genericRetry" = "Retry"; +"genericEmail" = "Email"; +"genericPassword" = "Password"; +"genericSubmit" = "Submit"; +"genericContinue" = "Continue"; +"genericSend" = "Send"; +"genericOptions" = "Options"; +"genericOpen" = "Open"; +"genericChangeApply" = "Apply Changes"; +"genericTitle" = "Title"; +"genericAuthor" = "Author"; +"genericDescription" = "Description"; +"genericSave" = "Save"; +"genericLoading" = "Loading..."; +"genericFontFamily" = "Font Family"; +"genericHighContrastText" = "High Contrast Text"; +"genericFont" = "Font"; +"genericHighlight" = "Highlight"; +"labelsGeneric" = "标签"; +"emailsGeneric" = "电子邮件"; +"subscriptionsGeneric" = "订阅"; +"textToSpeechGeneric" = "文章转语音"; +"privacyPolicyGeneric" = "隐私策略"; +"termsAndConditionsGeneric" = "条款与条件"; +"feedbackGeneric" = "反馈"; +"manageAccountGeneric" = "管理帐户"; +"logoutGeneric" = "退出登陆"; +"doneGeneric" = "完成"; +"cancelGeneric" = "取消"; +"inboxGeneric" = "收集箱"; +"readLaterGeneric" = "稍后阅读"; +"newslettersGeneric" = "新闻稿件"; +"allGeneric" = "全部"; +"archivedGeneric" = "存档"; +"highlightedGeneric" = "荧光笔"; +"filesGeneric" = "文件"; +"newestGeneric" = "最新"; +"oldestGeneric" = "最早"; +"recentlyReadGeneric" = "最近阅读"; +"recentlyPublishedGeneric" = "最近发布"; +"clubsGeneric" = "读书俱乐部"; +"errorGeneric" = "哦!出现了小问题,请您重试."; +"pushNotificationsGeneric" = "推送通知"; "dismissButton" = "撤回"; -"error.network" = "我们在连接到互联网时遇到问题."; - -// Unreferenced -"signInScreenHeadline" = "保存并分享喜爱的网页."; -"registrationViewSignInHeadline" = "登录"; -"registrationViewHeadline" = "青衿之志,履践致远。"; -"username.validation.error.invalidPattern" = "用户名中间只能包含字母、数字和下划线."; -"username.validation.error.tooshort" = "用户名应至少包含 3 个英文字符."; -"username.validation.error.toolong" = "用户名不能超过 15 个英文字符."; -"saveArticleSavingState" = "保存中..."; +"errorNetwork" = "我们在连接到互联网时遇到问题."; From 69f4738aeecd11893275a34ab89ddad2c499f1ba Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 24 Jan 2023 13:48:58 -0800 Subject: [PATCH 07/10] create static props for local text --- .../OmnivoreKit/Sources/Views/LocalText.swift | 222 +++++++++++++++--- 1 file changed, 187 insertions(+), 35 deletions(-) diff --git a/apple/OmnivoreKit/Sources/Views/LocalText.swift b/apple/OmnivoreKit/Sources/Views/LocalText.swift index daed0b979..619cc63e3 100644 --- a/apple/OmnivoreKit/Sources/Views/LocalText.swift +++ b/apple/OmnivoreKit/Sources/Views/LocalText.swift @@ -5,43 +5,195 @@ public enum LocalText { NSLocalizedString(key, bundle: .module, comment: comment ?? "no comment provided by developer") } - public static let googleAuthButton = localText(key: "googleAuthButton") - public static let networkError = localText(key: "error.network") - public static let registrationViewSignUpHeadline = localText(key: "registrationViewSignUpHeadline") - public static let genericError = localText(key: "error.generic") - public static let invalidCredsLoginError = localText(key: "loginError.invalidCreds") + // Replace these three + public static let networkError = localText(key: "errorNetwork") + public static let genericError = localText(key: "errorGeneric") + public static let invalidCredsLoginError = localText(key: "loginErrorInvalidCreds") + + // share extension + public static let shareExtensionCreateLabel = localText(key: "shareExtensionCreateLabel") + public static let shareExtensionMoreActions = localText(key: "shareExtensionMoreActions") public static let saveArticleSavedState = localText(key: "saveArticleSavedState") public static let saveArticleProcessingState = localText(key: "saveArticleProcessingState") public static let extensionAppUnauthorized = localText(key: "extensionAppUnauthorized") - public static let dismissButton = localText(key: "dismissButton") - public static let labelsGeneric = localText(key: "labels.generic") - public static let emailsGeneric = localText(key: "emails.generic") - public static let subscriptionsGeneric = localText(key: "subscriptions.generic") - public static let textToSpeechGeneric = localText(key: "textToSpeech.generic") - public static let privacyPolicyGeneric = localText(key: "privacy.policy.generic") - public static let termsAndConditionsGeneric = localText(key: "termsAndConditions.generic") - public static let feedbackGeneric = localText(key: "feedback.generic") - public static let manageAccountGeneric = localText(key: "manageAccount.generic") - public static let logoutGeneric = localText(key: "logout.generic") - public static let doneGeneric = localText(key: "done.generic") - public static let cancelGeneric = localText(key: "cancel.generic") - public static let inboxGeneric = localText(key: "inbox.generic") - public static let readLaterGeneric = localText(key: "readLater.generic") - public static let newslettersGeneric = localText(key: "newsletters.generic") - public static let allGeneric = localText(key: "all.generic") - public static let archivedGeneric = localText(key: "archived.generic") - public static let highlightedGeneric = localText(key: "highlighted.generic") - public static let filesGeneric = localText(key: "files.generic") - public static let newestGeneric = localText(key: "newest.generic") - public static let oldestGeneric = localText(key: "oldest.generic") - public static let recentlyReadGeneric = localText(key: "recentlyRead.generic") - public static let recentlyPublishedGeneric = localText(key: "recentlyPublished.generic") - public static let createLabelMessage = localText(key: "create.label.message") - public static let createNewEmailMessage = localText(key: "create.new.email.message") - public static let newslettersDescription = localText(key: "newsletters.description") - public static let labelsPurposeDescription = localText(key: "labels.purpose.description") - public static let noCurrentSubscriptionsMessage = localText(key: "no.current.subscriptions.message") - public static let clubsGeneric = localText(key: "clubs.generic") - public static let pushNotificationsGeneric = localText(key: "pushNotifications.generic") + // Audio player + public static let audioPlayerReplay = localText(key: "audioPlayerReplay") + + // Highlights List Card + public static let highlightCardHighlightByYou = localText(key: "highlightCardHighlightByYou") + public static let highlightCardHighlightByOther = localText(key: "highlightCardHighlightByOther") + public static let highlightCardNoHighlightsOnPage = localText(key: "highlightCardNoHighlightsOnPage") + + // Labels View + public static let labelsViewAssignNameColor = localText(key: "labelsViewAssignNameColor") + public static let createLabelMessage = localText(key: "createLabelMessage") + public static let labelsPurposeDescription = localText(key: "labelsPurposeDescription") + + // Manage Account View + public static let manageAccountDelete = localText(key: "manageAccountDelete") + public static let manageAccountResetCache = localText(key: "manageAccountResetCache") + public static let manageAccountConfirmDeleteMessage = localText(key: "manageAccountConfirmDeleteMessage") + + // Newsletter Emails View + public static let newsletterEmailsExisting = localText(key: "newsletterEmailsExisting") + public static let createNewEmailMessage = localText(key: "createNewEmailMessage") + public static let newslettersDescription = localText(key: "newslettersDescription") + public static let noCurrentSubscriptionsMessage = localText(key: "noCurrentSubscriptionsMessage") + + // Profile View + public static let profileConfirmLogoutMessage = localText(key: "profileConfirmLogoutMessage") + + // Devices View + public static let devicesTokensTitle = localText(key: "devicesTokensTitle") + public static let devicesCreated = localText(key: "devicesCreated") + + // Push Notification Settings + public static let notificationsEnabled = localText(key: "notificationsEnabled") + public static let notificationsExplainer = localText(key: "notificationsExplainer") + public static let notificationsTriggerExplainer = localText(key: "notificationsTriggerExplainer") + public static let notificationsEnable = localText(key: "notificationsEnable") + public static let notificationsGeneralExplainer = localText(key: "notificationsGeneralExplainer") + public static let notificationsOptionDeny = localText(key: "notificationsOptionDeny") + public static let notificationsOptionEnable = localText(key: "notificationsOptionEnable") + + // Community Modal + public static let communityHeadline = localText(key: "communityHeadline") + public static let communityAppstoreReview = localText(key: "communityAppstoreReview") + public static let communityTweet = localText(key: "communityTweet") + public static let communityFollowTwitter = localText(key: "communityFollowTwitter") + public static let communityJoinDiscord = localText(key: "communityJoinDiscord") + public static let communityStarGithub = localText(key: "communityStarGithub") + + // Clubs View + public static let clubsLearnTitle = localText(key: "clubsLearnTitle") + public static let clubsName = localText(key: "clubsName") + public static let clubsCreate = localText(key: "clubsCreate") + public static let clubsYours = localText(key: "clubsYours") + public static let clubsNotAMemberMessage = localText(key: "clubsNotAMemberMessage") + public static let clubsErrorCopying = localText(key: "clubsErrorCopying") + public static let clubsAdminDenyViewing = localText(key: "clubsAdminDenyViewing") + public static let clubsNoMembers = localText(key: "clubsNoMembers") + public static let clubsLeave = localText(key: "clubsLeave") + public static let clubsLeaveConfirm = localText(key: "clubsLeaveConfirm") + public static let clubsNoneJoined = localText(key: "clubsNoneJoined") + + // Subscriptions + public static let subscriptionsErrorRetrieving = localText(key: "subscriptionsErrorRetrieving") + public static let subscriptionsNone = localText(key: "subscriptionsNone") + + // Text to Speech + public static let texttospeechLanguageDefault = localText(key: "texttospeechLanguageDefault") + public static let texttospeechSettingsAudio = localText(key: "texttospeechSettingsAudio") + public static let texttospeechSettingsEnablePrefetch = localText(key: "texttospeechSettingsEnablePrefetch") + public static let texttospeechBetaSignupInProcess = localText(key: "texttospeechBetaSignupInProcess") + public static let texttospeechBetaRealisticVoiceLimit = localText(key: "texttospeechBetaRealisticVoiceLimit") + public static let texttospeechBetaRequestReceived = localText(key: "texttospeechBetaRequestReceived") + public static let texttospeechBetaWaitlist = localText(key: "texttospeechBetaWaitlist") + + // Sign in/up + public static let registrationNoAccount = localText(key: "registrationNoAccount") + public static let registrationForgotPassword = localText(key: "registrationForgotPassword") + public static let registrationStatusCheck = localText(key: "registrationStatusCheck") + public static let registrationUseDifferentEmail = localText(key: "registrationUseDifferentEmail") + public static let registrationFullName = localText(key: "registrationFullName") + public static let registrationUsername = localText(key: "registrationUsername") + public static let registrationAlreadyHaveAccount = localText(key: "registrationAlreadyHaveAccount") + public static let registrationBio = localText(key: "registrationBio") + public static let registrationWelcome = localText(key: "registrationWelcome") + public static let registrationUsernameAssignedPrefix = localText(key: "registrationUsernameAssignedPrefix") + public static let registrationChangeUsername = localText(key: "registrationChangeUsername") + public static let registrationEdit = localText(key: "registrationEdit") + public static let googleAuthButton = localText(key: "googleAuthButton") + public static let registrationViewSignUpHeadline = localText(key: "registrationViewSignUpHeadline") + public static let loginErrorInvalidCreds = localText(key: "loginErrorInvalidCreds") + + // Recommendation + public static let recommendationToPrefix = localText(key: "recommendationToPrefix") + public static let recommendationAddNote = localText(key: "recommendationAddNote") + public static let recommendationError = localText(key: "recommendationError") + + // Web Reader + public static let readerCopyLink = localText(key: "readerCopyLink") + public static let readerSave = localText(key: "readerSave") + public static let readerError = localText(key: "readerError") + + // Debug Menu + public static let menuDebugTitle = localText(key: "menuDebugTitle") + public static let menuDebugApiEnv = localText(key: "menuDebugApiEnv") + + // Navigation + public static let navigationSelectLink = localText(key: "navigationSelectLink") + public static let navigationSelectSidebarToggle = localText(key: "navigationSelectSidebarToggle") + + // Welcome View + public static let welcomeTitle = localText(key: "welcomeTitle") + public static let welcomeLearnMore = localText(key: "welcomeLearnMore") + public static let welcomeSignupAgreement = localText(key: "welcomeSignupAgreement") + public static let welcomeTitleTermsOfService = localText(key: "welcomeTitleTermsOfService") + public static let welcomeTitleAndJoiner = localText(key: "welcomeTitleAndJoiner") + public static let welcomeTitleEmailContinue = localText(key: "welcomeTitleEmailContinue") + + // Keyboard Commands + public static let keyboardCommandDecreaseFont = localText(key: "keyboardCommandDecreaseFont") + public static let keyboardCommandIncreaseFont = localText(key: "keyboardCommandIncreaseFont") + public static let keyboardCommandDecreaseMargin = localText(key: "keyboardCommandDecreaseMargin") + public static let keyboardCommandIncreaseMargin = localText(key: "keyboardCommandIncreaseMargin") + public static let keyboardCommandDecreaseLineSpacing = localText(key: "keyboardCommandDecreaseLineSpacing") + public static let keyboardCommandIncreaseLineSpacing = localText(key: "keyboardCommandIncreaseLineSpacing") + + // Generic + public static let genericSnooze = localText(key: "genericSnooze") + public static let genericClose = localText(key: "genericClose") + public static let genericCreate = localText(key: "genericCreate") + public static let genericConfirm = localText(key: "genericConfirm") + public static let genericProfile = localText(key: "genericProfile") + public static let genericNext = localText(key: "genericNext") + public static let genericName = localText(key: "genericName") + public static let genericOk = localText(key: "genericOk") + public static let genericRetry = localText(key: "genericRetry") + public static let genericEmail = localText(key: "genericEmail") + public static let genericPassword = localText(key: "genericPassword") + public static let genericSubmit = localText(key: "genericSubmit") + public static let genericContinue = localText(key: "genericContinue") + public static let genericSend = localText(key: "genericSend") + public static let genericOptions = localText(key: "genericOptions") + public static let genericOpen = localText(key: "genericOpen") + public static let genericChangeApply = localText(key: "genericChangeApply") + public static let genericTitle = localText(key: "genericTitle") + public static let genericAuthor = localText(key: "genericAuthor") + public static let genericDescription = localText(key: "genericDescription") + public static let genericSave = localText(key: "genericSave") + public static let genericLoading = localText(key: "genericLoading") + public static let genericFontFamily = localText(key: "genericFontFamily") + public static let genericHighContrastText = localText(key: "genericHighContrastText") + public static let genericFont = localText(key: "genericFont") + public static let genericHighlight = localText(key: "genericHighlight") + public static let labelsGeneric = localText(key: "labelsGeneric") + public static let emailsGeneric = localText(key: "emailsGeneric") + public static let subscriptionsGeneric = localText(key: "subscriptionsGeneric") + public static let textToSpeechGeneric = localText(key: "textToSpeechGeneric") + public static let privacyPolicyGeneric = localText(key: "privacyPolicyGeneric") + public static let termsAndConditionsGeneric = localText(key: "termsAndConditionsGeneric") + public static let feedbackGeneric = localText(key: "feedbackGeneric") + public static let manageAccountGeneric = localText(key: "manageAccountGeneric") + public static let logoutGeneric = localText(key: "logoutGeneric") + public static let doneGeneric = localText(key: "doneGeneric") + public static let cancelGeneric = localText(key: "cancelGeneric") + public static let inboxGeneric = localText(key: "inboxGeneric") + public static let readLaterGeneric = localText(key: "readLaterGeneric") + public static let newslettersGeneric = localText(key: "newslettersGeneric") + public static let allGeneric = localText(key: "allGeneric") + public static let archivedGeneric = localText(key: "archivedGeneric") + public static let highlightedGeneric = localText(key: "highlightedGeneric") + public static let filesGeneric = localText(key: "filesGeneric") + public static let newestGeneric = localText(key: "newestGeneric") + public static let oldestGeneric = localText(key: "oldestGeneric") + public static let recentlyReadGeneric = localText(key: "recentlyReadGeneric") + public static let recentlyPublishedGeneric = localText(key: "recentlyPublishedGeneric") + public static let clubsGeneric = localText(key: "clubsGeneric") + public static let errorGeneric = localText(key: "errorGeneric") + public static let pushNotificationsGeneric = localText(key: "pushNotificationsGeneric") + public static let dismissButton = localText(key: "dismissButton") + public static let errorNetwork = localText(key: "errorNetwork") } From 7bd1d882d33206f449691c05dfdaee9ee5377b04 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 24 Jan 2023 13:51:25 -0800 Subject: [PATCH 08/10] update localtext refs --- .../App/AppExtensions/Share/ShareExtensionViewModel.swift | 4 ++-- apple/OmnivoreKit/Sources/Views/LocalText.swift | 5 ----- .../Views/RegistrationViews/LoginErrorMessageView.swift | 6 +++--- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionViewModel.swift b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionViewModel.swift index d97021a33..1a9f49f61 100644 --- a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionViewModel.swift +++ b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionViewModel.swift @@ -225,9 +225,9 @@ private extension SaveArticleError { case .unauthorized: return LocalText.extensionAppUnauthorized case .network: - return LocalText.networkError + return LocalText.errorNetwork case .badData, .unknown: - return LocalText.genericError + return LocalText.errorGeneric } } } diff --git a/apple/OmnivoreKit/Sources/Views/LocalText.swift b/apple/OmnivoreKit/Sources/Views/LocalText.swift index 619cc63e3..53126b10c 100644 --- a/apple/OmnivoreKit/Sources/Views/LocalText.swift +++ b/apple/OmnivoreKit/Sources/Views/LocalText.swift @@ -5,11 +5,6 @@ public enum LocalText { NSLocalizedString(key, bundle: .module, comment: comment ?? "no comment provided by developer") } - // Replace these three - public static let networkError = localText(key: "errorNetwork") - public static let genericError = localText(key: "errorGeneric") - public static let invalidCredsLoginError = localText(key: "loginErrorInvalidCreds") - // share extension public static let shareExtensionCreateLabel = localText(key: "shareExtensionCreateLabel") public static let shareExtensionMoreActions = localText(key: "shareExtensionMoreActions") diff --git a/apple/OmnivoreKit/Sources/Views/RegistrationViews/LoginErrorMessageView.swift b/apple/OmnivoreKit/Sources/Views/RegistrationViews/LoginErrorMessageView.swift index fcb06e2fb..66f89d66b 100644 --- a/apple/OmnivoreKit/Sources/Views/RegistrationViews/LoginErrorMessageView.swift +++ b/apple/OmnivoreKit/Sources/Views/RegistrationViews/LoginErrorMessageView.swift @@ -20,11 +20,11 @@ private extension LoginError { var message: String { switch self { case .unauthorized: - return LocalText.invalidCredsLoginError + return LocalText.loginErrorInvalidCreds case .network: - return LocalText.networkError + return LocalText.errorNetwork case .unknown: - return LocalText.genericError + return LocalText.errorGeneric case .pendingEmailVerification: return "Please check your email for a verification message." } From f8609a1d8077b9900804468235f5d2d3f5483206 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 24 Jan 2023 14:02:37 -0800 Subject: [PATCH 09/10] update some local text refs --- .../Views/AudioPlayer/ExpandedPlayer.swift | 2 +- .../Views/Highlights/HighlightsListCard.swift | 2 +- .../Views/Highlights/HighlightsListView.swift | 4 +- .../Sources/App/Views/Labels/LabelsView.swift | 2 +- .../OmnivoreKit/Sources/Views/LocalText.swift | 180 +++++++++++++++++- .../Resources/en.lproj/Localizable.strings | 3 - .../zh-Hans.lproj/Localizable.strings | 3 - 7 files changed, 180 insertions(+), 16 deletions(-) diff --git a/apple/OmnivoreKit/Sources/App/Views/AudioPlayer/ExpandedPlayer.swift b/apple/OmnivoreKit/Sources/App/Views/AudioPlayer/ExpandedPlayer.swift index 1fde8a399..1b84f8ce5 100644 --- a/apple/OmnivoreKit/Sources/App/Views/AudioPlayer/ExpandedPlayer.swift +++ b/apple/OmnivoreKit/Sources/App/Views/AudioPlayer/ExpandedPlayer.swift @@ -205,7 +205,7 @@ Image(systemName: "gobackward") .font(.appCallout) .tint(.appGrayTextContrast) - Text("Replay") + Text(LocalText.audioPlayerReplay) } } ).buttonStyle(RoundedRectButtonStyle()) diff --git a/apple/OmnivoreKit/Sources/App/Views/Highlights/HighlightsListCard.swift b/apple/OmnivoreKit/Sources/App/Views/Highlights/HighlightsListCard.swift index 189f1066a..c2eb00567 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Highlights/HighlightsListCard.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Highlights/HighlightsListCard.swift @@ -128,7 +128,7 @@ struct HighlightsListCard: View { .foregroundColor(.appGrayText) .frame(width: 14, height: 14) } - Text("Highlight by \(highlightParams.createdBy?.name ?? "you")") + Text("\(LocalText.highlightCardHighlightByOther)\(highlightParams.createdBy?.name ?? "you")") // TODO: fix translation...add other/you .font(.appFootnote) .foregroundColor(.appGrayText) } diff --git a/apple/OmnivoreKit/Sources/App/Views/Highlights/HighlightsListView.swift b/apple/OmnivoreKit/Sources/App/Views/Highlights/HighlightsListView.swift index 2a0e9bfe9..3432f73a1 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Highlights/HighlightsListView.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Highlights/HighlightsListView.swift @@ -14,9 +14,7 @@ struct HighlightsListView: View { @State var setLabelsHighlight: Highlight? var emptyView: some View { - Text(""" - You have not added any highlights or notes to this page. - """) + Text(LocalText.highlightCardNoHighlightsOnPage) .multilineTextAlignment(.center) .padding(16) } diff --git a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsView.swift b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsView.swift index c6f04bbc9..c4dac6a0b 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsView.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Labels/LabelsView.swift @@ -116,7 +116,7 @@ struct CreateLabelView: View { if !newLabelName.isEmpty, newLabelColor != .clear { TextChip(text: newLabelName, color: newLabelColor) } else { - Text("Assign a name and color.").font(.appBody) + Text(LocalText.labelsViewAssignNameColor).font(.appBody) } Spacer() } diff --git a/apple/OmnivoreKit/Sources/Views/LocalText.swift b/apple/OmnivoreKit/Sources/Views/LocalText.swift index 53126b10c..e4f9fba18 100644 --- a/apple/OmnivoreKit/Sources/Views/LocalText.swift +++ b/apple/OmnivoreKit/Sources/Views/LocalText.swift @@ -5,9 +5,7 @@ public enum LocalText { NSLocalizedString(key, bundle: .module, comment: comment ?? "no comment provided by developer") } - // share extension - public static let shareExtensionCreateLabel = localText(key: "shareExtensionCreateLabel") - public static let shareExtensionMoreActions = localText(key: "shareExtensionMoreActions") + // Share extension public static let saveArticleSavedState = localText(key: "saveArticleSavedState") public static let saveArticleProcessingState = localText(key: "saveArticleProcessingState") public static let extensionAppUnauthorized = localText(key: "extensionAppUnauthorized") @@ -16,7 +14,6 @@ public enum LocalText { public static let audioPlayerReplay = localText(key: "audioPlayerReplay") // Highlights List Card - public static let highlightCardHighlightByYou = localText(key: "highlightCardHighlightByYou") public static let highlightCardHighlightByOther = localText(key: "highlightCardHighlightByOther") public static let highlightCardNoHighlightsOnPage = localText(key: "highlightCardNoHighlightsOnPage") @@ -192,3 +189,178 @@ public enum LocalText { public static let dismissButton = localText(key: "dismissButton") public static let errorNetwork = localText(key: "errorNetwork") } + +//// Manage Account View +// "manageAccountDelete" = "Delete Account"; +// "manageAccountResetCache" = "Reset Data Cache"; +// "manageAccountConfirmDeleteMessage" = "Are you sure you want to delete your account? This action can't be undone."; +// +//// Newsletter Emails View +// "newsletterEmailsExisting" = "Existing Emails (Tap to copy)"; +// "createNewEmailMessage" = "创建新的电子邮件地址"; +// "newslettersDescription" = "将 PDF 添加到您的资料库,或使用 Omnivore 电子邮件地址订阅新闻稿件。"; +// "noCurrentSubscriptionsMessage" = "您当前没有任何订阅。"; +// +//// Profile View +// "profileConfirmLogoutMessage" = "Are you sure you want to logout?"; +// +//// Devices View +// "devicesTokensTitle" = "Registered device tokens (swipe to remove)"; +// "devicesCreated" = "Created: "; +// +//// Push Notification Settings +// "notificationsEnabled" = "Notifications Enabled"; +// "notificationsExplainer" = "Enabling push notifications gives Omnivore device permission to send notifications,\nbut you are in charge of which notifications are sent."; +// "notificationsTriggerExplainer" = "Push notifications are triggered using your \n[account rules](https://omnivore.app/settings/rules) which you can edit online."; +// "notificationsEnable" = "Enable Push Notifications?"; +// "notificationsGeneralExplainer" = "Get notified when newsletter links reach your inbox. Or receive reminders that you set from our share extension."; +// "notificationsOptionDeny" = "No Thanks"; +// "notificationsOptionEnable" = "Yes Please"; +// +//// Community Modal +// "communityHeadline" = "Help build the Omnivore Community"; +// "communityAppstoreReview" = "Review on the AppStore"; +// "communityTweet" = "Tweet about Omnivore"; +// "communityFollowTwitter" = "Follow us on Twitter"; +// "communityJoinDiscord" = "Join us on Discord"; +// "communityStarGithub" = "Star on GitHub"; +// +//// Clubs View +// "clubsLearnTitle" = "Learn more about clubs"; +// "clubsName" = "Club Name"; +// "clubsCreate" = "Create a new club"; +// "clubsYours" = "Your clubs"; +// "clubsNotAMemberMessage" = "You are not a member of any clubs.\nCreate +// a new club and send the invite link to your friends get started.\n\nDuring the beta you are limited to creating three clubs, and each club\ncan have a maximum of twelve users." +// "clubsErrorCopying" = "Error copying invite URL"; +// "clubsAdminDenyViewing" = "The admin of this club does not allow viewing all members."; +// "clubsNoMembers" = "This club does not have any members. Add users to your club by sending\nthem the invite link."; +// "clubsLeave" = "Leave Club"; +// "clubsLeaveConfirm" = "Are you sure you want to leave this club? No data will be deleted, but you will stop receiving recommendations from the club."; +// "clubsNoneJoined" = "You do not have any clubs you can post to.\nJoin a club or create your own to start recommending articles."; +// +//// Subscriptions +// "subscriptionsErrorRetrieving" = "Sorry, we were unable to retrieve your subscriptions."; +// "subscriptionsNone" = "You have no current subscriptions."; +////"subscriptions.error.retrieving" = "Last received: \(updatedDate.formatted())"; // unused for now +// +//// Text to Speech +// "texttospeechLanguageDefault" = "Default Language"; +// "texttospeechSettingsAudio" = "Audio Settings"; +// "texttospeechSettingsEnablePrefetch" = "Enable audio prefetch"; +// "texttospeechBetaSignupInProcess" = "Signing up for beta"; +// "texttospeechBetaRealisticVoiceLimit" = "You are in the ultra realistic voices beta. During the beta you can listen to 10,000 words of audio per day."; +// "texttospeechBetaRequestReceived" = "Your request to join the ultra realistic voices demo has been received. You will be informed by email when a spot is available."; +// "texttospeechBetaWaitlist" = "Ultra realistic voices are currently in limited beta. Enabling the feature will add you to the beta queue."; +// +//// Sign in/up +// "registrationNoAccount" = "Don't have an account?"; +// "registrationForgotPassword" = "Forgot your password?"; +// "registrationStatusCheck" = "Check Status"; +// "registrationUseDifferentEmail" = "Use a different email?"; +// "registrationFullName" = "Full Name"; +// "registrationUsername" = "Username"; +// "registrationAlreadyHaveAccount" = "Already have an account?"; +// "registrationBio" = "Bio (optional)"; +// "registrationWelcome" = "Welcome to Omnivore!"; +// "registrationUsernameAssignedPrefix" = "Your username is:"; +// "registrationChangeUsername" = "Change Username"; +// "registrationEdit" = "Edit"; +// "googleAuthButton" = "使用 Google 账号"; +// "registrationViewSignUpHeadline" = "注册"; +// "loginErrorInvalidCreds" = "提供的登录凭据无效."; +// +//// Recommendation +// "recommendationToPrefix" = "To:"; +// "recommendationAddNote" = "Add a note (optional)"; +////"recommendationToPrefix" = "Include your \(viewModel.highlightCount) highlight\(viewModel.highlightCount > 1 ? "s" : """; // unused for now +// "recommendationError" = "Error recommending this page"; +// +//// Web Reader +// "readerCopyLink" = "Copy Link"; +// "readerSave" = "Save to Omnivore"; +// "readerError" = "An error occurred"; +// +//// Debug Menu +// "menuDebugTitle" = "Debug Menu"; +// "menuDebugApiEnv" = "API Environment:"; +// +//// Navigation +// "navigationSelectLink" = "Select a link from the feed"; +// "navigationSelectSidebarToggle" = "Toggle sidebar"; +// +//// Welcome View +// "welcomeTitle" = "Read-it-later for serious readers."; +// "welcomeLearnMore" = "Learn more"; +// "welcomeSignupAgreement" = "By signing up, you agree to Omnivore’s\n"; +// "welcomeTitleTermsOfService" = "Terms of Service"; +// "welcomeTitleAndJoiner" = " and "; +// "welcomeTitleEmailContinue" = "Continue with Email"; +// +//// Keyboard Commands +// "keyboardCommandDecreaseFont" = "Decrease Font Size"; +// "keyboardCommandIncreaseFont" = "Increase Font Size"; +// "keyboardCommandDecreaseMargin" = "Decrease Margin"; +// "keyboardCommandIncreaseMargin" = "Increase Margin"; +// "keyboardCommandDecreaseLineSpacing" = "Decrease Line Spacing"; +// "keyboardCommandIncreaseLineSpacing" = "Increase Line Spacing"; +// +//// Library +////"library.by.author.suffix" = "by \(author)" // unused +////"Recommended by \(byStr) in \(inStr)" // unused +// +// +//// Generic +// "genericSnooze" = "Snooze"; +// "genericClose" = "Close"; +// "genericCreate" = "Create"; +// "genericConfirm" = "Confirm"; +// "genericProfile" = "Profile"; +// "genericNext" = "Next"; +// "genericName" = "Name"; +// "genericOk" = "Ok"; +// "genericRetry" = "Retry"; +// "genericEmail" = "Email"; +// "genericPassword" = "Password"; +// "genericSubmit" = "Submit"; +// "genericContinue" = "Continue"; +// "genericSend" = "Send"; +// "genericOptions" = "Options"; +// "genericOpen" = "Open"; +// "genericChangeApply" = "Apply Changes"; +// "genericTitle" = "Title"; +// "genericAuthor" = "Author"; +// "genericDescription" = "Description"; +// "genericSave" = "Save"; +// "genericLoading" = "Loading..."; +// "genericFontFamily" = "Font Family"; +// "genericHighContrastText" = "High Contrast Text"; +// "genericFont" = "Font"; +// "genericHighlight" = "Highlight"; +// "labelsGeneric" = "标签"; +// "emailsGeneric" = "电子邮件"; +// "subscriptionsGeneric" = "订阅"; +// "textToSpeechGeneric" = "文章转语音"; +// "privacyPolicyGeneric" = "隐私策略"; +// "termsAndConditionsGeneric" = "条款与条件"; +// "feedbackGeneric" = "反馈"; +// "manageAccountGeneric" = "管理帐户"; +// "logoutGeneric" = "退出登陆"; +// "doneGeneric" = "完成"; +// "cancelGeneric" = "取消"; +// "inboxGeneric" = "收集箱"; +// "readLaterGeneric" = "稍后阅读"; +// "newslettersGeneric" = "新闻稿件"; +// "allGeneric" = "全部"; +// "archivedGeneric" = "存档"; +// "highlightedGeneric" = "荧光笔"; +// "filesGeneric" = "文件"; +// "newestGeneric" = "最新"; +// "oldestGeneric" = "最早"; +// "recentlyReadGeneric" = "最近阅读"; +// "recentlyPublishedGeneric" = "最近发布"; +// "clubsGeneric" = "读书俱乐部"; +// "errorGeneric" = "哦!出现了小问题,请您重试."; +// "pushNotificationsGeneric" = "推送通知"; +// "dismissButton" = "撤回"; +// "errorNetwork" = "我们在连接到互联网时遇到问题."; diff --git a/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings b/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings index e9f7167fe..77c6164c4 100644 --- a/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings +++ b/apple/OmnivoreKit/Sources/Views/Resources/en.lproj/Localizable.strings @@ -1,6 +1,4 @@ // share extension -"shareExtensionCreateLabel" = "Create Label"; -"shareExtensionMoreActions" = "More Actions"; "saveArticleSavedState" = "Saved to Omnivore"; "saveArticleProcessingState" = "Saved to Omnivore"; "extensionAppUnauthorized" = "Please login to Omnivore from the app before saving your first link."; @@ -9,7 +7,6 @@ "audioPlayerReplay" = "Replay"; // Highlights List Card -"highlightCardHighlightByYou" = "Highlight by you"; "highlightCardHighlightByOther" = "Highlight by "; "highlightCardNoHighlightsOnPage" = "You have not added any highlights or notes to this page."; diff --git a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings index 36ed18392..0e5248d0a 100644 --- a/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings +++ b/apple/OmnivoreKit/Sources/Views/Resources/zh-Hans.lproj/Localizable.strings @@ -1,6 +1,4 @@ // share extension -"shareExtensionCreateLabel" = "Create Label"; -"shareExtensionMoreActions" = "More Actions"; "saveArticleSavedState" = "正在保存到 Omnivore 中"; "saveArticleProcessingState" = "已经保存到 Omnivore 中"; "extensionAppUnauthorized" = "请在保存您的第一个链接之前从应用程序登录 Omnivore."; @@ -9,7 +7,6 @@ "audioPlayerReplay" = "Replay"; // Highlights List Card -"highlightCardHighlightByYou" = "Highlight by you"; "highlightCardHighlightByOther" = "Highlight by "; "highlightCardNoHighlightsOnPage" = "You have not added any highlights or notes to this page."; From 3796fd18d7bd1eaa225d16a56f3d844b9a044f31 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Tue, 24 Jan 2023 21:05:55 -0800 Subject: [PATCH 10/10] remove commented code --- .../OmnivoreKit/Sources/Views/LocalText.swift | 175 ------------------ 1 file changed, 175 deletions(-) diff --git a/apple/OmnivoreKit/Sources/Views/LocalText.swift b/apple/OmnivoreKit/Sources/Views/LocalText.swift index e4f9fba18..148be5252 100644 --- a/apple/OmnivoreKit/Sources/Views/LocalText.swift +++ b/apple/OmnivoreKit/Sources/Views/LocalText.swift @@ -189,178 +189,3 @@ public enum LocalText { public static let dismissButton = localText(key: "dismissButton") public static let errorNetwork = localText(key: "errorNetwork") } - -//// Manage Account View -// "manageAccountDelete" = "Delete Account"; -// "manageAccountResetCache" = "Reset Data Cache"; -// "manageAccountConfirmDeleteMessage" = "Are you sure you want to delete your account? This action can't be undone."; -// -//// Newsletter Emails View -// "newsletterEmailsExisting" = "Existing Emails (Tap to copy)"; -// "createNewEmailMessage" = "创建新的电子邮件地址"; -// "newslettersDescription" = "将 PDF 添加到您的资料库,或使用 Omnivore 电子邮件地址订阅新闻稿件。"; -// "noCurrentSubscriptionsMessage" = "您当前没有任何订阅。"; -// -//// Profile View -// "profileConfirmLogoutMessage" = "Are you sure you want to logout?"; -// -//// Devices View -// "devicesTokensTitle" = "Registered device tokens (swipe to remove)"; -// "devicesCreated" = "Created: "; -// -//// Push Notification Settings -// "notificationsEnabled" = "Notifications Enabled"; -// "notificationsExplainer" = "Enabling push notifications gives Omnivore device permission to send notifications,\nbut you are in charge of which notifications are sent."; -// "notificationsTriggerExplainer" = "Push notifications are triggered using your \n[account rules](https://omnivore.app/settings/rules) which you can edit online."; -// "notificationsEnable" = "Enable Push Notifications?"; -// "notificationsGeneralExplainer" = "Get notified when newsletter links reach your inbox. Or receive reminders that you set from our share extension."; -// "notificationsOptionDeny" = "No Thanks"; -// "notificationsOptionEnable" = "Yes Please"; -// -//// Community Modal -// "communityHeadline" = "Help build the Omnivore Community"; -// "communityAppstoreReview" = "Review on the AppStore"; -// "communityTweet" = "Tweet about Omnivore"; -// "communityFollowTwitter" = "Follow us on Twitter"; -// "communityJoinDiscord" = "Join us on Discord"; -// "communityStarGithub" = "Star on GitHub"; -// -//// Clubs View -// "clubsLearnTitle" = "Learn more about clubs"; -// "clubsName" = "Club Name"; -// "clubsCreate" = "Create a new club"; -// "clubsYours" = "Your clubs"; -// "clubsNotAMemberMessage" = "You are not a member of any clubs.\nCreate -// a new club and send the invite link to your friends get started.\n\nDuring the beta you are limited to creating three clubs, and each club\ncan have a maximum of twelve users." -// "clubsErrorCopying" = "Error copying invite URL"; -// "clubsAdminDenyViewing" = "The admin of this club does not allow viewing all members."; -// "clubsNoMembers" = "This club does not have any members. Add users to your club by sending\nthem the invite link."; -// "clubsLeave" = "Leave Club"; -// "clubsLeaveConfirm" = "Are you sure you want to leave this club? No data will be deleted, but you will stop receiving recommendations from the club."; -// "clubsNoneJoined" = "You do not have any clubs you can post to.\nJoin a club or create your own to start recommending articles."; -// -//// Subscriptions -// "subscriptionsErrorRetrieving" = "Sorry, we were unable to retrieve your subscriptions."; -// "subscriptionsNone" = "You have no current subscriptions."; -////"subscriptions.error.retrieving" = "Last received: \(updatedDate.formatted())"; // unused for now -// -//// Text to Speech -// "texttospeechLanguageDefault" = "Default Language"; -// "texttospeechSettingsAudio" = "Audio Settings"; -// "texttospeechSettingsEnablePrefetch" = "Enable audio prefetch"; -// "texttospeechBetaSignupInProcess" = "Signing up for beta"; -// "texttospeechBetaRealisticVoiceLimit" = "You are in the ultra realistic voices beta. During the beta you can listen to 10,000 words of audio per day."; -// "texttospeechBetaRequestReceived" = "Your request to join the ultra realistic voices demo has been received. You will be informed by email when a spot is available."; -// "texttospeechBetaWaitlist" = "Ultra realistic voices are currently in limited beta. Enabling the feature will add you to the beta queue."; -// -//// Sign in/up -// "registrationNoAccount" = "Don't have an account?"; -// "registrationForgotPassword" = "Forgot your password?"; -// "registrationStatusCheck" = "Check Status"; -// "registrationUseDifferentEmail" = "Use a different email?"; -// "registrationFullName" = "Full Name"; -// "registrationUsername" = "Username"; -// "registrationAlreadyHaveAccount" = "Already have an account?"; -// "registrationBio" = "Bio (optional)"; -// "registrationWelcome" = "Welcome to Omnivore!"; -// "registrationUsernameAssignedPrefix" = "Your username is:"; -// "registrationChangeUsername" = "Change Username"; -// "registrationEdit" = "Edit"; -// "googleAuthButton" = "使用 Google 账号"; -// "registrationViewSignUpHeadline" = "注册"; -// "loginErrorInvalidCreds" = "提供的登录凭据无效."; -// -//// Recommendation -// "recommendationToPrefix" = "To:"; -// "recommendationAddNote" = "Add a note (optional)"; -////"recommendationToPrefix" = "Include your \(viewModel.highlightCount) highlight\(viewModel.highlightCount > 1 ? "s" : """; // unused for now -// "recommendationError" = "Error recommending this page"; -// -//// Web Reader -// "readerCopyLink" = "Copy Link"; -// "readerSave" = "Save to Omnivore"; -// "readerError" = "An error occurred"; -// -//// Debug Menu -// "menuDebugTitle" = "Debug Menu"; -// "menuDebugApiEnv" = "API Environment:"; -// -//// Navigation -// "navigationSelectLink" = "Select a link from the feed"; -// "navigationSelectSidebarToggle" = "Toggle sidebar"; -// -//// Welcome View -// "welcomeTitle" = "Read-it-later for serious readers."; -// "welcomeLearnMore" = "Learn more"; -// "welcomeSignupAgreement" = "By signing up, you agree to Omnivore’s\n"; -// "welcomeTitleTermsOfService" = "Terms of Service"; -// "welcomeTitleAndJoiner" = " and "; -// "welcomeTitleEmailContinue" = "Continue with Email"; -// -//// Keyboard Commands -// "keyboardCommandDecreaseFont" = "Decrease Font Size"; -// "keyboardCommandIncreaseFont" = "Increase Font Size"; -// "keyboardCommandDecreaseMargin" = "Decrease Margin"; -// "keyboardCommandIncreaseMargin" = "Increase Margin"; -// "keyboardCommandDecreaseLineSpacing" = "Decrease Line Spacing"; -// "keyboardCommandIncreaseLineSpacing" = "Increase Line Spacing"; -// -//// Library -////"library.by.author.suffix" = "by \(author)" // unused -////"Recommended by \(byStr) in \(inStr)" // unused -// -// -//// Generic -// "genericSnooze" = "Snooze"; -// "genericClose" = "Close"; -// "genericCreate" = "Create"; -// "genericConfirm" = "Confirm"; -// "genericProfile" = "Profile"; -// "genericNext" = "Next"; -// "genericName" = "Name"; -// "genericOk" = "Ok"; -// "genericRetry" = "Retry"; -// "genericEmail" = "Email"; -// "genericPassword" = "Password"; -// "genericSubmit" = "Submit"; -// "genericContinue" = "Continue"; -// "genericSend" = "Send"; -// "genericOptions" = "Options"; -// "genericOpen" = "Open"; -// "genericChangeApply" = "Apply Changes"; -// "genericTitle" = "Title"; -// "genericAuthor" = "Author"; -// "genericDescription" = "Description"; -// "genericSave" = "Save"; -// "genericLoading" = "Loading..."; -// "genericFontFamily" = "Font Family"; -// "genericHighContrastText" = "High Contrast Text"; -// "genericFont" = "Font"; -// "genericHighlight" = "Highlight"; -// "labelsGeneric" = "标签"; -// "emailsGeneric" = "电子邮件"; -// "subscriptionsGeneric" = "订阅"; -// "textToSpeechGeneric" = "文章转语音"; -// "privacyPolicyGeneric" = "隐私策略"; -// "termsAndConditionsGeneric" = "条款与条件"; -// "feedbackGeneric" = "反馈"; -// "manageAccountGeneric" = "管理帐户"; -// "logoutGeneric" = "退出登陆"; -// "doneGeneric" = "完成"; -// "cancelGeneric" = "取消"; -// "inboxGeneric" = "收集箱"; -// "readLaterGeneric" = "稍后阅读"; -// "newslettersGeneric" = "新闻稿件"; -// "allGeneric" = "全部"; -// "archivedGeneric" = "存档"; -// "highlightedGeneric" = "荧光笔"; -// "filesGeneric" = "文件"; -// "newestGeneric" = "最新"; -// "oldestGeneric" = "最早"; -// "recentlyReadGeneric" = "最近阅读"; -// "recentlyPublishedGeneric" = "最近发布"; -// "clubsGeneric" = "读书俱乐部"; -// "errorGeneric" = "哦!出现了小问题,请您重试."; -// "pushNotificationsGeneric" = "推送通知"; -// "dismissButton" = "撤回"; -// "errorNetwork" = "我们在连接到互联网时遇到问题.";