    private final void initializeHash(Locale locale) throws IOException {
        synchronized (getClass()) {
                        this.pinyinHash = new HashMap();
                        // Read UTF8 character stream
                        BufferedReader datafile =
                                new BufferedReader
                                        (new InputStreamReader
                                                (getClass().getResourceAsStream
                                                 ((String)hashedFilenames.get(locale)), "UTF8"));

                        String buffer;
                        while ((buffer = datafile.readLine()) != null) {
                                int       index    = buffer.indexOf("\t");
                                String    pinyin   = buffer.substring(0, index);
                                ArrayList newlist  = new ArrayList();
                                int       oldindex = index + 1;
                                do {
                                       index = buffer.indexOf(" ", oldindex);
                                        if (index == -1) index = buffer.length();
                                        String hanzi = buffer.substring(oldindex, index);
                                        if (hanzi.length() > 0) newlist.add(hanzi);
                                        oldindex = index + 1;
                                } while (oldindex < buffer.length());
                                this.pinyinHash.put(pinyin.intern(), newlist);
                        }
                        datafile.close();
        }
    }
