update strings script

pull/1023/head
Ryan ZHAO 9 months ago
parent aaea97fbdb
commit 770a770e8c

@ -12,7 +12,7 @@
import Foundation import Foundation
typealias JSON = [String:Any] typealias JSON = [String:AnyHashable]
extension ProjectState { extension ProjectState {
/// Adding `// stringlint:disable` to the top of a source file (before imports) or after a string will mean that file/line gets /// Adding `// stringlint:disable` to the top of a source file (before imports) or after a string will mean that file/line gets
@ -242,27 +242,25 @@ enum ScriptAction: String {
var updatedInfoPlistJSON: JSON = projectState.infoPlistLocalizationFile.json var updatedInfoPlistJSON: JSON = projectState.infoPlistLocalizationFile.json
ProjectState.permissionStrings.forEach { key in ProjectState.permissionStrings.forEach { key in
guard let nsKey: String = ProjectState.permissionStringsMap[key] else { return } guard let nsKey: String = ProjectState.permissionStringsMap[key] else { return }
var updatedStrings: JSON = projectState.localizationFile.strings[key] as! JSON if
if let localizations: JSON = updatedStrings["localizations"] as? JSON { let stringsData: Data = try? JSONSerialization.data(withJSONObject: (projectState.localizationFile.strings[key] as! JSON), options: [ .fragmentsAllowed ]),
var updatedLocalizations: JSON = localizations let stringsJSONString: String = String(data: stringsData, encoding: .utf8)
localizations.forEach { locale , stringUint in {
var updatedStringUnit: JSON = stringUint as! JSON let updatedStringsJSONString = stringsJSONString.replacingOccurrences(of: "{app_name}", with: "Session")
if let translation: JSON = updatedStringUnit["stringUnit"] as? JSON,
let value: String = translation["value"] as? String if
{ let updatedStringsData: Data = updatedStringsJSONString.data(using: .utf8),
var updatedTranslation: JSON = translation let updatedStrings: JSON = try? JSONSerialization.jsonObject(with: updatedStringsData, options: [ .fragmentsAllowed ]) as? JSON
let updatedValue: String = value.replacingOccurrences(of: "{app_name}", with: "Session") {
updatedTranslation["value"] = updatedValue strings[nsKey] = updatedStrings
updatedStringUnit["stringUnit"] = updatedTranslation
updatedLocalizations[locale] = updatedStringUnit
}
} }
updatedStrings["localizations"] = updatedLocalizations
} }
strings[nsKey] = updatedStrings
} }
updatedInfoPlistJSON["strings"] = strings updatedInfoPlistJSON["strings"] = strings
guard updatedInfoPlistJSON != projectState.infoPlistLocalizationFile.json else {
return
}
if let data: Data = try? JSONSerialization.data(withJSONObject: updatedInfoPlistJSON, options: [ .fragmentsAllowed ]) { if let data: Data = try? JSONSerialization.data(withJSONObject: updatedInfoPlistJSON, options: [ .fragmentsAllowed ]) {
do { do {

Loading…
Cancel
Save