├── README.md ├── Shared ├── Actions.swift ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ ├── Image.imageset │ │ └── Contents.json │ └── background.colorset │ │ └── Contents.json ├── BottomSheet.swift ├── ContentView.swift ├── CustomTextEditor.swift ├── EditorView.swift ├── HomeView.swift ├── ListeningView.swift ├── TranslationView.swift └── translateApp.swift ├── Tests iOS ├── Info.plist └── Tests_iOS.swift ├── Tests macOS ├── Info.plist └── Tests_macOS.swift ├── Translate.gif ├── iOS └── Info.plist ├── macOS ├── Info.plist └── macOS.entitlements └── translate.xcodeproj ├── project.pbxproj ├── project.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── IDEWorkspaceChecks.plist └── xcuserdata └── shivamvijaywargiya.xcuserdatad ├── xcdebugger └── Breakpoints_v2.xcbkptlist └── xcschemes └── xcschememanagement.plist /README.md: -------------------------------------------------------------------------------- 1 | # Translate-SwiftUI 2 | 3 | ### Head over to [the creative developer](https://thecreativedeveloper.substack.com) to read about this project. 4 | 5 | ![animation](https://github.com/vijaywargiya/Translate-SwiftUI/blob/main/Translate.gif) 6 | -------------------------------------------------------------------------------- /Shared/Actions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Actions.swift 3 | // translate 4 | // 5 | // Created by Shivam Vijaywargiya on 18/07/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct Actions: View { 11 | @State var isPresented: Bool = false 12 | 13 | var body: some View { 14 | HStack{ 15 | Button(action: { 16 | isPresented = true 17 | }){ 18 | VStack{ 19 | Text("English").font(.body) 20 | Text("US").font(.caption).foregroundColor(.secondary) 21 | } 22 | .foregroundColor(Color(.label)) 23 | .frame(minWidth: 0, maxWidth: .infinity) 24 | .frame(height: 50) 25 | .background(Color("background")) 26 | .cornerRadius(10) 27 | } 28 | 29 | Button(action: { 30 | isPresented = true 31 | }){ 32 | VStack{ 33 | Text("Spanish").font(.body) 34 | } 35 | .foregroundColor(Color(.label)) 36 | .frame(minWidth: 0, maxWidth: .infinity) 37 | .frame(height: 50) 38 | .background(Color("background")) 39 | .cornerRadius(10) 40 | } 41 | } 42 | .padding(/*@START_MENU_TOKEN@*/.all/*@END_MENU_TOKEN@*/) 43 | .sheet(isPresented: $isPresented) { 44 | Text("Sheet") 45 | } 46 | } 47 | } 48 | 49 | struct Actions_Previews: PreviewProvider { 50 | static var previews: some View { 51 | Actions() 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Shared/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Shared/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | }, 93 | { 94 | "idiom" : "mac", 95 | "scale" : "1x", 96 | "size" : "16x16" 97 | }, 98 | { 99 | "idiom" : "mac", 100 | "scale" : "2x", 101 | "size" : "16x16" 102 | }, 103 | { 104 | "idiom" : "mac", 105 | "scale" : "1x", 106 | "size" : "32x32" 107 | }, 108 | { 109 | "idiom" : "mac", 110 | "scale" : "2x", 111 | "size" : "32x32" 112 | }, 113 | { 114 | "idiom" : "mac", 115 | "scale" : "1x", 116 | "size" : "128x128" 117 | }, 118 | { 119 | "idiom" : "mac", 120 | "scale" : "2x", 121 | "size" : "128x128" 122 | }, 123 | { 124 | "idiom" : "mac", 125 | "scale" : "1x", 126 | "size" : "256x256" 127 | }, 128 | { 129 | "idiom" : "mac", 130 | "scale" : "2x", 131 | "size" : "256x256" 132 | }, 133 | { 134 | "idiom" : "mac", 135 | "scale" : "1x", 136 | "size" : "512x512" 137 | }, 138 | { 139 | "idiom" : "mac", 140 | "scale" : "2x", 141 | "size" : "512x512" 142 | } 143 | ], 144 | "info" : { 145 | "author" : "xcode", 146 | "version" : 1 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /Shared/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Shared/Assets.xcassets/Image.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "scale" : "3x" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Shared/Assets.xcassets/background.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "platform" : "ios", 6 | "reference" : "systemBackgroundColor" 7 | }, 8 | "idiom" : "universal" 9 | }, 10 | { 11 | "appearances" : [ 12 | { 13 | "appearance" : "luminosity", 14 | "value" : "dark" 15 | } 16 | ], 17 | "color" : { 18 | "platform" : "ios", 19 | "reference" : "systemGray6Color" 20 | }, 21 | "idiom" : "universal" 22 | } 23 | ], 24 | "info" : { 25 | "author" : "xcode", 26 | "version" : 1 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Shared/BottomSheet.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BottomSheet.swift 3 | // translate 4 | // 5 | // Created by Shivam Vijaywargiya on 18/07/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct BottomSheet: View { 11 | @State var viewState = CGSize.zero 12 | @StateObject var editorController = EditorController() 13 | 14 | let animation = Animation.interpolatingSpring(stiffness: 100, damping: 30, initialVelocity: 10) 15 | 16 | var isExpanded: Bool { 17 | isListeningActive || editorController.isActive 18 | } 19 | 20 | var body: some View { 21 | ZStack { 22 | ZStack{ 23 | if isExpanded { 24 | VStack { 25 | HStack { 26 | Spacer() 27 | Button(action: { 28 | self.collapse() 29 | }){ 30 | Image(systemName: "xmark.circle.fill") 31 | .imageScale(.large) 32 | .foregroundColor(Color(.secondaryLabel)) 33 | } 34 | } 35 | Spacer() 36 | } 37 | } 38 | 39 | if isListeningActive { 40 | VStack { 41 | HStack { 42 | Text("Listening...") 43 | .foregroundColor(Color(.secondaryLabel)) 44 | .font(.system(size: 30, weight: .semibold, design: .rounded)) 45 | Spacer() 46 | } 47 | .padding(/*@START_MENU_TOKEN@*/.all/*@END_MENU_TOKEN@*/) 48 | .padding(.top, isExpanded ? 20 : 0) 49 | 50 | Spacer() 51 | } 52 | } else { 53 | EditorView(controller: editorController) 54 | .padding(.top, isExpanded ? 20 : 0) 55 | } 56 | } 57 | .padding(/*@START_MENU_TOKEN@*/.all/*@END_MENU_TOKEN@*/, 30) 58 | .background(Color("background")) 59 | .cornerRadius(10) 60 | .onTapGesture { 61 | self.expand() 62 | } 63 | .shadow(color: Color(.black).opacity(self.viewState.height == 0 ? 0 : 0.1), radius: 5) 64 | .offset(y: offset()) 65 | .zIndex(isExpanded ? 1 : 0) 66 | .gesture( 67 | DragGesture().onChanged { value in 68 | self.viewState = value.translation 69 | } 70 | .onEnded(onDragEnded) 71 | ) 72 | .animation(animation) 73 | 74 | VStack { 75 | Spacer() 76 | ZStack{ 77 | HStack(spacing: 5) { 78 | ForEach(0..<50) { index in 79 | Bar() 80 | } 81 | } 82 | .opacity(isListeningActive ? 1 : 0) 83 | 84 | micButton.opacity(isExpanded ? 0 : 1) 85 | } 86 | } 87 | .zIndex(3) 88 | .padding(.bottom, 70) 89 | 90 | } 91 | 92 | 93 | } 94 | 95 | 96 | @State var isListeningActive = false 97 | 98 | var micButton: some View { 99 | Image(systemName: "mic.fill") 100 | .font(.system(size: 35, weight: .regular, design: .rounded)) 101 | .foregroundColor(Color(.systemGray6)) 102 | .background( 103 | Circle().fill(Color(.systemTeal)) 104 | .frame(width: 70, height: 70, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) 105 | ) 106 | .onTapGesture { 107 | self.isListeningActive = true 108 | } 109 | 110 | } 111 | 112 | func onDragEnded(drag: DragGesture.Value) { 113 | self.viewState = .zero 114 | let direction = drag.predictedEndLocation.y - drag.location.y 115 | 116 | if direction > 0 && editorController.text == "" { 117 | self.collapse() 118 | } else { 119 | self.expand() 120 | } 121 | } 122 | 123 | func offset() -> CGFloat { 124 | var offset: CGFloat = 0 125 | if self.isExpanded { 126 | offset = 0 + self.viewState.height 127 | } else { 128 | offset = 500 + self.viewState.height 129 | } 130 | 131 | return offset < 0 ? 0 : offset > 500 ? 500 : offset 132 | } 133 | 134 | func collapse() { 135 | editorController.isActive = false 136 | self.isListeningActive = false 137 | } 138 | 139 | func expand() { 140 | editorController.isActive = true 141 | } 142 | } 143 | 144 | 145 | struct BottomSheet_Previews: PreviewProvider { 146 | static var previews: some View { 147 | BottomSheet() 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /Shared/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // Shared 4 | // 5 | // Created by Shivam Vijaywargiya on 18/07/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct ContentView: View { 11 | init(){ 12 | UITabBar.appearance().barTintColor = UIColor(.white) 13 | UITabBar.appearance().clipsToBounds = true 14 | 15 | } 16 | var body: some View { 17 | TabView { 18 | HomeView() 19 | .tabItem { 20 | Image(systemName: "translate").imageScale(.large) 21 | Text("Translate") 22 | } 23 | 24 | 25 | Text("Favourites") 26 | .tabItem { 27 | Image(systemName: "star.fill").imageScale(.large) 28 | Text("Favourites") 29 | } 30 | }.accentColor(Color(.systemTeal)) 31 | } 32 | } 33 | 34 | struct ContentView_Previews: PreviewProvider { 35 | static var previews: some View { 36 | ContentView() 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Shared/CustomTextEditor.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CustomTextField.swift 3 | // write 4 | // 5 | // Created by Shivam Vijaywargiya on 12/07/20. 6 | // 7 | 8 | import SwiftUI 9 | import WebKit 10 | 11 | struct CustomTextEditor: UIViewRepresentable { 12 | @ObservedObject var editorController: EditorController 13 | 14 | class Coordinator: NSObject, UITextViewDelegate { 15 | 16 | @ObservedObject var editorController: EditorController 17 | var didBecomeFirstResponder = false 18 | 19 | init(controller: ObservedObject) { 20 | _editorController = controller 21 | } 22 | 23 | func textViewDidChangeSelection(_ textView: UITextView) { 24 | editorController.text = textView.text 25 | } 26 | 27 | func textViewDidBeginEditing(_ textView: UITextView) { 28 | editorController.isActive = true 29 | } 30 | 31 | func textViewDidEndEditing(_ textView: UITextView) { 32 | editorController.isActive = false 33 | } 34 | } 35 | 36 | func makeCoordinator() -> Coordinator { 37 | return Coordinator(controller: _editorController) 38 | } 39 | 40 | 41 | func makeUIView(context: Context) -> UITextView { 42 | let view = UITextView(frame: .zero) 43 | view.delegate = context.coordinator 44 | view.isScrollEnabled = true 45 | view.isEditable = true 46 | view.isUserInteractionEnabled = true 47 | view.backgroundColor = UIColor(.clear) 48 | view.text = editorController.text 49 | 50 | let systemFont = UIFont.systemFont(ofSize: 30, weight: .semibold) 51 | 52 | let font: UIFont 53 | 54 | if let descriptor = systemFont.fontDescriptor.withDesign(.rounded) { 55 | font = UIFont(descriptor: descriptor, size: 30) 56 | } else { 57 | font = systemFont 58 | } 59 | 60 | view.font = font 61 | 62 | let padding = view.textContainer.lineFragmentPadding 63 | view.textContainerInset = UIEdgeInsets(top: 0, left: -padding, bottom: 0, right: -padding) 64 | return view 65 | } 66 | 67 | 68 | func updateUIView(_ uiView: UITextView, context: Context) { 69 | // uiView.text = editorController.text 70 | 71 | if editorController.isActive && !context.coordinator.didBecomeFirstResponder { 72 | uiView.becomeFirstResponder() 73 | context.coordinator.didBecomeFirstResponder = true 74 | } else if !editorController.isActive && context.coordinator.didBecomeFirstResponder { 75 | uiView.resignFirstResponder() 76 | context.coordinator.didBecomeFirstResponder = false 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /Shared/EditorView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EditorView.swift 3 | // translate 4 | // 5 | // Created by Shivam Vijaywargiya on 18/07/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | 11 | class EditorController: ObservableObject { 12 | @Published var isActive: Bool = false 13 | @Published var text: String = "" 14 | } 15 | 16 | struct EditorView: View { 17 | @ObservedObject var controller: EditorController 18 | 19 | var body: some View { 20 | ZStack { 21 | CustomTextEditor(editorController: controller) 22 | 23 | VStack { 24 | HStack { 25 | Text("Enter text") 26 | .foregroundColor(Color(.secondaryLabel)) 27 | .font(.system(size: 30, weight: .semibold, design: .rounded)) 28 | Spacer() 29 | } 30 | .padding(.leading, 2) 31 | 32 | Spacer() 33 | }.opacity(controller.text == "" ? 1 : 0) 34 | 35 | } 36 | .padding(/*@START_MENU_TOKEN@*/.all/*@END_MENU_TOKEN@*/) 37 | } 38 | } 39 | 40 | struct EditorView_Previews: PreviewProvider { 41 | static var previews: some View { 42 | EditorPreview() 43 | } 44 | 45 | struct EditorPreview: View { 46 | @StateObject var controller = EditorController() 47 | 48 | var body: some View { 49 | EditorView(controller: controller) 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Shared/HomeView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HomeView.swift 3 | // translate 4 | // 5 | // Created by Shivam Vijaywargiya on 18/07/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct HomeView: View { 11 | var body: some View { 12 | ZStack { 13 | Color(.systemGroupedBackground) 14 | .edgesIgnoringSafeArea(/*@START_MENU_TOKEN@*/.all/*@END_MENU_TOKEN@*/) 15 | 16 | VStack(spacing: 0) { 17 | Actions() 18 | TranslationView() 19 | Spacer() 20 | } 21 | 22 | BottomSheet() 23 | 24 | } 25 | 26 | } 27 | } 28 | 29 | 30 | struct HomeView_Previews: PreviewProvider { 31 | static var previews: some View { 32 | HomeView() 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Shared/ListeningView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ListeningView.swift 3 | // translate 4 | // 5 | // Created by Shivam Vijaywargiya on 18/07/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct Bar: View { 11 | @State var height: CGFloat 12 | var heightPostAnimation: CGFloat 13 | 14 | let animation = Animation.linear.repeatForever(autoreverses: true) 15 | 16 | init() { 17 | _height = State(initialValue: CGFloat(Int.random(in: 1..<50))) 18 | heightPostAnimation = CGFloat(Int.random(in: 1..<50)) 19 | 20 | if abs(height - heightPostAnimation) < 10 { 21 | heightPostAnimation += 10 22 | } 23 | } 24 | 25 | var body: some View { 26 | Rectangle().fill(Color(.systemTeal)) 27 | .frame(width: 3, height: height) 28 | .onAppear { 29 | withAnimation(animation) { 30 | height = heightPostAnimation 31 | } 32 | } 33 | } 34 | } 35 | 36 | 37 | struct Bar_Previews: PreviewProvider { 38 | static var previews: some View { 39 | VStack { 40 | Spacer() 41 | HStack(spacing: 5) { 42 | ForEach(0..<50) { index in 43 | Bar() 44 | } 45 | } 46 | } 47 | .padding(.bottom, 100) 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Shared/TranslationView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TranslationView.swift 3 | // translate 4 | // 5 | // Created by Shivam Vijaywargiya on 18/07/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | 11 | struct screen { 12 | static let width = UIScreen.main.bounds.size.width 13 | static let height = UIScreen.main.bounds.size.height 14 | } 15 | 16 | struct TranslationView: View { 17 | var body: some View { 18 | VStack(alignment: .leading, spacing: 20){ 19 | VStack(alignment: .leading) { 20 | Text("English (US)").font(.system(size: 15, weight: .medium, design: .rounded)) 21 | Text("How are you").font(.system(size: 30, weight: .semibold, design: .rounded)) 22 | } 23 | 24 | Divider() 25 | 26 | VStack(alignment: .leading) { 27 | Text("Spanish").font(.system(size: 15, weight: .medium, design: .rounded)) 28 | Text("Como estas?").font(.system(size: 30, weight: .semibold, design: .rounded)) 29 | }.foregroundColor(Color(.systemTeal)) 30 | 31 | Spacer() 32 | 33 | } 34 | .padding(/*@START_MENU_TOKEN@*/.all/*@END_MENU_TOKEN@*/) 35 | .frame(height: 400) 36 | .frame(maxWidth: .infinity) 37 | .background(Color("background")) 38 | .cornerRadius(10) 39 | } 40 | } 41 | 42 | 43 | struct TranslationView_Previews: PreviewProvider { 44 | static var previews: some View { 45 | TranslationView() 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Shared/translateApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // translateApp.swift 3 | // Shared 4 | // 5 | // Created by Shivam Vijaywargiya on 18/07/20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct translateApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | ContentView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Tests iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Tests iOS/Tests_iOS.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Tests_iOS.swift 3 | // Tests iOS 4 | // 5 | // Created by Shivam Vijaywargiya on 18/07/20. 6 | // 7 | 8 | import XCTest 9 | 10 | class Tests_iOS: XCTestCase { 11 | 12 | override func setUpWithError() throws { 13 | // Put setup code here. This method is called before the invocation of each test method in the class. 14 | 15 | // In UI tests it is usually best to stop immediately when a failure occurs. 16 | continueAfterFailure = false 17 | 18 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 19 | } 20 | 21 | override func tearDownWithError() throws { 22 | // Put teardown code here. This method is called after the invocation of each test method in the class. 23 | } 24 | 25 | func testExample() throws { 26 | // UI tests must launch the application that they test. 27 | let app = XCUIApplication() 28 | app.launch() 29 | 30 | // Use recording to get started writing UI tests. 31 | // Use XCTAssert and related functions to verify your tests produce the correct results. 32 | } 33 | 34 | func testLaunchPerformance() throws { 35 | if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) { 36 | // This measures how long it takes to launch your application. 37 | measure(metrics: [XCTApplicationLaunchMetric()]) { 38 | XCUIApplication().launch() 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Tests macOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Tests macOS/Tests_macOS.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Tests_macOS.swift 3 | // Tests macOS 4 | // 5 | // Created by Shivam Vijaywargiya on 18/07/20. 6 | // 7 | 8 | import XCTest 9 | 10 | class Tests_macOS: XCTestCase { 11 | 12 | override func setUpWithError() throws { 13 | // Put setup code here. This method is called before the invocation of each test method in the class. 14 | 15 | // In UI tests it is usually best to stop immediately when a failure occurs. 16 | continueAfterFailure = false 17 | 18 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 19 | } 20 | 21 | override func tearDownWithError() throws { 22 | // Put teardown code here. This method is called after the invocation of each test method in the class. 23 | } 24 | 25 | func testExample() throws { 26 | // UI tests must launch the application that they test. 27 | let app = XCUIApplication() 28 | app.launch() 29 | 30 | // Use recording to get started writing UI tests. 31 | // Use XCTAssert and related functions to verify your tests produce the correct results. 32 | } 33 | 34 | func testLaunchPerformance() throws { 35 | if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) { 36 | // This measures how long it takes to launch your application. 37 | measure(metrics: [XCTApplicationLaunchMetric()]) { 38 | XCUIApplication().launch() 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Translate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vijaywargiya/Translate-SwiftUI/1507b0de0d77e24dd3ae84340c36e1dc33e2ddc2/Translate.gif -------------------------------------------------------------------------------- /iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UIApplicationSceneManifest 24 | 25 | UIApplicationSupportsMultipleScenes 26 | 27 | 28 | UIApplicationSupportsIndirectInputEvents 29 | 30 | UILaunchScreen 31 | 32 | UIRequiredDeviceCapabilities 33 | 34 | armv7 35 | 36 | UISupportedInterfaceOrientations 37 | 38 | UIInterfaceOrientationPortrait 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UISupportedInterfaceOrientations~ipad 43 | 44 | UIInterfaceOrientationPortrait 45 | UIInterfaceOrientationPortraitUpsideDown 46 | UIInterfaceOrientationLandscapeLeft 47 | UIInterfaceOrientationLandscapeRight 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /macOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | 26 | 27 | -------------------------------------------------------------------------------- /macOS/macOS.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /translate.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | DC5B103524C2DFEF00E867BE /* CustomTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5B103424C2DFEF00E867BE /* CustomTextEditor.swift */; }; 11 | DC5B103624C2DFEF00E867BE /* CustomTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5B103424C2DFEF00E867BE /* CustomTextEditor.swift */; }; 12 | DC5B103824C2E77600E867BE /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5B103724C2E77600E867BE /* HomeView.swift */; }; 13 | DC5B103924C2E77600E867BE /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5B103724C2E77600E867BE /* HomeView.swift */; }; 14 | DC5B103B24C2E7B200E867BE /* TranslationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5B103A24C2E7B200E867BE /* TranslationView.swift */; }; 15 | DC5B103C24C2E7B200E867BE /* TranslationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5B103A24C2E7B200E867BE /* TranslationView.swift */; }; 16 | DC5B103E24C2FBEB00E867BE /* Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5B103D24C2FBEB00E867BE /* Actions.swift */; }; 17 | DC5B103F24C2FBEC00E867BE /* Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5B103D24C2FBEB00E867BE /* Actions.swift */; }; 18 | DC5B104124C2FE2100E867BE /* Translate.gif in Resources */ = {isa = PBXBuildFile; fileRef = DC5B104024C2FE2100E867BE /* Translate.gif */; }; 19 | DC5B104224C2FE2100E867BE /* Translate.gif in Resources */ = {isa = PBXBuildFile; fileRef = DC5B104024C2FE2100E867BE /* Translate.gif */; }; 20 | DCEB56B024C2CCBE004E0CEE /* Tests_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB56AF24C2CCBE004E0CEE /* Tests_iOS.swift */; }; 21 | DCEB56BB24C2CCBE004E0CEE /* Tests_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB56BA24C2CCBE004E0CEE /* Tests_macOS.swift */; }; 22 | DCEB56BD24C2CCBE004E0CEE /* translateApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB569424C2CCBC004E0CEE /* translateApp.swift */; }; 23 | DCEB56BE24C2CCBE004E0CEE /* translateApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB569424C2CCBC004E0CEE /* translateApp.swift */; }; 24 | DCEB56BF24C2CCBE004E0CEE /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB569524C2CCBC004E0CEE /* ContentView.swift */; }; 25 | DCEB56C024C2CCBE004E0CEE /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB569524C2CCBC004E0CEE /* ContentView.swift */; }; 26 | DCEB56C124C2CCBE004E0CEE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DCEB569624C2CCBE004E0CEE /* Assets.xcassets */; }; 27 | DCEB56C224C2CCBE004E0CEE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DCEB569624C2CCBE004E0CEE /* Assets.xcassets */; }; 28 | DCEB56D224C2CD15004E0CEE /* ListeningView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB56D124C2CD15004E0CEE /* ListeningView.swift */; }; 29 | DCEB56D324C2CD15004E0CEE /* ListeningView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB56D124C2CD15004E0CEE /* ListeningView.swift */; }; 30 | DCEB56D524C2D401004E0CEE /* BottomSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB56D424C2D401004E0CEE /* BottomSheet.swift */; }; 31 | DCEB56D624C2D401004E0CEE /* BottomSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB56D424C2D401004E0CEE /* BottomSheet.swift */; }; 32 | DCEB56D824C2D415004E0CEE /* EditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB56D724C2D415004E0CEE /* EditorView.swift */; }; 33 | DCEB56D924C2D415004E0CEE /* EditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCEB56D724C2D415004E0CEE /* EditorView.swift */; }; 34 | /* End PBXBuildFile section */ 35 | 36 | /* Begin PBXContainerItemProxy section */ 37 | DCEB56AC24C2CCBE004E0CEE /* PBXContainerItemProxy */ = { 38 | isa = PBXContainerItemProxy; 39 | containerPortal = DCEB568F24C2CCBC004E0CEE /* Project object */; 40 | proxyType = 1; 41 | remoteGlobalIDString = DCEB569A24C2CCBE004E0CEE; 42 | remoteInfo = "translate (iOS)"; 43 | }; 44 | DCEB56B724C2CCBE004E0CEE /* PBXContainerItemProxy */ = { 45 | isa = PBXContainerItemProxy; 46 | containerPortal = DCEB568F24C2CCBC004E0CEE /* Project object */; 47 | proxyType = 1; 48 | remoteGlobalIDString = DCEB56A224C2CCBE004E0CEE; 49 | remoteInfo = "translate (macOS)"; 50 | }; 51 | /* End PBXContainerItemProxy section */ 52 | 53 | /* Begin PBXFileReference section */ 54 | DC5B103424C2DFEF00E867BE /* CustomTextEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTextEditor.swift; sourceTree = ""; }; 55 | DC5B103724C2E77600E867BE /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; 56 | DC5B103A24C2E7B200E867BE /* TranslationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TranslationView.swift; sourceTree = ""; }; 57 | DC5B103D24C2FBEB00E867BE /* Actions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Actions.swift; sourceTree = ""; }; 58 | DC5B104024C2FE2100E867BE /* Translate.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = Translate.gif; sourceTree = ""; }; 59 | DCEB569424C2CCBC004E0CEE /* translateApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = translateApp.swift; sourceTree = ""; }; 60 | DCEB569524C2CCBC004E0CEE /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 61 | DCEB569624C2CCBE004E0CEE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 62 | DCEB569B24C2CCBE004E0CEE /* translate.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = translate.app; sourceTree = BUILT_PRODUCTS_DIR; }; 63 | DCEB569E24C2CCBE004E0CEE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 64 | DCEB56A324C2CCBE004E0CEE /* translate.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = translate.app; sourceTree = BUILT_PRODUCTS_DIR; }; 65 | DCEB56A524C2CCBE004E0CEE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 66 | DCEB56A624C2CCBE004E0CEE /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = ""; }; 67 | DCEB56AB24C2CCBE004E0CEE /* Tests iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 68 | DCEB56AF24C2CCBE004E0CEE /* Tests_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOS.swift; sourceTree = ""; }; 69 | DCEB56B124C2CCBE004E0CEE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 70 | DCEB56B624C2CCBE004E0CEE /* Tests macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 71 | DCEB56BA24C2CCBE004E0CEE /* Tests_macOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOS.swift; sourceTree = ""; }; 72 | DCEB56BC24C2CCBE004E0CEE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 73 | DCEB56D124C2CD15004E0CEE /* ListeningView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListeningView.swift; sourceTree = ""; }; 74 | DCEB56D424C2D401004E0CEE /* BottomSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomSheet.swift; sourceTree = ""; }; 75 | DCEB56D724C2D415004E0CEE /* EditorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorView.swift; sourceTree = ""; }; 76 | /* End PBXFileReference section */ 77 | 78 | /* Begin PBXFrameworksBuildPhase section */ 79 | DCEB569824C2CCBE004E0CEE /* Frameworks */ = { 80 | isa = PBXFrameworksBuildPhase; 81 | buildActionMask = 2147483647; 82 | files = ( 83 | ); 84 | runOnlyForDeploymentPostprocessing = 0; 85 | }; 86 | DCEB56A024C2CCBE004E0CEE /* Frameworks */ = { 87 | isa = PBXFrameworksBuildPhase; 88 | buildActionMask = 2147483647; 89 | files = ( 90 | ); 91 | runOnlyForDeploymentPostprocessing = 0; 92 | }; 93 | DCEB56A824C2CCBE004E0CEE /* Frameworks */ = { 94 | isa = PBXFrameworksBuildPhase; 95 | buildActionMask = 2147483647; 96 | files = ( 97 | ); 98 | runOnlyForDeploymentPostprocessing = 0; 99 | }; 100 | DCEB56B324C2CCBE004E0CEE /* Frameworks */ = { 101 | isa = PBXFrameworksBuildPhase; 102 | buildActionMask = 2147483647; 103 | files = ( 104 | ); 105 | runOnlyForDeploymentPostprocessing = 0; 106 | }; 107 | /* End PBXFrameworksBuildPhase section */ 108 | 109 | /* Begin PBXGroup section */ 110 | DCEB568E24C2CCBC004E0CEE = { 111 | isa = PBXGroup; 112 | children = ( 113 | DC5B104024C2FE2100E867BE /* Translate.gif */, 114 | DCEB569324C2CCBC004E0CEE /* Shared */, 115 | DCEB569D24C2CCBE004E0CEE /* iOS */, 116 | DCEB56A424C2CCBE004E0CEE /* macOS */, 117 | DCEB56AE24C2CCBE004E0CEE /* Tests iOS */, 118 | DCEB56B924C2CCBE004E0CEE /* Tests macOS */, 119 | DCEB569C24C2CCBE004E0CEE /* Products */, 120 | ); 121 | sourceTree = ""; 122 | }; 123 | DCEB569324C2CCBC004E0CEE /* Shared */ = { 124 | isa = PBXGroup; 125 | children = ( 126 | DCEB569424C2CCBC004E0CEE /* translateApp.swift */, 127 | DCEB569524C2CCBC004E0CEE /* ContentView.swift */, 128 | DCEB569624C2CCBE004E0CEE /* Assets.xcassets */, 129 | DCEB56D124C2CD15004E0CEE /* ListeningView.swift */, 130 | DCEB56D424C2D401004E0CEE /* BottomSheet.swift */, 131 | DCEB56D724C2D415004E0CEE /* EditorView.swift */, 132 | DC5B103424C2DFEF00E867BE /* CustomTextEditor.swift */, 133 | DC5B103724C2E77600E867BE /* HomeView.swift */, 134 | DC5B103A24C2E7B200E867BE /* TranslationView.swift */, 135 | DC5B103D24C2FBEB00E867BE /* Actions.swift */, 136 | ); 137 | path = Shared; 138 | sourceTree = ""; 139 | }; 140 | DCEB569C24C2CCBE004E0CEE /* Products */ = { 141 | isa = PBXGroup; 142 | children = ( 143 | DCEB569B24C2CCBE004E0CEE /* translate.app */, 144 | DCEB56A324C2CCBE004E0CEE /* translate.app */, 145 | DCEB56AB24C2CCBE004E0CEE /* Tests iOS.xctest */, 146 | DCEB56B624C2CCBE004E0CEE /* Tests macOS.xctest */, 147 | ); 148 | name = Products; 149 | sourceTree = ""; 150 | }; 151 | DCEB569D24C2CCBE004E0CEE /* iOS */ = { 152 | isa = PBXGroup; 153 | children = ( 154 | DCEB569E24C2CCBE004E0CEE /* Info.plist */, 155 | ); 156 | path = iOS; 157 | sourceTree = ""; 158 | }; 159 | DCEB56A424C2CCBE004E0CEE /* macOS */ = { 160 | isa = PBXGroup; 161 | children = ( 162 | DCEB56A524C2CCBE004E0CEE /* Info.plist */, 163 | DCEB56A624C2CCBE004E0CEE /* macOS.entitlements */, 164 | ); 165 | path = macOS; 166 | sourceTree = ""; 167 | }; 168 | DCEB56AE24C2CCBE004E0CEE /* Tests iOS */ = { 169 | isa = PBXGroup; 170 | children = ( 171 | DCEB56AF24C2CCBE004E0CEE /* Tests_iOS.swift */, 172 | DCEB56B124C2CCBE004E0CEE /* Info.plist */, 173 | ); 174 | path = "Tests iOS"; 175 | sourceTree = ""; 176 | }; 177 | DCEB56B924C2CCBE004E0CEE /* Tests macOS */ = { 178 | isa = PBXGroup; 179 | children = ( 180 | DCEB56BA24C2CCBE004E0CEE /* Tests_macOS.swift */, 181 | DCEB56BC24C2CCBE004E0CEE /* Info.plist */, 182 | ); 183 | path = "Tests macOS"; 184 | sourceTree = ""; 185 | }; 186 | /* End PBXGroup section */ 187 | 188 | /* Begin PBXNativeTarget section */ 189 | DCEB569A24C2CCBE004E0CEE /* translate (iOS) */ = { 190 | isa = PBXNativeTarget; 191 | buildConfigurationList = DCEB56C524C2CCBE004E0CEE /* Build configuration list for PBXNativeTarget "translate (iOS)" */; 192 | buildPhases = ( 193 | DCEB569724C2CCBE004E0CEE /* Sources */, 194 | DCEB569824C2CCBE004E0CEE /* Frameworks */, 195 | DCEB569924C2CCBE004E0CEE /* Resources */, 196 | ); 197 | buildRules = ( 198 | ); 199 | dependencies = ( 200 | ); 201 | name = "translate (iOS)"; 202 | productName = "translate (iOS)"; 203 | productReference = DCEB569B24C2CCBE004E0CEE /* translate.app */; 204 | productType = "com.apple.product-type.application"; 205 | }; 206 | DCEB56A224C2CCBE004E0CEE /* translate (macOS) */ = { 207 | isa = PBXNativeTarget; 208 | buildConfigurationList = DCEB56C824C2CCBE004E0CEE /* Build configuration list for PBXNativeTarget "translate (macOS)" */; 209 | buildPhases = ( 210 | DCEB569F24C2CCBE004E0CEE /* Sources */, 211 | DCEB56A024C2CCBE004E0CEE /* Frameworks */, 212 | DCEB56A124C2CCBE004E0CEE /* Resources */, 213 | ); 214 | buildRules = ( 215 | ); 216 | dependencies = ( 217 | ); 218 | name = "translate (macOS)"; 219 | productName = "translate (macOS)"; 220 | productReference = DCEB56A324C2CCBE004E0CEE /* translate.app */; 221 | productType = "com.apple.product-type.application"; 222 | }; 223 | DCEB56AA24C2CCBE004E0CEE /* Tests iOS */ = { 224 | isa = PBXNativeTarget; 225 | buildConfigurationList = DCEB56CB24C2CCBE004E0CEE /* Build configuration list for PBXNativeTarget "Tests iOS" */; 226 | buildPhases = ( 227 | DCEB56A724C2CCBE004E0CEE /* Sources */, 228 | DCEB56A824C2CCBE004E0CEE /* Frameworks */, 229 | DCEB56A924C2CCBE004E0CEE /* Resources */, 230 | ); 231 | buildRules = ( 232 | ); 233 | dependencies = ( 234 | DCEB56AD24C2CCBE004E0CEE /* PBXTargetDependency */, 235 | ); 236 | name = "Tests iOS"; 237 | productName = "Tests iOS"; 238 | productReference = DCEB56AB24C2CCBE004E0CEE /* Tests iOS.xctest */; 239 | productType = "com.apple.product-type.bundle.ui-testing"; 240 | }; 241 | DCEB56B524C2CCBE004E0CEE /* Tests macOS */ = { 242 | isa = PBXNativeTarget; 243 | buildConfigurationList = DCEB56CE24C2CCBE004E0CEE /* Build configuration list for PBXNativeTarget "Tests macOS" */; 244 | buildPhases = ( 245 | DCEB56B224C2CCBE004E0CEE /* Sources */, 246 | DCEB56B324C2CCBE004E0CEE /* Frameworks */, 247 | DCEB56B424C2CCBE004E0CEE /* Resources */, 248 | ); 249 | buildRules = ( 250 | ); 251 | dependencies = ( 252 | DCEB56B824C2CCBE004E0CEE /* PBXTargetDependency */, 253 | ); 254 | name = "Tests macOS"; 255 | productName = "Tests macOS"; 256 | productReference = DCEB56B624C2CCBE004E0CEE /* Tests macOS.xctest */; 257 | productType = "com.apple.product-type.bundle.ui-testing"; 258 | }; 259 | /* End PBXNativeTarget section */ 260 | 261 | /* Begin PBXProject section */ 262 | DCEB568F24C2CCBC004E0CEE /* Project object */ = { 263 | isa = PBXProject; 264 | attributes = { 265 | LastSwiftUpdateCheck = 1200; 266 | LastUpgradeCheck = 1200; 267 | TargetAttributes = { 268 | DCEB569A24C2CCBE004E0CEE = { 269 | CreatedOnToolsVersion = 12.0; 270 | }; 271 | DCEB56A224C2CCBE004E0CEE = { 272 | CreatedOnToolsVersion = 12.0; 273 | }; 274 | DCEB56AA24C2CCBE004E0CEE = { 275 | CreatedOnToolsVersion = 12.0; 276 | TestTargetID = DCEB569A24C2CCBE004E0CEE; 277 | }; 278 | DCEB56B524C2CCBE004E0CEE = { 279 | CreatedOnToolsVersion = 12.0; 280 | TestTargetID = DCEB56A224C2CCBE004E0CEE; 281 | }; 282 | }; 283 | }; 284 | buildConfigurationList = DCEB569224C2CCBC004E0CEE /* Build configuration list for PBXProject "translate" */; 285 | compatibilityVersion = "Xcode 9.3"; 286 | developmentRegion = en; 287 | hasScannedForEncodings = 0; 288 | knownRegions = ( 289 | en, 290 | Base, 291 | ); 292 | mainGroup = DCEB568E24C2CCBC004E0CEE; 293 | productRefGroup = DCEB569C24C2CCBE004E0CEE /* Products */; 294 | projectDirPath = ""; 295 | projectRoot = ""; 296 | targets = ( 297 | DCEB569A24C2CCBE004E0CEE /* translate (iOS) */, 298 | DCEB56A224C2CCBE004E0CEE /* translate (macOS) */, 299 | DCEB56AA24C2CCBE004E0CEE /* Tests iOS */, 300 | DCEB56B524C2CCBE004E0CEE /* Tests macOS */, 301 | ); 302 | }; 303 | /* End PBXProject section */ 304 | 305 | /* Begin PBXResourcesBuildPhase section */ 306 | DCEB569924C2CCBE004E0CEE /* Resources */ = { 307 | isa = PBXResourcesBuildPhase; 308 | buildActionMask = 2147483647; 309 | files = ( 310 | DCEB56C124C2CCBE004E0CEE /* Assets.xcassets in Resources */, 311 | DC5B104124C2FE2100E867BE /* Translate.gif in Resources */, 312 | ); 313 | runOnlyForDeploymentPostprocessing = 0; 314 | }; 315 | DCEB56A124C2CCBE004E0CEE /* Resources */ = { 316 | isa = PBXResourcesBuildPhase; 317 | buildActionMask = 2147483647; 318 | files = ( 319 | DCEB56C224C2CCBE004E0CEE /* Assets.xcassets in Resources */, 320 | DC5B104224C2FE2100E867BE /* Translate.gif in Resources */, 321 | ); 322 | runOnlyForDeploymentPostprocessing = 0; 323 | }; 324 | DCEB56A924C2CCBE004E0CEE /* Resources */ = { 325 | isa = PBXResourcesBuildPhase; 326 | buildActionMask = 2147483647; 327 | files = ( 328 | ); 329 | runOnlyForDeploymentPostprocessing = 0; 330 | }; 331 | DCEB56B424C2CCBE004E0CEE /* Resources */ = { 332 | isa = PBXResourcesBuildPhase; 333 | buildActionMask = 2147483647; 334 | files = ( 335 | ); 336 | runOnlyForDeploymentPostprocessing = 0; 337 | }; 338 | /* End PBXResourcesBuildPhase section */ 339 | 340 | /* Begin PBXSourcesBuildPhase section */ 341 | DCEB569724C2CCBE004E0CEE /* Sources */ = { 342 | isa = PBXSourcesBuildPhase; 343 | buildActionMask = 2147483647; 344 | files = ( 345 | DC5B103524C2DFEF00E867BE /* CustomTextEditor.swift in Sources */, 346 | DC5B103824C2E77600E867BE /* HomeView.swift in Sources */, 347 | DC5B103B24C2E7B200E867BE /* TranslationView.swift in Sources */, 348 | DCEB56BF24C2CCBE004E0CEE /* ContentView.swift in Sources */, 349 | DCEB56BD24C2CCBE004E0CEE /* translateApp.swift in Sources */, 350 | DCEB56D524C2D401004E0CEE /* BottomSheet.swift in Sources */, 351 | DC5B103E24C2FBEB00E867BE /* Actions.swift in Sources */, 352 | DCEB56D224C2CD15004E0CEE /* ListeningView.swift in Sources */, 353 | DCEB56D824C2D415004E0CEE /* EditorView.swift in Sources */, 354 | ); 355 | runOnlyForDeploymentPostprocessing = 0; 356 | }; 357 | DCEB569F24C2CCBE004E0CEE /* Sources */ = { 358 | isa = PBXSourcesBuildPhase; 359 | buildActionMask = 2147483647; 360 | files = ( 361 | DC5B103624C2DFEF00E867BE /* CustomTextEditor.swift in Sources */, 362 | DC5B103924C2E77600E867BE /* HomeView.swift in Sources */, 363 | DC5B103C24C2E7B200E867BE /* TranslationView.swift in Sources */, 364 | DCEB56C024C2CCBE004E0CEE /* ContentView.swift in Sources */, 365 | DCEB56BE24C2CCBE004E0CEE /* translateApp.swift in Sources */, 366 | DCEB56D624C2D401004E0CEE /* BottomSheet.swift in Sources */, 367 | DC5B103F24C2FBEC00E867BE /* Actions.swift in Sources */, 368 | DCEB56D324C2CD15004E0CEE /* ListeningView.swift in Sources */, 369 | DCEB56D924C2D415004E0CEE /* EditorView.swift in Sources */, 370 | ); 371 | runOnlyForDeploymentPostprocessing = 0; 372 | }; 373 | DCEB56A724C2CCBE004E0CEE /* Sources */ = { 374 | isa = PBXSourcesBuildPhase; 375 | buildActionMask = 2147483647; 376 | files = ( 377 | DCEB56B024C2CCBE004E0CEE /* Tests_iOS.swift in Sources */, 378 | ); 379 | runOnlyForDeploymentPostprocessing = 0; 380 | }; 381 | DCEB56B224C2CCBE004E0CEE /* Sources */ = { 382 | isa = PBXSourcesBuildPhase; 383 | buildActionMask = 2147483647; 384 | files = ( 385 | DCEB56BB24C2CCBE004E0CEE /* Tests_macOS.swift in Sources */, 386 | ); 387 | runOnlyForDeploymentPostprocessing = 0; 388 | }; 389 | /* End PBXSourcesBuildPhase section */ 390 | 391 | /* Begin PBXTargetDependency section */ 392 | DCEB56AD24C2CCBE004E0CEE /* PBXTargetDependency */ = { 393 | isa = PBXTargetDependency; 394 | target = DCEB569A24C2CCBE004E0CEE /* translate (iOS) */; 395 | targetProxy = DCEB56AC24C2CCBE004E0CEE /* PBXContainerItemProxy */; 396 | }; 397 | DCEB56B824C2CCBE004E0CEE /* PBXTargetDependency */ = { 398 | isa = PBXTargetDependency; 399 | target = DCEB56A224C2CCBE004E0CEE /* translate (macOS) */; 400 | targetProxy = DCEB56B724C2CCBE004E0CEE /* PBXContainerItemProxy */; 401 | }; 402 | /* End PBXTargetDependency section */ 403 | 404 | /* Begin XCBuildConfiguration section */ 405 | DCEB56C324C2CCBE004E0CEE /* Debug */ = { 406 | isa = XCBuildConfiguration; 407 | buildSettings = { 408 | ALWAYS_SEARCH_USER_PATHS = NO; 409 | CLANG_ANALYZER_NONNULL = YES; 410 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 411 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 412 | CLANG_CXX_LIBRARY = "libc++"; 413 | CLANG_ENABLE_MODULES = YES; 414 | CLANG_ENABLE_OBJC_ARC = YES; 415 | CLANG_ENABLE_OBJC_WEAK = YES; 416 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 417 | CLANG_WARN_BOOL_CONVERSION = YES; 418 | CLANG_WARN_COMMA = YES; 419 | CLANG_WARN_CONSTANT_CONVERSION = YES; 420 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 421 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 422 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 423 | CLANG_WARN_EMPTY_BODY = YES; 424 | CLANG_WARN_ENUM_CONVERSION = YES; 425 | CLANG_WARN_INFINITE_RECURSION = YES; 426 | CLANG_WARN_INT_CONVERSION = YES; 427 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 428 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 429 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 430 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 431 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 432 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 433 | CLANG_WARN_STRICT_PROTOTYPES = YES; 434 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 435 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 436 | CLANG_WARN_UNREACHABLE_CODE = YES; 437 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 438 | COPY_PHASE_STRIP = NO; 439 | DEBUG_INFORMATION_FORMAT = dwarf; 440 | ENABLE_STRICT_OBJC_MSGSEND = YES; 441 | ENABLE_TESTABILITY = YES; 442 | GCC_C_LANGUAGE_STANDARD = gnu11; 443 | GCC_DYNAMIC_NO_PIC = NO; 444 | GCC_NO_COMMON_BLOCKS = YES; 445 | GCC_OPTIMIZATION_LEVEL = 0; 446 | GCC_PREPROCESSOR_DEFINITIONS = ( 447 | "DEBUG=1", 448 | "$(inherited)", 449 | ); 450 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 451 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 452 | GCC_WARN_UNDECLARED_SELECTOR = YES; 453 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 454 | GCC_WARN_UNUSED_FUNCTION = YES; 455 | GCC_WARN_UNUSED_VARIABLE = YES; 456 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 457 | MTL_FAST_MATH = YES; 458 | ONLY_ACTIVE_ARCH = YES; 459 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 460 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 461 | }; 462 | name = Debug; 463 | }; 464 | DCEB56C424C2CCBE004E0CEE /* Release */ = { 465 | isa = XCBuildConfiguration; 466 | buildSettings = { 467 | ALWAYS_SEARCH_USER_PATHS = NO; 468 | CLANG_ANALYZER_NONNULL = YES; 469 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 470 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 471 | CLANG_CXX_LIBRARY = "libc++"; 472 | CLANG_ENABLE_MODULES = YES; 473 | CLANG_ENABLE_OBJC_ARC = YES; 474 | CLANG_ENABLE_OBJC_WEAK = YES; 475 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 476 | CLANG_WARN_BOOL_CONVERSION = YES; 477 | CLANG_WARN_COMMA = YES; 478 | CLANG_WARN_CONSTANT_CONVERSION = YES; 479 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 480 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 481 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 482 | CLANG_WARN_EMPTY_BODY = YES; 483 | CLANG_WARN_ENUM_CONVERSION = YES; 484 | CLANG_WARN_INFINITE_RECURSION = YES; 485 | CLANG_WARN_INT_CONVERSION = YES; 486 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 487 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 488 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 489 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 490 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 491 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 492 | CLANG_WARN_STRICT_PROTOTYPES = YES; 493 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 494 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 495 | CLANG_WARN_UNREACHABLE_CODE = YES; 496 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 497 | COPY_PHASE_STRIP = NO; 498 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 499 | ENABLE_NS_ASSERTIONS = NO; 500 | ENABLE_STRICT_OBJC_MSGSEND = YES; 501 | GCC_C_LANGUAGE_STANDARD = gnu11; 502 | GCC_NO_COMMON_BLOCKS = YES; 503 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 504 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 505 | GCC_WARN_UNDECLARED_SELECTOR = YES; 506 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 507 | GCC_WARN_UNUSED_FUNCTION = YES; 508 | GCC_WARN_UNUSED_VARIABLE = YES; 509 | MTL_ENABLE_DEBUG_INFO = NO; 510 | MTL_FAST_MATH = YES; 511 | SWIFT_COMPILATION_MODE = wholemodule; 512 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 513 | }; 514 | name = Release; 515 | }; 516 | DCEB56C624C2CCBE004E0CEE /* Debug */ = { 517 | isa = XCBuildConfiguration; 518 | buildSettings = { 519 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 520 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 521 | CODE_SIGN_STYLE = Automatic; 522 | DEVELOPMENT_TEAM = MLXZLWU95B; 523 | ENABLE_PREVIEWS = YES; 524 | INFOPLIST_FILE = iOS/Info.plist; 525 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 526 | LD_RUNPATH_SEARCH_PATHS = ( 527 | "$(inherited)", 528 | "@executable_path/Frameworks", 529 | ); 530 | PRODUCT_BUNDLE_IDENTIFIER = svj.translate.translate; 531 | PRODUCT_NAME = translate; 532 | SDKROOT = iphoneos; 533 | SWIFT_VERSION = 5.0; 534 | TARGETED_DEVICE_FAMILY = "1,2"; 535 | }; 536 | name = Debug; 537 | }; 538 | DCEB56C724C2CCBE004E0CEE /* Release */ = { 539 | isa = XCBuildConfiguration; 540 | buildSettings = { 541 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 542 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 543 | CODE_SIGN_STYLE = Automatic; 544 | DEVELOPMENT_TEAM = MLXZLWU95B; 545 | ENABLE_PREVIEWS = YES; 546 | INFOPLIST_FILE = iOS/Info.plist; 547 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 548 | LD_RUNPATH_SEARCH_PATHS = ( 549 | "$(inherited)", 550 | "@executable_path/Frameworks", 551 | ); 552 | PRODUCT_BUNDLE_IDENTIFIER = svj.translate.translate; 553 | PRODUCT_NAME = translate; 554 | SDKROOT = iphoneos; 555 | SWIFT_VERSION = 5.0; 556 | TARGETED_DEVICE_FAMILY = "1,2"; 557 | VALIDATE_PRODUCT = YES; 558 | }; 559 | name = Release; 560 | }; 561 | DCEB56C924C2CCBE004E0CEE /* Debug */ = { 562 | isa = XCBuildConfiguration; 563 | buildSettings = { 564 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 565 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 566 | CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements; 567 | CODE_SIGN_STYLE = Automatic; 568 | COMBINE_HIDPI_IMAGES = YES; 569 | DEVELOPMENT_TEAM = MLXZLWU95B; 570 | ENABLE_HARDENED_RUNTIME = YES; 571 | ENABLE_PREVIEWS = YES; 572 | INFOPLIST_FILE = macOS/Info.plist; 573 | LD_RUNPATH_SEARCH_PATHS = ( 574 | "$(inherited)", 575 | "@executable_path/../Frameworks", 576 | ); 577 | MACOSX_DEPLOYMENT_TARGET = 10.16; 578 | PRODUCT_BUNDLE_IDENTIFIER = svj.translate.translate; 579 | PRODUCT_NAME = translate; 580 | SDKROOT = macosx; 581 | SWIFT_VERSION = 5.0; 582 | }; 583 | name = Debug; 584 | }; 585 | DCEB56CA24C2CCBE004E0CEE /* Release */ = { 586 | isa = XCBuildConfiguration; 587 | buildSettings = { 588 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 589 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 590 | CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements; 591 | CODE_SIGN_STYLE = Automatic; 592 | COMBINE_HIDPI_IMAGES = YES; 593 | DEVELOPMENT_TEAM = MLXZLWU95B; 594 | ENABLE_HARDENED_RUNTIME = YES; 595 | ENABLE_PREVIEWS = YES; 596 | INFOPLIST_FILE = macOS/Info.plist; 597 | LD_RUNPATH_SEARCH_PATHS = ( 598 | "$(inherited)", 599 | "@executable_path/../Frameworks", 600 | ); 601 | MACOSX_DEPLOYMENT_TARGET = 10.16; 602 | PRODUCT_BUNDLE_IDENTIFIER = svj.translate.translate; 603 | PRODUCT_NAME = translate; 604 | SDKROOT = macosx; 605 | SWIFT_VERSION = 5.0; 606 | }; 607 | name = Release; 608 | }; 609 | DCEB56CC24C2CCBE004E0CEE /* Debug */ = { 610 | isa = XCBuildConfiguration; 611 | buildSettings = { 612 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 613 | CODE_SIGN_STYLE = Automatic; 614 | DEVELOPMENT_TEAM = MLXZLWU95B; 615 | INFOPLIST_FILE = "Tests iOS/Info.plist"; 616 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 617 | LD_RUNPATH_SEARCH_PATHS = ( 618 | "$(inherited)", 619 | "@executable_path/Frameworks", 620 | "@loader_path/Frameworks", 621 | ); 622 | PRODUCT_BUNDLE_IDENTIFIER = "svj.translate.Tests-iOS"; 623 | PRODUCT_NAME = "$(TARGET_NAME)"; 624 | SDKROOT = iphoneos; 625 | SWIFT_VERSION = 5.0; 626 | TARGETED_DEVICE_FAMILY = "1,2"; 627 | TEST_TARGET_NAME = "translate (iOS)"; 628 | }; 629 | name = Debug; 630 | }; 631 | DCEB56CD24C2CCBE004E0CEE /* Release */ = { 632 | isa = XCBuildConfiguration; 633 | buildSettings = { 634 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 635 | CODE_SIGN_STYLE = Automatic; 636 | DEVELOPMENT_TEAM = MLXZLWU95B; 637 | INFOPLIST_FILE = "Tests iOS/Info.plist"; 638 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 639 | LD_RUNPATH_SEARCH_PATHS = ( 640 | "$(inherited)", 641 | "@executable_path/Frameworks", 642 | "@loader_path/Frameworks", 643 | ); 644 | PRODUCT_BUNDLE_IDENTIFIER = "svj.translate.Tests-iOS"; 645 | PRODUCT_NAME = "$(TARGET_NAME)"; 646 | SDKROOT = iphoneos; 647 | SWIFT_VERSION = 5.0; 648 | TARGETED_DEVICE_FAMILY = "1,2"; 649 | TEST_TARGET_NAME = "translate (iOS)"; 650 | VALIDATE_PRODUCT = YES; 651 | }; 652 | name = Release; 653 | }; 654 | DCEB56CF24C2CCBE004E0CEE /* Debug */ = { 655 | isa = XCBuildConfiguration; 656 | buildSettings = { 657 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 658 | CODE_SIGN_STYLE = Automatic; 659 | COMBINE_HIDPI_IMAGES = YES; 660 | DEVELOPMENT_TEAM = MLXZLWU95B; 661 | INFOPLIST_FILE = "Tests macOS/Info.plist"; 662 | LD_RUNPATH_SEARCH_PATHS = ( 663 | "$(inherited)", 664 | "@executable_path/../Frameworks", 665 | "@loader_path/../Frameworks", 666 | ); 667 | MACOSX_DEPLOYMENT_TARGET = 10.15; 668 | PRODUCT_BUNDLE_IDENTIFIER = "svj.translate.Tests-macOS"; 669 | PRODUCT_NAME = "$(TARGET_NAME)"; 670 | SDKROOT = macosx; 671 | SWIFT_VERSION = 5.0; 672 | TEST_TARGET_NAME = "translate (macOS)"; 673 | }; 674 | name = Debug; 675 | }; 676 | DCEB56D024C2CCBE004E0CEE /* Release */ = { 677 | isa = XCBuildConfiguration; 678 | buildSettings = { 679 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 680 | CODE_SIGN_STYLE = Automatic; 681 | COMBINE_HIDPI_IMAGES = YES; 682 | DEVELOPMENT_TEAM = MLXZLWU95B; 683 | INFOPLIST_FILE = "Tests macOS/Info.plist"; 684 | LD_RUNPATH_SEARCH_PATHS = ( 685 | "$(inherited)", 686 | "@executable_path/../Frameworks", 687 | "@loader_path/../Frameworks", 688 | ); 689 | MACOSX_DEPLOYMENT_TARGET = 10.15; 690 | PRODUCT_BUNDLE_IDENTIFIER = "svj.translate.Tests-macOS"; 691 | PRODUCT_NAME = "$(TARGET_NAME)"; 692 | SDKROOT = macosx; 693 | SWIFT_VERSION = 5.0; 694 | TEST_TARGET_NAME = "translate (macOS)"; 695 | }; 696 | name = Release; 697 | }; 698 | /* End XCBuildConfiguration section */ 699 | 700 | /* Begin XCConfigurationList section */ 701 | DCEB569224C2CCBC004E0CEE /* Build configuration list for PBXProject "translate" */ = { 702 | isa = XCConfigurationList; 703 | buildConfigurations = ( 704 | DCEB56C324C2CCBE004E0CEE /* Debug */, 705 | DCEB56C424C2CCBE004E0CEE /* Release */, 706 | ); 707 | defaultConfigurationIsVisible = 0; 708 | defaultConfigurationName = Release; 709 | }; 710 | DCEB56C524C2CCBE004E0CEE /* Build configuration list for PBXNativeTarget "translate (iOS)" */ = { 711 | isa = XCConfigurationList; 712 | buildConfigurations = ( 713 | DCEB56C624C2CCBE004E0CEE /* Debug */, 714 | DCEB56C724C2CCBE004E0CEE /* Release */, 715 | ); 716 | defaultConfigurationIsVisible = 0; 717 | defaultConfigurationName = Release; 718 | }; 719 | DCEB56C824C2CCBE004E0CEE /* Build configuration list for PBXNativeTarget "translate (macOS)" */ = { 720 | isa = XCConfigurationList; 721 | buildConfigurations = ( 722 | DCEB56C924C2CCBE004E0CEE /* Debug */, 723 | DCEB56CA24C2CCBE004E0CEE /* Release */, 724 | ); 725 | defaultConfigurationIsVisible = 0; 726 | defaultConfigurationName = Release; 727 | }; 728 | DCEB56CB24C2CCBE004E0CEE /* Build configuration list for PBXNativeTarget "Tests iOS" */ = { 729 | isa = XCConfigurationList; 730 | buildConfigurations = ( 731 | DCEB56CC24C2CCBE004E0CEE /* Debug */, 732 | DCEB56CD24C2CCBE004E0CEE /* Release */, 733 | ); 734 | defaultConfigurationIsVisible = 0; 735 | defaultConfigurationName = Release; 736 | }; 737 | DCEB56CE24C2CCBE004E0CEE /* Build configuration list for PBXNativeTarget "Tests macOS" */ = { 738 | isa = XCConfigurationList; 739 | buildConfigurations = ( 740 | DCEB56CF24C2CCBE004E0CEE /* Debug */, 741 | DCEB56D024C2CCBE004E0CEE /* Release */, 742 | ); 743 | defaultConfigurationIsVisible = 0; 744 | defaultConfigurationName = Release; 745 | }; 746 | /* End XCConfigurationList section */ 747 | }; 748 | rootObject = DCEB568F24C2CCBC004E0CEE /* Project object */; 749 | } 750 | -------------------------------------------------------------------------------- /translate.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /translate.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /translate.xcodeproj/xcuserdata/shivamvijaywargiya.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /translate.xcodeproj/xcuserdata/shivamvijaywargiya.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | translate (iOS).xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | translate (macOS).xcscheme_^#shared#^_ 13 | 14 | orderHint 15 | 1 16 | 17 | 18 | 19 | 20 | --------------------------------------------------------------------------------