Skip to content

Comments

feat: new languages API#373

Open
serhii-londar wants to merge 13 commits intomasterfrom
languages-api
Open

feat: new languages API#373
serhii-londar wants to merge 13 commits intomasterfrom
languages-api

Conversation

@serhii-londar
Copy link
Collaborator

@serhii-londar serhii-londar commented Feb 11, 2026

Note

Low Risk
Mostly regenerated CocoaPods/Xcode project metadata plus a small UI-only change; minimal impact on runtime SDK behavior.

Overview
Updates CocoaPods integration artifacts across the Swift and ObjC examples (Xcode project .pbxproj references/build phases and Podfile.lock checksums), likely reflecting a pod install regeneration.

Tweaks the AppleReminders example search UI by setting navigationItem.preferredSearchBarPlacement = .stacked on iOS 16+.

Removes the CrowdinProvider_Tests resource entry from CrowdinSDK.podspec and updates example Localizable.strings values to include explicit locale tags (e.g., [en][L], [fr][L], [uk][L]).

Written by Cursor Bugbot for commit e60a15c. This will update automatically on new commits. Configure here.

# Conflicts:
#	Sources/CrowdinSDK/Providers/Crowdin/LocalizationDownloader/CrowdinLocalizationDownloader.swift
#	Sources/CrowdinSDK/Providers/Crowdin/SupportedLanguages/CrowdinSupportedLanguages.swift
…d and add unit tests for supported languages cache behavior and JSON parsing
Copilot AI review requested due to automatic review settings February 11, 2026 17:46
@cursor
Copy link

cursor bot commented Feb 11, 2026

You have run out of free Bugbot PR reviews for this billing cycle. This will reset on February 17.

To receive reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

@crowdin-bot
Copy link
Collaborator

crowdin-bot commented Feb 11, 2026

Warnings
⚠️ Big PR, try to keep changes smaller if you can

Generated by 🚫 Danger Swift against e60a15c

@codecov
Copy link

codecov bot commented Feb 11, 2026

Codecov Report

❌ Patch coverage is 83.29238% with 68 lines in your changes missing coverage. Please review.
✅ Project coverage is 56.84%. Comparing base (e2c07c1) to head (e60a15c).

Files with missing lines Patch % Lines
...festManager/ManifestManager+LanguageResolver.swift 0.00% 26 Missing ⚠️
...SupportedLanguages/CrowdinSupportedLanguages.swift 87.65% 21 Missing ⚠️
...owdinProvider/CrowdinSupportedLanguagesTests.swift 91.27% 11 Missing ⚠️
...ers/Crowdin/CrowdinRemoteLocalizationStorage.swift 79.17% 5 Missing ⚠️
...s/CrowdinSupportedLanguagesThreadSafetyTests.swift 0.00% 5 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #373      +/-   ##
==========================================
+ Coverage   55.83%   56.84%   +1.02%     
==========================================
  Files         136      134       -2     
  Lines        6320     6475     +155     
==========================================
+ Hits         3528     3680     +152     
- Misses       2792     2795       +3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates “supported languages” fetching/caching from the Crowdin API models to a CDN-based languages.json per distribution hash, updates manifest language resolution to use the new representation, and adjusts/extends test coverage (including integration test gating).

Changes:

  • Replace the old LanguagesAPI / LanguagesResponse model flow with a languages.json (CDN) downloader and new DistributionLanguage model.
  • Update ManifestManager language resolution and cache-clearing behavior to align with the new supported-languages storage.
  • Update/add tests and test project configuration for the new supported-languages behavior (plus some Settings UI table cell sizing improvements).

Reviewed changes

Copilot reviewed 16 out of 20 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
Sources/CrowdinSDK/Providers/Crowdin/SupportedLanguages/CrowdinSupportedLanguages.swift Implements CDN languages.json fetch, ETag handling, and caching for supported languages.
Sources/CrowdinSDK/Providers/Crowdin/ManifestManager/ManifestManager.swift Wires supported-languages updates into manifest lifecycle and adds language merging helper.
Sources/CrowdinSDK/Providers/Crowdin/ManifestManager/ManifestManager+LanguageResolver.swift Updates language resolution to use the new supported-languages representation + merged custom languages.
Sources/CrowdinSDK/Providers/Crowdin/CrowdinRemoteLocalizationStorage.swift Moves supported-languages refresh to occur alongside/after manifest download and refactors localization selection.
Sources/CrowdinSDK/Settings/CrowdinLogsVC/CrowdinLogsVC.swift Enables dynamic cell heights for logs UI.
Sources/CrowdinSDK/Settings/CrowdinLogsVC/CrowdinLogCell/CrowdinLogCell.swift Improves Auto Layout for log cell content and simplifies accessory handling.
Sources/Tests/CrowdinProvider/CrowdinSupportedLanguagesTests.swift Adds unit tests for supported-languages caching and parsing of languages.json.
Sources/Tests/CrowdinProvider/ManifestManagerTests.swift Updates manifest tests to use the new CrowdinLanguage-based supported languages array; adds custom-language content test.
Tests/UnitTests/CrowdinSupportedLanguagesThreadSafetyTests.swift Updates thread-safety tests to match the new supported-languages structure.
Tests/Tests.xcodeproj/xcshareddata/xcschemes/TestsTests.xcscheme Adds RUN_INTEGRATION_TESTS=1 environment variable to the shared scheme.
Tests/Tests.xcodeproj/project.pbxproj Adds integration test sources to the Xcode test target.
Sources/Tests/CrowdinAPI/LanguagesAPITests.swift Removes tests for the old LanguagesAPI.
Sources/CrowdinSDK/CrowdinAPI/LanguagesAPI/LanguagesAPI.swift Removes the old Crowdin API client for languages.
Sources/CrowdinSDK/CrowdinAPI/LanguagesAPI/Models/LanguagesResponse.swift Removes the old languages response models.
Resources/Tests/SupportedLanguages.json Removes the old large test fixture for languages API response.
CrowdinSDK.podspec Removes the supported-languages JSON fixture from the test spec resources.
Example/AppleReminders/Controllers/MainVC.swift Adds conditional search bar placement logic + a KVC-based toggle helper.
Tests/Podfile.lock / Example/Podfile.lock / ObjCExample/Podfile.lock Updates CrowdinSDK pod checksum references.

@andrii-bodnar andrii-bodnar changed the title feat: new anguages api feat: new languages API Feb 16, 2026
…y toolbar integration method

refactor: streamline supported languages cache management in CrowdinSupportedLanguages
chore: remove unused environment variable from Tests scheme
@serhii-londar
Copy link
Collaborator Author

@copilot perform review.

Copy link
Contributor

Copilot AI commented Feb 22, 2026

@serhii-londar I've opened a new pull request, #376, to work on those changes. Once the pull request is ready, I'll request review from you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants