错误语言的 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”作为查询字符串的一部分,以指定文件的语言和本地化设置。

指定特定语言环境似乎解决了这个问题。