diff --git a/ReaderHive.xcodeproj/project.pbxproj b/ReaderHive.xcodeproj/project.pbxproj index bb43d2b..053b1c3 100644 --- a/ReaderHive.xcodeproj/project.pbxproj +++ b/ReaderHive.xcodeproj/project.pbxproj @@ -3089,7 +3089,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.7; + MARKETING_VERSION = 1.0.8; PRODUCT_BUNDLE_IDENTIFIER = com.lssj.ReaderHive; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -3134,7 +3134,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.7; + MARKETING_VERSION = 1.0.8; PRODUCT_BUNDLE_IDENTIFIER = com.lssj.ReaderHive; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/ReaderHive/Base/Networking/API/NRStoreAPI.swift b/ReaderHive/Base/Networking/API/NRStoreAPI.swift index d560e60..9c2a62c 100644 --- a/ReaderHive/Base/Networking/API/NRStoreAPI.swift +++ b/ReaderHive/Base/Networking/API/NRStoreAPI.swift @@ -57,7 +57,7 @@ struct NRStoreAPI { NRNetwork.request(parameters: param) { (response: NRNetwork.Response) in guard let data = response.data else { - NRToast.show(text: "network_error_2".localized) + NRToast.show(text: "reader_network_error".localized) completer?(nil) return } diff --git a/ReaderHive/Base/Networking/NRNetwork.swift b/ReaderHive/Base/Networking/NRNetwork.swift index 5f12cbc..9aa4d48 100644 --- a/ReaderHive/Base/Networking/NRNetwork.swift +++ b/ReaderHive/Base/Networking/NRNetwork.swift @@ -81,7 +81,7 @@ class NRNetwork: NSObject { } else { if code == 402, parameters.isToast { DispatchQueue.main.async { - NRToast.show(text: "network_error_1".localized) + NRToast.show(text: "reader_kick_out_login".localized) } } //重新获取token @@ -146,7 +146,7 @@ class NRNetwork: NSObject { res.code = -1 if parameters.isToast { DispatchQueue.main.async { - NRToast.show(text: "network_error_2".localized) + NRToast.show(text: "reader_network_error".localized) } } completion?(res) diff --git a/ReaderHive/Base/VC/NRAppStartViewController.swift b/ReaderHive/Base/VC/NRAppStartViewController.swift index da7395a..656a071 100644 --- a/ReaderHive/Base/VC/NRAppStartViewController.swift +++ b/ReaderHive/Base/VC/NRAppStartViewController.swift @@ -21,7 +21,7 @@ class NRAppStartViewController: NRViewController { var configuration = UIButton.Configuration.plain() configuration.background.image = UIImage(named: "gradient_color_01") configuration.background.cornerRadius = 24 - configuration.attributedTitle = AttributedString("Open".localized, attributes: AttributeContainer([ + configuration.attributedTitle = AttributedString("reader_open_app".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 14, weight: .medium), .foregroundColor : UIColor.white ])) diff --git a/ReaderHive/Base/VC/NRTabBarController.swift b/ReaderHive/Base/VC/NRTabBarController.swift index 10bc847..4785099 100644 --- a/ReaderHive/Base/VC/NRTabBarController.swift +++ b/ReaderHive/Base/VC/NRTabBarController.swift @@ -13,10 +13,10 @@ class NRTabBarController: UITabBarController { super.viewDidLoad() self.view.backgroundColor = .white - let nav1 = createNavigationController(title: "My List".localized, image: UIImage(named: "tab_bar_icon_01"), selectedImage: UIImage(named: "tab_bar_icon_01_selected"), viewController: NRMyListViewController()) - let nav2 = createNavigationController(title: "Home".localized, image: UIImage(named: "tab_bar_icon_02"), selectedImage: UIImage(named: "tab_bar_icon_02_selected"), viewController: NRHomeViewController()) - let nav3 = createNavigationController(title: "Explore".localized, image: UIImage(named: "tab_bar_icon_03"), selectedImage: UIImage(named: "tab_bar_icon_03_selected"), viewController: NRExploreViewController()) - let nav4 = createNavigationController(title: "Me".localized, image: UIImage(named: "tab_bar_icon_04"), selectedImage: UIImage(named: "tab_bar_icon_04_selected"), viewController: NRMeViewController()) + let nav1 = createNavigationController(title: "reader_my_list".localized, image: UIImage(named: "tab_bar_icon_01"), selectedImage: UIImage(named: "tab_bar_icon_01_selected"), viewController: NRMyListViewController()) + let nav2 = createNavigationController(title: "reader_home".localized, image: UIImage(named: "tab_bar_icon_02"), selectedImage: UIImage(named: "tab_bar_icon_02_selected"), viewController: NRHomeViewController()) + let nav3 = createNavigationController(title: "home_explore".localized, image: UIImage(named: "tab_bar_icon_03"), selectedImage: UIImage(named: "tab_bar_icon_03_selected"), viewController: NRExploreViewController()) + let nav4 = createNavigationController(title: "reader_me".localized, image: UIImage(named: "tab_bar_icon_04"), selectedImage: UIImage(named: "tab_bar_icon_04_selected"), viewController: NRMeViewController()) viewControllers = [nav1, nav2, nav3, nav4] diff --git a/ReaderHive/Base/VC/NRViewController.swift b/ReaderHive/Base/VC/NRViewController.swift index bb87a55..189fcc3 100644 --- a/ReaderHive/Base/VC/NRViewController.swift +++ b/ReaderHive/Base/VC/NRViewController.swift @@ -27,7 +27,7 @@ class NRViewController: UIViewController { }() private(set) lazy var notNetworkingEmptyView: LYEmptyView = { - let view = NREmpty.nr_emptyView(image: UIImage(named: "empty_image_02"), title: "not_networking_empty_text".localized, btnTitleStr: "Try again".localized, contentViewOffset: 0) { [weak self] in + let view = NREmpty.nr_emptyView(image: UIImage(named: "empty_image_02"), title: "not_networking_empty_text".localized, btnTitleStr: "app_try_again".localized, contentViewOffset: 0) { [weak self] in self?.handleNotNetworkingEmptyBtn() } view.autoShowEmptyView = false diff --git a/ReaderHive/Base/WebView/NRAppWebViewController.swift b/ReaderHive/Base/WebView/NRAppWebViewController.swift index a078c6b..0b3b245 100644 --- a/ReaderHive/Base/WebView/NRAppWebViewController.swift +++ b/ReaderHive/Base/WebView/NRAppWebViewController.swift @@ -20,13 +20,13 @@ class NRAppWebViewController: NRWebViewController { super.viewDidLoad() if webUrl == kNRFeedBackListWebUrl { - self.title = "Feedback History".localized + self.title = "reader_feedback_history".localized } else if webUrl == kNRFeedBackHomeWebUrl { - self.title = "Feedback".localized + self.title = "reader_feedback".localized } else if webUrl == kNRFeedBackDetailWebUrl { - self.title = "Feedback Details".localized + self.title = "reader_feedback_detail".localized } else if webUrl == kNRLogoutWebUrl { - self.title = "Account Deletion".localized + self.title = "reader_account_deletion".localized } } diff --git a/ReaderHive/Class/Explore/VC/NRExploreNovelContentViewController.swift b/ReaderHive/Class/Explore/VC/NRExploreNovelContentViewController.swift index 4ed1bc2..bd284bb 100644 --- a/ReaderHive/Class/Explore/VC/NRExploreNovelContentViewController.swift +++ b/ReaderHive/Class/Explore/VC/NRExploreNovelContentViewController.swift @@ -37,7 +37,7 @@ class NRExploreNovelContentViewController: NRViewController { lazy var pageMenuDataSource: JXSegmentedTitleDataSource = { let dataSource = NRExploreNovelMenuDataSource() - dataSource.titles = ["Today".localized, "This Week".localized, "This Month".localized] + dataSource.titles = ["home_today".localized, "home_week".localized, "home_month".localized] dataSource.titleNormalFont = .font(ofSize: 12, weight: .regular) dataSource.titleSelectedFont = .font(ofSize: 12, weight: .semibold) dataSource.titleNormalColor = .black.withAlphaComponent(0.5) diff --git a/ReaderHive/Class/Explore/VM/NRExploreNovelViewModel.swift b/ReaderHive/Class/Explore/VM/NRExploreNovelViewModel.swift index 10fe5bb..9a9f0c3 100644 --- a/ReaderHive/Class/Explore/VM/NRExploreNovelViewModel.swift +++ b/ReaderHive/Class/Explore/VM/NRExploreNovelViewModel.swift @@ -11,11 +11,11 @@ class NRExploreNovelViewModel: NSObject { lazy var menuDataArr: [NRExploreNovelMenuItem] = { let arr = [ - NRExploreNovelMenuItem(type: .genres, title: "Genres".localized, icon: UIImage(named: "explore_genres_icon_01"), selectedIcon: UIImage(named: "explore_genres_icon_01_selected")), - NRExploreNovelMenuItem(type: .trending, title: "Trending".localized, icon: UIImage(named: "explore_trending_icon_01"), selectedIcon: UIImage(named: "explore_trending_icon_01_selected")), - NRExploreNovelMenuItem(type: .topRated, title: "Top Rated".localized, icon: UIImage(named: "explore_top_rated_icon_01"), selectedIcon: UIImage(named: "explore_top_rated_icon_01_selected")), - NRExploreNovelMenuItem(type: .collected, title: "Most Collected".localized, icon: UIImage(named: "explore_most_collected_icon_01"), selectedIcon: UIImage(named: "explore_most_collected_icon_01_selected")), - NRExploreNovelMenuItem(type: .bestSellers, title: "Best Sellers".localized, icon: UIImage(named: "explore_best_sellers_icon_01"), selectedIcon: UIImage(named: "explore_best_sellers_icon_01_selected")), + NRExploreNovelMenuItem(type: .genres, title: "reader_home_genres".localized, icon: UIImage(named: "explore_genres_icon_01"), selectedIcon: UIImage(named: "explore_genres_icon_01_selected")), + NRExploreNovelMenuItem(type: .trending, title: "home_trending".localized, icon: UIImage(named: "explore_trending_icon_01"), selectedIcon: UIImage(named: "explore_trending_icon_01_selected")), + NRExploreNovelMenuItem(type: .topRated, title: "home_topRated".localized, icon: UIImage(named: "explore_top_rated_icon_01"), selectedIcon: UIImage(named: "explore_top_rated_icon_01_selected")), + NRExploreNovelMenuItem(type: .collected, title: "home_mostCollected".localized, icon: UIImage(named: "explore_most_collected_icon_01"), selectedIcon: UIImage(named: "explore_most_collected_icon_01_selected")), + NRExploreNovelMenuItem(type: .bestSellers, title: "home_bestSellers".localized, icon: UIImage(named: "explore_best_sellers_icon_01"), selectedIcon: UIImage(named: "explore_best_sellers_icon_01_selected")), ] return arr }() diff --git a/ReaderHive/Class/Home/C/NRHomeNovelListViewController.swift b/ReaderHive/Class/Home/C/NRHomeNovelListViewController.swift index 0b8c91e..c7f7e6b 100644 --- a/ReaderHive/Class/Home/C/NRHomeNovelListViewController.swift +++ b/ReaderHive/Class/Home/C/NRHomeNovelListViewController.swift @@ -35,7 +35,7 @@ class NRHomeNovelListViewController: NRViewController { lazy var listTitleView: NRHomeNovelHeaderContentView = { let view = NRHomeNovelHeaderContentView() - view.titleLabel.text = "More Stories".localized + view.titleLabel.text = "reader_home_title6".localized return view }() diff --git a/ReaderHive/Class/Home/C/NRHomeNovelNewViewController.swift b/ReaderHive/Class/Home/C/NRHomeNovelNewViewController.swift index 66962fb..21fa212 100644 --- a/ReaderHive/Class/Home/C/NRHomeNovelNewViewController.swift +++ b/ReaderHive/Class/Home/C/NRHomeNovelNewViewController.swift @@ -55,7 +55,7 @@ class NRHomeNovelNewViewController: NRViewController { super.viewDidLoad() self.edgesForExtendedLayout = .top self.backgroundImageView.isHidden = true - self.title = "New".localized + self.title = "reader_new".localized configNavigationBack("arrow_left_icon_05") diff --git a/ReaderHive/Class/Home/V/NRHomeCoinsPackButton.swift b/ReaderHive/Class/Home/V/NRHomeCoinsPackButton.swift index 42bd150..b83f476 100644 --- a/ReaderHive/Class/Home/V/NRHomeCoinsPackButton.swift +++ b/ReaderHive/Class/Home/V/NRHomeCoinsPackButton.swift @@ -34,7 +34,7 @@ class NRHomeCoinsPackButton: UIControl { label.textColors = [UIColor.FFEECA.cgColor, UIColor.FECE_62.cgColor] label.textStartPoint = .init(x: 0, y: 0.5) label.textEndPoint = .init(x: 1, y: 0.5) - label.text = "Daily Coins".localized + label.text = "reader_daily_coins".localized label.setContentHuggingPriority(.required, for: .horizontal) label.setContentCompressionResistancePriority(.required, for: .horizontal) return label diff --git a/ReaderHive/Class/Home/V/NRHomeNovelHeaderView.swift b/ReaderHive/Class/Home/V/NRHomeNovelHeaderView.swift index 66a8a06..89aae5e 100644 --- a/ReaderHive/Class/Home/V/NRHomeNovelHeaderView.swift +++ b/ReaderHive/Class/Home/V/NRHomeNovelHeaderView.swift @@ -112,7 +112,7 @@ class NRHomeNovelHeaderView: UIView { lazy var featuredView: NRHomeNovelHotGridView = { let view = NRHomeNovelHotGridView() - view.titleLabel.text = "Featured".localized + view.titleLabel.text = "reader_home_title5".localized return view }() diff --git a/ReaderHive/Class/Home/V/NRHomeNovelHotGridView.swift b/ReaderHive/Class/Home/V/NRHomeNovelHotGridView.swift index 5d90569..cc9c427 100644 --- a/ReaderHive/Class/Home/V/NRHomeNovelHotGridView.swift +++ b/ReaderHive/Class/Home/V/NRHomeNovelHotGridView.swift @@ -13,7 +13,7 @@ class NRHomeNovelHotGridView: NRHomeNovelNewArrivalsView { override init(frame: CGRect) { super.init(frame: frame) - titleLabel.text = "Hot On The Grid".localized + titleLabel.text = "reader_home_title2".localized } @MainActor required init?(coder: NSCoder) { diff --git a/ReaderHive/Class/Home/V/NRHomeNovelHotTagView.swift b/ReaderHive/Class/Home/V/NRHomeNovelHotTagView.swift index e78bae5..081132b 100644 --- a/ReaderHive/Class/Home/V/NRHomeNovelHotTagView.swift +++ b/ReaderHive/Class/Home/V/NRHomeNovelHotTagView.swift @@ -27,7 +27,7 @@ class NRHomeNovelHotTagView: UIView { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = .black - label.text = "Hot Tags".localized + label.text = "reader_home_title4".localized return label }() diff --git a/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayCell.swift b/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayCell.swift index 0f2fad3..91942e6 100644 --- a/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayCell.swift +++ b/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayCell.swift @@ -87,7 +87,7 @@ class NRHomeNovelMustReadTodayCell: FSPagerViewCell { let label = UILabel() label.font = .font(ofSize: 14, weight: .medium) label.textColor = .white - label.text = "Read Now".localized + label.text = "reader_read_now".localized return label }() diff --git a/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayView.swift b/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayView.swift index 3d5a905..3499828 100644 --- a/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayView.swift +++ b/ReaderHive/Class/Home/V/NRHomeNovelMustReadTodayView.swift @@ -39,7 +39,7 @@ class NRHomeNovelMustReadTodayView: NRHomeNovelHeaderContentView { override init(frame: CGRect) { super.init(frame: frame) - self.titleLabel.text = "Must-Read Today".localized + self.titleLabel.text = "reader_banner_title".localized nr_setupUI() } diff --git a/ReaderHive/Class/Home/V/NRHomeNovelNewArrivalsView.swift b/ReaderHive/Class/Home/V/NRHomeNovelNewArrivalsView.swift index 2bbf510..fae5d79 100644 --- a/ReaderHive/Class/Home/V/NRHomeNovelNewArrivalsView.swift +++ b/ReaderHive/Class/Home/V/NRHomeNovelNewArrivalsView.swift @@ -37,7 +37,7 @@ class NRHomeNovelNewArrivalsView: NRHomeNovelHeaderContentView { override init(frame: CGRect) { super.init(frame: frame) - self.titleLabel.text = "New Arrivals".localized + self.titleLabel.text = "reader_new_arrivals".localized nr_setupUI() } diff --git a/ReaderHive/Class/Home/V/NRHomeNovelNextView.swift b/ReaderHive/Class/Home/V/NRHomeNovelNextView.swift index 8808927..6b4f746 100644 --- a/ReaderHive/Class/Home/V/NRHomeNovelNextView.swift +++ b/ReaderHive/Class/Home/V/NRHomeNovelNextView.swift @@ -42,7 +42,7 @@ class NRHomeNovelNextView: NRHomeNovelHeaderContentView { override init(frame: CGRect) { super.init(frame: frame) - self.titleLabel.text = "Next In View".localized + self.titleLabel.text = "reader_home_title3".localized nr_setupUI() } diff --git a/ReaderHive/Class/Home/V/NRHomeNovelReadWhatView.swift b/ReaderHive/Class/Home/V/NRHomeNovelReadWhatView.swift index 8b077c2..017b0dd 100644 --- a/ReaderHive/Class/Home/V/NRHomeNovelReadWhatView.swift +++ b/ReaderHive/Class/Home/V/NRHomeNovelReadWhatView.swift @@ -27,7 +27,7 @@ class NRHomeNovelReadWhatView: UIView { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = .black - label.text = "read_what_title".localized + label.text = "reader_home_title".localized return label }() @@ -35,7 +35,7 @@ class NRHomeNovelReadWhatView: UIView { let label = UILabel() label.font = .font(ofSize: 12, weight: .regular) label.textColor = .F_9710_D - label.text = "read_what_subtitle".localized + label.text = "reader_home_title1".localized return label }() @@ -80,7 +80,7 @@ class NRHomeNovelReadWhatView: UIView { configuration.image = UIImage(named: "arrow_right_icon_02") configuration.imagePlacement = .trailing configuration.imagePadding = 4 - configuration.attributedTitle = AttributedString("Read Now".localized, attributes: AttributeContainer([ + configuration.attributedTitle = AttributedString("reader_read_now".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 14, weight: .medium), .foregroundColor : UIColor.black ])) diff --git a/ReaderHive/Class/Home/V/NRSearchInputView.swift b/ReaderHive/Class/Home/V/NRSearchInputView.swift index 7fe55f9..aaa1b1e 100644 --- a/ReaderHive/Class/Home/V/NRSearchInputView.swift +++ b/ReaderHive/Class/Home/V/NRSearchInputView.swift @@ -41,7 +41,7 @@ class NRSearchInputView: UIView { textField.returnKeyType = .search textField.font = .font(ofSize: 12, weight: .regular) textField.textColor = .black.withAlphaComponent(0.5) - textField.attributedPlaceholder = NSAttributedString(string: "search_placeholder".localized, attributes: [ + textField.attributedPlaceholder = NSAttributedString(string: "reader_enter_keywords_search".localized, attributes: [ .font : UIFont.font(ofSize: 12, weight: .regular), .foregroundColor : UIColor.black.withAlphaComponent(0.15) ]) diff --git a/ReaderHive/Class/Home/V/NRSearchRecordView.swift b/ReaderHive/Class/Home/V/NRSearchRecordView.swift index fdf1ab9..4e37984 100644 --- a/ReaderHive/Class/Home/V/NRSearchRecordView.swift +++ b/ReaderHive/Class/Home/V/NRSearchRecordView.swift @@ -25,7 +25,7 @@ class NRSearchRecordView: UIView { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = .black - label.text = "Recent Searches".localized + label.text = "reader_searches".localized return label }() diff --git a/ReaderHive/Class/Me/V/NRLoginView.swift b/ReaderHive/Class/Me/V/NRLoginView.swift index 0f99b6e..a0a8da6 100644 --- a/ReaderHive/Class/Me/V/NRLoginView.swift +++ b/ReaderHive/Class/Me/V/NRLoginView.swift @@ -22,7 +22,7 @@ class NRLoginView: NRPanModalContentView { configuration.background.cornerRadius = 24 configuration.image = UIImage(named: "apple_login_logo_icon") configuration.imagePadding = 8 - configuration.attributedTitle = AttributedString("Login with Apple".localized, attributes: AttributeContainer([ + configuration.attributedTitle = AttributedString("reader_login_title_apple".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 14, weight: .medium), .foregroundColor : UIColor.black ])) @@ -40,7 +40,7 @@ class NRLoginView: NRPanModalContentView { configuration.background.cornerRadius = 24 configuration.image = UIImage(named: "facebook_login_logo_icon") configuration.imagePadding = 8 - configuration.attributedTitle = AttributedString("Login with Facebook".localized, attributes: AttributeContainer([ + configuration.attributedTitle = AttributedString("reader_login_title_facebook".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 14, weight: .medium), .foregroundColor : UIColor.black ])) diff --git a/ReaderHive/Class/Me/V/NRMeCoinsContentView.swift b/ReaderHive/Class/Me/V/NRMeCoinsContentView.swift index e137623..9cf16df 100644 --- a/ReaderHive/Class/Me/V/NRMeCoinsContentView.swift +++ b/ReaderHive/Class/Me/V/NRMeCoinsContentView.swift @@ -24,7 +24,7 @@ class NRMeCoinsContentView: UIView { private lazy var coinsView: NRMeCoinsView = { let view = NRMeCoinsView() - view.title = "Coins".localized + view.title = "reader_coins".localized view.addGestureRecognizer(UITapGestureRecognizer(actionBlock: { [weak self] _ in guard let self = self else { return } let vc = NRWalletViewController() @@ -35,7 +35,7 @@ class NRMeCoinsContentView: UIView { private lazy var sendCoinsView: NRMeCoinsView = { let view = NRMeCoinsView() - view.title = "Bonus".localized + view.title = "reader_my_bonus".localized view.addGestureRecognizer(UITapGestureRecognizer(actionBlock: { [weak self] _ in guard let self = self else { return } let vc = NRWalletViewController() @@ -61,7 +61,7 @@ class NRMeCoinsContentView: UIView { button.endPoint = .init(x: 1, y: 0.5) button.layer.cornerRadius = 18 button.layer.masksToBounds = true - button.setTitle("Top Up".localized, for: .normal) + button.setTitle("reader_top_up".localized, for: .normal) button.setTitleColor(UIColor.white, for: .normal) button.titleLabel?.font = .font(ofSize: 14, weight: .medium) return button diff --git a/ReaderHive/Class/Me/V/NRMeCoinsPackView.swift b/ReaderHive/Class/Me/V/NRMeCoinsPackView.swift index a6dfe93..b3bf6c5 100644 --- a/ReaderHive/Class/Me/V/NRMeCoinsPackView.swift +++ b/ReaderHive/Class/Me/V/NRMeCoinsPackView.swift @@ -29,7 +29,7 @@ class NRMeCoinsPackView: UIView { label.textColors = [UIColor.F_3912_F.cgColor, UIColor.FF_4_A_4_A.cgColor, UIColor.FA_9_B_1_F.cgColor] label.textStartPoint = .init(x: 0, y: 0.5) label.textEndPoint = .init(x: 1, y: 0.5) - label.text = "me_coins_pack_title".localized + label.text = "reader_my_daily".localized return label }() @@ -37,7 +37,7 @@ class NRMeCoinsPackView: UIView { let label = UILabel() label.font = .font(ofSize: 12, weight: .regular).withItalic() label.textColor = .F_9710_D - label.text = "me_coins_pack_subtitle".localized + label.text = "reader_my_daily_tips".localized return label }() diff --git a/ReaderHive/Class/Me/V/NRMeHeaderView.swift b/ReaderHive/Class/Me/V/NRMeHeaderView.swift index bab36be..b4ed4a3 100644 --- a/ReaderHive/Class/Me/V/NRMeHeaderView.swift +++ b/ReaderHive/Class/Me/V/NRMeHeaderView.swift @@ -67,7 +67,7 @@ class NRMeHeaderView: UITableViewHeaderFooterView { let button = UIButton(type: .custom, primaryAction: UIAction(handler: { [weak self] _ in guard let self = self else { return } UIPasteboard.general.string = NRLoginManager.manager.userInfo?.customer_id - NRToast.show(text: "Success".localized) + NRToast.show(text: "reader_success".localized) })) button.setImage(UIImage(named: "copy_icon_01"), for: .normal) return button @@ -75,7 +75,7 @@ class NRMeHeaderView: UITableViewHeaderFooterView { private lazy var loginButton: UIButton = { var configuration = UIButton.Configuration.plain() - configuration.attributedTitle = AttributedString("Log in".localized, attributes: AttributeContainer([ + configuration.attributedTitle = AttributedString("reader_login".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 14, weight: .medium), .foregroundColor : UIColor.F_9710_D ])) diff --git a/ReaderHive/Class/Me/V/NRMeVipView.swift b/ReaderHive/Class/Me/V/NRMeVipView.swift index 700a710..4ec96ba 100644 --- a/ReaderHive/Class/Me/V/NRMeVipView.swift +++ b/ReaderHive/Class/Me/V/NRMeVipView.swift @@ -16,7 +16,7 @@ class NRMeVipView: UIView { titleLabel.text = "VIP".localized let date = Date(timeIntervalSince1970: userInfo?.vip_end_time ?? 0) - timeLabel.text = "Expiration Time".localized + ":\(date.nr_formatString("yyyy-MM-dd"))" + timeLabel.text = "reader_expiration_Time".localized + ":\(date.nr_formatString("yyyy-MM-dd"))" } } diff --git a/ReaderHive/Class/Me/V/NRSettingFooterView.swift b/ReaderHive/Class/Me/V/NRSettingFooterView.swift index 793e6c5..06a0260 100644 --- a/ReaderHive/Class/Me/V/NRSettingFooterView.swift +++ b/ReaderHive/Class/Me/V/NRSettingFooterView.swift @@ -29,9 +29,9 @@ class NRSettingFooterView: UICollectionReusableView { })) button.configurationUpdateHandler = { [weak self] button in guard let self = self else { return } - var title = "Login".localized + var title = "reader_login".localized if userInfo?.is_tourist == false { - title = "Log Out".localized + title = "reader_log_out".localized } button.configuration?.attributedTitle = AttributedString(title, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 14, weight: .medium), @@ -62,7 +62,7 @@ class NRSettingFooterView: UICollectionReusableView { guard let userInfo = userInfo else { return } if userInfo.is_tourist == false { - let alert = NRAlert(title: "Log Out".localized, detail: "logout_alert_text".localized, topIconImage: UIImage(named: "alert_top_icon_02"), highlightButtonText: "Confirm".localized) + let alert = NRAlert(title: "reader_log_out".localized, detail: "reader_log_out_content".localized, topIconImage: UIImage(named: "alert_top_icon_02"), highlightButtonText: "reader_confirm".localized) alert.highlightHandle = { NRLoginManager.manager.logout(completer: nil) self.viewController?.navigationController?.popViewController(animated: true) diff --git a/ReaderHive/Class/Me/VC/NRAboutViewController.swift b/ReaderHive/Class/Me/VC/NRAboutViewController.swift index b9c1795..03577ab 100644 --- a/ReaderHive/Class/Me/VC/NRAboutViewController.swift +++ b/ReaderHive/Class/Me/VC/NRAboutViewController.swift @@ -13,9 +13,9 @@ class NRAboutViewController: NRViewController { private lazy var dataArr: [NRMeItem] = { let arr = [ - NRMeItem(type: .web, title: "Privacy Policy".localized, url: kNRPrivacyPolicyWebUrl), - NRMeItem(type: .web, title: "User Agreement".localized, url: kNRUserAgreementWebUrl), - NRMeItem(type: .web, title: "Visit Website".localized, url: NRWebBaseURL), + NRMeItem(type: .web, title: "reader_privacy_policy".localized, url: kNRPrivacyPolicyWebUrl), + NRMeItem(type: .web, title: "reader_user_agreement".localized, url: kNRUserAgreementWebUrl), + NRMeItem(type: .web, title: "reader_website".localized, url: NRWebBaseURL), ] return arr }() @@ -39,7 +39,7 @@ class NRAboutViewController: NRViewController { super.viewDidLoad() self.edgesForExtendedLayout = .top self.backgroundImageView.isHidden = true - self.title = "About".localized + self.title = "reader_about_us".localized configNavigationBack("arrow_left_icon_05") diff --git a/ReaderHive/Class/Me/VC/NRHistoryViewController.swift b/ReaderHive/Class/Me/VC/NRHistoryViewController.swift index e80a11f..f82abdd 100644 --- a/ReaderHive/Class/Me/VC/NRHistoryViewController.swift +++ b/ReaderHive/Class/Me/VC/NRHistoryViewController.swift @@ -15,7 +15,7 @@ class NRHistoryViewController: NRViewController { override func viewDidLoad() { super.viewDidLoad() - self.title = "History".localized + self.title = "reader_delete_title_3".localized self.backgroundImageView.isHidden = true configNavigationBack("arrow_left_icon_05") diff --git a/ReaderHive/Class/Me/VC/NRLanguageViewController.swift b/ReaderHive/Class/Me/VC/NRLanguageViewController.swift index 3cf8746..d4e9ca4 100644 --- a/ReaderHive/Class/Me/VC/NRLanguageViewController.swift +++ b/ReaderHive/Class/Me/VC/NRLanguageViewController.swift @@ -12,14 +12,6 @@ class NRLanguageViewController: NRViewController { private lazy var dataArr: [NRLanguageModel] = [] -// private lazy var tableView: NRTableView = { -// let tableView = NRTableView(frame: .zero, style: .insetGrouped) -// tableView.delegate = self -// tableView.dataSource = self -// tableView.register(NRLanguageCell.self, forCellReuseIdentifier: "cell") -// return tableView -// }() - private lazy var collectionViewLayout: UICollectionViewFlowLayout = { let layout = UICollectionViewFlowLayout() layout.itemSize = .init(width: UIScreen.width - 32, height: 60) @@ -38,7 +30,7 @@ class NRLanguageViewController: NRViewController { override func viewDidLoad() { super.viewDidLoad() - self.title = "Language".localized + self.title = "reader_choose_language".localized self.backgroundImageView.isHidden = true configNavigationBack("arrow_left_icon_05") @@ -88,6 +80,16 @@ extension NRLanguageViewController: UICollectionViewDelegate, UICollectionViewDa return self.dataArr.count } + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let model = self.dataArr[indexPath.row] + if model.lang_key == NRLocalizedManager.shared.currentLocalizedKey { return } + guard let key = model.lang_key else { return } + + Task { + await NRLocalizedManager.shared.switchLocalized(key) + } + } + } extension NRLanguageViewController { diff --git a/ReaderHive/Class/Me/VC/NRMeViewController.swift b/ReaderHive/Class/Me/VC/NRMeViewController.swift index a8a5d72..bfb5f28 100644 --- a/ReaderHive/Class/Me/VC/NRMeViewController.swift +++ b/ReaderHive/Class/Me/VC/NRMeViewController.swift @@ -143,14 +143,14 @@ extension NRMeViewController { private func reloadDataArr() { var dataArr: [NRMeItem] = [] - dataArr.append(NRMeItem(type: .history, icon: UIImage(named: "history_icon_01"), title: "History".localized)) - dataArr.append(NRMeItem(type: .wallet, icon: UIImage(named: "wallet_icon_01"), title: "My Wallet".localized)) -// dataArr.append(NRMeItem(type: .language, icon: UIImage(named: "language_icon_01"), title: "Language".localized)) - dataArr.append(NRMeItem(type: .feedback, icon: UIImage(named: "feedback_icon_01"), title: "Feedback".localized)) + dataArr.append(NRMeItem(type: .history, icon: UIImage(named: "history_icon_01"), title: "reader_delete_title_3".localized)) + dataArr.append(NRMeItem(type: .wallet, icon: UIImage(named: "wallet_icon_01"), title: "reader_wallet".localized)) + dataArr.append(NRMeItem(type: .language, icon: UIImage(named: "language_icon_01"), title: "reader_choose_language".localized)) + dataArr.append(NRMeItem(type: .feedback, icon: UIImage(named: "feedback_icon_01"), title: "reader_feedback".localized)) if NRLoginManager.manager.userInfo?.is_tourist == false { - dataArr.append(NRMeItem(type: .settings, icon: UIImage(named: "settings_icon_02"), title: "Settings".localized)) + dataArr.append(NRMeItem(type: .settings, icon: UIImage(named: "settings_icon_02"), title: "reader_settings".localized)) } - dataArr.append(NRMeItem(type: .about, icon: UIImage(named: "about_icon_01"), title: "About".localized)) + dataArr.append(NRMeItem(type: .about, icon: UIImage(named: "about_icon_01"), title: "reader_about_us".localized)) self.dataArr = dataArr self.tableView.reloadData() } diff --git a/ReaderHive/Class/Me/VC/NRSettingViewController.swift b/ReaderHive/Class/Me/VC/NRSettingViewController.swift index f237045..cdfed8d 100644 --- a/ReaderHive/Class/Me/VC/NRSettingViewController.swift +++ b/ReaderHive/Class/Me/VC/NRSettingViewController.swift @@ -122,7 +122,7 @@ extension NRSettingViewController { ] } else { return [ - NRMeItem(type: .accountDeletion, title: "Account Deletion".localized), + NRMeItem(type: .accountDeletion, title: "reader_account_deletion".localized), // NRMeItem(type: .myUnlocks, title: "My Unlocks".localized), ] } diff --git a/ReaderHive/Class/MyList/VC/NRMyListNovelViewController.swift b/ReaderHive/Class/MyList/VC/NRMyListNovelViewController.swift index 9186522..42cdc9f 100644 --- a/ReaderHive/Class/MyList/VC/NRMyListNovelViewController.swift +++ b/ReaderHive/Class/MyList/VC/NRMyListNovelViewController.swift @@ -137,8 +137,9 @@ extension NRMyListNovelViewController: UICollectionViewDelegate, UICollectionVie cell.nr_isEditing = self.nr_isEditing cell.didClickDelete = { [weak self] cell in guard let self = self else { return } + guard let indexPath = collectionView.indexPath(for: cell) else { return } - let alert = NRAlert(title: "detail_collect_alert_title".localized, detail: "detail_collect_alert_text".localized, topIconImage: UIImage(named: "alert_top_icon_04"), highlightButtonText: "Confirm".localized) + let alert = NRAlert(title: "detail_collect_alert_title".localized, detail: "detail_collect_alert_text".localized, topIconImage: UIImage(named: "alert_top_icon_04"), highlightButtonText: "reader_confirm".localized) alert.show() alert.highlightHandle = { [weak self] in diff --git a/ReaderHive/Class/MyList/VC/NRMyListViewController.swift b/ReaderHive/Class/MyList/VC/NRMyListViewController.swift index 3f7c50c..565d838 100644 --- a/ReaderHive/Class/MyList/VC/NRMyListViewController.swift +++ b/ReaderHive/Class/MyList/VC/NRMyListViewController.swift @@ -25,7 +25,7 @@ class NRMyListViewController: NRViewController { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = .black - label.text = "My List".localized + label.text = "reader_my_list".localized return label }() diff --git a/ReaderHive/Class/Novel/M/NRReadChapterCatalogModel.swift b/ReaderHive/Class/Novel/M/NRReadChapterCatalogModel.swift index e6fe1f2..6037a94 100644 --- a/ReaderHive/Class/Novel/M/NRReadChapterCatalogModel.swift +++ b/ReaderHive/Class/Novel/M/NRReadChapterCatalogModel.swift @@ -33,9 +33,9 @@ class NRReadChapterCatalogModel: NSObject, SmartCodable { func parserEmpty() { let chapterModel = NRReadChapterModel() if self.is_lock == true { - chapterModel.parserEmpty("Chapter Locked".localized) + chapterModel.parserEmpty("reader_chapter_locked".localized) } else { - chapterModel.parserEmpty("Loading".localized) + chapterModel.parserEmpty("reader_status_load".localized) } self.chapterModel = chapterModel } diff --git a/ReaderHive/Class/Novel/V/NRDetailRechargeView.swift b/ReaderHive/Class/Novel/V/NRDetailRechargeView.swift index 0a0d1af..28c9e98 100644 --- a/ReaderHive/Class/Novel/V/NRDetailRechargeView.swift +++ b/ReaderHive/Class/Novel/V/NRDetailRechargeView.swift @@ -75,7 +75,7 @@ class NRDetailRechargeView: NRPanModalContentView { let label = UILabel() label.font = .font(ofSize: 12, weight: .regular) label.textColor = .black - label.text = "Balance".localized + ":" + label.text = "reader_balance".localized + ":" return label }() diff --git a/ReaderHive/Class/Novel/V/NRNovelDetailBottomView.swift b/ReaderHive/Class/Novel/V/NRNovelDetailBottomView.swift index 1092131..0f0f8fe 100644 --- a/ReaderHive/Class/Novel/V/NRNovelDetailBottomView.swift +++ b/ReaderHive/Class/Novel/V/NRNovelDetailBottomView.swift @@ -45,7 +45,7 @@ class NRNovelDetailBottomView: UIView { vc.novelId = id self.viewController?.navigationController?.pushViewController(vc, animated: true) })) - button.setTitle("Start Reading".localized, for: .normal) + button.setTitle("reader_book_startReading".localized, for: .normal) button.setTitleColor(.white, for: .normal) button.titleLabel?.font = .font(ofSize: 14, weight: .medium) return button @@ -57,7 +57,7 @@ class NRNovelDetailBottomView: UIView { configuration.contentInsets = .zero configuration.imagePadding = 4 configuration.imagePlacement = .top - configuration.attributedTitle = AttributedString("Collect".localized, attributes: AttributeContainer([ + configuration.attributedTitle = AttributedString("reader_book_collects".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 10, weight: .regular), .foregroundColor : UIColor.black ])) diff --git a/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView.swift b/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView.swift index b5781ba..becb638 100644 --- a/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView.swift +++ b/ReaderHive/Class/Novel/V/NRNovelDetailHeaderView.swift @@ -36,7 +36,7 @@ class NRNovelDetailHeaderView: UIView { desLabel.text = des - contentsTextLabel.text = "## Chapters".localizedReplace(text: "\(model?.episode_total ?? 0)") + contentsTextLabel.text = "\(model?.episode_total ?? 0) " + "reader_book_chapters".localized collectDataView.num = CGFloat(model?.collect_total ?? 0) heatsDataView.num = CGFloat(model?.heats ?? 0) @@ -75,7 +75,7 @@ class NRNovelDetailHeaderView: UIView { let view = DataView() view.num = 0 view.icon = UIImage(named: "collect_icon_02") - view.title = "Collects".localized + view.title = "reader_book_collects".localized return view }() @@ -83,7 +83,7 @@ class NRNovelDetailHeaderView: UIView { let view = DataView() view.num = 0 view.icon = UIImage(named: "hot_icon_04") - view.title = "Heats".localized + view.title = "reader_book_heats".localized return view }() @@ -91,7 +91,7 @@ class NRNovelDetailHeaderView: UIView { let view = DataView() view.num = 0 view.icon = UIImage(named: "word_icon_01") - view.title = "Words".localized + view.title = "reader_book_words".localized return view }() @@ -100,7 +100,7 @@ class NRNovelDetailHeaderView: UIView { view.num = 0 view.minimumFractionDigits = 1 view.icon = UIImage(named: "rate_icon_01") - view.title = "Rate".localized + view.title = "reader_book_rate".localized return view }() @@ -132,7 +132,7 @@ class NRNovelDetailHeaderView: UIView { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = .black - label.text = "Synopsis".localized + label.text = "reader_book_synopsis".localized return label }() @@ -173,7 +173,7 @@ class NRNovelDetailHeaderView: UIView { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = .black - label.text = "Contents" + label.text = "reader_book_contents".localized return label }() @@ -200,7 +200,7 @@ class NRNovelDetailHeaderView: UIView { button.configurationUpdateHandler = { [weak self] button in guard let self = self else { return } - button.configuration?.attributedTitle = AttributedString("Completed".localized, attributes: AttributeContainer([ + button.configuration?.attributedTitle = AttributedString("reader_book_completed".localized, attributes: AttributeContainer([ // button.configuration?.attributedTitle = AttributedString(self.model?.process ?? "", attributes: AttributeContainer([ .font : UIFont.font(ofSize: 12, weight: .regular), .foregroundColor : UIColor.black.withAlphaComponent(0.5) diff --git a/ReaderHive/Class/Novel/V/NRVipRetainAlert.swift b/ReaderHive/Class/Novel/V/NRVipRetainAlert.swift index 16d24c1..9403f25 100644 --- a/ReaderHive/Class/Novel/V/NRVipRetainAlert.swift +++ b/ReaderHive/Class/Novel/V/NRVipRetainAlert.swift @@ -43,7 +43,7 @@ class NRVipRetainAlert: NRBaseAlert { label.textColors = [UIColor.FFEECA.cgColor, UIColor.FECE_62.cgColor] label.textStartPoint = .init(x: 0, y: 0.5) label.textEndPoint = .init(x: 1, y: 0.5) - label.text = "retain_alert_text".localized + label.text = "vip_retain_alert_text".localized label.numberOfLines = 0 label.textAlignment = .center return label diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelCatalogCell.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelCatalogCell.swift index 936ecac..feb0165 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelCatalogCell.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelCatalogCell.swift @@ -12,7 +12,6 @@ class NRNovelCatalogCell: NRTableViewCell { var model: NRReadChapterCatalogModel? { didSet { -// titleLabel.text = "Chapter.##".localizedReplace(text: model?.episode ?? "") titleLabel.text = model?.name lockImageView.isHidden = !(model?.is_lock ?? false) diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReadBottomView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReadBottomView.swift index 4b9e044..dfa1c0e 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReadBottomView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReadBottomView.swift @@ -41,7 +41,7 @@ class NRNovelReadBottomView: UIView { }() lazy var nightButton: UIButton = { - let button = self.createButton(title: "Night".localized, nightTitle: "Default".localized, icon: UIImage(named: "night_icon_01"), nightIcon: UIImage(named: "night_icon_02")) + let button = self.createButton(title: "reader_night".localized, nightTitle: "reader_default".localized, icon: UIImage(named: "night_icon_01"), nightIcon: UIImage(named: "night_icon_02")) button.addAction(UIAction(handler: { [weak self] _ in guard let self = self else { return } let manager = NRNovelReadSetManager.manager @@ -52,7 +52,7 @@ class NRNovelReadBottomView: UIView { }() lazy var settingsButton: UIButton = { - let button = self.createButton(title: "Settings".localized, icon: UIImage(named: "settings_icon_01"), nightIcon: UIImage(named: "settings_icon_03")) + let button = self.createButton(title: "reader_settings".localized, icon: UIImage(named: "settings_icon_01"), nightIcon: UIImage(named: "settings_icon_03")) button.addAction(UIAction(handler: { [weak self] _ in guard let self = self else { return } self.viewModel?.showSettingView() @@ -74,7 +74,7 @@ class NRNovelReadBottomView: UIView { self.viewModel?.skipToPrevChapter() })) button.titleLabel?.font = .font(ofSize: 12, weight: .regular) - button.setTitle("Prev".localized, for: .normal) + button.setTitle("reader_prev".localized, for: .normal) button.setTitleColor(.black, for: .normal) button.setContentHuggingPriority(.required, for: .horizontal) button.setContentCompressionResistancePriority(.required, for: .horizontal) @@ -92,7 +92,7 @@ class NRNovelReadBottomView: UIView { } })) button.titleLabel?.font = .font(ofSize: 12, weight: .regular) - button.setTitle("Next".localized, for: .normal) + button.setTitle("reader_next".localized, for: .normal) button.setTitleColor(.black, for: .normal) button.setContentHuggingPriority(.required, for: .horizontal) button.setContentCompressionResistancePriority(.required, for: .horizontal) @@ -130,14 +130,14 @@ class NRNovelReadBottomView: UIView { if self.viewModel?.novelModel?.is_collect == true { button.configuration?.background.backgroundColor = .FFEFD_4 button.configuration?.image = UIImage(named: "done_icon_01") - button.configuration?.attributedTitle = AttributedString("In My List".localized, attributes: AttributeContainer([ + button.configuration?.attributedTitle = AttributedString("reader_bookshelf_tip".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 12, weight: .medium), .foregroundColor : UIColor.F_9710_D ])) } else { button.configuration?.background.backgroundColor = .F_9710_D button.configuration?.image = UIImage(named: "+_icon_01") - button.configuration?.attributedTitle = AttributedString("Add to My List".localized, attributes: AttributeContainer([ + button.configuration?.attributedTitle = AttributedString("reader_add_bookshelf".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 12, weight: .medium), .foregroundColor : UIColor.white ])) diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReadContentTopView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReadContentTopView.swift index 38c8d5e..001997e 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReadContentTopView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReadContentTopView.swift @@ -53,7 +53,7 @@ class NRNovelReadContentTopView: UIView { button.configuration?.image = UIImage(named: "arrow_left_icon_04") } -// let text = "Chapter.##".localizedReplace(text: self.catalogModel?.episode ?? "") + let text = self.catalogModel?.name ?? "" diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReadFinishHeaderView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReadFinishHeaderView.swift index b0b44bd..da2dede 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReadFinishHeaderView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReadFinishHeaderView.swift @@ -55,7 +55,7 @@ class NRNovelReadFinishHeaderView: UICollectionReusableView { label.textColors = [UIColor.F_3912_F.cgColor, UIColor.FF_4_A_4_A.cgColor, UIColor.FA_9_B_1_F.cgColor] label.textStartPoint = .init(x: 0, y: 0.5) label.textEndPoint = .init(x: 1, y: 0.5) - label.text = "read_finish_title".localized + label.text = "reader_book_finished".localized return label }() @@ -65,7 +65,7 @@ class NRNovelReadFinishHeaderView: UICollectionReusableView { label.textColor = .black.withAlphaComponent(0.5) label.textAlignment = .center label.numberOfLines = 0 - label.text = "read_finish_text".localized + label.text = "reader_book_finished_tips".localized return label }() diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReadGradeView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReadGradeView.swift index a7b53d1..d55b756 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReadGradeView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReadGradeView.swift @@ -94,7 +94,7 @@ class NRNovelReadGradeView: NRPanModalContentView { var configuration = UIButton.Configuration.plain() configuration.imagePadding = 8 configuration.image = UIImage(named: "done_icon_02") - configuration.attributedTitle = AttributedString("Rating Submitted!".localized, attributes: AttributeContainer([ + configuration.attributedTitle = AttributedString("reader_rating_submitted".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 12, weight: .medium), .foregroundColor : UIColor.black ])) diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReadSettingView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReadSettingView.swift index c82e461..d42423a 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReadSettingView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReadSettingView.swift @@ -24,13 +24,13 @@ class NRNovelReadSettingView: NRPanModalContentView { lazy var lineSpacingView: NRReadSettingSpacingView = { let view = NRReadSettingSpacingView(type: .line) - view.titleLabel.text = "Line Spacing".localized + view.titleLabel.text = "reader_line_spacing".localized return view }() lazy var paragraphSpacingView: NRReadSettingSpacingView = { let view = NRReadSettingSpacingView(type: .paragraph) - view.titleLabel.text = "Paragraph Spacing".localized + view.titleLabel.text = "reader_paragrapg".localized return view }() diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReadStarGradeView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReadStarGradeView.swift index 95d5920..eb2ab54 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReadStarGradeView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReadStarGradeView.swift @@ -20,12 +20,13 @@ class NRNovelReadStarGradeView: UIView { didSet { let self_rate = model?.self_rate ?? 0 if self_rate < 0 { - label.text = "Enjoying this book?".localized + label.text = "reader_enjoying_tip".localized gradeView.grade = 0 // gradeView.updateOnTouch = true // gradeView.fillMode = .full } else { - label.text = "My Rate:##".localizedReplace(text: NSNumber(value: self_rate).toString(maximumFractionDigits: 1, minimumFractionDigits: 1)) + + label.text = "reader_my_rate".localized + NSNumber(value: self_rate).toString(maximumFractionDigits: 1, minimumFractionDigits: 1) gradeView.grade = self_rate / 2 // gradeView.updateOnTouch = false // gradeView.fillMode = .precise @@ -54,7 +55,7 @@ class NRNovelReadStarGradeView: UIView { var configuration = UIButton.Configuration.plain() configuration.imagePadding = 8 configuration.image = UIImage(named: "done_icon_02") - configuration.attributedTitle = AttributedString("Rating Submitted!".localized, attributes: AttributeContainer([ + configuration.attributedTitle = AttributedString("reader_rating_submitted".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 12, weight: .medium), .foregroundColor : UIColor.black ])) diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReadTopView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReadTopView.swift index ecd1466..9bbbe86 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReadTopView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReadTopView.swift @@ -50,12 +50,11 @@ class NRNovelReadTopView: UIView { color = .white } - button.configuration?.attributedTitle = /*AttributedString("Chapter.##".localizedReplace(text: chapter), attributes:*/ - AttributedString(chapter, attributes: - AttributeContainer([ - .font : UIFont.font(ofSize: 12, weight: .regular), - .foregroundColor : color - ])) + button.configuration?.attributedTitle = AttributedString(chapter, attributes: + AttributeContainer([ + .font : UIFont.font(ofSize: 12, weight: .regular), + .foregroundColor : color + ])) button.configuration?.image = UIImage(named: "arrow_left_icon_03")?.withTintColor(color) } diff --git a/ReaderHive/Class/Novel/V/Reader/NRNovelReaderCatalogView.swift b/ReaderHive/Class/Novel/V/Reader/NRNovelReaderCatalogView.swift index a2d54e5..6e9e3ce 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRNovelReaderCatalogView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRNovelReaderCatalogView.swift @@ -17,7 +17,8 @@ class NRNovelReaderCatalogView: UIView { coverImageView.nr_setImage(novelModel?.image_url) nameLabel.text = novelModel?.name - totalChaptersLabel.text = "## Chapters".localizedReplace(text: "\(novelModel?.episode_total ?? 0)") + totalChaptersLabel.text = "\(novelModel?.episode_total ?? 0) " + "reader_book_chapters".localized + } } @@ -152,14 +153,14 @@ class NRNovelReaderCatalogView: UIView { private func updateProgress() { guard catalogDataArr.count > 0, self.currentCatalogModel != nil else { - self.redProgressLabel.text = "## read".localizedReplace(text: "0%") + self.redProgressLabel.text = "0% " + "reader_read".localized return } let currentIndex = getCurrentIndex() let progress = NSNumber(value: CGFloat(currentIndex + 1) / CGFloat(catalogDataArr.count) * 100).toString(maximumFractionDigits: 0) - self.redProgressLabel.text = "## read".localizedReplace(text: "\(progress)%") + self.redProgressLabel.text = "\(progress)% " + "reader_read".localized } diff --git a/ReaderHive/Class/Novel/V/Reader/NRReadSettingBrightnessView.swift b/ReaderHive/Class/Novel/V/Reader/NRReadSettingBrightnessView.swift index e63a27f..ff42cc5 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRReadSettingBrightnessView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRReadSettingBrightnessView.swift @@ -28,7 +28,7 @@ class NRReadSettingBrightnessView: NRNovelReadSettingItemView { override init(frame: CGRect) { super.init(frame: frame) - self.titleLabel.text = "Brightness".localized + self.titleLabel.text = "reader_brightness".localized let imageSize = progressView.thumbImage?.size ?? .zero contentView.addSubview(progressView) diff --git a/ReaderHive/Class/Novel/V/Reader/NRReadSettingFontView.swift b/ReaderHive/Class/Novel/V/Reader/NRReadSettingFontView.swift index 47c62b7..3a24fa3 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRReadSettingFontView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRReadSettingFontView.swift @@ -54,7 +54,7 @@ class NRReadSettingFontView: NRNovelReadSettingItemView { override init(frame: CGRect) { super.init(frame: frame) - self.titleLabel.text = "Font Size".localized + self.titleLabel.text = "reader_font_size".localized nr_setupUI() diff --git a/ReaderHive/Class/Novel/V/Reader/NRReadSettingThemeView.swift b/ReaderHive/Class/Novel/V/Reader/NRReadSettingThemeView.swift index 6891e12..0b6099c 100644 --- a/ReaderHive/Class/Novel/V/Reader/NRReadSettingThemeView.swift +++ b/ReaderHive/Class/Novel/V/Reader/NRReadSettingThemeView.swift @@ -24,7 +24,7 @@ class NRReadSettingThemeView: NRNovelReadSettingItemView { override init(frame: CGRect) { super.init(frame: frame) - self.titleLabel.text = "Theme".localized + self.titleLabel.text = "reader_theme".localized nr_setupUI() updateSelection() } diff --git a/ReaderHive/Class/Novel/VC/NRNovelDetailCatalogViewController.swift b/ReaderHive/Class/Novel/VC/NRNovelDetailCatalogViewController.swift index ab9da76..9b5294e 100644 --- a/ReaderHive/Class/Novel/VC/NRNovelDetailCatalogViewController.swift +++ b/ReaderHive/Class/Novel/VC/NRNovelDetailCatalogViewController.swift @@ -15,7 +15,7 @@ class NRNovelDetailCatalogViewController: NRViewController { coverImageView.nr_setImage(novelModel?.image_url) nameLabel.text = novelModel?.name - totalChaptersLabel.text = "## Chapters".localizedReplace(text: "\(novelModel?.episode_total ?? 0)") + totalChaptersLabel.text = "\(novelModel?.episode_total ?? 0) " + "reader_book_chapters".localized } } @@ -66,7 +66,7 @@ class NRNovelDetailCatalogViewController: NRViewController { override func viewDidLoad() { super.viewDidLoad() self.backgroundImageView.isHidden = true - self.title = "Catalog".localized + self.title = "reader_book_catalog".localized configNavigationBack("arrow_left_icon_05") nr_setupUI() diff --git a/ReaderHive/Class/Novel/VC/NRNovelDetailRecommandViewController.swift b/ReaderHive/Class/Novel/VC/NRNovelDetailRecommandViewController.swift index 6a77a03..6838d63 100644 --- a/ReaderHive/Class/Novel/VC/NRNovelDetailRecommandViewController.swift +++ b/ReaderHive/Class/Novel/VC/NRNovelDetailRecommandViewController.swift @@ -24,7 +24,7 @@ class NRNovelDetailRecommandViewController: NRViewController { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = .black - label.text = "More Like This".localized + label.text = "reader_book_more".localized return label }() diff --git a/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift b/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift index 4898b81..1bd8e83 100644 --- a/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift +++ b/ReaderHive/Class/Novel/VM/NRNovelReadViewModel.swift @@ -65,7 +65,7 @@ extension NRNovelReadViewModel { } await MainActor.run { - let alert = NRAlert(title: "alert_title_01".localized, detail: "alert_detail_01".localized, topIconImage: UIImage(named: "alert_top_icon_01"), highlightButtonText: "Yes, Recommend".localized) + let alert = NRAlert(title: "reader_recommend_book".localized, detail: "reader_recommend_book_tip".localized, topIconImage: UIImage(named: "alert_top_icon_01"), highlightButtonText: "reader_recommend_book_ok".localized) alert.closeHandle = { [weak self] in guard let self = self else { return } self._backReadPage() diff --git a/ReaderHive/Class/Store/M/NRPayDateModel.swift b/ReaderHive/Class/Store/M/NRPayDateModel.swift index 9c9dd32..374dfaa 100644 --- a/ReaderHive/Class/Store/M/NRPayDateModel.swift +++ b/ReaderHive/Class/Store/M/NRPayDateModel.swift @@ -126,16 +126,16 @@ class NRPayItem: NSObject, SmartCodable { func getVipTitle() -> String? { switch self.vip_type_key { case .week: - return "Weekly VIP".localized + return "pay_template_1018".localized case .month: - return "Monthly VIP".localized + return "month_vip".localized case .quarter: - return "Quarterly VIP".localized + return "three_months_vip".localized case .year: - return "Yearly VIP".localized + return "yearly_vip".localized default: return nil diff --git a/ReaderHive/Class/Store/V/NRCoinsPackBuyView.swift b/ReaderHive/Class/Store/V/NRCoinsPackBuyView.swift index fb71794..add70f1 100644 --- a/ReaderHive/Class/Store/V/NRCoinsPackBuyView.swift +++ b/ReaderHive/Class/Store/V/NRCoinsPackBuyView.swift @@ -19,7 +19,7 @@ class NRCoinsPackBuyView: UIView { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = ._714_A_1_B - label.text = "Weekly Refills".localized + label.text = "weekly_refill".localized return label }() diff --git a/ReaderHive/Class/Store/V/NRCoinsPackClaimCell.swift b/ReaderHive/Class/Store/V/NRCoinsPackClaimCell.swift index ae06041..b5ce8a3 100644 --- a/ReaderHive/Class/Store/V/NRCoinsPackClaimCell.swift +++ b/ReaderHive/Class/Store/V/NRCoinsPackClaimCell.swift @@ -25,7 +25,7 @@ class NRCoinsPackClaimCell: UICollectionViewCell { titleAtt.yy_color = ._714_A_1_B titleAtt.yy_font = .font(ofSize: 14, weight: .bold) - let day = "Day".localized + let day = "d".localized let dayAtt = NSMutableAttributedString(string: " (\(day) \(model?.day_text ?? ""))") dayAtt.yy_color = ._946_A_37 dayAtt.yy_font = .font(ofSize: 14, weight: .regular) @@ -65,7 +65,7 @@ class NRCoinsPackClaimCell: UICollectionViewCell { private lazy var coinsView1: CoinsView = { let view = CoinsView() - view.title = "Total Reward".localized + view.title = "reader_total_reward".localized return view }() @@ -107,7 +107,7 @@ class NRCoinsPackClaimCell: UICollectionViewCell { ])) - button.configuration?.attributedTitle = AttributedString("Claim".localized, attributes: AttributeContainer([ + button.configuration?.attributedTitle = AttributedString("reader_claim".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 14, weight: .bold), .foregroundColor : UIColor._714_A_1_B ])) @@ -118,7 +118,7 @@ class NRCoinsPackClaimCell: UICollectionViewCell { button.colors = [UIColor.E_0_E_0_E_0.cgColor, UIColor.E_0_E_0_E_0.cgColor] button.layer.borderColor = UIColor.clear.cgColor - button.configuration?.attributedTitle = AttributedString("Claimed".localized, attributes: AttributeContainer([ + button.configuration?.attributedTitle = AttributedString("reader_claimed".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 14, weight: .bold), .foregroundColor : UIColor.black.withAlphaComponent(0.25) ])) diff --git a/ReaderHive/Class/Store/V/NRCoinsPackClaimView.swift b/ReaderHive/Class/Store/V/NRCoinsPackClaimView.swift index e76e679..0b979ec 100644 --- a/ReaderHive/Class/Store/V/NRCoinsPackClaimView.swift +++ b/ReaderHive/Class/Store/V/NRCoinsPackClaimView.swift @@ -22,7 +22,7 @@ class NRCoinsPackClaimView: UIView { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = ._714_A_1_B - label.text = "Active Refills".localized + label.text = "reader_active_refills".localized return label }() diff --git a/ReaderHive/Class/Store/V/NRCoinsPackConfirmTitleView.swift b/ReaderHive/Class/Store/V/NRCoinsPackConfirmTitleView.swift index 485e60f..084f97b 100644 --- a/ReaderHive/Class/Store/V/NRCoinsPackConfirmTitleView.swift +++ b/ReaderHive/Class/Store/V/NRCoinsPackConfirmTitleView.swift @@ -12,10 +12,10 @@ class NRCoinsPackConfirmTitleView: NRCoinsPackConfirmItemView { override init(frame: CGRect) { super.init(frame: frame) - titleLabel.text = "Bonus You Get".localized + titleLabel.text = "reader_bonus_you_get".localized - let view1 = getItemView(image: UIImage(named: "gift_icon_02"), text: "Weekly Refill Package".localized) - let view2 = getItemView(image: UIImage(named: "calendar_icon_01"), text: "Daily Bonuses".localized) + let view1 = getItemView(image: UIImage(named: "gift_icon_02"), text: "reader_weekly_refill_package".localized) + let view2 = getItemView(image: UIImage(named: "calendar_icon_01"), text: "reader_dailu_bonuses".localized) addSubview(view1) addSubview(view2) diff --git a/ReaderHive/Class/Store/V/NRCoinsPackConfirmView.swift b/ReaderHive/Class/Store/V/NRCoinsPackConfirmView.swift index 93630a6..1c2a056 100644 --- a/ReaderHive/Class/Store/V/NRCoinsPackConfirmView.swift +++ b/ReaderHive/Class/Store/V/NRCoinsPackConfirmView.swift @@ -43,7 +43,7 @@ class NRCoinsPackConfirmView: NRPanModalContentView { let label = NRLabel() label.font = .font(ofSize: 24, weight: .bold) label.textColorImage = UIImage(named: "gradient_color_01") - label.text = "What You Get".localized + label.text = "reader_what_you_get".localized return label }() diff --git a/ReaderHive/Class/Store/V/NRCoinsPackHeaderView.swift b/ReaderHive/Class/Store/V/NRCoinsPackHeaderView.swift index 6e4990f..b0ab2db 100644 --- a/ReaderHive/Class/Store/V/NRCoinsPackHeaderView.swift +++ b/ReaderHive/Class/Store/V/NRCoinsPackHeaderView.swift @@ -34,20 +34,20 @@ class NRCoinsPackHeaderView: UIView { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = ._714_A_1_B - label.text = "Rewards Overview".localized + label.text = "reader_rewards_overview".localized return label }() private lazy var coinsView1: CoinsView = { let view = CoinsView() - view.title = "Weekly Total".localized + view.title = "reader_weekly_total".localized view.coins = 0 return view }() private lazy var coinsView2: CoinsView = { let view = CoinsView() - view.title = "Claimable Coins".localized + view.title = "reader_claimable_coins".localized view.coins = 0 return view }() @@ -56,7 +56,7 @@ class NRCoinsPackHeaderView: UIView { let label = UILabel() label.font = .font(ofSize: 12, weight: .regular) label.textColor = .black.withAlphaComponent(0.5) - label.text = "Active Refills".localized + ": " + label.text = "reader_active_refills".localized + ": " return label }() @@ -86,7 +86,7 @@ class NRCoinsPackHeaderView: UIView { coinText.bounds = .init(x: 0, y: -3, width: coinImage.size.width, height: coinImage.size.height) let coinAtt = AttributedString(NSAttributedString(attachment: coinText)) - let textAtt = AttributedString("Claim All".localized + " ", attributes: AttributeContainer([ + let textAtt = AttributedString("reader_claim_all".localized + " ", attributes: AttributeContainer([ .font : UIFont.font(ofSize: 14, weight: .semibold), .foregroundColor : UIColor.white ])) @@ -102,7 +102,7 @@ class NRCoinsPackHeaderView: UIView { } else { button.configuration?.background.image = UIImage(color: .E_0_E_0_E_0) - button.configuration?.attributedTitle = AttributedString("Claimed".localized, attributes: AttributeContainer([ + button.configuration?.attributedTitle = AttributedString("reader_claimed".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 14, weight: .semibold), .foregroundColor : UIColor.black.withAlphaComponent(0.25) ])) diff --git a/ReaderHive/Class/Store/V/NRConsumptionRecordsCell.swift b/ReaderHive/Class/Store/V/NRConsumptionRecordsCell.swift index e90648d..7d9f383 100644 --- a/ReaderHive/Class/Store/V/NRConsumptionRecordsCell.swift +++ b/ReaderHive/Class/Store/V/NRConsumptionRecordsCell.swift @@ -12,10 +12,10 @@ class NRConsumptionRecordsCell: NRTableViewCell { var model: NRBuyRecordsModel? { didSet { - titleLabel.text = "Purchase Single Episode".localized + titleLabel.text = "reader_single_episode".localized subtitleLabel.text = "Ch.##".localizedReplace(text: "\(model?.episode ?? "")") + " " + "\(model?.name ?? "")" timeLabel.text = model?.created_at - coinsLabel.text = "-\(model?.coins ?? 0)" + "Coins".localized + coinsLabel.text = "-\(model?.coins ?? 0)" + "reader_coins".localized } } diff --git a/ReaderHive/Class/Store/V/NRRewardCoinsCell.swift b/ReaderHive/Class/Store/V/NRRewardCoinsCell.swift index 1d3ec8c..a59113a 100644 --- a/ReaderHive/Class/Store/V/NRRewardCoinsCell.swift +++ b/ReaderHive/Class/Store/V/NRRewardCoinsCell.swift @@ -19,7 +19,8 @@ class NRRewardCoinsCell: NRTableViewCell { remainingLabel.text = model?.left_coins if model?.is_effective == 1 { - expiresLabel.text = "Expires in ## days".localizedReplace(text: model?.diff_datetime ?? "") +// expiresLabel.text = "Expires in ## days".localizedReplace(text: model?.diff_datetime ?? "") + expiresLabel.text = "reader_expires_in".localized + (model?.diff_datetime ?? "") } else { expiresLabel.text = "Expired".localized } diff --git a/ReaderHive/Class/Store/V/NRStoreCoinsBigCell.swift b/ReaderHive/Class/Store/V/NRStoreCoinsBigCell.swift index 322bd37..ae4ae12 100644 --- a/ReaderHive/Class/Store/V/NRStoreCoinsBigCell.swift +++ b/ReaderHive/Class/Store/V/NRStoreCoinsBigCell.swift @@ -22,7 +22,7 @@ class NRStoreCoinsBigCell: NRStoreCoinsCell { if sendCoins > 0 { sendCountLabel.isHidden = false ratioBgView.isHidden = false - sendCountLabel.text = "+ \(sendCoins) " + "Bonus".localized + sendCountLabel.text = "+ \(sendCoins) " + "reader_my_bonus".localized let ratio = String(format: "%.0f", CGFloat(sendCoins) / CGFloat(coins) * 100) ratioLabel.text = "+\(ratio)%" diff --git a/ReaderHive/Class/Store/V/NRStoreCoinsPackCell.swift b/ReaderHive/Class/Store/V/NRStoreCoinsPackCell.swift index a0b281f..3fc21e5 100644 --- a/ReaderHive/Class/Store/V/NRStoreCoinsPackCell.swift +++ b/ReaderHive/Class/Store/V/NRStoreCoinsPackCell.swift @@ -47,7 +47,7 @@ class NRStoreCoinsPackCell: NRStoreCoinsCell { label.textColors = [UIColor.BA_8_A_2_A.cgColor, UIColor._8_B_5801.cgColor] label.textStartPoint = .init(x: 0, y: 0.5) label.textEndPoint = .init(x: 1, y: 0.5) - label.text = "Weekly Refill".localized + label.text = "weekly_refill".localized return label }() diff --git a/ReaderHive/Class/Store/V/NRStoreCoinsSmallCell.swift b/ReaderHive/Class/Store/V/NRStoreCoinsSmallCell.swift index d170198..6a9f058 100644 --- a/ReaderHive/Class/Store/V/NRStoreCoinsSmallCell.swift +++ b/ReaderHive/Class/Store/V/NRStoreCoinsSmallCell.swift @@ -21,7 +21,7 @@ class NRStoreCoinsSmallCell: NRStoreCoinsCell { if sendCoins > 0 { sendCountLabel.isHidden = false ratioBgView.isHidden = false - sendCountLabel.text = "+ \(sendCoins) " + "Bonus".localized + sendCountLabel.text = "+ \(sendCoins) " + "reader_my_bonus".localized let ratio = String(format: "%.0f", CGFloat(sendCoins) / CGFloat(coins) * 100) ratioLabel.text = "+\(ratio)%" diff --git a/ReaderHive/Class/Store/V/NRStoreCoinsView.swift b/ReaderHive/Class/Store/V/NRStoreCoinsView.swift index 78d360e..85843a0 100644 --- a/ReaderHive/Class/Store/V/NRStoreCoinsView.swift +++ b/ReaderHive/Class/Store/V/NRStoreCoinsView.swift @@ -64,7 +64,7 @@ class NRStoreCoinsView: UIView { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = .black - label.text = "Coins Purchase".localized + label.text = "purchase_coins".localized return label }() diff --git a/ReaderHive/Class/Store/V/NRStoreVipCell.swift b/ReaderHive/Class/Store/V/NRStoreVipCell.swift index 0f70463..fb5c3d1 100644 --- a/ReaderHive/Class/Store/V/NRStoreVipCell.swift +++ b/ReaderHive/Class/Store/V/NRStoreVipCell.swift @@ -18,7 +18,7 @@ class NRStoreVipCell: UICollectionViewCell { desLabel.text = model?.nr_description if let coins = model?.send_coins, coins > 0 { - extraLabel.text = "+\(coins) \("Extra".localized)" + extraLabel.text = "+\(coins) \("reader_extra".localized)" extraBgView.isHidden = false } else { extraBgView.isHidden = true diff --git a/ReaderHive/Class/Store/V/NRStoreVipView.swift b/ReaderHive/Class/Store/V/NRStoreVipView.swift index f03fc45..a6a144f 100644 --- a/ReaderHive/Class/Store/V/NRStoreVipView.swift +++ b/ReaderHive/Class/Store/V/NRStoreVipView.swift @@ -60,7 +60,7 @@ class NRStoreVipView: UIView { let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = .black - label.text = "VIP Membership".localized + label.text = "reader_vip_Membership".localized return label }() @@ -68,7 +68,7 @@ class NRStoreVipView: UIView { let label = UILabel() label.font = .font(ofSize: 12, weight: .regular) label.textColor = .black.withAlphaComponent(0.25) - label.text = "Auto renew,cancel anytime".localized + label.text = "reade_store_vip_title".localized return label }() diff --git a/ReaderHive/Class/Store/V/NRWalletHeaderView.swift b/ReaderHive/Class/Store/V/NRWalletHeaderView.swift index a64a7f4..26dfce8 100644 --- a/ReaderHive/Class/Store/V/NRWalletHeaderView.swift +++ b/ReaderHive/Class/Store/V/NRWalletHeaderView.swift @@ -37,7 +37,7 @@ class NRWalletHeaderView: UITableViewHeaderFooterView { button.endPoint = .init(x: 1, y: 0.5) button.layer.cornerRadius = 24 button.layer.masksToBounds = true - button.setTitle("Store".localized, for: .normal) + button.setTitle("reader_store".localized, for: .normal) button.setTitleColor(.white, for: .normal) button.titleLabel?.font = .font(ofSize: 14, weight: .medium) return button @@ -45,13 +45,13 @@ class NRWalletHeaderView: UITableViewHeaderFooterView { private lazy var coinsView: CoinsView = { let view = CoinsView() - view.title = "Coins".localized + view.title = "reader_coins".localized return view }() private lazy var bonusCoinsView: CoinsView = { let view = CoinsView() - view.title = "Bonus".localized + view.title = "reader_my_bonus".localized return view }() diff --git a/ReaderHive/Class/Store/VC/NRCoinsPackViewController.swift b/ReaderHive/Class/Store/VC/NRCoinsPackViewController.swift index 98c58c3..7636c99 100644 --- a/ReaderHive/Class/Store/VC/NRCoinsPackViewController.swift +++ b/ReaderHive/Class/Store/VC/NRCoinsPackViewController.swift @@ -99,7 +99,7 @@ class NRCoinsPackViewController: NRViewController { let label = UILabel() label.font = .font(ofSize: 12, weight: .medium) label.textColor = .black.withAlphaComponent(0.25) - label.text = "coins_pack_tips_title".localized + label.text = "reader_subscription_rules".localized return label }() @@ -117,7 +117,7 @@ class NRCoinsPackViewController: NRViewController { override func viewDidLoad() { super.viewDidLoad() - self.title = "My Refills".localized + self.title = "reader_my_refills".localized configNavigationBack("arrow_left_icon_05") payDataModel = NRIapManager.manager.payDateModel diff --git a/ReaderHive/Class/Store/VC/NRConsumptionRecordsViewController.swift b/ReaderHive/Class/Store/VC/NRConsumptionRecordsViewController.swift index e6757c3..c44ca18 100644 --- a/ReaderHive/Class/Store/VC/NRConsumptionRecordsViewController.swift +++ b/ReaderHive/Class/Store/VC/NRConsumptionRecordsViewController.swift @@ -35,7 +35,7 @@ class NRConsumptionRecordsViewController: NRViewController { override func viewDidLoad() { super.viewDidLoad() - self.title = "Consumption Records".localized + self.title = "reader_wallet_tab1".localized self.backgroundImageView.isHidden = true configNavigationBack("arrow_left_icon_05") diff --git a/ReaderHive/Class/Store/VC/NROrderRecordsPageViewController.swift b/ReaderHive/Class/Store/VC/NROrderRecordsPageViewController.swift index c9fc84a..1000c4c 100644 --- a/ReaderHive/Class/Store/VC/NROrderRecordsPageViewController.swift +++ b/ReaderHive/Class/Store/VC/NROrderRecordsPageViewController.swift @@ -11,7 +11,7 @@ import SnapKit class NROrderRecordsPageViewController: NRViewController { - private lazy var titles = ["Coin Record".localized, "VIP Record".localized] + private lazy var titles = ["reader_coin_record".localized, "reader_vip_record".localized] private lazy var viewControllers: [NROrderRecordsViewController] = { let vc1 = NROrderRecordsViewController() vc1.type = .coins @@ -60,7 +60,7 @@ class NROrderRecordsPageViewController: NRViewController { override func viewDidLoad() { super.viewDidLoad() - self.title = "Order Records".localized + self.title = "reader_order_record".localized self.backgroundImageView.isHidden = true configNavigationBack("arrow_left_icon_05") diff --git a/ReaderHive/Class/Store/VC/NRRewardCoinsViewController.swift b/ReaderHive/Class/Store/VC/NRRewardCoinsViewController.swift index 2c8b1c2..149d7ad 100644 --- a/ReaderHive/Class/Store/VC/NRRewardCoinsViewController.swift +++ b/ReaderHive/Class/Store/VC/NRRewardCoinsViewController.swift @@ -35,7 +35,7 @@ class NRRewardCoinsViewController: NRViewController { override func viewDidLoad() { super.viewDidLoad() - self.title = "Reward Coins".localized + self.title = "reader_wallet_tab4".localized self.backgroundImageView.isHidden = true configNavigationBack("arrow_left_icon_05") diff --git a/ReaderHive/Class/Store/VC/NRStoreViewController.swift b/ReaderHive/Class/Store/VC/NRStoreViewController.swift index 9b93df6..d8d342c 100644 --- a/ReaderHive/Class/Store/VC/NRStoreViewController.swift +++ b/ReaderHive/Class/Store/VC/NRStoreViewController.swift @@ -64,17 +64,17 @@ class NRStoreViewController: NRViewController { let label = UILabel() label.font = .font(ofSize: 10, weight: .regular) label.textColor = .black.withAlphaComponent(0.5) - label.text = "store_tips".localized + label.text = "store_tips_ios".localized label.numberOfLines = 0 return label }() override func viewDidLoad() { super.viewDidLoad() - self.title = "Store".localized + self.title = "reader_store".localized configNavigationBack("arrow_left_icon_05") - let barButtonItem = UIBarButtonItem(title: "Restore".localized, style: .plain, target: self, action: #selector(handleRestore)) + let barButtonItem = UIBarButtonItem(title: "reader_restore".localized, style: .plain, target: self, action: #selector(handleRestore)) barButtonItem.tintColor = .black.withAlphaComponent(0.5) self.navigationItem.rightBarButtonItem = barButtonItem diff --git a/ReaderHive/Class/Store/VC/NRWalletViewController.swift b/ReaderHive/Class/Store/VC/NRWalletViewController.swift index a4b53c2..c9762b9 100644 --- a/ReaderHive/Class/Store/VC/NRWalletViewController.swift +++ b/ReaderHive/Class/Store/VC/NRWalletViewController.swift @@ -12,9 +12,9 @@ class NRWalletViewController: NRViewController { private lazy var dataArr: [NRMeItem] = { let arr = [ - NRMeItem(type: .consumptionRecords, title: "Consumption Records".localized), - NRMeItem(type: .purchaseRecords, title: "Purchase Records".localized), - NRMeItem(type: .rewardCoins, title: "Reward Coins".localized), + NRMeItem(type: .consumptionRecords, title: "reader_wallet_tab1".localized), + NRMeItem(type: .purchaseRecords, title: "reader_purchase_list".localized), + NRMeItem(type: .rewardCoins, title: "reader_wallet_tab4".localized), ] return arr }() @@ -38,7 +38,7 @@ class NRWalletViewController: NRViewController { override func viewDidLoad() { super.viewDidLoad() - self.title = "My Wallet".localized + self.title = "reader_wallet".localized self.backgroundImageView.isHidden = true configNavigationBack("arrow_left_icon_05") diff --git a/ReaderHive/Delegate/AppDelegate+APNS.swift b/ReaderHive/Delegate/AppDelegate+APNS.swift index adc9127..08aadaf 100644 --- a/ReaderHive/Delegate/AppDelegate+APNS.swift +++ b/ReaderHive/Delegate/AppDelegate+APNS.swift @@ -49,7 +49,7 @@ extension AppDelegate { #endif - let alert = NRAlert(title: "apns_alert_title".localized, detail: "apns_alert_text".localized, topIconImage: UIImage(named: "alert_top_icon_06"), highlightButtonText: "Open".localized, normalButtonText: "Later".localized) + let alert = NRAlert(title: "reader_open_notification".localized, detail: "reader_open_notification_info".localized, topIconImage: UIImage(named: "alert_top_icon_06"), highlightButtonText: "reader_open_notification_open".localized, normalButtonText: "reader_open_notification_later".localized) alert.highlightHandle = { NRTool.openApnsSetting() NROpenAppManager.manager.apnsAuthorizationFinish() diff --git a/ReaderHive/Delegate/SceneDelegate.swift b/ReaderHive/Delegate/SceneDelegate.swift index f64b4d9..98e7729 100644 --- a/ReaderHive/Delegate/SceneDelegate.swift +++ b/ReaderHive/Delegate/SceneDelegate.swift @@ -7,6 +7,7 @@ import UIKit import YYText +import MJRefresh class SceneDelegate: UIResponder, UIWindowSceneDelegate { @@ -18,6 +19,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return } NotificationCenter.default.addObserver(self, selector: #selector(networkStatusDidChangeNotification), name: NRNetworkReachableManager.networkStatusDidChangeNotification, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(localizedDidChangeNotification), name: NRLocalizedManager.localizedDidChangeNotification, object: nil) NRTool.sceneDelegate = self NRTool.windowScene = windowScene @@ -25,7 +27,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { window = UIWindow(windowScene: windowScene) window?.makeKeyAndVisible() - self.setRootVC() + self.startApp() onLineTimer = Timer.scheduledTimer(timeInterval: 60 * 10, target: YYTextWeakProxy(target: self), selector: #selector(handleOnLine), userInfo: nil, repeats: true) @@ -69,6 +71,26 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { extension SceneDelegate { + private func startApp() { + let localizedManager = NRLocalizedManager.shared + + if localizedManager.localizedDataLocalizedKey != localizedManager.currentLocalizedKey { + let vc = NRTool.lanuchViewController + window?.rootViewController = vc + + Task { + let _ = await localizedManager.updateLocalizedData() + self.setRootVC() + } + } else { + Task { + let _ = await localizedManager.updateLocalizedData() + } + setRootVC() + } + + } + private func setRootVC() { ///是否首次开启过 let hasOpenApp = UserDefaults.standard.object(forKey: kNRHasFirstOpenedAPPDefaultsKey) as? Bool @@ -81,7 +103,6 @@ extension SceneDelegate { self.setTabBarController() } window?.rootViewController = vc - window?.makeKeyAndVisible() } else { self.setTabBarController() } @@ -90,7 +111,6 @@ extension SceneDelegate { private func setTabBarController() { window?.rootViewController = NRTabBarController() - window?.makeKeyAndVisible() NROpenAppManager.manager.openAppFinish() } @@ -105,8 +125,17 @@ extension SceneDelegate { @objc private func networkStatusDidChangeNotification() { guard NRNetworkReachableManager.manager.isReachable == true else { return } - handleOnLine() + self.handleOnLine() self.retryHandleOpenAppMessage() + + if NRLocalizedManager.shared.localizedData == nil, !NROpenAppManager.manager.isOpenApp { + self.startApp() + } + } + + @objc private func localizedDidChangeNotification() { + MJRefreshConfig.default.languageCode = NRLocalizedManager.shared.mjLocalizedKey + self.setTabBarController() } } diff --git a/ReaderHive/Libs/Alert/NRCoinsPackAlert.swift b/ReaderHive/Libs/Alert/NRCoinsPackAlert.swift index db0a5fd..a8608d7 100644 --- a/ReaderHive/Libs/Alert/NRCoinsPackAlert.swift +++ b/ReaderHive/Libs/Alert/NRCoinsPackAlert.swift @@ -32,9 +32,9 @@ class NRCoinsPackAlert: NRAlert { coinsLabel.textColor = .F_9710_D coinsLabel.text = "+\(model.coins ?? 0)" - highlightButton.setTitle("Claim Now".localized, for: .normal) + highlightButton.setTitle("receive_now".localized, for: .normal) - normalButton.setTitle("Later".localized, for: .normal) + normalButton.setTitle("reader_open_notification_later".localized, for: .normal) bgView.addSubview(titleLabel) diff --git a/ReaderHive/Libs/Alert/NRUpdatesAlert.swift b/ReaderHive/Libs/Alert/NRUpdatesAlert.swift index d6b9822..98223e7 100644 --- a/ReaderHive/Libs/Alert/NRUpdatesAlert.swift +++ b/ReaderHive/Libs/Alert/NRUpdatesAlert.swift @@ -31,7 +31,7 @@ class NRUpdatesAlert: NRAlert { titleLabel.numberOfLines = 0 titleLabel.font = .font(ofSize: 20, weight: .medium) titleLabel.textColor = .F_9710_D - titleLabel.text = "New Version".localized + titleLabel.text = "reader_update_now".localized let versionView = UIView() versionView.backgroundColor = .F_9710_D @@ -83,7 +83,7 @@ class NRUpdatesAlert: NRAlert { - highlightButton.setTitle("Update Now".localized, for: .normal) + highlightButton.setTitle("reader_update_now_ok".localized, for: .normal) buttonStackView.addArrangedSubview(highlightButton) bgView.addSubview(stackView) diff --git a/ReaderHive/Libs/Empty/NREmpty.swift b/ReaderHive/Libs/Empty/NREmpty.swift index b8ad9dd..9dd46c2 100644 --- a/ReaderHive/Libs/Empty/NREmpty.swift +++ b/ReaderHive/Libs/Empty/NREmpty.swift @@ -11,7 +11,7 @@ import LYEmptyView struct NREmpty { static func nr_emptyView(image: UIImage? = UIImage(named: "empty_image_01"), - title: String? = "No data".localized, + title: String? = "reader_no_data".localized, btnTitleStr: String? = nil, contentViewOffset: CGFloat = -100, btnClickBlock: (() -> Void)? = nil) -> LYEmptyView { diff --git a/ReaderHive/Libs/IAP/NRIapManager.swift b/ReaderHive/Libs/IAP/NRIapManager.swift index c989946..9526bb9 100644 --- a/ReaderHive/Libs/IAP/NRIapManager.swift +++ b/ReaderHive/Libs/IAP/NRIapManager.swift @@ -153,7 +153,7 @@ class NRIapManager { } if isLoding { - NRToast.show(text: "Success".localized) + NRToast.show(text: "reader_success".localized) } completer?(true, buyType) if buyType == .subVip { @@ -224,7 +224,7 @@ extension NRIapManager: JXIAPManagerDelegate { NRLoginManager.manager.userInfo?.is_vip = true } - NRToast.show(text: "Success".localized) + NRToast.show(text: "reader_success".localized) self.completionHandler?(true) if buyType == .subVip { NotificationCenter.default.post(name: NRIapManager.buyVipFinishNotification, object: nil) diff --git a/ReaderHive/Libs/LocalizedManager/NRLocalizedManager.swift b/ReaderHive/Libs/LocalizedManager/NRLocalizedManager.swift index ff53914..1fa7465 100644 --- a/ReaderHive/Libs/LocalizedManager/NRLocalizedManager.swift +++ b/ReaderHive/Libs/LocalizedManager/NRLocalizedManager.swift @@ -8,11 +8,14 @@ import UIKit class NRLocalizedManager: NSObject { - static let shared = NRLocalizedManager() + static let localizedDidChangeNotification = Notification.Name(rawValue: "NRLocalizedManager.localizedDidChangeNotification") + private let LocalizedUserDefaultsKey = "NRLocalizedManager.LocalizedUserDefaultsKey" private let LocalizedDataUserDefaultsKey = "NRLocalizedManager.LocalizedDataUserDefaultsKey" private let LocalizedDataLocalizedKeyUserDefaultsKey = "NRLocalizedManager.LocalizedDataLocalizedKeyUserDefaultsKey" + static let shared = NRLocalizedManager() + ///多语言数据 private(set) lazy var localizedData: [String : String]? = UserDefaults.standard.object(forKey: LocalizedDataUserDefaultsKey) as? [String : String] @@ -34,18 +37,16 @@ class NRLocalizedManager: NSObject { // 获取当前语言代码(如果用户未手动设置,则返回系统语言) var currentLocalizedKey: String { get { -// var key = (UserDefaults.standard.string(forKey: LocalizedUserDefaultsKey) ?? Locale.preferredLanguages.first) ?? "en" -// if key.contains("zh-Hans") { -// key = "zh" -// } else if key.contains("zh-Hant") { -// key = "zh_hk" -// } else { -// let arr = key.components(separatedBy: "-") -// key = arr.first ?? "en" -// } -// return key - return "en" -// return "zh" + var key = (UserDefaults.standard.string(forKey: LocalizedUserDefaultsKey) ?? Locale.preferredLanguages.first) ?? "en" + if key.contains("zh-Hans") { + key = "zh" + } else if key.contains("zh-Hant") { + key = "zh_hk" + } else { + let arr = key.components(separatedBy: "-") + key = arr.first ?? "en" + } + return key } set { UserDefaults.standard.set(newValue, forKey: LocalizedUserDefaultsKey) @@ -74,6 +75,10 @@ class NRLocalizedManager: NSObject { UserDefaults.standard.synchronize() } + + + + // 获取本地化字符串 func localizedString(forKey key: String, tableName: String? = nil) -> String { if let localizedData = localizedData, @@ -92,8 +97,31 @@ class NRLocalizedManager: NSObject { } extension NRLocalizedManager { + //切换语言 + func switchLocalized(_ key: String) async -> Bool { + await MainActor.run { + NRHud.show() + } + + guard let model = await NRSettingAPI.requestLocalizedData(key: key) else { return false } + guard let localizedData = model.translates else { return false } + + self.currentLocalizedKey = key + self.localizedDataLocalizedKey = key + self.localizedData = localizedData + + await MainActor.run { + NRHud.dismiss() + NotificationCenter.default.post(name: NRLocalizedManager.localizedDidChangeNotification, object: nil) + } + + return true + } + ///获取本地化数据 - func updateLocalizedData(key: String = NRLocalizedManager.shared.currentLocalizedKey) async -> Bool { + func updateLocalizedData() async -> Bool { + let key = self.currentLocalizedKey + guard let model = await NRSettingAPI.requestLocalizedData(key: key) else { return false } @@ -107,14 +135,6 @@ extension NRLocalizedManager { } } - - -extension NRLocalizedManager { - - static let localizedDidChange = Notification.Name(rawValue: "SPLocalizedManager.localizedDidChange") - -} - extension String { var localized: String { diff --git a/ReaderHive/Libs/NovelTool/NRNovelReadSet.swift b/ReaderHive/Libs/NovelTool/NRNovelReadSet.swift index a9d6d93..57a134c 100644 --- a/ReaderHive/Libs/NovelTool/NRNovelReadSet.swift +++ b/ReaderHive/Libs/NovelTool/NRNovelReadSet.swift @@ -16,11 +16,11 @@ class NRNovelReadSet: NSObject, NSSecureCoding { var title: String { switch self { case .small: - return "Small".localized + return "reader_small".localized case .standard: - return "Standard".localized + return "reader_standard".localized case .large: - return "Large".localized + return "reader_large".localized } } } diff --git a/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/GHRecordParserView.swift b/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/GHRecordParserView.swift index fb48b2c..c7075d7 100644 --- a/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/GHRecordParserView.swift +++ b/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/GHRecordParserView.swift @@ -172,7 +172,7 @@ private var layoutGrid_str: String! let label = UILabel() label.font = .font(ofSize: 16, weight: .semibold) label.textColor = .black - label.text = "Contents" + label.text = "reader_book_contents" return label }() diff --git a/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/expire/FDAbleView.swift b/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/expire/FDAbleView.swift index 3b13243..29512bb 100644 --- a/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/expire/FDAbleView.swift +++ b/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/expire/FDAbleView.swift @@ -23,7 +23,7 @@ var chaptersIdx: Int? = 0 didSet { let self_rate = model?.self_rate ?? 0 if self_rate < 0 { - label.text = "Enjoying this book?".localized + label.text = "reader_enjoying_tip".localized gradeView.grade = 0 gradeView.updateOnTouch = true gradeView.fillMode = .full @@ -57,7 +57,7 @@ var chaptersIdx: Int? = 0 var configuration = UIButton.Configuration.plain() configuration.imagePadding = 8 configuration.image = UIImage(named: "ategoryCryptorOgin") - configuration.attributedTitle = AttributedString("Rating Submitted!".localized, attributes: AttributeContainer([ + configuration.attributedTitle = AttributedString("reader_rating_submitted".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 12, weight: .medium), .foregroundColor : UIColor.black ])) diff --git a/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/expire/YOnsumptionView.swift b/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/expire/YOnsumptionView.swift index e0819d6..8341fa3 100644 --- a/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/expire/YOnsumptionView.swift +++ b/ReaderHive/Other/funcs/containableMuted/polykeyPrintval/expire/YOnsumptionView.swift @@ -81,7 +81,7 @@ private var ranges_mark: Int? = 0 var configuration = UIButton.Configuration.plain() configuration.imagePadding = 8 configuration.image = UIImage(named: "ategoryCryptorOgin") - configuration.attributedTitle = AttributedString("Rating Submitted!".localized, attributes: AttributeContainer([ + configuration.attributedTitle = AttributedString("reader_rating_submitted".localized, attributes: AttributeContainer([ .font : UIFont.font(ofSize: 12, weight: .medium), .foregroundColor : UIColor.black ])) diff --git a/ReaderHive/Other/funcs/containableMuted/textfile/CGCoins.swift b/ReaderHive/Other/funcs/containableMuted/textfile/CGCoins.swift index 22f921d..84a5ee9 100644 --- a/ReaderHive/Other/funcs/containableMuted/textfile/CGCoins.swift +++ b/ReaderHive/Other/funcs/containableMuted/textfile/CGCoins.swift @@ -512,7 +512,7 @@ _ = nationalityTelegraph } await MainActor.run { - let alert = IJRecordsWindow(title: "alert_title_01".localized, detail: "alert_detail_01".localized, topIconImage: UIImage(named: "vibeoEtting"), highlightButtonText: "Yes, Recommend".localized) + let alert = IJRecordsWindow(title: "reader_recommend_book".localized, detail: "reader_recommend_book_tip".localized, topIconImage: UIImage(named: "vibeoEtting"), highlightButtonText: "reader_recommend_book_ok".localized) alert.closeHandle = { [weak self] in guard let self = self else { return } self._absoluteMagnitudeBatteryKeyboardNickFormat() diff --git a/ReaderHive/Other/funcs/dxgiCommon/polykeyPrintval/ECVEtworkMageView.swift b/ReaderHive/Other/funcs/dxgiCommon/polykeyPrintval/ECVEtworkMageView.swift index de4d10c..3c9ea4e 100644 --- a/ReaderHive/Other/funcs/dxgiCommon/polykeyPrintval/ECVEtworkMageView.swift +++ b/ReaderHive/Other/funcs/dxgiCommon/polykeyPrintval/ECVEtworkMageView.swift @@ -69,7 +69,7 @@ var minish_margin: Double? = 0.0 let label = UILabel() label.font = .font(ofSize: 12, weight: .regular) label.textColor = .black.withAlphaComponent(0.25) - label.text = "Auto renew,cancel anytime".localized + label.text = "reade_store_vip_title".localized return label }() diff --git a/ReaderHive/Other/integrity/magyDither/JPScreen.swift b/ReaderHive/Other/integrity/magyDither/JPScreen.swift index 94a0279..da71ad8 100644 --- a/ReaderHive/Other/integrity/magyDither/JPScreen.swift +++ b/ReaderHive/Other/integrity/magyDither/JPScreen.swift @@ -70,7 +70,7 @@ withUnsafeMutablePointer(to: &ameraPaths) { pointer in } else { if code == 402, parameters.isToast { DispatchQueue.main.async { - RKDrama.show(text: "network_error_1".localized) + RKDrama.show(text: "reader_kick_out_login".localized) } } @@ -135,7 +135,7 @@ withUnsafeMutablePointer(to: &ameraPaths) { pointer in res.code = -1 if parameters.isToast { DispatchQueue.main.async { - RKDrama.show(text: "network_error_2".localized) + RKDrama.show(text: "reader_network_error".localized) } } completion?(res) diff --git a/ReaderHive/Other/integrity/magyDither/cmoveTokens/FEedback.swift b/ReaderHive/Other/integrity/magyDither/cmoveTokens/FEedback.swift index 99d3d37..b79007b 100644 --- a/ReaderHive/Other/integrity/magyDither/cmoveTokens/FEedback.swift +++ b/ReaderHive/Other/integrity/magyDither/cmoveTokens/FEedback.swift @@ -57,7 +57,7 @@ var nickLocalizableFillStr: String? JPScreen.request(parameters: param) { (response: JPScreen.Response) in guard let data = response.data else { - RKDrama.show(text: "network_error_2".localized) + RKDrama.show(text: "reader_network_error".localized) completer?(nil) return } diff --git a/ReaderHive/Source/en.lproj/Localizable.strings b/ReaderHive/Source/en.lproj/Localizable.strings index b258e95..694d056 100644 --- a/ReaderHive/Source/en.lproj/Localizable.strings +++ b/ReaderHive/Source/en.lproj/Localizable.strings @@ -8,169 +8,165 @@ "Error" = "Error"; -"My List" = "My List"; -"Home" = "Home"; -"Explore" = "Explore"; -"Me" = "Me"; -"Must-Read Today" = "Must-Read Today"; -"New Arrivals" = "New Arrivals"; -"read_what_title" = "Not Sure what to read?"; -"read_what_subtitle" = "Our Editors have some suggests."; -"Read Now" = "Read Now"; -"Hot On The Grid" = "Hot On The Grid"; -"Next In View" = "Next In View"; -"Hot Tags" = "Hot Tags"; -"Featured" = "Featured"; -"More Stories" = "More Stories"; -"search_placeholder" = "What are you looking for?"; -"Recent Searches" = "Recent Searches"; -"Genres" = "Genres"; -"Trending" = "Trending"; -"Top Rated" = "Top Rated"; -"Most Collected" = "Most Collected"; -"Best Sellers" = "Best Sellers"; -"Today" = "Today"; -"This Week" = "This Week"; -"This Month" = "This Month"; -"Start Reading" = "Start Reading"; -"Collect" = "Collect"; -"Collects" = "Collects"; -"Heats" = "Heats"; -"Words" = "Words"; -"Rate" = "Rate"; -"Synopsis" = "Synopsis"; -"Completed" = "Completed"; -"More Like This" = "More Like This"; -"## Chapters" = "## Chapters"; -"Catalog" = "Catalog"; -"Night" = "Night"; -"Settings" = "Settings"; -"Prev" = "Prev"; -"Next" = "Next"; -"Brightness" = "Brightness"; -"Theme" = "Theme"; -"Line Spacing" = "Line Spacing"; -"Paragraph Spacing" = "Paragraph Spacing"; -"Small" = "Small"; -"Standard" = "Standard"; -"Large" = "Large"; -"Chapter.##" = "Chapter.##"; -"## read" = "## read"; -"Font Size" = "Font Size"; -"Add to My List" = "Add to My List"; -"In My List" = "In My List"; -"Enjoying this book?" = "Enjoying this book?"; -"My Rate:##" = "My Rate:##"; -"Rating Submitted!" = "Rating Submitted!"; -"read_finish_title" = "You Finished!"; -"read_finish_text" = "Congratulations On Completing This Epic Story!"; -"read_finish_list_title" = "You May Also Like"; -"Success" = "Success"; -"History" = "History"; -"About" = "About"; -"Privacy Policy" = "Privacy Policy"; -"User Agreement" = "User Agreement"; -"Visit Website" = "Visit Website"; +"reader_my_list" = "My List"; +"reader_home" = "Home"; +"home_explore" = "Explore"; +"reader_me" = "Me"; +"reader_banner_title" = "Must-Read Today"; +"reader_new_arrivals" = "New Arrivals"; +"reader_home_title" = "Not Sure what to read?"; +"reader_home_title1" = "Our Editors have some suggests."; +"reader_read_now" = "Read Now"; +"reader_home_title2" = "Hot On The Grid"; +"reader_home_title3" = "Next In View"; +"reader_home_title4" = "Hot Tags"; +"reader_home_title5" = "Featured"; +"reader_home_title6" = "More Stories"; +"reader_enter_keywords_search" = "What are you looking for?"; +"reader_searches" = "Recent Searches"; +"reader_home_genres" = "Genres"; +"home_trending" = "Trending"; +"home_topRated" = "Top Rated"; +"home_mostCollected" = "Most Collected"; +"home_bestSellers" = "Best Sellers"; +"home_today" = "Today"; +"home_week" = "This Week"; +"home_month" = "This Month"; +"reader_book_startReading" = "Start Reading"; +"reader_book_collects" = "Collect"; +"reader_book_heats" = "Heats"; +"reader_book_words" = "Words"; +"reader_book_rate" = "Rate"; +"reader_book_synopsis" = "Synopsis"; +"reader_book_completed" = "Completed"; +"reader_book_more" = "More Like This"; +"reader_book_chapters" = "Chapters"; +"reader_book_catalog" = "Catalog"; +"reader_book_contents" = "Contents"; +"reader_night" = "Night"; +"reader_settings" = "Settings"; +"reader_prev" = "Prev"; +"reader_next" = "Next"; +"reader_brightness" = "Brightness"; +"reader_theme" = "Theme"; +"reader_line_spacing" = "Line Spacing"; +"reader_paragrapg" = "Paragraph Spacing"; +"reader_small" = "Small"; +"reader_standard" = "Standard"; +"reader_large" = "Large"; +"reader_read" = "read"; +"reader_font_size" = "Font Size"; +"reader_add_bookshelf" = "Add to My List"; +"reader_bookshelf_tip" = "In My List"; +"reader_enjoying_tip" = "Enjoying this book?"; +"reader_my_rate" = "My Rate:"; +"reader_rating_submitted" = "Rating Submitted!"; +"reader_book_finished" = "You Finished!"; +"reader_book_finished_tips" = "Congratulations On Completing This Epic Story!"; +"reader_book_finished_list_title" = "You May Also Like"; +"reader_success" = "Success"; +"reader_delete_title_3" = "History"; +"reader_about_us" = "About"; +"reader_privacy_policy" = "Privacy Policy"; +"reader_user_agreement" = "User Agreement"; +"reader_website" = "Visit Website"; "Ch.##" = "Ch.##"; -"New" = "New"; -"alert_title_01" = "Recommend this book?"; -"alert_detail_01" = "Help us share this story with others."; -"Yes, Recommend" = "Yes, Recommend"; -"Chapter Locked" = "Chapter Locked"; -"No data" = "No data"; -"Coins" = "Coins"; -"Bonus" = "Bonus"; -"Top Up" = "Top Up"; -"Language" = "Language"; -"Loading" = "Loading"; -"Store" = "Store"; -"Coins Purchase" = "Coins Purchase"; -"VIP Membership" = "VIP Membership"; -"Auto renew,cancel anytime" = "Auto renew,cancel anytime"; -"Feedback" = "Feedback"; -"Feedback History" = "Feedback History"; -"Feedback Details" = "Feedback Details"; -"Account Deletion" = "Account Deletion"; -"me_coins_pack_title" = "Daily reward ready!"; -"me_coins_pack_subtitle" = "Claim your rewards now."; -"Weekly VIP" = "Weekly VIP"; -"Monthly VIP" = "Monthly VIP"; -"Quarterly VIP" = "Quarterly VIP"; -"Yearly VIP" = "Yearly VIP"; +"reader_new" = "New"; +"reader_recommend_book" = "Recommend this book?"; +"reader_recommend_book_tip" = "Help us share this story with others."; +"reader_recommend_book_ok" = "Yes, Recommend"; +"reader_chapter_locked" = "Chapter Locked"; +"reader_no_data" = "No data"; +"reader_coins" = "Coins"; +"reader_my_bonus" = "Bonus"; +"reader_top_up" = "Top Up"; +"reader_choose_language" = "Language"; +"reader_status_load" = "Loading"; +"reader_store" = "Store"; +"purchase_coins" = "Coins Purchase"; +"reader_vip_Membership" = "VIP Membership"; +"reade_store_vip_title" = "Auto renew,cancel anytime"; +"reader_feedback" = "Feedback"; +"reader_feedback_history" = "Feedback History"; +"reader_feedback_detail" = "Feedback Details"; +"reader_account_deletion" = "Account Deletion"; +"reader_my_daily" = "Daily reward ready!"; +"reader_my_daily_tips" = "Claim your rewards now."; +"pay_template_1018" = "Weekly VIP"; +"month_vip" = "Monthly VIP"; +"three_months_vip" = "Quarterly VIP"; +"yearly_vip" = "Yearly VIP"; "week" = "week"; "month" = "month"; "quarter" = "quarter"; "year" = "year"; -"My Wallet" = "My Wallet"; -"Consumption Records" = "Consumption Records"; -"Purchase Records" = "Purchase Records"; -"Reward Coins" = "Reward Coins"; -"Purchase Single Episode" = "Purchase Single Episode"; +"reader_wallet" = "My Wallet"; +"reader_wallet_tab1" = "Consumption Records"; +"reader_purchase_list" = "Purchase Records"; +"reader_wallet_tab4" = "Reward Coins"; +"reader_single_episode" = "Purchase Single Episode"; "Expired" = "Expired"; -"Expires in ## days" = "Expires in ## days"; -"Order Records" = "Order Records"; -"Coin Record" = "Coin Record"; -"VIP Record" = "VIP Record"; -"Weekly Refill" = "Weekly Refill"; -"Extra" = "Extra"; -"Bonus You Get" = "Bonus You Get"; -"Weekly Refill Package" = "Weekly Refill Package"; -"Daily Bonuses" = "Daily Bonuses"; -"What You Get" = "What You Get"; +"reader_expires_in" = "Expires in:"; +"reader_order_record" = "Order Records"; +"reader_coin_record" = "Coin Record"; +"reader_vip_record" = "VIP Record"; +"weekly_refill" = "Weekly Refill"; +"reader_extra" = "Extra"; +"reader_bonus_you_get" = "Bonus You Get"; +"reader_weekly_refill_package" = "Weekly Refill Package"; +"reader_dailu_bonuses" = "Daily Bonuses"; +"reader_what_you_get" = "What You Get"; "coins_pack_confirm_tip_title" = "How Do I Receive Coins?"; -"Continue" = "Continue"; -"Expiration Time" = "Expiration Time"; -"My Refills" = "My Refills"; -"Rewards Overview" = "Rewards Overview"; -"Weekly Total" = "Weekly Total"; -"Claimable Coins" = "Claimable Coins"; -"Active Refills" = "Active Refills"; -"Claim All" = "Claim All"; -"Claimed" = "Claimed"; -"Weekly Refills" = "Weekly Refills"; -"Total Reward" = "Total Reward"; +"reader_continue" = "Continue"; +"reader_expiration_Time" = "Expiration Time"; +"reader_my_refills" = "My Refills"; +"reader_rewards_overview" = "Rewards Overview"; +"reader_weekly_total" = "Weekly Total"; +"reader_claimable_coins" = "Claimable Coins"; +"reader_active_refills" = "Active Refills"; +"reader_claim_all" = "Claim All"; +"reader_claimed" = "Claimed"; +"reader_total_reward" = "Total Reward"; "Remaining" = "Remaining"; -"Claim" = "Claim"; -"Day" = "Day"; -"Restore" = "Restore"; -"Balance" = "Balance"; -"Daily Coins" = "Daily Coins"; -"Buy Now" = "Buy Now"; -"Login with Apple" = "Login with Apple"; -"Login with Facebook" = "Login with Facebook"; -"My Wallet" = "My Wallet"; -"Account Deletion" = "Account Deletion"; +"reader_claim" = "Claim"; +"d" = "Day"; +"reader_restore" = "Restore"; +"reader_balance" = "Balance"; +"reader_daily_coins" = "Daily Coins"; +"reader_buy_now" = "Buy Now"; +"reader_login_title_apple" = "Login with Apple"; +"reader_login_title_facebook" = "Login with Facebook"; "My Unlocks" = "My Unlocks"; -"Login" = "Login"; -"Log Out" = "Log Out"; -"Confirm" = "Confirm"; +"reader_log_out" = "Log Out"; +"reader_confirm" = "Confirm"; "Unlocked Chapters" = "Unlocked Chapters"; -"Update Now" = "Update Now"; -"New Version" = "New Version"; -"Try again" = "Try again"; -"Open" = "Open"; -"Claim Now" = "Claim Now"; -"Later" = "Later"; -"Default" = "Default"; -"Log in" = "Log in"; +"reader_update_now_ok" = "Update Now"; +"reader_update_now" = "New Version"; +"app_try_again" = "Try again"; +"reader_open_app" = "Open"; +"reader_open_notification_open" = "Open"; +"receive_now" = "Claim Now"; +"reader_open_notification_later" = "Later"; +"reader_default" = "Default"; +"reader_login" = "Log in"; "Chapter Price" = "Chapter Price"; -"retain_alert_text" = "Unlock every show you love!"; -"logout_alert_text" = "Are you sure you want to log out?"; +"vip_retain_alert_text" = "Unlock every show you love!"; +"reader_log_out_content" = "Are you sure you want to log out?"; "detail_collect_alert_title" = "Delete This Book?"; "detail_collect_alert_text" = "Confirm to delete this book from the list"; "coins_pack_alert_title" = "Daily Reward is waiting!"; -"apns_alert_title" = "Enable Notifications"; -"apns_alert_text" = "Stay informed with popular recommendations and latest updates!"; +"reader_open_notification" = "Enable Notifications"; +"reader_open_notification_info" = "Stay informed with popular recommendations and latest updates!"; "not_networking_empty_text" = "Check the network and try again~"; "vip_tip_01" = "Unlimited access to all series"; -"coins_pack_tips_title" = "Subscription Rules"; +"reader_subscription_rules" = "Subscription Rules"; "coins_pack_tips" = "1.Coins are delivered instantly upon purchase.
2.Daily bonus coins available from the next day.
3.All coins will be revoked when the subscription expires, including both initial and daily coins."; -"store_tips" = "1. Coins are virtual items and cannot be refunded. Use it for this product.
2. Both the coins and the reward coins will never expire.
3. Coins will be used first when unlocking episodes. If the amount is insufficient, reward coins will automatically be used.
4. The purchase has not been credited, click torefresh.
5. For other questions, contact us via Profile > Feedback."; +"store_tips_ios" = "1. Coins are virtual items and cannot be refunded. Use it for this product.
2. Both the coins and the reward coins will never expire.
3. Coins will be used first when unlocking episodes. If the amount is insufficient, reward coins will automatically be used.
4. The purchase has not been credited, click torefresh.
5. For other questions, contact us via Profile > Feedback."; "pay_error_1" = "You are already a member!"; "pay_error_2" = "You have unfinished in-app purchases, please restore them first."; @@ -179,6 +175,6 @@ "pay_error_5" = "Invalid in-app purchase"; "pay_error_6" = "Payment has been cancelled"; -"network_error_1" = "Your account is already logged in on another device~"; -"network_error_2" = "The service is abnormal. Check the network."; +"reader_kick_out_login" = "Your account is already logged in on another device~"; +"reader_network_error" = "The service is abnormal. Check the network.";