Parcourir la source

feat:增加日,韩,繁体语言

100Years il y a 2 mois
Parent
commit
9213acb259

+ 21 - 0
TSLiveWallpaper.xcodeproj/project.pbxproj

@@ -322,6 +322,15 @@
 		A8F8BCE52E04F62200EF4AA6 /* TSAIListPhotoGeneratorModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIListPhotoGeneratorModel.swift; sourceTree = "<group>"; };
 		A8F8BCEA2E0501DB00EF4AA6 /* TSAppUpdateAlertVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAppUpdateAlertVC.swift; sourceTree = "<group>"; };
 		A8F8BCEC2E0513D000EF4AA6 /* animated_photos.webp */ = {isa = PBXFileReference; lastKnownFileType = file; path = animated_photos.webp; sourceTree = "<group>"; };
+		A8F8BCEF2E0535C200EF4AA6 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/LaunchScreen.strings; sourceTree = "<group>"; };
+		A8F8BCF02E0535C200EF4AA6 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		A8F8BCF12E0535C200EF4AA6 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
+		A8F8BCF22E0535C800EF4AA6 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/LaunchScreen.strings; sourceTree = "<group>"; };
+		A8F8BCF32E0535C800EF4AA6 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		A8F8BCF42E0535C900EF4AA6 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
+		A8F8BCF52E0535E200EF4AA6 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/LaunchScreen.strings"; sourceTree = "<group>"; };
+		A8F8BCF62E0535E200EF4AA6 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
+		A8F8BCF72E0535E200EF4AA6 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = "<group>"; };
 		A8FD8F302DFBCB85008CAACF /* ZillaSlab-BoldItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ZillaSlab-BoldItalic.ttf"; sourceTree = "<group>"; };
 		A8FD8F312DFBCB85008CAACF /* ZillaSlab-Medium.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ZillaSlab-Medium.ttf"; sourceTree = "<group>"; };
 		A8FD8F322DFBCB85008CAACF /* ZillaSlab-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ZillaSlab-Regular.ttf"; sourceTree = "<group>"; };
@@ -1138,6 +1147,9 @@
 				Base,
 				es,
 				ar,
+				ja,
+				ko,
+				"zh-Hant",
 			);
 			mainGroup = A8E56BCB2D1520DD003C54AF;
 			minimizedProjectReferenceProxies = 1;
@@ -1374,6 +1386,9 @@
 				609B6EA42D6F1221007942D4 /* en */,
 				609B6EA92D6F1231007942D4 /* es */,
 				A895B5022E025020004F9B85 /* ar */,
+				A8F8BCF12E0535C200EF4AA6 /* ja */,
+				A8F8BCF42E0535C900EF4AA6 /* ko */,
+				A8F8BCF72E0535E200EF4AA6 /* zh-Hant */,
 			);
 			name = Localizable.strings;
 			sourceTree = "<group>";
@@ -1384,6 +1399,9 @@
 				A87CF8592E02AF070063CB7E /* en */,
 				A87CF85C2E02AF150063CB7E /* es */,
 				A87CF85D2E02AF410063CB7E /* ar */,
+				A8F8BCF02E0535C200EF4AA6 /* ja */,
+				A8F8BCF32E0535C800EF4AA6 /* ko */,
+				A8F8BCF62E0535E200EF4AA6 /* zh-Hant */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";
@@ -1394,6 +1412,9 @@
 				A8E56BEF2D1520EC003C54AF /* Base */,
 				609B6EA12D6F11E0007942D4 /* es */,
 				A895B5012E025020004F9B85 /* ar */,
+				A8F8BCEF2E0535C200EF4AA6 /* ja */,
+				A8F8BCF22E0535C800EF4AA6 /* ko */,
+				A8F8BCF52E0535E200EF4AA6 /* zh-Hant */,
 			);
 			name = LaunchScreen.storyboard;
 			sourceTree = "<group>";

BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Animated.imageset/aiList_Animated@2x.png


BIN
TSLiveWallpaper/Assets.xcassets/AIList/aiList_Animated.imageset/aiList_Animated@3x.png


+ 2 - 2
TSLiveWallpaper/Business/TSAIListVC/TSAIList+Enmu.swift

@@ -74,8 +74,8 @@ enum TSGeneratorImageStyle:String {
             return "Enlighten Photo".localized
         case .recreate:
             return "Recreate Photo".localized
-        default:
-            return "Generate".localized
+        case .creatVideo:
+            return "Animate Photo".localized
         }
     }
 }

+ 1 - 1
TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/TSAIListVM.swift

@@ -59,7 +59,7 @@ class TSAIListVM {
         let animatedItemModel = createItemModel(
             leftImageName:"aiList_Animated",
             leftTitle: "Animated Photos".localized,
-            leftSubTitle: "Turn photos into live moments ".localized,
+            leftSubTitle: "Turn photos into live moments".localized,
             rightViewStyle: 0,
             tapBlock: { [weak self] model, _, _ in
                guard let self = self else { return }

+ 18 - 5
TSLiveWallpaper/Business/TSAIListVC/TSAIListVC/View/TSAILIstCell.swift

@@ -99,13 +99,26 @@ class TSAILIstCell: TSBaseCollectionCell {
             make.leading.equalTo(leading)
             make.height.equalTo(26)
         }
-        
+    
+        addAnimatedImageView()
+    }
+    
+    
+    
+    func addAnimatedImageView(){
         bgContentView.addSubview(animatedImageView)
         animatedImageView.snp.makeConstraints { make in
-            make.trailing.equalTo(-24*kDesignScale)
-            make.centerY.equalToSuperview().offset(-5*kDesignScale)
-            make.width.equalTo(152*kDesignScale)
-            make.height.equalTo(205*kDesignScale)
+            make.trailing.equalTo(-22.5*kDesignScale)
+            make.centerY.equalToSuperview().offset(-4.5*kDesignScale)
+            make.width.equalTo(155*kDesignScale)
+            make.height.equalTo(207*kDesignScale)
+        }
+        let boradView = UIView()
+        boradView.layer.borderWidth = 3
+        boradView.layer.borderColor = "#DFD7C0".uiCGColor
+        animatedImageView.addSubview(boradView)
+        boradView.snp.makeConstraints { make in
+            make.edges.equalToSuperview()
         }
         animatedImageView.setRotation(angle: kIsRTL ? 5 : -5)
     }

+ 1 - 1
TSLiveWallpaper/Business/TSAIListVC/TSAIUploadPhotoVC/View/TSAIUploadPhotoTextView.swift

@@ -13,7 +13,7 @@ class TSAIUploadPhotoTextView: TSBaseView {
     }()
     
     lazy var infoLabel: UILabel = {
-        let infoLabel = UILabel.createLabel(text: "\("Optional".localized)",font: .font(size: 16.0),textColor: .white.withAlphaComponent(0.6))
+        let infoLabel = UILabel.createLabel(text: "(\("Optional".localized))",font: .font(size: 16.0),textColor: .white.withAlphaComponent(0.6))
         return infoLabel
     }()
     

+ 3 - 3
TSLiveWallpaper/Common/Purchase/TSPurchaseManager.swift

@@ -75,9 +75,9 @@ public class PurchaseManager: NSObject {
     }
 
     @objc public var isVip: Bool {
-        #if DEBUG
-        return true
-        #endif
+//        #if DEBUG
+//        return true
+//        #endif
         guard let expiresDate = expiredDate else {
             return false
         }

+ 3 - 4
TSLiveWallpaper/ar.lproj/Localizable.strings

@@ -51,8 +51,7 @@
 "Clear outline black-and-white photos" = "صور واضحة بالأبيض والأسود";
 "Colorful or Severely damaged photos" = "الصور الملونة أو التالفة بشدة";
 "Descratch Tips" = "نصائح ديسكراتش";
-"Scratched and Damaged photos
-" = "الصور المخدوشة والمتضررة";
+"Scratched and Damaged photos" = "الصور المخدوشة والمتضررة";
 "High-resolution, Not damaged, and Clear photos" = "صور عالية الدقة، غير تالفة، وواضحة";
 "Upload Photo" = "تحميل الصورة";
 "Enhance Photo" = "تحسين الصورة";
@@ -110,7 +109,7 @@
 "Recreate Tips" = "نصائح إعادة الإنشاء";
 "Recreate" = "إعادة إنشاء";
 "Bring new life to old photos" = "إضفاء حياة جديدة على الصور القديمة";
-"Enlighten" = "تنوير";
+"Adjust Light" = "ضبط الضوء";
 "Easily fix lighting issues on photos" = "إصلاح مشاكل الإضاءة في الصور بسهولة";
 "View" = "منظر";
 "Example" = "مثال";
@@ -125,7 +124,7 @@
 "There's nothing here yet" = "لا يوجد شيء هنا حتى الآن";
 "Try Again" = "حاول ثانية";
 
-"Animated Photos" = "الصور المتحركة";
+"Animated Photo" = "صورة متحركة";
 "Turn photos into live moments" = "حوّل الصور إلى لحظات حية";
 "Animate Tips" = "نصائح حول الرسوم المتحركة";
 "Good quality portrair color photos" = "صور ملونة عالية الجودة";

+ 2 - 2
TSLiveWallpaper/en.lproj/Localizable.strings

@@ -108,7 +108,7 @@
 "Recreate Tips" = "Recreate Tips";
 "Recreate" = "Recreate";
 "Bring new life to old photos" = "Bring new life to old photos";
-"Enlighten" = "Enlighten";
+"Adjust Light" = "Adjust Light";
 "Easily fix lighting issues on photos" = "Easily fix lighting issues on photos";
 "View" = "View";
 "Example" = "Example";
@@ -123,7 +123,7 @@
 "There's nothing here yet" = "There's nothing here yet";
 "Try Again" = "Try Again";
 
-"Animated Photos" = "Animated Photos";
+"Animated Photo" = "Animated Photo";
 "Turn photos into live moments" = "Turn photos into live moments";
 "Animate Tips" = "Animate Tips";
 "Good quality portrair color photos" = "Good quality portrair color photos";

+ 2 - 2
TSLiveWallpaper/es.lproj/Localizable.strings

@@ -109,7 +109,7 @@
 "Recreate Tips" = "Consejos para recrear";
 "Recreate" = "Recrear";
 "Bring new life to old photos" = "Dale nueva vida a fotos antiguas";
-"Enlighten" = "Iluminar";
+"Adjust Light" = "Ajustar la luz";
 "Easily fix lighting issues on photos" = "Solucione fácilmente los problemas de iluminación en las fotografías";
 "View" = "Vista";
 "Example" = "Ejemplo";
@@ -124,7 +124,7 @@
 "There's nothing here yet" = "No hay nada aquí todavía";
 "Try Again" = "Intentar otra vez";
 
-"Animated Photos" = "Fotos animadas";
+"Animated Photo" = "Foto animada";
 "Turn photos into live moments" = "Convierte tus fotos en momentos vivos";
 "Animate Tips" = "Consejos para animar";
 "Good quality portrair color photos" = "Fotos en color de buena calidad";

+ 8 - 0
TSLiveWallpaper/ja.lproj/InfoPlist.strings

@@ -0,0 +1,8 @@
+/* 
+  InfoPlist.strings
+  TSLiveWallpaper
+
+  Created by 100Years on 2025/6/18.
+  
+*/
+NSPhotoLibraryUsageDescription = "写真を読み込んで処理し、処理済みの写真をデバイスに保存するために、アクセスを許可してください。";

+ 1 - 0
TSLiveWallpaper/ja.lproj/LaunchScreen.strings

@@ -0,0 +1 @@
+

+ 138 - 0
TSLiveWallpaper/ja.lproj/Localizable.strings

@@ -0,0 +1,138 @@
+/* 
+  Localizable.strings
+  TSLiveWallpaper
+
+  Created by nkl on 2025/2/26.
+  
+*/
+"Animated Photo" = "アニメーション写真";
+"Turn photos into live moments" = "写真を生き生きとした瞬間に変換";
+"Animate Tips" = "アニメーションのヒント";
+"Good quality portrair color photos" = "高品質なポートレートカラー写真";
+"B&W or Severely damaged photos" = "白黒写真または深刻な損傷を受けた写真";
+"Description" = "説明";
+"Optional" = "オプション";
+"Describe the animation effect you want" = "希望するアニメーション効果を説明してください";
+"New Update Available!" = "新しいアップデートが利用可能!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 新しいスタイル、これまで以上に鮮やか";
+"✨ Trendy effects for more magic" = "✨ トレンドのエフェクトでより魔法のような効果";
+"⚡ Even faster speed" = "⚡ さらに高速な処理速度";
+"Update now to unlock the best experience" = "今すぐアップデートして最高の体験を解錠";
+"Update" = "アップデート";
+"Your photo may contain copyright infringement, nudity, gore or violence that does not comply with the Health Policy, please replace the photo and try again." = "写真に著作権侵害、裸体、残虐な表現、または暴力的な内容が含まれており、健康ポリシーに違反しています。写真を変更して再度お試しください。";
+"There's nothing here yet" = "まだ何もありません";
+"Try Again" = "再度お試しください";
+"Payment Failed" = "支払い失敗";
+"The subscription was canceled" = "サブスクリプションがキャンセルされました";
+"This task has expired" = "このタスクは期限切れです";
+"Processing you photo" = "写真を処理中です";
+"Enlighten Tips" = "Enlighten Tips";
+"Verify receipt failed" = "受領確認に失敗しました";
+"Purchasing now" = "購入中です";
+"Got it" = "了解しました";
+"Reselect photos" = "写真を再選択してください";
+"Sorry there was a slight problem with the image processing, please try again later." = "申し訳ありませんが、画像処理に少し問題が発生しました。後ほど再度お試しください。";
+"No network, please check your network and try again." = "ネットワーク接続がありません。ネットワーク接続を確認し、もう一度お試しください。";
+"Your photo may contain nudity, gore or violence that does not comply with the health policy, please replace the photo and try again." = "あなたの写真には、健康ポリシーに違反する裸体、残虐な表現、または暴力が含まれている可能性があります。写真を置き換え、もう一度お試しください。";
+"Process in the background" = "バックグラウンドで処理中";
+"History" = "履歴";
+"Upgrade" = "アップグレード";
+"Well-exposed or severely damaged photos" = "露出が適切または深刻な損傷を受けた写真";
+"Over-dark or over-light, overexposed, or underexposed photos" = "過度に暗く、過度に明るく、露出過多、または露出不足の写真";
+"Recreate Tips" = "再作成のヒント";
+"Recreate" = "再作成";
+"Bring new life to old photos" = "古い写真に新しい命を吹き込む";
+"Adjust Light" = "ライトを調整する";
+"Easily fix lighting issues on photos" = "写真の照明問題を簡単に修正";
+"View" = "表示";
+"Example" = "例";
+"Limited Time Discount" = "期間限定割引";
+"Allow us to access to upload photos to process and save processed photos to your device." = "写真を読み込んで処理し、処理済みの写真をデバイスに保存するために、アクセスを許可してください。";
+"Add Color to Memories" = "思い出に色を添える";
+"Your photo is now vibrantly colorized, bringing memories to life" = "あなたの写真は鮮やかにカラー化され、思い出を蘇らせます";
+"Erase Scratches" = "傷を消す";
+"Scratches and blemishes have vanished" = "傷や汚れが消えました";
+"Make photos clearer" = "写真をより鮮明に";
+"Your photo has become clearer,and the details are more noticeable" = "あなたの写真はより鮮明になり、詳細がより際立ちます";
+"Continue" = "続行";
+"Colorize Photo" = "写真をカラー化";
+"Remove Scratches" = "傷を削除";
+"Enhance Photo" = "写真を強化";
+"Get PRO Access" = "PROアクセスを取得";
+"Unlimited Process" = "無制限の処理";
+"Unlock All Features" = "すべての機能を解除";
+"High Speed & Quality" = "高速&高品質";
+"100%\nNo Ads" = "100%\n広告なし";
+"Yearly" = "年間";
+"Weekly" = "週間";
+"Just" = "ただ";
+"Per Year" = "年間";
+"Per Week" = "週間";
+"Save-Vip" = "節約";
+"per week" = "週間";
+"Continue" = "続行";
+"Recurring billing,cancel anytime." = "定期課金、いつでもキャンセル可能。";
+"Payment will be charged to your iTunes account at confirmation of purchase. Subscriptions automatically renew for the same applicable term and price, unless auto-renew is turned off at least 24 hours before the end of the current period." = "購入確認時にiTunesアカウントに課金されます。サブスクリプションは、現在の期間終了の24時間前までに自動更新をオフにしない限り、同じ期間と価格で自動的に更新されます。";
+"Terms of us" = "利用規約";
+"Privacy Policy" = "プライバシーポリシー";
+"Restore" = "復元";
+"Enhance" = "強化";
+"Remove blur, sharpen, add details" = "ボケを削除、シャープ化、詳細を追加";
+"Try" = "試す";
+"Colorize" = "カラー化";
+"Add colors to black-and-white photos" = "白黒写真に色を追加";
+"Descratch" = "傷除去";
+"Remove scratches and dirt" = "傷や汚れを削除";
+"Enhance Tips" = "強化のヒント";
+"Suitable" = "適している";
+"Portraits, Low-resolution and photos, faces should be visible" = "ポートレート、低解像度写真、顔が確認できる写真";
+"Unsuitable" = "適していない";
+"High resulotion, Severaly damaged and Difficult to recognize the face" = "高解像度、深刻な損傷、顔が認識できない写真";
+"Colorize Tips" = "カラー化のヒント";
+"Clear outline black-and-white photos" = "輪郭がはっきりした白黒写真";
+"Colorful or Severely damaged photos" = "色鮮やかまたは深刻に損傷した写真";
+"Descratch Tips" = "傷除去のヒント";
+"Scratched and Damaged photos" = "傷や損傷のある写真";
+"High-resolution, Not damaged, and Clear photos" = "高解像度、損傷がなく、クリアな写真";
+"Upload Photo" = "写真をアップロード";
+"Enhance Photo" = "写真を強化";
+"Colorize Photo" = "写真をカラー化";
+"Descratch Photo" = "写真を傷除去";
+"Enlighten Photo" = "写真を明るく";
+"Recreate Photo" = "写真を再作成";
+"You haven't saved the photo yet. Are you sure to quit?" = "写真を保存していません。本当に終了しますか?";
+"Quit" = "終了";
+"Save" = "保存";
+"As you leave, your task will be interrupted and no result." = "退出すると、タスクが中断され、結果が得られません。";
+"Leave" = "退出";
+"Wait" = "待機";
+"Processing" = "処理中";
+"Uploading Photo" = "写真をアップロード中";
+"Process successfully" = "処理成功";
+"Save Successfully" = "保存成功";
+"1 task is processing" = "1つのタスクが処理中です";
+"~ %d mins" = "~ %d 分";
+"Lots of people are processing images right now, so this might take a bit." = "現在多くのユーザーが画像を処理しているため、少し時間がかかる場合があります。";
+"Home" = "ホーム";
+"Result" = "結果";
+"Are you sure to delete?" = "削除してもよろしいですか?";
+"Retain" = "保持";
+"Delete" = "削除";
+"Delete this error history?" = "このエラー履歴を削除しますか?";
+"Due Date:" = "期限:";
+"Share us" = "共有する";
+"Rate us" = "評価する";
+"User Agreement" = "利用規約";
+"Privacy Policy" = "プライバシーポリシー";
+"About us" = "当社について";
+"Lifetime" = "生涯";
+"Congratulation you have become VIP" = "おめでとうございます、VIPになりました";
+"Finish" = "完了";
+"Restoring now" = "復元中";
+"Couldn't Restore Subscription" = "サブスクリプションの復元に失敗しました";
+"Getting price" = "価格を取得中";
+"Failed to get the price, will automatically retry in 5 seconds" = "価格の取得に失敗しました。5秒後に自動再試行します";
+"Failed to restore subscribe, please try again" = "サブスクリプションの復元に失敗しました。もう一度お試しください";
+"Verifying receipt..." = "領収書の検証中...";
+"Failed to validate receipt" = "領収書の検証に失敗しました";
+"%d%" = "%d%%";

+ 8 - 0
TSLiveWallpaper/ko.lproj/InfoPlist.strings

@@ -0,0 +1,8 @@
+/* 
+  InfoPlist.strings
+  TSLiveWallpaper
+
+  Created by 100Years on 2025/6/18.
+  
+*/
+NSPhotoLibraryUsageDescription = "사진을 업로드하고 처리된 사진을 기기에 저장하기 위해 액세스 권한을 허용해 주세요.";

+ 1 - 0
TSLiveWallpaper/ko.lproj/LaunchScreen.strings

@@ -0,0 +1 @@
+

+ 138 - 0
TSLiveWallpaper/ko.lproj/Localizable.strings

@@ -0,0 +1,138 @@
+/* 
+  Localizable.strings
+  TSLiveWallpaper
+
+  Created by nkl on 2025/2/26.
+  
+*/
+"Animated Photo" = "애니메이션 사진";
+"Turn photos into live moments" = "사진을 생동감 있는 순간으로 변환하세요";
+"Animate Tips" = "애니메이션 팁";
+"Good quality portrair color photos" = "고품질 인물 사진";
+"B&W or Severely damaged photos" = "흑백 또는 심하게 손상된 사진";
+"Description" = "설명";
+"Optional" = "선택 사항";
+"Describe the animation effect you want" = "원하는 애니메이션 효과를 설명하세요";
+"New Update Available!" = "새로운 업데이트가 출시되었습니다!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 신선한 스타일, 이제보다 더 생동감 넘치는";
+"✨ Trendy effects for more magic" = "✨ 트렌디한 효과로 더 많은 마법을";
+"⚡ Even faster speed" = "⚡ 더욱 빠른 속도";
+"Update now to unlock the best experience" = "지금 업데이트하여 최고의 경험을 경험하세요";
+"Update" = "업데이트";
+"Your photo may contain copyright infringement, nudity, gore or violence that does not comply with the Health Policy, please replace the photo and try again." = "귀하의 사진에는 저작권 침해, 노출, 잔혹한 장면 또는 폭력적인 내용이 포함되어 건강 정책에 부합하지 않을 수 있습니다. 사진을 교체하고 다시 시도해 주시기 바랍니다.";
+"There's nothing here yet" = "현재 여기에는 아무것도 없습니다";
+"Try Again" = "다시 시도해 주세요";
+"Payment Failed" = "결제 실패";
+"The subscription was canceled" = "구독이 취소되었습니다";
+"This task has expired" = "이 작업은 만료되었습니다";
+"Processing you photo" = "사진을 처리 중입니다";
+"Enlighten Tips" = "Enlighten 팁";
+"Verify receipt failed" = "수신 확인 실패";
+"Purchasing now" = "현재 구매 중입니다";
+"Got it" = "알겠습니다";
+"Reselect photos" = "사진을 다시 선택해 주세요";
+"Sorry there was a slight problem with the image processing, please try again later." = "이미지 처리 과정에서 약간의 문제가 발생했습니다. 나중에 다시 시도해 주시기 바랍니다.";
+"No network, please check your network and try again." = "네트워크 연결이 없습니다. 네트워크를 확인하고 다시 시도해 주세요.";
+"Your photo may contain nudity, gore or violence that does not comply with the health policy, please replace the photo and try again." = "귀하의 사진에는 건강 정책에 부합하지 않는 노출, 폭력적 장면 또는 폭력적인 내용이 포함될 수 있습니다. 사진을 교체하고 다시 시도해 주세요.";
+"Process in the background" = "배경에서 처리 중";
+"History" = "역사";
+"Upgrade" = "업그레이드";
+"Well-exposed or severely damaged photos" = "잘 노출되었거나 심하게 손상된 사진";
+"Over-dark or over-light, overexposed, or underexposed photos" = "과도하게 어두우거나 밝은, 과노출 또는 저노출 사진";
+"Recreate Tips" = "재창조 팁";
+"Recreate" = "재창조";
+"Bring new life to old photos" = "옛 사진에 새로운 생명을 불어넣습니다";
+"Adjust Light" = "조명 조절";
+"Easily fix lighting issues on photos" = "사진의 조명 문제를 쉽게 수정합니다";
+"View" = "보기";
+"Example" = "예시";
+"Limited Time Discount" = "한정 시간 할인";
+"Allow us to access to upload photos to process and save processed photos to your device." = "사진을 업로드하고 처리된 사진을 기기에 저장하기 위해 액세스 권한을 허용해 주세요.";
+"Add Color to Memories" = "기억에 색상을 더하세요";
+"Your photo is now vibrantly colorized, bringing memories to life" = "사진이 생동감 있게 색상화되어 추억을 되살립니다";
+"Erase Scratches" = "긁힘 제거";
+"Scratches and blemishes have vanished" = "긁힘과 결점이 사라졌습니다";
+"Make photos clearer" = "사진을 더 명확하게";
+"Your photo has become clearer,and the details are more noticeable" = "사진이 더 명확해졌고 세부 사항이 더 눈에 띕니다";
+"Continue" = "계속";
+"Colorize Photo" = "사진 색상화";
+"Remove Scratches" = "긁힘 제거";
+"Enhance Photo" = "사진 향상";
+"Get PRO Access" = "PRO 액세스 획득";
+"Unlimited Process" = "무제한 처리";
+"Unlock All Features" = "모든 기능 잠금 해제";
+"High Speed & Quality" = "고속 및 고품질";
+"100%\nNo Ads" = "100%\n광고 없음";
+"Yearly" = "연간";
+"Weekly" = "주간";
+"Just" = "단순히";
+"Per Year" = "연간";
+"Per Week" = "주간";
+"Save-Vip" = "절약";
+"per week" = "주간";
+"Continue" = "계속";
+"Recurring billing,cancel anytime." = "반복 결제, 언제든지 취소 가능.";
+"Payment will be charged to your iTunes account at confirmation of purchase. Subscriptions automatically renew for the same applicable term and price, unless auto-renew is turned off at least 24 hours before the end of the current period." = "결제는 구매 확인 시 iTunes 계정에 청구됩니다. 구독은 현재 기간 종료 24시간 전까지 자동 갱신 해제를 설정하지 않는 한 동일한 기간과 가격으로 자동 갱신됩니다.";
+"Terms of us" = "이용 약관";
+"Privacy Policy" = "개인정보 처리 방침";
+"Restore" = "복원";
+"Enhance" = "강화";
+"Remove blur, sharpen, add details" = "흐림 제거, 선명도 향상, 세부 사항 추가";
+"Try" = "시도";
+"Colorize" = "색상 추가";
+"Add colors to black-and-white photos" = "흑백 사진에 색상 추가";
+"Descratch" = "스크래치 제거";
+"Remove scratches and dirt" = "스크래치 및 먼지 제거";
+"Enhance Tips" = "강화 팁";
+"Suitable" = "적합";
+"Portraits, Low-resolution and photos, faces should be visible" = "인물 사진, 저해상도 사진, 얼굴이 명확히 보이는 사진";
+"Unsuitable" = "부적합";
+"High resulotion, Severaly damaged and Difficult to recognize the face" = "고해상도, 심하게 손상된 사진, 얼굴이 인식하기 어려운 사진";
+"Colorize Tips" = "색상 추가 팁";
+"Clear outline black-and-white photos" = "명확한 윤곽의 흑백 사진";
+"Colorful or Severely damaged photos" = "색상이 풍부하거나 심하게 손상된 사진";
+"Descratch Tips" = "스크래치 제거 팁";
+"Scratched and Damaged photos" = "스크래치와 손상된 사진";
+"High-resolution, Not damaged, and Clear photos" = "고해상도, 손상되지 않았고 명확한 사진";
+"Upload Photo" = "사진 업로드";
+"Enhance Photo" = "사진 향상";
+"Colorize Photo" = "사진 색상 추가";
+"Descratch Photo" = "사진 스크래치 제거";
+"Enlighten Photo" = "사진 밝기 조정";
+"Recreate Photo" = "사진 재구성";
+"You haven't saved the photo yet. Are you sure to quit?" = "사진을 아직 저장하지 않았습니다. 정말 종료하시겠습니까?";
+"Quit" = "종료";
+"Save" = "저장";
+"As you leave, your task will be interrupted and no result." = "이 작업을 종료하면 작업이 중단되고 결과물이 생성되지 않습니다.";
+"Leave" = "종료";
+"Wait" = "대기";
+"Processing" = "처리 중";
+"Uploading Photo" = "사진 업로드 중";
+"Process successfully" = "처리 성공";
+"Save Successfully" = "저장 성공";
+"1 task is processing" = "1개의 작업이 처리 중입니다";
+"~ %d mins" = "~ %d 분";
+"Lots of people are processing images right now, so this might take a bit." = "현재 많은 사용자가 이미지를 처리 중이기 때문에 시간이 조금 더 걸릴 수 있습니다.";
+"Home" = "홈";
+"Result" = "결과";
+"Are you sure to delete?" = "삭제하시겠습니까?";
+"Retain" = "유지";
+"Delete" = "삭제";
+"Delete this error history?" = "이 오류 기록을 삭제하시겠습니까?";
+"Due Date:" = "기한:";
+"Share us" = "공유하기";
+"Rate us" = "평가하기";
+"User Agreement" = "이용 약관";
+"Privacy Policy" = "개인 정보 보호 정책";
+"About us" = "회사 소개";
+"Lifetime" = "평생";
+"Congratulation you have become VIP" = "축하합니다. VIP가 되셨습니다.";
+"Finish" = "완료";
+"Restoring now" = "복원 중";
+"Couldn't Restore Subscription" = "구독 복원에 실패했습니다.";
+"Getting price" = "가격 조회 중";
+"Failed to get the price, will automatically retry in 5 seconds" = "가격 조회에 실패했습니다. 5초 후 자동 재시도됩니다.";
+"Failed to restore subscribe, please try again" = "구독 복원에 실패했습니다. 다시 시도해 주세요.";
+"Verifying receipt..." = "영수증 확인 중...";
+"Failed to validate receipt" = "영수증 확인에 실패했습니다.";
+"%d%" = "%d%%";

+ 8 - 0
TSLiveWallpaper/zh-Hant.lproj/InfoPlist.strings

@@ -0,0 +1,8 @@
+/* 
+  InfoPlist.strings
+  TSLiveWallpaper
+
+  Created by 100Years on 2025/6/18.
+  
+*/
+NSPhotoLibraryUsageDescription = "允許我們訪問以上傳照片進行處理,並將處理後的照片保存到您的設備。";

+ 1 - 0
TSLiveWallpaper/zh-Hant.lproj/LaunchScreen.strings

@@ -0,0 +1 @@
+

+ 138 - 0
TSLiveWallpaper/zh-Hant.lproj/Localizable.strings

@@ -0,0 +1,138 @@
+/* 
+  Localizable.strings
+  TSLiveWallpaper
+
+  Created by nkl on 2025/2/26.
+  
+*/
+"Animated Photo" = "動畫照片";
+"Turn photos into live moments" = "將照片轉化為生動的瞬間";
+"Animate Tips" = "動畫提示";
+"Good quality portrair color photos" = "高質量的彩色肖像照片";
+"B&W or Severely damaged photos" = "黑白或嚴重損壞的照片";
+"Description" = "描述";
+"Optional" = "可選";
+"Describe the animation effect you want" = "描述您想要的動畫效果";
+"New Update Available!" = "新更新已推出!";
+"🎨 Fresh styles, more vibrant than ever" = "🎨 新風格,更鮮豔";
+"✨ Trendy effects for more magic" = "✨ 時尚效果,更添魔力";
+"⚡ Even faster speed" = "⚡ 速度更快";
+"Update now to unlock the best experience" = "立即更新,解鎖最佳體驗";
+"Update" = "更新";
+"Your photo may contain copyright infringement, nudity, gore or violence that does not comply with the Health Policy, please replace the photo and try again." = "您的照片可能包含侵犯版權、裸露、血腥或暴力內容,不符合健康政策,請更換照片後重試。";
+"There's nothing here yet" = "這裡還沒有內容";
+"Try Again" = "重試";
+"Payment Failed" = "付款失敗";
+"The subscription was canceled" = "訂閱已被取消";
+"This task has expired" = "此任務已過期";
+"Processing you photo" = "正在處理您的照片";
+"Enlighten Tips" = "啟發提示";
+"Verify receipt failed" = "驗證收據失敗";
+"Purchasing now" = "正在購買";
+"Got it" = "明白了";
+"Reselect photos" = "重新選擇照片";
+"Sorry there was a slight problem with the image processing, please try again later." = "抱歉,圖像處理出現了輕微問題,請稍後重試。";
+"No network, please check your network and try again." = "無網路連接,請檢查網路並重新嘗試。";
+"Your photo may contain nudity, gore or violence that does not comply with the health policy, please replace the photo and try again." = "您的照片可能包含裸露、血腥或暴力內容,不符合健康政策,請更換照片並重新嘗試。";
+"Process in the background" = "在後台處理";
+"History" = "歷史";
+"Upgrade" = "升級";
+"Well-exposed or severely damaged photos" = "曝光良好或嚴重損壞的照片";
+"Over-dark or over-light, overexposed, or underexposed photos" = "過暗、過亮、曝光過度或曝光不足的照片";
+"Recreate Tips" = "重新創建提示";
+"Recreate" = "重新創建";
+"Bring new life to old photos" = "為舊照片注入新生命";
+"Adjust Light" = "調整光線";
+"Easily fix lighting issues on photos" = "輕鬆修復照片的照明問題";
+"View" = "查看";
+"Example" = "示例";
+"Limited Time Discount" = "限時折扣";
+"Allow us to access to upload photos to process and save processed photos to your device." = "允許我們訪問以上傳照片進行處理,並將處理後的照片保存到您的設備。";
+"Add Color to Memories" = "為記憶增添色彩";
+"Your photo is now vibrantly colorized, bringing memories to life" = "您的照片現在已生動上色,讓記憶煥發新生";
+"Erase Scratches" = "消除劃痕";
+"Scratches and blemishes have vanished" = "劃痕和瑕疵已消失";
+"Make photos clearer" = "讓照片更清晰";
+"Your photo has become clearer,and the details are more noticeable" = "您的照片已變得更清晰,細節更明顯";
+"Continue" = "繼續";
+"Colorize Photo" = "上色照片";
+"Remove Scratches" = "去除劃痕";
+"Enhance Photo" = "增強照片";
+"Get PRO Access" = "獲取專業版訪問權限";
+"Unlimited Process" = "無限處理";
+"Unlock All Features" = "解鎖所有功能";
+"High Speed & Quality" = "高速與高品質";
+"100%\nNo Ads" = "100%\n無廣告";
+"Yearly" = "每年";
+"Weekly" = "每周";
+"Just" = "僅需";
+"Per Year" = "每年";
+"Per Week" = "每周";
+"Save-Vip" = "節省";
+"per week" = "每周";
+"Continue" = "繼續";
+"Recurring billing,cancel anytime." = "定期計費,隨時取消。";
+"Payment will be charged to your iTunes account at confirmation of purchase. Subscriptions automatically renew for the same applicable term and price, unless auto-renew is turned off at least 24 hours before the end of the current period." = "付款將從您的 iTunes 帳戶中扣除,確認購買後生效。訂閱將自動續訂相同期限和價格,除非在當前週期結束前至少 24 小時關閉自動續訂功能。";
+"Terms of us" = "使用條款";
+"Privacy Policy" = "隱私政策";
+"Restore" = "恢復";
+"Enhance" = "增強";
+"Remove blur, sharpen, add details" = "去除模糊、銳化、添加細節";
+"Try" = "嘗試";
+"Colorize" = "上色";
+"Add colors to black-and-white photos" = "為黑白照片添加顏色";
+"Descratch" = "去除刮痕";
+"Remove scratches and dirt" = "去除刮痕和污垢";
+"Enhance Tips" = "增強提示";
+"Suitable" = "適用";
+"Portraits, Low-resolution and photos, faces should be visible" = "人像、低解析度照片,面部應清晰可見";
+"Unsuitable" = "不適用";
+"High resulotion, Severaly damaged and Difficult to recognize the face" = "高解析度、嚴重損壞且難以辨認面部";
+"Colorize Tips" = "上色提示";
+"Clear outline black-and-white photos" = "輪廓清晰的黑白照片";
+"Colorful or Severely damaged photos" = "色彩豐富或嚴重損壞的照片";
+"Descratch Tips" = "去除刮痕提示";
+"Scratched and Damaged photos" = "刮痕和損壞的照片";
+"High-resolution, Not damaged, and Clear photos" = "高解析度、未損壞且清晰的照片";
+"Upload Photo" = "上傳照片";
+"Enhance Photo" = "增強照片";
+"Colorize Photo" = "為照片上色";
+"Descratch Photo" = "去除刮痕";
+"Enlighten Photo" = "增亮照片";
+"Recreate Photo" = "重建照片";
+"You haven't saved the photo yet. Are you sure to quit?" = "您尚未保存照片。確定要退出嗎?";
+"Quit" = "退出";
+"Save" = "保存";
+"As you leave, your task will be interrupted and no result." = "您離開後,任務將中斷且無結果。";
+"Leave" = "離開";
+"Wait" = "等待";
+"Processing" = "處理中";
+"Uploading Photo" = "上傳照片";
+"Process successfully" = "處理成功";
+"Save Successfully" = "保存成功";
+"1 task is processing" = "1 個任務正在處理";
+"~ %d mins" = "~ %d 分鐘";
+"Lots of people are processing images right now, so this might take a bit." = "目前有大量用戶正在處理圖片,因此可能需要一些時間。";
+"Home" = "首頁";
+"Result" = "結果";
+"Are you sure to delete?" = "您確定要刪除嗎?";
+"Retain" = "保留";
+"Delete" = "刪除";
+"Delete this error history?" = "刪除此錯誤記錄?";
+"Due Date:" = "截止日期:";
+"Share us" = "分享給我們";
+"Rate us" = "評分";
+"User Agreement" = "使用者協議";
+"Privacy Policy" = "隱私政策";
+"About us" = "關於我們";
+"Lifetime" = "終身";
+"Congratulation you have become VIP" = "恭喜您成為 VIP";
+"Finish" = "完成";
+"Restoring now" = "正在恢復";
+"Couldn't Restore Subscription" = "無法恢復訂閱";
+"Getting price" = "獲取價格";
+"Failed to get the price, will automatically retry in 5 seconds" = "無法獲取價格,將自動在 5 秒後重試";
+"Failed to restore subscribe, please try again" = "無法恢復訂閱,請重新嘗試";
+"Verifying receipt..." = "驗證收據...";
+"Failed to validate receipt" = "無法驗證收據";
+"%d%" = "%d%%";