@@ -246,27 +246,54 @@ enum LicenseError: LocalizedError {
246246 var errorDescription : String ? {
247247 switch self {
248248 case . invalidKey:
249- return " The license key is invalid. "
249+ return String ( localized : " The license key is invalid. " )
250250 case . signatureInvalid:
251- return " License signature verification failed. "
251+ return String ( localized : " License signature verification failed. " )
252252 case . publicKeyNotFound:
253- return " License public key not found in app bundle. "
253+ return String ( localized : " License public key not found in app bundle. " )
254254 case . publicKeyInvalid:
255- return " License public key is invalid. "
255+ return String ( localized : " License public key is invalid. " )
256256 case . activationLimitReached:
257- return " Maximum number of activations reached. "
257+ return String ( localized : " Maximum number of activations reached. " )
258258 case . licenseExpired:
259- return " The license has expired. "
259+ return String ( localized : " The license has expired. " )
260260 case . licenseSuspended:
261- return " The license has been suspended. "
261+ return String ( localized : " The license has been suspended. " )
262262 case . notActivated:
263- return " This machine is not activated. "
263+ return String ( localized : " This machine is not activated. " )
264264 case . networkError( let error) :
265- return " Network error: \( error. localizedDescription) "
265+ return String ( localized : " Network error: \( error. localizedDescription) " )
266266 case . serverError( let code, let message) :
267- return " Server error ( \( code) ): \( message) "
267+ return String ( localized : " Server error ( \( code) ): \( message) " )
268268 case . decodingError( let error) :
269- return " Failed to parse server response: \( error. localizedDescription) "
269+ return String ( localized: " Failed to parse server response: \( error. localizedDescription) " )
270+ }
271+ }
272+
273+ /// User-friendly description suitable for display in activation dialogs
274+ var friendlyDescription : String {
275+ switch self {
276+ case . invalidKey:
277+ return String ( localized: " That doesn't look like a valid license key. Check for typos and try again. " )
278+ case . activationLimitReached:
279+ return String ( localized: " This license has reached its activation limit. Deactivate another Mac first. " )
280+ case . licenseExpired:
281+ return String ( localized: " This license has expired. Renew it to continue using Pro features. " )
282+ case . licenseSuspended:
283+ return String ( localized: " This license has been suspended. Contact support for help. " )
284+ case . networkError:
285+ return String ( localized: " Could not reach the license server. Check your internet connection and try again. " )
286+ case . serverError( let code, _) :
287+ if code == 422 {
288+ return String ( localized: " Invalid license key format. Check for typos and try again. " )
289+ }
290+ return String ( localized: " Something went wrong (error \( code) ). Try again in a moment. " )
291+ case . signatureInvalid, . publicKeyNotFound, . publicKeyInvalid:
292+ return String ( localized: " License verification failed. Try updating the app to the latest version. " )
293+ case . notActivated:
294+ return String ( localized: " This machine is not activated for this license. " )
295+ case . decodingError:
296+ return String ( localized: " Could not read the server response. Try again in a moment. " )
270297 }
271298 }
272299}
0 commit comments