Last active
December 23, 2015 14:39
-
-
Save r-plus/6649887 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Contributor: Thanks wakinchan's work to compatible for GoogleTranslate v2.0 | |
| // https://github.com/wakinchan/GoogleTranslateScheme | |
| #define kNewURLScheme "googletranslate://tweak?q=" | |
| @interface TextTranslator : NSObject <UIApplicationDelegate> | |
| - (id)initWithDelegate:(id)delegate userInfo:(id)info translateText:(id)text fromLanguage:(id)language toLanguage:(id)language5 localeLanguage:(id)language6 inputMethod:(int)method; | |
| - (void)start; | |
| @end | |
| @interface TranslateViewController : UIViewController | |
| @end | |
| @interface GTRTabBarController : UIViewController | |
| - (void)setSelectedIndex:(unsigned int)arg1; | |
| @end | |
| @interface TranslateAppDelegate : NSObject <UIApplicationDelegate> | |
| @property(readonly, weak, nonatomic) TranslateViewController *translateViewController; | |
| @property(strong, nonatomic) GTRTabBarController *tabBarController; | |
| @end | |
| %hook TranslateAppDelegate | |
| static inline BOOL OpenFromTweakURL(TranslateAppDelegate *self, NSURL *url) | |
| { | |
| NSString *urlString = [url absoluteString]; | |
| if ([urlString hasPrefix:@kNewURLScheme]) { | |
| NSString *query = [urlString substringFromIndex:[@kNewURLScheme length]]; | |
| NSString *decodedString = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding( | |
| kCFAllocatorDefault, | |
| (CFStringRef)query, | |
| CFSTR(""), | |
| kCFStringEncodingUTF8); | |
| NSArray *languages = [NSLocale preferredLanguages]; | |
| NSString *currentLanguage = [languages[0] substringToIndex:2]; | |
| TextTranslator *tt = [[%c(TextTranslator) alloc] initWithDelegate:self.translateViewController | |
| userInfo:nil | |
| translateText:decodedString | |
| fromLanguage:@"auto" | |
| toLanguage:currentLanguage | |
| localeLanguage:@"en" | |
| inputMethod:0]; | |
| [tt start]; | |
| [self.tabBarController setSelectedIndex:0]; | |
| return YES; | |
| } else { | |
| return NO; | |
| } | |
| } | |
| %group Add | |
| %new(c@:@@@@) | |
| - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)application3 annotation:(id)annotation | |
| { | |
| return OpenFromTweakURL(self, url); | |
| } | |
| %end | |
| %group Hook | |
| - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)application3 annotation:(id)annotation | |
| { | |
| if ([[url absoluteString] hasPrefix:@kNewURLScheme]) | |
| return OpenFromTweakURL(self, url); | |
| else | |
| return %orig; | |
| } | |
| %end | |
| %end | |
| %ctor { | |
| @autoreleasepool { | |
| if ([[[%c(TranslateAppDelegate) alloc] init] respondsToSelector:@selector(application:openURL:sourceApplication:annotation:)]) { | |
| %init(Hook); | |
| } else { | |
| %init(Add); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment