Как угадать двухбуквенный код языка для функции предложений Google?

Я реализовал очень простую функцию предложений Google на основе того, что нашел здесь: http://shreyaschand.com/blog/2013/01/03/google-autocomplete-api/

Вам даже не нужно использовать синтаксический анализатор XML:

+ (NSArray *)suggestionsForQuery:(NSString *)query language:(NSString *)language
{
    NSMutableArray *suggestions;

    NSString *URLString = [NSString stringWithFormat:@"http://suggestqueries.google.com/complete/search?q=%@&client=toolbar&hl=%@", query, language];

    NSError *error = nil;

    NSString *XMLString = [NSString stringWithContentsOfURL:[NSURL URLWithString:URLString] encoding:NSUTF8StringEncoding error:&error];

    if (error) {

        NSLog(@"ERROR {%@}", error.description);
    }
    else {

        XMLString = [XMLString stringByReplacingOccurrencesOfString:@"<?xml version=\"1.0\"?>" withString:@""];

        XMLString = [XMLString stringByReplacingOccurrencesOfString:@"<toplevel>" withString:@""];

        XMLString = [XMLString stringByReplacingOccurrencesOfString:@"</toplevel>" withString:@""];

        XMLString = [XMLString stringByReplacingOccurrencesOfString:@"<CompleteSuggestion>" withString:@""];

        XMLString = [XMLString stringByReplacingOccurrencesOfString:@"</CompleteSuggestion>" withString:@""];

        XMLString = [XMLString stringByReplacingOccurrencesOfString:@"<suggestion data=\"" withString:@""];

        suggestions = [NSMutableArray arrayWithArray:[XMLString componentsSeparatedByString:@"\"/>"]];

        [suggestions removeLastObject];
    }

    return suggestions;
}

Это работает, но только если вы уже знаете двухбуквенный код языка.

Знаете ли вы, каким образом я могу угадать двухбуквенный код языка в зависимости от местоположения, из которого ищет пользователь?

Если это строго зависит от местоположения, мне бы не понравилось, если бы, скажем, пользователь уехал в отпуск во Францию, и внезапно предложения изменились на Google France.

Должно ли оно основываться на том, какой язык пользователь уже использует на своем устройстве iOS?

1 ответ

Это исправление фактически решит проблему:

NSString *URLString = [NSString stringWithFormat:@"http://suggestqueries.google.com/complete/search?q=%@&client=toolbar&hl=%@", query, [[NSLocale currentLocale] languageCode]];

Тем не менее, у людей, живущих в Индии и говорящих на французском языке, будут предложения Google, основанные на Google France.

Это больше похоже на уменьшение веса проблемы, чем на ее решение.

Другие вопросы по тегам