private boolean load() {
        boolean returnval = true;
        try {
            if (locFile.exists() & locFile.canRead()) {
                BufferedReader br = null;
                try {
                    br = new BufferedReader(new InputStreamReader(new FileInputStream(locFile), Charset.forName("UTF-8")));
                    String line;
                    data.clear();
                    data = new HashMap<String, String>();
                    while ((line = br.readLine()) != null) {
                        String[] kv = line.split(":", 2);
                        while(kv[1].startsWith(" ")) {
                            kv[1] = kv[1].substring(1);
                        }
                        data.put(kv[0], kv[1].replaceAll("(&([a-f0-9]))", "\u00A7$2"));
                    }
                } catch (FileNotFoundException ex) {
                    Logger.getLogger(Localization.class.getName()).log(Level.SEVERE, null, ex);
                    returnval = false;
                } catch (IOException ex) {
                    Logger.getLogger(Localization.class.getName()).log(Level.SEVERE, null, ex);
                    returnval = false;
                } finally {
                    try {
                        br.close();
                    } catch (Exception e) {
                    }
                }
            } else {
                RealWeather.log("Locale file " + lang + ".lang is not accessible!");
                returnval = false;
            }
        } catch (Exception e) {
            RealWeather.log.log(Level.SEVERE, null, e);
            RealWeather.sendStackReport(e);
            returnval = false;
        }
        return returnval;
    }