mirror of
https://github.com/Dimillian/IceCubesApp.git
synced 2025-09-03 16:33:48 +00:00
add localization to EditTagGroupView
(#1692)
This commit is contained in:
parent
2e2a9f5f14
commit
1f703fc1f4
2 changed files with 102 additions and 17 deletions
|
@ -128,20 +128,20 @@ private struct TitleInputView: View {
|
||||||
focusedField = .symbol
|
focusedField = .symbol
|
||||||
}
|
}
|
||||||
|
|
||||||
if focusedField == .title, !warningText.isEmpty {
|
if focusedField == .title, warningText != "" {
|
||||||
Text(warningText).warningLabel()
|
Text(warningText).warningLabel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var warningText: String {
|
var warningText: LocalizedStringKey {
|
||||||
if case let .invalid(description) = titleValidationStatus {
|
if case let .invalid(description) = titleValidationStatus {
|
||||||
return description
|
return description
|
||||||
} else if
|
} else if
|
||||||
isNewGroup,
|
isNewGroup,
|
||||||
tagGroups.contains(where: { $0.title == title })
|
tagGroups.contains(where: { $0.title == title })
|
||||||
{
|
{
|
||||||
return "\(title) already exists"
|
return "\(title) add-tag-groups.edit.title.field.warning.already-exists"
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
@ -243,14 +243,14 @@ private struct TagsInputView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if focusedField == .new, !warningText.isEmpty {
|
if focusedField == .new, warningText != "" {
|
||||||
Text(warningText).warningLabel()
|
Text(warningText).warningLabel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var warningText: String {
|
var warningText: LocalizedStringKey {
|
||||||
if tags.contains(newTag) {
|
if tags.contains(newTag) {
|
||||||
return "duplicated tag"
|
return "add-tag-groups.edit.tags.field.warning.duplicated-tag"
|
||||||
} else if case let .invalid(description) = tagsValidationStatus {
|
} else if case let .invalid(description) = tagsValidationStatus {
|
||||||
return description
|
return description
|
||||||
}
|
}
|
||||||
|
@ -337,7 +337,7 @@ private struct SymbolSearchResultsView: View {
|
||||||
// MARK: search results validation
|
// MARK: search results validation
|
||||||
enum ValidationStatus: Equatable {
|
enum ValidationStatus: Equatable {
|
||||||
case valid
|
case valid
|
||||||
case invalid(description: String)
|
case invalid(description: LocalizedStringKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
var validationStatus: ValidationStatus {
|
var validationStatus: ValidationStatus {
|
||||||
|
@ -346,9 +346,9 @@ private struct SymbolSearchResultsView: View {
|
||||||
&& !symbolQuery.isEmpty
|
&& !symbolQuery.isEmpty
|
||||||
&& results.count == 0
|
&& 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 {
|
} else {
|
||||||
return .invalid(description: "No Symbol Found")
|
return .invalid(description: "add-tag-groups.edit.tags.field.warning.search-results.no-symbol-found")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return .valid
|
return .valid
|
||||||
|
@ -360,24 +360,26 @@ extension TagGroup {
|
||||||
// MARK: title validation
|
// MARK: title validation
|
||||||
enum TitleValidationStatus: Equatable {
|
enum TitleValidationStatus: Equatable {
|
||||||
case valid
|
case valid
|
||||||
case invalid(description: String)
|
case invalid(description: LocalizedStringKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
var titleValidationStatus: TitleValidationStatus {
|
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
|
// MARK: symbolName validation
|
||||||
enum SymbolNameValidationStatus: Equatable {
|
enum SymbolNameValidationStatus: Equatable {
|
||||||
case valid
|
case valid
|
||||||
case invalid(description: String)
|
case invalid(description: LocalizedStringKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
var symbolNameValidationStatus: SymbolNameValidationStatus {
|
var symbolNameValidationStatus: SymbolNameValidationStatus {
|
||||||
if symbolName.isEmpty {
|
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) {
|
} 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
|
return .valid
|
||||||
|
@ -386,12 +388,12 @@ extension TagGroup {
|
||||||
// MARK: tags validation
|
// MARK: tags validation
|
||||||
enum TagsValidationStatus: Equatable {
|
enum TagsValidationStatus: Equatable {
|
||||||
case valid
|
case valid
|
||||||
case invalid(description: String)
|
case invalid(description: LocalizedStringKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
var tagsValidationStatus: TagsValidationStatus {
|
var tagsValidationStatus: TagsValidationStatus {
|
||||||
if tags.count < 2 {
|
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
|
return .valid
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
{
|
{
|
||||||
"sourceLanguage" : "en",
|
"sourceLanguage" : "en",
|
||||||
"strings" : {
|
"strings" : {
|
||||||
|
"" : {
|
||||||
|
|
||||||
|
},
|
||||||
" ⸱ " : {
|
" ⸱ " : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"be" : {
|
"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" : {
|
"%@©2023 Thomas Ricouard" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"be" : {
|
"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" : {
|
"add-tag-groups.edit.title.field" : {
|
||||||
"comment" : "MARK: Tag Groups",
|
"comment" : "MARK: Tag Groups",
|
||||||
"localizations" : {
|
"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" : {
|
"alert.button.ok" : {
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
"be" : {
|
"be" : {
|
||||||
|
@ -70392,4 +70475,4 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version" : "1.0"
|
"version" : "1.0"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue