Gestion des commentaires

This commit is contained in:
Quentin Bandera 2024-04-12 17:15:15 +02:00
parent ba07005b13
commit 209ba49e3f
3 changed files with 288 additions and 8 deletions

View File

@ -166,7 +166,8 @@ class StringsFileGenerator {
}
if !skipDefinition {
for (lang, value) in definition.translations {
for (lang, value) in definition.translations where !value.isEmpty {
let localization = XCStringLocalization(
lang: lang,
content: XCStringLocalizationLangContent(
@ -180,6 +181,7 @@ class StringsFileGenerator {
let xcStringDefinition = XCStringDefinition(
title: definition.name,
content: XCStringDefinitionContent(
comment: definition.comment,
extractionState: "manual",
localizations: XCStringLocalizationContainer(
localizations: localizationTab

View File

@ -50,8 +50,15 @@ struct XCStringDefinition: Codable, Equatable {
}
struct XCStringDefinitionContent: Codable, Equatable {
let comment: String?
let extractionState: String
var localizations: XCStringLocalizationContainer
init(comment: String? = nil, extractionState: String, localizations: XCStringLocalizationContainer) {
self.comment = comment
self.extractionState = extractionState
self.localizations = localizations
}
}
struct XCStringLocalizationContainer: Codable, Equatable {

View File

@ -460,7 +460,7 @@ final class StringsFileGeneratorTests: XCTestCase {
"en": "Section One - Definition One"],
tags: ["ios","iosonly"]),
getDefinition(name: "s1_def_two",
translations: ["fr": "Section Un - Definition Deux",
translations: ["fr": "",
"en": "Section One - Definition Two"],
tags: ["ios","iosonly"])
]
@ -472,7 +472,8 @@ final class StringsFileGeneratorTests: XCTestCase {
"en": "Section Two - Definition One"],
tags: ["ios","iosonly"]),
getDefinition(name: "s2_def_two",
translations: ["fr": "Section Deux - Definition Deux"],
translations: ["fr": "Section Deux - Definition Deux",
"en": "Section Two - Definition Two"],
tags: ["notranslation"])
]
@ -486,19 +487,19 @@ final class StringsFileGeneratorTests: XCTestCase {
// [[section_one]]
// [s1_def_one]
// fr = Section Un - Definition Un
// fr =
// en = Section One - Definition One
// tags = ios,iosonly
// comments =
// [s1_def_two]
// fr = Section Un - Definition Deux
// fr =
// en = Section One - Definition Two
// tags = ios,iosonly
// comments =
//
// [[section_two]
// [s2_def_one]
// fr = Section Deux - Definition Un
// fr =
// en = Section Two - Definition One
// tags = ios,iosonly
// comments =
@ -517,6 +518,276 @@ final class StringsFileGeneratorTests: XCTestCase {
XCStringDefinition(
title: "s1_def_one",
content: XCStringDefinitionContent(
extractionState: "manual",
localizations: XCStringLocalizationContainer(
localizations: [
XCStringLocalization(
lang: "en",
content: XCStringLocalizationLangContent(
stringUnit: DefaultStringUnit(
state: "translated",
value: "Section One - Definition One"
)
)
)
]
)
)
),
XCStringDefinition(
title: "s1_def_two",
content: XCStringDefinitionContent(
extractionState: "manual",
localizations: XCStringLocalizationContainer(
localizations: [
XCStringLocalization(
lang: "en",
content: XCStringLocalizationLangContent(
stringUnit: DefaultStringUnit(
state: "translated",
value: "Section One - Definition Two"
)
)
)
]
)
)
),
XCStringDefinition(
title: "s2_def_one",
content: XCStringDefinitionContent(
extractionState: "manual",
localizations: XCStringLocalizationContainer(
localizations: [
XCStringLocalization(
lang: "en",
content: XCStringLocalizationLangContent(
stringUnit: DefaultStringUnit(
state: "translated",
value: "Section Two - Definition One"
)
)
)
]
)
)
),
XCStringDefinition(
title: "s2_def_two",
content: XCStringDefinitionContent(
extractionState: "manual",
localizations: XCStringLocalizationContainer(
localizations: [
XCStringLocalization(
lang: "en",
content: XCStringLocalizationLangContent(
stringUnit: DefaultStringUnit(
state: "translated",
value: "Section Two - Definition Two"
)
)
),
XCStringLocalization(
lang: "fr",
content: XCStringLocalizationLangContent(
stringUnit: DefaultStringUnit(
state: "translated",
value: "Section Deux - Definition Deux"
)
)
)
]
)
)
)
]
),
version: "1.0"
)
XCTAssertEqual(rootObject, expect)
}
func testGenerateXcStringsRootObjectWithNoTranslations() {
// Given
let sectionOne = Section(name: "section_one")
sectionOne.definitions = [
getDefinition(name: "s1_def_one",
translations: ["fr": "",
"en": ""],
tags: ["ios","iosonly"]),
getDefinition(name: "s1_def_two",
translations: ["fr": "",
"en": ""],
tags: ["ios","iosonly"])
]
let sectionTwo = Section(name: "section_two")
sectionTwo.definitions = [
getDefinition(name: "s2_def_one",
translations: ["fr": "",
"en": ""],
tags: ["ios","iosonly"]),
getDefinition(name: "s2_def_two",
translations: ["fr": "",
"en": ""],
tags: ["notranslation"])
]
// When
let rootObject = StringsFileGenerator.generateRootObject(
langs: ["fr", "en"],
defaultLang: "en",
tags: ["ios", "iosonly", "notranslation"],
sections: [sectionOne, sectionTwo]
)
// [[section_one]]
// [s1_def_one]
// fr =
// en =
// tags = ios,iosonly
// comments =
// [s1_def_two]
// fr =
// en =
// tags = ios,iosonly
// comments =
//
// [[section_two]
// [s2_def_one]
// fr =
// en =
// tags = ios,iosonly
// comments =
// [s2_def_two]
// fr =
// en =
// tags = ios,iosonly
// comments =
// Expect
let expect =
Root(
sourceLanguage: "en",
strings: XCStringDefinitionContainer(
strings: [
XCStringDefinition(
title: "s1_def_one",
content: XCStringDefinitionContent(
extractionState: "manual",
localizations: XCStringLocalizationContainer(
localizations: []
)
)
),
XCStringDefinition(
title: "s1_def_two",
content: XCStringDefinitionContent(
extractionState: "manual",
localizations: XCStringLocalizationContainer(
localizations: []
)
)
),
XCStringDefinition(
title: "s2_def_one",
content: XCStringDefinitionContent(
extractionState: "manual",
localizations: XCStringLocalizationContainer(
localizations: []
)
)
),
XCStringDefinition(
title: "s2_def_two",
content: XCStringDefinitionContent(
extractionState: "manual",
localizations: XCStringLocalizationContainer(
localizations: []
)
)
)
]
),
version: "1.0"
)
XCTAssertEqual(rootObject, expect)
}
func testGenerateXcStringsRootObjectWithComments() {
// Given
// [[section_one]]
// [s1_def_one]
// fr = Section Un - Definition Un
// en = Section One - Definition One
// tags = ios,iosonly
// comments = Comment 1
// [s1_def_two]
// fr = Section Un - Definition Deux
// en = Section One - Definition Two
// tags = ios,iosonly
// comments = Comment 2
//
// [[section_two]
// [s2_def_one]
// fr = Section Deux - Definition Un
// en = Section Two - Definition One
// tags = ios,iosonly
// comments =
// [s2_def_two]
// fr = Section Deux - Definition deux
// en = Section Two - Definition Two
// tags = ios,iosonly
// comments =
let sectionOne = Section(name: "section_one")
sectionOne.definitions = [
getDefinition(name: "s1_def_one",
translations: ["fr": "Section Un - Definition Un",
"en": "Section One - Definition One"],
tags: ["ios","iosonly"],
comment: "Comment 1"),
getDefinition(name: "s1_def_two",
translations: ["fr": "Section Un - Definition Deux",
"en": "Section One - Definition Two"],
tags: ["ios","iosonly"],
comment: "Comment 2")
]
let sectionTwo = Section(name: "section_two")
sectionTwo.definitions = [
getDefinition(name: "s2_def_one",
translations: ["fr": "Section Deux - Definition Un",
"en": "Section Two - Definition One"],
tags: ["ios","iosonly"]),
getDefinition(name: "s2_def_two",
translations: ["fr": "Section Deux - Definition Deux",
"en": "Section Two - Definition Two"],
tags: ["notranslation"])
]
// When
let rootObject = StringsFileGenerator.generateRootObject(
langs: ["fr", "en"],
defaultLang: "en",
tags: ["ios", "iosonly", "notranslation"],
sections: [sectionOne, sectionTwo]
)
// Expect
let expect =
Root(
sourceLanguage: "en",
strings: XCStringDefinitionContainer(
strings: [
XCStringDefinition(
title: "s1_def_one",
content: XCStringDefinitionContent(
comment: "Comment 1",
extractionState: "manual",
localizations: XCStringLocalizationContainer(
localizations: [
@ -545,6 +816,7 @@ final class StringsFileGeneratorTests: XCTestCase {
XCStringDefinition(
title: "s1_def_two",
content: XCStringDefinitionContent(
comment: "Comment 2",
extractionState: "manual",
localizations: XCStringLocalizationContainer(
localizations: [
@ -590,7 +862,7 @@ final class StringsFileGeneratorTests: XCTestCase {
content: XCStringLocalizationLangContent(
stringUnit: DefaultStringUnit(
state: "translated",
value: "Section Two - Definition Un"
value: "Section Deux - Definition Un"
)
)
)
@ -707,7 +979,6 @@ final class StringsFileGeneratorTests: XCTestCase {
// "version" : "1.0"
// }
// """
XCTAssertEqual(rootObject, expect)
}