@@ -33,7 +33,7 @@ class HomeController: NSViewController {
3333 @IBOutlet weak var stringsFileNameTextField : NSTextField !
3434 @IBOutlet weak var insertKeyTextField : NSTextField !
3535
36-
36+ /// 本地地址,存 error.log, strings的
3737 var localPath : URL ?
3838 let csvHelper : CSVHelper = CSVHelper ( )
3939 /// 自动插入或者更新 strings
@@ -114,13 +114,17 @@ class HomeController: NSViewController {
114114 savePathField. stringValue = url. absoluteString. urlDecoded ( ) . removeFileHeader ( )
115115 }
116116 @IBAction func parseAutoInsertButtonTapped( _ sender: NSButton ) {
117+ // TODO: - LWF: 待优化, 将英文也添加到结果 strings 中
117118 // 检查合法性
118119 let insertKey = self . insertKeyTextField. stringValue. removeWhitespace ( )
119120 guard !insertKey. isEmpty else {
120121 showAlert ( title: " 请填写插入key " )
121122 return
122123 }
123- guard let url = openPanel. url else {
124+ guard localPath != nil else {
125+ showAlert ( title: Localized . pleaseSetTheStorageDirectoryFirst)
126+ return }
127+ guard openPanel. url != nil else {
124128 showAlert ( title: Localized . failedToOpenFile)
125129 return
126130 }
@@ -132,7 +136,19 @@ class HomeController: NSViewController {
132136 // 开始对其他语言插入
133137 _ = self . autoInsertStrings ( paths: stringsFilePaths, after: insertKey)
134138 } catch let error as HandleError {
135- showAlert ( title: " 自动导入异常 " , msg: error. message)
139+ let msg = error. message
140+ Log . shared. error ( msg)
141+ if let path = localPath {
142+ Log . shared. save ( basePath: path. absoluteString. urlDecoded ( ) . removeFileHeader ( ) )
143+ let result = showAlert ( title: " 自动导入异常 " , msg: msg, doneTitle: " 去检查错误日志 " )
144+ if ( result) {
145+ NSWorkspace . shared. open ( path)
146+ } else {
147+ debugPrint ( " 打开失败: \( path. absoluteString) " )
148+ }
149+ } else {
150+ showAlert ( title: " 自动导入异常 " , msg: msg) ;
151+ }
136152 } catch {
137153
138154 }
@@ -259,7 +275,7 @@ extension HomeController {
259275 if key. isEmpty {
260276 Log . shared. error ( " \( value) 缺少对应key " )
261277 }
262- var result = " \" \( key) \" = \" \( Self . replaceSpecial ( value) ) \" ; "
278+ var result = " \" \( Self . replaceSpecial ( key) ) \" = \" \( Self . replaceSpecial ( value) ) \" ; "
263279 if ( descr. count > 0 ) {
264280 let describeArray = descr. components ( separatedBy: " \n " )
265281 var describe = " "
@@ -423,12 +439,7 @@ extension HomeController {
423439 /// 删除单个语言文件
424440 private func deleteSingleLanguageFile( paths: [ String ] ) {
425441 for item in paths {
426- var pathStr = item
427- if #available( macOS 13 . 0 , * ) {
428- pathStr = item. replacing ( " / \( localizableFileName) " , with: " " , maxReplacements: 1 )
429- } else {
430- showAlert ( title: " macOS 版本过低,应该大于 13.0 " )
431- }
442+ let pathStr = item. replacingOccurrences ( of: " / \( localizableFileName) " , with: " " )
432443 guard !pathStr. isEmpty else {
433444 return
434445 }
@@ -489,27 +500,50 @@ extension HomeController {
489500 if #available( macOS 13 . 0 , * ) {
490501 var successPath : [ Path ] = [ ]
491502 var errorMsg = " 自动解析插入失败 \n "
503+ // 先创建 LocalizableAll.strings 文件,记录每个语言结果,如果全部成功,则删除。
504+ var textFile : TextFile !
505+ if let localizalbleAllFileURL = localPath? . appending ( component: " AutoInsertLocalizableResult.strings " ) ,
506+ let path = Path ( url: localizalbleAllFileURL) {
507+ if path. exists {
508+ try path. deleteFile ( )
509+ }
510+ try ? path. createFile ( )
511+ textFile = TextFile ( path: path)
512+ try " // 自动插入多语言处理结果 \n " |>> textFile
513+ }
492514 // 真正插入
493515 for path in paths {
494516 let languageName = path. parent. fileNameWithoutExtension
517+ var stringsFileText = " \n \n // MARK: - \( languageName) " ;
495518 if let aimFileModel = result. models. first ( where: { $0. languageName. lowercased ( ) == languageName. lowercased ( ) } ) {
496- if let error = updateStringsHelper. insertOtherStrings ( aimFileModel, to: path. rawValue, after: key) {
519+ if let error = updateStringsHelper. insertOtherStrings ( aimFileModel, to: path. rawValue, after: key, scopeComment : self . commentsTextField . stringValue . removeWhitespace ( ) ) {
497520 errorMsg += error. message + " \n "
521+ stringsFileText += " \n // 自动插入失败: \n // \( error. message) \n "
522+ let stringsText = stringsText ( aimFileModel)
523+ stringsFileText += " \n \( stringsText) "
498524 } else {
499525 successPath. append ( path)
526+ stringsFileText += " \n // 自动插入成功, 请前往 git 版本控制检查。 "
500527 }
501528 } else {
502529 // 没有找到对应多语言列
503- errorMsg += " 在csv 中没有找到对应语种 \( languageName) 翻译 \n "
530+ let msg = " 在csv 中没有找到对应语种 \( languageName) 翻译 \n "
531+ errorMsg += msg
532+ stringsFileText += " \n // 自动插入失败: \( msg) "
504533 }
534+ try stringsFileText |>> textFile
505535 }
536+ var shouldOpenFile = false ;
506537 if successPath. isEmpty {
507- showAlert ( title: " 所有多语言插入失败,手动处理 " , msg: errorMsg , doneTitle: " 确定 " )
538+ shouldOpenFile = showAlert ( title: " 所有多语言插入失败,请手动处理 " , msg: " 请前往AutoInsertLocalizableResult.strings文件查看 " , doneTitle: " 去处理 " )
508539 } else if successPath. count == paths. count {
509540 // 所有都成功
510- showAlert ( title: " 所有多语言插入成功 " , doneTitle: " 确定 " )
541+ shouldOpenFile = showAlert ( title: " 所有多语言插入成功 " , doneTitle: " 确定 " )
511542 } else {
512- showAlert ( title: " 部分多语言插入成功,手动处理 " , msg: errorMsg, doneTitle: " 确定 " ) ;
543+ shouldOpenFile = showAlert ( title: " 多语言插入部分成功,部分失败,请手动处理 " , msg: " 请前往AutoInsertLocalizableResult.strings文件查看 " , doneTitle: " 去处理 " ) ;
544+ }
545+ if shouldOpenFile, let path = localPath {
546+ NSWorkspace . shared. open ( path)
513547 }
514548 return successPath
515549 } else {
@@ -519,10 +553,21 @@ extension HomeController {
519553 } catch let error as HandleError {
520554 showAlert ( title: " 读取CSV文件失败 error: \( error. message) " )
521555 } catch {
522- showAlert ( title: " 读取CSV文件失败 " )
556+ showAlert ( title: " 读取CSV文件失败 error: \( error . localizedDescription ) " )
523557 }
524558 return [ ]
525559 }
560+ func stringsText( _ fileModel: LanguageFileModel ) -> String {
561+ let strings = fileModel. items. map { item in
562+ var text = " "
563+ if let desc = item. desc, !desc. isEmpty {
564+ text += " // \( desc) \n "
565+ }
566+ text += " \" \( Self . replaceSpecial ( item. key) ) \" = \" \( Self . replaceSpecial ( item. value) ) \" "
567+ return text
568+ }
569+ return strings. joined ( separator: " \n " )
570+ }
526571}
527572
528573extension HomeController {
@@ -559,6 +604,12 @@ extension HomeController {
559604
560605extension HomeController {
561606
607+ /// 展示弹窗
608+ /// - Parameters:
609+ /// - title: 标题
610+ /// - msg: 文本
611+ /// - doneTitle: 其他按钮标题,如果为 nil,则只展示取消按钮。
612+ /// - Returns: 返回是否选中了其他按钮。
562613 @discardableResult
563614 func showAlert( title: String , msg: String ? = nil , doneTitle: String ? = nil ) -> Bool {
564615 let alert = NSAlert . init ( )
0 commit comments