From 897ecb9a2f5dccfe9d19f3540383f7c1ac3f92db Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Fri, 4 Sep 2026 19:45:49 -0500 Subject: [PATCH] Localization scripts: use the shared PROJECTS list, pin an iOS destination import_localizations.sh carried its own copy of PROJECTS that had drifted badly from the maintained list in define_common.sh, which ten other scripts already source. The stale copy still named OmniBLE and OmniKit, neither of which has been a submodule since OmnipodKit replaced them, and it was missing OmnipodKit, EversenseKit and MedtrumKit entirely. Since the script runs under `set -e`, `cd OmniBLE` aborted it outright -- and had it continued, translations for the three missing repos would never have been imported. Source define_common.sh instead of duplicating, so the list has one home. The maintained list also carries the correct upstream targets for pull requests (loopandlearn:OmnipodKit, bastiaanv:EversenseKit, jbr7rr:MedtrumKit) rather than the LoopKit forks. Also pass -destination 'generic/platform=iOS' to the build, export and import invocations in all four localization scripts. They previously specified no destination, unlike .circleci/config.yml and AGENTS.md, which left xcodebuild free to resolve destinations across platforms; a translator hit macOS deployment target validation errors under the Xcode 27 beta. The explicit iOS destination cannot resolve to macOS. Verified: all four scripts pass `zsh -n`, the sourced PROJECTS list expands correctly, and the workspace builds with the new destination flag under both Xcode 26.6 and the Xcode 27.0 beta. --- Scripts/export_localizations.sh | 2 +- Scripts/import_localizations.sh | 10 +++++++--- Scripts/manual_export_localizations.sh | 2 +- Scripts/manual_import_localizations.sh | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Scripts/export_localizations.sh b/Scripts/export_localizations.sh index 7b850b20a8..e6af2b3e66 100755 --- a/Scripts/export_localizations.sh +++ b/Scripts/export_localizations.sh @@ -10,7 +10,7 @@ LANGUAGES=(ar cs ru en zh-Hans nl fr de it nb pl es ja pt-BR vi da sv fi ro tr h argstring="${LANGUAGES[@]/#/-exportLanguage }" IFS=" "; args=( $=argstring ) -xcodebuild -scheme LoopWorkspace -exportLocalizations -localizationPath xclocs $args +xcodebuild -scheme LoopWorkspace -destination 'generic/platform=iOS' -exportLocalizations -localizationPath xclocs $args mkdir -p xliff_out find xclocs -name '*.xliff' -exec cp {} xliff_out \; diff --git a/Scripts/import_localizations.sh b/Scripts/import_localizations.sh index e1756b497b..ac072d20bb 100755 --- a/Scripts/import_localizations.sh +++ b/Scripts/import_localizations.sh @@ -27,7 +27,11 @@ lokalise2 \ --replace-breaks=false \ --unzip-to ./xliff_in -PROJECTS=(LoopKit:AmplitudeService:dev LoopKit:CGMBLEKit:dev LoopKit:G7SensorKit:main LoopKit:LogglyService:dev LoopKit:Loop:dev LoopKit:LoopKit:dev LoopKit:LoopOnboarding:dev LoopKit:LoopSupport:dev LoopKit:NightscoutRemoteCGM:dev LoopKit:NightscoutService:dev LoopKit:OmniBLE:dev LoopKit:TidepoolService:dev LoopKit:dexcom-share-client-swift:dev LoopKit:RileyLinkKit:dev LoopKit:OmniKit:main LoopKit:MinimedKit:main LoopKit:LibreTransmitter:main) +# PROJECTS (and LANGUAGES) are defined in one place so this list cannot drift again. +# The copy that used to live here still named OmniBLE and OmniKit, which have not been +# submodules since they were replaced by OmnipodKit -- with `set -e`, `cd OmniBLE` aborted +# this script outright. +source Scripts/define_common.sh for project in ${PROJECTS}; do echo "Prepping $project" @@ -42,12 +46,12 @@ for project in ${PROJECTS}; do done # Build Loop -set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' build | xcpretty +set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'generic/platform=iOS' build | xcpretty # Apply translations foreach file in xliff_in/*.xliff - xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -importLocalizations -localizationPath $file + xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -destination 'generic/platform=iOS' -importLocalizations -localizationPath $file end diff --git a/Scripts/manual_export_localizations.sh b/Scripts/manual_export_localizations.sh index eb2836363f..459ca5cfd8 100755 --- a/Scripts/manual_export_localizations.sh +++ b/Scripts/manual_export_localizations.sh @@ -13,7 +13,7 @@ source Scripts/define_common.sh argstring="${LANGUAGES[@]/#/-exportLanguage }" IFS=" "; args=( $=argstring ) -xcodebuild -scheme LoopWorkspace -exportLocalizations -localizationPath xclocs $args +xcodebuild -scheme LoopWorkspace -destination 'generic/platform=iOS' -exportLocalizations -localizationPath xclocs $args mkdir -p xliff_out find xclocs -name '*.xliff' -exec cp {} xliff_out \; diff --git a/Scripts/manual_import_localizations.sh b/Scripts/manual_import_localizations.sh index 307ef3b821..f132cc0b49 100755 --- a/Scripts/manual_import_localizations.sh +++ b/Scripts/manual_import_localizations.sh @@ -60,14 +60,14 @@ for project in ${PROJECTS}; do done # Build Loop -set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' build | xcpretty +set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'generic/platform=iOS' build | xcpretty # Apply translations foreach file in xliff_in/*.xliff section_divider echo " importing ${file}" section_divider - /usr/bin/time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -importLocalizations -localizationPath $file + /usr/bin/time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -destination 'generic/platform=iOS' -importLocalizations -localizationPath $file end section_divider