public static String[][] getTimeZoneList() {
        Locale jiveLocale = JiveGlobals.getLocale();

        String[][] timeZoneList = timeZoneLists.get(jiveLocale);
        if (timeZoneList == null) {
            String[] timeZoneIDs = timeZoneIds;
            // Now, create String[][] using the unique zones.
            timeZoneList = new String[timeZoneIDs.length][2];
            for (int i = 0; i < timeZoneList.length; i++) {
                String zoneID = timeZoneIDs[i];
                timeZoneList[i][0] = zoneID;
                timeZoneList[i][1] = getTimeZoneName(zoneID, jiveLocale);
            }

            // Add the new list to the map of locales to lists
            timeZoneLists.put(jiveLocale, timeZoneList);
        }

        return timeZoneList;
    }
Returns a list of all available time zone's as a String [][]. The first
entry in each list item is the timeZoneID, and the second is the
display name.
<p>
The list of time zones attempts to be inclusive of all of the worlds
zones while being as concise as possible. For "en" language locales
the name is a friendly english name. For non-"en" language locales
the standard JDK name is used for the given Locale. The GMT+/- time
is also included for readability.</p>

@return a list of time zones, as a tuple of the zime zone ID, and its
        display name.
xmppserver/src/main/java/org/jivesoftware/util/LocaleUtils.java