package org.wikipedia.language;
import android.support.annotation.NonNull;
import java.util.Locale;
public final class AcceptLanguageUtil {
private static final float APP_LANGUAGE_QUALITY = .9f;
private static final float SYSTEM_LANGUAGE_QUALITY = .8f;
/**
* @return The value that should go in the Accept-Language header.
*/
@NonNull
public static String getAcceptLanguage(@NonNull String wikiLanguageCode,
@NonNull String appLanguageCode,
@NonNull String systemLanguageCode) {
String acceptLanguage = wikiLanguageCode;
acceptLanguage = appendToAcceptLanguage(acceptLanguage, appLanguageCode, APP_LANGUAGE_QUALITY);
acceptLanguage = appendToAcceptLanguage(acceptLanguage, systemLanguageCode, SYSTEM_LANGUAGE_QUALITY);
return acceptLanguage;
}
@NonNull
private static String appendToAcceptLanguage(@NonNull String acceptLanguage,
@NonNull String languageCode, float quality) {
// If accept-language already contains the language, just return accept-language.
if (acceptLanguage.contains(languageCode)) {
return acceptLanguage;
}
// If accept-language is empty, don't append. Just return the language.
if (acceptLanguage.isEmpty()) {
return languageCode;
}
// Accept-language is nonempty, append the language.
return String.format(Locale.ROOT, "%s,%s;q=%.1f", acceptLanguage, languageCode, quality);
}
private AcceptLanguageUtil() { }
}