错误语言的 Facebook iCalendar 文件
Facebook iCalendar files in wrong language
我的应用程序支持通过下载 iCalendar 文件来同步事件。尝试从 Facebook 下载 iCalendar 文件时,在某些情况下,Facebook 服务器 returns 文件的语言错误。
作为美国用户,文件似乎总是以我在 Facebook 网站上选择的语言下载(我的 "primary Facebook language")。这是正确的功能。
对于国际用户而言,情况似乎并非总是如此。许多用户选择 "English" 作为他们的主要语言,但他们仍然根据他们的位置获得文件的本地化语言版本:例如印度用户收到文件的印地语版本,以色列用户收到希伯来语版本。
有没有办法覆盖 Facebook 发送正确版本文件的行为?我可以修改 HTTP 请求的哪些参数以尝试强制 Facebook 发送特定语言?是否有 URL 参数或子域可以让他们以正确的语言发送文件?
下载 iCalendar 文件的当前代码:
urlString = "https://www.facebook.com/ical/b.php?<user-auth-params>"
URL url = new URL(urlString);
HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(httpsURLConnection.getInputStream());
String ical = "";
byte[] buffer = new byte[1024];
while (in.read(buffer, 0, 1024) > 0) {
ical += new String(buffer).replaceAll("[^\P{C}\s]", "");
}
//Log.v(TAG, "stream: " + ical);
httpsURLConnection.disconnect();
顺便说一下,对于对此答案感兴趣的人,Facebook 接受查询参数“&locale=xx-XX”作为查询字符串的一部分,以指定文件的语言和本地化设置。
指定特定语言环境似乎解决了这个问题。
我的应用程序支持通过下载 iCalendar 文件来同步事件。尝试从 Facebook 下载 iCalendar 文件时,在某些情况下,Facebook 服务器 returns 文件的语言错误。
作为美国用户,文件似乎总是以我在 Facebook 网站上选择的语言下载(我的 "primary Facebook language")。这是正确的功能。
对于国际用户而言,情况似乎并非总是如此。许多用户选择 "English" 作为他们的主要语言,但他们仍然根据他们的位置获得文件的本地化语言版本:例如印度用户收到文件的印地语版本,以色列用户收到希伯来语版本。
有没有办法覆盖 Facebook 发送正确版本文件的行为?我可以修改 HTTP 请求的哪些参数以尝试强制 Facebook 发送特定语言?是否有 URL 参数或子域可以让他们以正确的语言发送文件?
下载 iCalendar 文件的当前代码:
urlString = "https://www.facebook.com/ical/b.php?<user-auth-params>"
URL url = new URL(urlString);
HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(httpsURLConnection.getInputStream());
String ical = "";
byte[] buffer = new byte[1024];
while (in.read(buffer, 0, 1024) > 0) {
ical += new String(buffer).replaceAll("[^\P{C}\s]", "");
}
//Log.v(TAG, "stream: " + ical);
httpsURLConnection.disconnect();
顺便说一下,对于对此答案感兴趣的人,Facebook 接受查询参数“&locale=xx-XX”作为查询字符串的一部分,以指定文件的语言和本地化设置。
指定特定语言环境似乎解决了这个问题。