add localization to EditTagGroupView (#1692)

This commit is contained in:
Thai D. V 2023-11-28 15:19:48 +07:00 committed by GitHub
parent 2e2a9f5f14
commit 1f703fc1f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 102 additions and 17 deletions

View file

@ -128,20 +128,20 @@ private struct TitleInputView: View {
focusedField = .symbol
}
if focusedField == .title, !warningText.isEmpty {
if focusedField == .title, warningText != "" {
Text(warningText).warningLabel()
}
}
}
var warningText: String {
var warningText: LocalizedStringKey {
if case let .invalid(description) = titleValidationStatus {
return description
} else if
isNewGroup,
tagGroups.contains(where: { $0.title == title })
{
return "\(title) already exists"
return "\(title) add-tag-groups.edit.title.field.warning.already-exists"
}
return ""
}
@ -243,14 +243,14 @@ private struct TagsInputView: View {
}
}
if focusedField == .new, !warningText.isEmpty {
if focusedField == .new, warningText != "" {
Text(warningText).warningLabel()
}
}
var warningText: String {
var warningText: LocalizedStringKey {
if tags.contains(newTag) {
return "duplicated tag"
return "add-tag-groups.edit.tags.field.warning.duplicated-tag"
} else if case let .invalid(description) = tagsValidationStatus {
return description
}
@ -337,7 +337,7 @@ private struct SymbolSearchResultsView: View {
// MARK: search results validation
enum ValidationStatus: Equatable {
case valid
case invalid(description: String)
case invalid(description: LocalizedStringKey)
}
var validationStatus: ValidationStatus {
@ -346,9 +346,9 @@ private struct SymbolSearchResultsView: View {
&& !symbolQuery.isEmpty
&& results.count == 0
{
return .invalid(description: "\(symbolQuery) is already selected")
return .invalid(description: "\(symbolQuery) add-tag-groups.edit.tags.field.warning.search-results.already-selected")
} else {
return .invalid(description: "No Symbol Found")
return .invalid(description: "add-tag-groups.edit.tags.field.warning.search-results.no-symbol-found")
}
} else {
return .valid
@ -360,24 +360,26 @@ extension TagGroup {
// MARK: title validation
enum TitleValidationStatus: Equatable {
case valid
case invalid(description: String)
case invalid(description: LocalizedStringKey)
}
var titleValidationStatus: TitleValidationStatus {
title.isEmpty ? .invalid(description: "title is empty") : .valid
title.isEmpty
? .invalid(description: "add-tag-groups.edit.title.field.warning.empty-title")
: .valid
}
// MARK: symbolName validation
enum SymbolNameValidationStatus: Equatable {
case valid
case invalid(description: String)
case invalid(description: LocalizedStringKey)
}
var symbolNameValidationStatus: SymbolNameValidationStatus {
if symbolName.isEmpty {
return .invalid(description: "no symbol is selected yet")
return .invalid(description: "add-tag-groups.edit.title.field.warning.no-symbol-selected")
} else if !Self.allSymbols.contains(symbolName) {
return .invalid(description: "\(symbolName) is not a valid FSSymbol name")
return .invalid(description: "\(symbolName) add-tag-groups.edit.title.field.warning.invalid-sfsymbol-name")
}
return .valid
@ -386,12 +388,12 @@ extension TagGroup {
// MARK: tags validation
enum TagsValidationStatus: Equatable {
case valid
case invalid(description: String)
case invalid(description: LocalizedStringKey)
}
var tagsValidationStatus: TagsValidationStatus {
if tags.count < 2 {
return .invalid(description: "the number of tags is smaller than 2")
return .invalid(description: "add-tag-groups.edit.tags.field.warning.number-of-tags")
}
return .valid
}

View file

@ -1,6 +1,9 @@
{
"sourceLanguage" : "en",
"strings" : {
"" : {
},
" ⸱ " : {
"localizations" : {
"be" : {
@ -225,6 +228,36 @@
}
}
},
"%@ add-tag-groups.edit.tags.field.warning.search-results.already-selected" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "%@ is already selected"
}
}
}
},
"%@ add-tag-groups.edit.title.field.warning.already-exists" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "%@ already exists"
}
}
}
},
"%@ add-tag-groups.edit.title.field.warning.invalid-sfsymbol-name" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "%@ is an invalid SFSymbol name"
}
}
}
},
"%@©2023 Thomas Ricouard" : {
"localizations" : {
"be" : {
@ -17930,6 +17963,36 @@
}
}
},
"add-tag-groups.edit.tags.field.warning.duplicated-tag" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Duplicated tag"
}
}
}
},
"add-tag-groups.edit.tags.field.warning.number-of-tags" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Number of tags is less than 2"
}
}
}
},
"add-tag-groups.edit.tags.field.warning.search-results.no-symbol-found" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "No Symbol Found"
}
}
}
},
"add-tag-groups.edit.title.field" : {
"comment" : "MARK: Tag Groups",
"localizations" : {
@ -18049,6 +18112,26 @@
}
}
},
"add-tag-groups.edit.title.field.warning.empty-title" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Empty title"
}
}
}
},
"add-tag-groups.edit.title.field.warning.no-symbol-selected" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "No symbol is selected"
}
}
}
},
"alert.button.ok" : {
"localizations" : {
"be" : {
@ -70392,4 +70475,4 @@
}
},
"version" : "1.0"
}
}