-
Notifications
You must be signed in to change notification settings - Fork 192
Redesign LCP dialog with shared localized strings #706
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this 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 pull request redesigns the LCP (Licensed Content Protection) authentication dialog from a UIKit-based interface to SwiftUI, while aligning localization strings with the thorium-locales repository. The minimum iOS deployment target has been increased from iOS 13.4 to iOS 15.0 to support the new implementation.
Changes:
- Redesigned LCP authentication dialog using SwiftUI with backwards compatibility helpers for iOS 15-16
- Integrated localization strings from the thorium-locales repository with an automated conversion script
- Updated minimum iOS deployment target to iOS 15.0
Reviewed changes
Copilot reviewed 11 out of 12 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| Sources/LCP/Resources/en.lproj/Localizable.strings | Updated with new localization keys from thorium-locales, replacing previous manual translations |
| Sources/LCP/Resources/fr.lproj/Localizable.strings | Added empty French localization file (auto-generated, awaiting translations) |
| Sources/LCP/Authentications/LCPDialogViewController.swift | Simplified to host SwiftUI dialog instead of UIKit-based implementation |
| Sources/LCP/Authentications/LCPDialogAuthentication.swift | Removed navigation controller wrapper, now presents dialog directly |
| Sources/LCP/Authentications/LCPDialog.swift | Added iOS 15 compatibility helpers and renamed localization keys |
| Sources/LCP/Authentications/Base.lproj/LCPDialogViewController.xib | Removed UIKit interface builder file (no longer needed) |
| Package.swift | Updated minimum iOS deployment target to 15.0 |
| Makefile | Added update-thorium-locales target for automated localization updates |
| BuildTools/Scripts/convert-thorium-localizations.js | New script to convert thorium-locales JSON files to Apple .strings format |
| CHANGELOG.md | Documented breaking changes and new features |
| .gitignore | Added Claude AI development artifacts |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Changelog
Changed
LCP
LCPDialogAuthenticationhas been redesigned.Migration Guide
LCP Dialog Localization Keys
The LCP dialog localization string keys have been renamed to align with the thorium-locales repository. Contributions are welcome on Weblate.
If you overrode any of these strings in your app's
Localizable.strings, you must update them to use the new keys:ReadiumLCP.dialog.cancelreadium.lcp.dialog.actions.cancelReadiumLCP.dialog.continuereadium.lcp.dialog.actions.continueReadiumLCP.dialog.forgotYourPassphrasereadium.lcp.dialog.actions.recoverPassphraseReadiumLCP.dialog.hintreadium.lcp.dialog.passphrase.hintReadiumLCP.dialog.headerreadium.lcp.dialog.messageReadiumLCP.dialog.details.titlereadium.lcp.dialog.info.titleReadiumLCP.dialog.details.bodyreadium.lcp.dialog.info.bodyReadiumLCP.dialog.details.morereadium.lcp.dialog.info.moreReadiumLCP.dialog.error.incorrectPassphrasereadium.lcp.dialog.errors.incorrectPassphraseReadiumLCP.dialog.titlereadium.lcp.dialog.titleReadiumLCP.dialog.passphrase.placeholderreadium.lcp.dialog.passphrase.placeholderThe following legacy strings from the old UIKit-based dialog have been removed entirely:
ReadiumLCP.dialog.prompt.message1ReadiumLCP.dialog.prompt.message2ReadiumLCP.dialog.reason.passphraseNotFoundReadiumLCP.dialog.reason.invalidPassphraseReadiumLCP.dialog.prompt.forgotPassphraseReadiumLCP.dialog.prompt.supportReadiumLCP.dialog.prompt.continueReadiumLCP.dialog.prompt.passphraseReadiumLCP.dialog.supportReadiumLCP.dialog.support.websiteReadiumLCP.dialog.support.phoneReadiumLCP.dialog.support.mail