| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_WEB_VIEW_PUBLIC_CWV_TRANSLATION_CONTROLLER_H_ |
| #define IOS_WEB_VIEW_PUBLIC_CWV_TRANSLATION_CONTROLLER_H_ |
| |
| #import <Foundation/Foundation.h> |
| |
| #import "cwv_export.h" |
| |
| NS_ASSUME_NONNULL_BEGIN |
| |
| @class CWVTranslationLanguage; |
| @class CWVTranslationPolicy; |
| @protocol CWVTranslationControllerDelegate; |
| |
| // The error domain for translation errors. |
| FOUNDATION_EXPORT CWV_EXPORT NSErrorDomain const CWVTranslationErrorDomain; |
| |
| // Possible error codes during translation. |
| typedef NS_ENUM(NSInteger, CWVTranslationError) { |
| // No error. |
| CWVTranslationErrorNone = 0, |
| // No connectivity. |
| CWVTranslationErrorNetwork, |
| // The translation script failed to initialize. |
| CWVTranslationErrorInitializationError, |
| // The page's language could not be detected. |
| CWVTranslationErrorUnknownLanguage, |
| // The server detected a language that the browser does not know. |
| CWVTranslationErrorUnsupportedLanguage, |
| // The original and target languages are the same. |
| CWVTranslationErrorIdenticalLanguages, |
| // An error was reported by the translation script during translation. |
| CWVTranslationErrorTranslationError, |
| // The library doesn't finish the translation. |
| CWVTranslationErrorTranslationTimeout, |
| // The library raises an unexpected exception. |
| CWVTranslationErrorUnexpectedScriptError, |
| // The library is blocked because of bad origin. |
| CWVTranslationErrorBadOrigin, |
| // Loader fails to load a dependent JavaScript. |
| CWVTranslationErrorScriptLoadError, |
| }; |
| |
| // Allows page translation from one language to another. |
| CWV_EXPORT |
| @interface CWVTranslationController : NSObject |
| |
| // Delegate to receive translation callbacks. |
| @property(nullable, nonatomic, weak) id<CWVTranslationControllerDelegate> |
| delegate; |
| |
| // The set of supported languages for translation. |
| @property(nonatomic, readonly) |
| NSSet<CWVTranslationLanguage*>* supportedLanguages; |
| |
| - (instancetype)init NS_UNAVAILABLE; |
| |
| // Begins translation on the current page from |sourceLanguage| to |
| // |targetLanguage|. These language parameters must be chosen from |
| // |supportedLanguages|. Set |userInitiated| to YES if translation |
| // is a result of explicit user action. |userInitiated| will be |
| // passed along to the CWVTranslationControllerDelegate methods. |
| // Results in a No-op if there is no current page. |
| - (void)translatePageFromLanguage:(CWVTranslationLanguage*)sourceLanguage |
| toLanguage:(CWVTranslationLanguage*)targetLanguage |
| userInitiated:(BOOL)userInitiated; |
| |
| // Reverts any translations done back to the original page language. |
| // Note that the original page language may be different from |sourceLanguage| |
| // passed to |translatePageFromLanguage:toLanguage:userInitiated:| above. |
| // Results in No-op if the page was never translated. |
| - (void)revertTranslation; |
| |
| // Sets or retrieves translation policies associated with a specified language. |
| // |pageLanguage| should be the language code of the language. |
| - (void)setTranslationPolicy:(CWVTranslationPolicy*)policy |
| forPageLanguage:(CWVTranslationLanguage*)pageLanguage; |
| - (CWVTranslationPolicy*)translationPolicyForPageLanguage: |
| (CWVTranslationLanguage*)pageLanguage; |
| |
| // Sets or retrieves translation policies associated with a specified page. |
| // |pageHost| should be the hostname of the website. Must not be empty. |
| - (void)setTranslationPolicy:(CWVTranslationPolicy*)policy |
| forPageHost:(NSString*)pageHost; |
| - (CWVTranslationPolicy*)translationPolicyForPageHost:(NSString*)pageHost; |
| |
| @end |
| |
| NS_ASSUME_NONNULL_END |
| |
| #endif // IOS_WEB_VIEW_PUBLIC_CWV_TRANSLATION_CONTROLLER_H_ |