diff --git a/Docs/ProjectSpec.md b/Docs/ProjectSpec.md index c644546c..66bbe2ad 100644 --- a/Docs/ProjectSpec.md +++ b/Docs/ProjectSpec.md @@ -69,7 +69,9 @@ Note that target names can also be changed by adding a `name` property to a targ - `all`: project and target settings - `project`: only project settings - `targets`: only target settings - - `none`: no settings are automatically applied + - `none`: no settings are automatically applied +- ⚪️ **developmentLanguage**: `String` - Sets the development language of the project. Defaults to `en` + ### Configs Each config maps to a build type of either `debug` or `release` which will then apply default build settings to the project. Any value other than `debug` or `release` (for example `none`), will mean no default build settings will be applied to the project. diff --git a/Sources/ProjectSpec/ProjectSpec.swift b/Sources/ProjectSpec/ProjectSpec.swift index afa9e419..f8422ce4 100644 --- a/Sources/ProjectSpec/ProjectSpec.swift +++ b/Sources/ProjectSpec/ProjectSpec.swift @@ -32,6 +32,7 @@ public struct ProjectSpec { public var createIntermediateGroups: Bool public var bundleIdPrefix: String? public var settingPresets: SettingPresets + public var developmentLanguage: String? public enum SettingPresets: String { case all @@ -54,11 +55,12 @@ public struct ProjectSpec { } } - public init(carthageBuildPath: String? = nil, createIntermediateGroups: Bool = false, bundleIdPrefix: String? = nil, settingPresets: SettingPresets = .all) { + public init(carthageBuildPath: String? = nil, createIntermediateGroups: Bool = false, bundleIdPrefix: String? = nil, settingPresets: SettingPresets = .all, developmentLanguage: String? = nil) { self.carthageBuildPath = carthageBuildPath self.createIntermediateGroups = createIntermediateGroups self.bundleIdPrefix = bundleIdPrefix self.settingPresets = settingPresets + self.developmentLanguage = developmentLanguage } } diff --git a/Sources/XcodeGenKit/PBXProjGenerator.swift b/Sources/XcodeGenKit/PBXProjGenerator.swift index d30fcf6b..4b7e3909 100644 --- a/Sources/XcodeGenKit/PBXProjGenerator.swift +++ b/Sources/XcodeGenKit/PBXProjGenerator.swift @@ -129,7 +129,7 @@ public class PBXProjGenerator { buildConfigurationList: buildConfigList.reference, compatibilityVersion: "Xcode 3.2", mainGroup: mainGroup.reference, - developmentRegion: "English", + developmentRegion: spec.options.developmentLanguage ?? "en", knownRegions: knownRegions, targets: targets.references, attributes: projectAttributes) diff --git a/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj b/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj index da5b2bb6..aa8d6f7f 100644 --- a/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj +++ b/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj @@ -471,7 +471,7 @@ }; buildConfigurationList = CL_844877120535 /* Build configuration list for PBXProject "Project" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; knownRegions = ( en, Base, diff --git a/Tests/XcodeGenKitTests/ProjectGeneratorTests.swift b/Tests/XcodeGenKitTests/ProjectGeneratorTests.swift index f869fbb0..1d2dd94b 100644 --- a/Tests/XcodeGenKitTests/ProjectGeneratorTests.swift +++ b/Tests/XcodeGenKitTests/ProjectGeneratorTests.swift @@ -52,6 +52,16 @@ func projectGeneratorTests() { let allSettings = project.pbxproj.buildConfigurations.reduce([:]) { $0.merged($1.buildSettings) }.keys.sorted() try expect(allSettings) == ["SETTING_2"] } + + $0.it("generates development language") { + let options = ProjectSpec.Options(developmentLanguage: "de") + let spec = ProjectSpec(basePath: "", name: "test", options: options) + let project = try getProject(spec) + guard let pbxProject = project.pbxproj.projects.first else { + throw failure("Could't find PBXProject") + } + try expect(pbxProject.developmentRegion) == "de" + } } $0.describe("Config") {