亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? preparetranslation.java

?? 非常棒的java數據庫
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (license2)
 * Initial Developer: H2 Group
 */
package org.h2.tools.i18n;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.Stack;
import java.util.Map.Entry;

import org.h2.server.web.PageParser;
import org.h2.tools.doc.XMLParser;
import org.h2.util.FileUtils;
import org.h2.util.IOUtils;
import org.h2.util.SortedProperties;
import org.h2.util.StringUtils;

/**
 * This class updates the translation source code files by parsing
 * the HTML documentation. It also generates the translated HTML
 * documentation.
 */
public class PrepareTranslation {
    private static final String MAIN_LANGUAGE = "en";
    private static final String DELETED_PREFIX = "~";
    private static final boolean AUTO_TRANSLATE = false;
    private static final String[] EXCLUDE = { "datatypes.html", "functions.html", "grammar.html" };

    public static void main(String[] args) throws Exception {
        new PrepareTranslation().run(args);
    }

    private void run(String[] args) throws Exception {
        String baseDir = "src/docsrc/textbase";
        prepare(baseDir, "src/main/org/h2/res");
        prepare(baseDir, "src/main/org/h2/server/web/res");

        // convert the txt files to properties files
        PropertiesToUTF8.textUTF8ToProperties("src/docsrc/text/_docs_de.utf8.txt",
                "src/docsrc/text/_docs_de.properties");
        PropertiesToUTF8.textUTF8ToProperties("src/docsrc/text/_docs_ja.utf8.txt",
                "src/docsrc/text/_docs_ja.properties");

        // create the .jsp files and extract the text in the main language
        extractFromHtml("src/docsrc/html", "src/docsrc/text", MAIN_LANGUAGE);

        // add missing translations and create a new baseline
        prepare(baseDir, "src/docsrc/text");

        // create the translated documentation
        buildHtml("src/docsrc/text", "docs/html", "en");
        // buildHtml("src/docsrc/text", "docs/html", "de");
        buildHtml("src/docsrc/text", "docs/html", "ja");

        // convert the properties files back to utf8 text files, including the
        // main language (to be used as a template)
        PropertiesToUTF8.propertiesToTextUTF8("src/docsrc/text/_docs_en.properties",
                "src/docsrc/text/_docs_en.utf8.txt");
        PropertiesToUTF8.propertiesToTextUTF8("src/docsrc/text/_docs_de.properties",
                "src/docsrc/text/_docs_de.utf8.txt");
        PropertiesToUTF8.propertiesToTextUTF8("src/docsrc/text/_docs_ja.properties",
                "src/docsrc/text/_docs_ja.utf8.txt");

        // delete temporary files
        File[] list = new File("src/docsrc/text").listFiles();
        for (int i = 0; i < list.length; i++) {
            if (!list[i].getName().endsWith(".utf8.txt")) {
                list[i].delete();
            }
        }
    }

    private static void buildHtml(String templateDir, String targetDir, String language) throws IOException {
        File[] list = new File(templateDir).listFiles();
        new File(targetDir).mkdirs();
        // load the main 'translation'
        String propName = templateDir + "/_docs_" + MAIN_LANGUAGE + ".properties";
        Properties prop = FileUtils.loadProperties(propName);
        propName = templateDir + "/_docs_" + language + ".properties";
        if (!(new File(propName)).exists()) {
            throw new IOException("Translation not found: " + propName);
        }
        Properties transProp = FileUtils.loadProperties(propName);
        for (Iterator it = transProp.keySet().iterator(); it.hasNext();) {
            String key = (String) it.next();
            String t = transProp.getProperty(key);
            // overload with translations, but not the ones starting with #
            if (t.startsWith("##")) {
                prop.put(key, t.substring(2));
            } else if (!t.startsWith("#")) {
                prop.put(key, t);
            }
        }
        // add spaces to each token
        for (Iterator it = prop.keySet().iterator(); it.hasNext();) {
            String key = (String) it.next();
            String t = prop.getProperty(key);
            prop.put(key, " " + t + " ");
        }

        ArrayList fileNames = new ArrayList();
        for (int i = 0; i < list.length; i++) {
            String name = list[i].getName();
            if (!name.endsWith(".jsp")) {
                continue;
            }
            // remove '.jsp'
            name = name.substring(0, name.length() - 4);
            fileNames.add(name);
        }
        for (int i = 0; i < list.length; i++) {
            String name = list[i].getName();
            if (!name.endsWith(".jsp")) {
                continue;
            }
            // remove '.jsp'
            name = name.substring(0, name.length() - 4);
            String template = IOUtils.readStringAndClose(new FileReader(templateDir + "/" + name + ".jsp"), -1);
            String html = PageParser.parse(null, template, prop);
            html = StringUtils.replaceAll(html, "lang=\"" + MAIN_LANGUAGE + "\"", "lang=\"" + language + "\"");
            for (int j = 0; j < fileNames.size(); j++) {
                String n = (String) fileNames.get(j);
                if ("frame".equals(n)) {
                    // don't translate 'frame.html' to 'frame_ja.html', 
                    // otherwise we can't switch back to English
                    continue;
                }
                html = StringUtils.replaceAll(html, n + ".html\"", n + "_" + language + ".html\"");
            }
            html = StringUtils.replaceAll(html, "_" + MAIN_LANGUAGE + ".html\"", ".html\"");
            String target;
            if (language.equals(MAIN_LANGUAGE)) {
                target = targetDir + "/" + name + ".html";
            } else {
                target = targetDir + "/" + name + "_" + language + ".html";
            }
            OutputStream out = new FileOutputStream(target);
            OutputStreamWriter writer = new OutputStreamWriter(out, "UTF-8");
            writer.write(html);
            writer.close();
        }
    }
    
    private static boolean exclude(String fileName) {
        for (int i = 0; i < EXCLUDE.length; i++) {
            if (fileName.endsWith(EXCLUDE[i])) {
                return true;
            }
        }
        return false;
    }

    private static void extractFromHtml(String dir, String target, String language) throws Exception {
        File[] list = new File(dir).listFiles();
        for (int i = 0; i < list.length; i++) {
            File f = list[i];
            String name = f.getName();
            if (!name.endsWith(".html")) {
                continue;
            }
            if (exclude(name)) {
                continue;
            }
            // remove '.html'
            name = name.substring(0, name.length() - 5);
            if (name.indexOf('_') >= 0) {
                // ignore translated files
                continue;
            }
            String template = extract(name, f, target);
            FileWriter writer = new FileWriter(target + "/" + name + ".jsp");
            writer.write(template);
            writer.close();
        }
    }

    // private static boolean isText(String s) {
    // if (s.length() < 2) {
    // return false;
    // }
    // for (int i = 0; i < s.length(); i++) {
    // char c = s.charAt(i);
    // if (!Character.isDigit(c) && c != '.' && c != '-' && c != '+') {
    // return true;
    // }
    // }
    // return false;
    // }

    private static String getSpace(String s, boolean start) {
        if (start) {
            for (int i = 0; i < s.length(); i++) {
                if (!Character.isWhitespace(s.charAt(i))) {
                    if (i == 0) {
                        return "";
                    } else {
                        return s.substring(0, i);
                    }
                }
            }
            return s;
        } else {
            for (int i = s.length() - 1; i >= 0; i--) {
                if (!Character.isWhitespace(s.charAt(i))) {
                    if (i == s.length() - 1) {
                        return "";
                    } else {
                        return s.substring(i + 1, s.length());
                    }
                }
            }
            // if all spaces, return an empty string to avoid duplicate spaces
            return "";
        }
    }

    private static String extract(String documentName, File f, String target) throws Exception {
        String xml = IOUtils.readStringAndClose(new InputStreamReader(new FileInputStream(f), "UTF-8"), -1);
        StringBuffer template = new StringBuffer(xml.length());
        int id = 0;
        Properties prop = new SortedProperties();
        XMLParser parser = new XMLParser(xml);
        StringBuffer buff = new StringBuffer();
        Stack stack = new Stack();
        String tag = "";
        boolean ignoreEnd = false;
        String nextKey = "";
        boolean templateIsCopy = false;
        while (true) {
            int event = parser.next();
            if (event == XMLParser.END_DOCUMENT) {
                break;
            } else if (event == XMLParser.CHARACTERS) {
                String s = parser.getText();
                String trim = s.trim();
                if (trim.length() == 0) {
                    if (buff.length() > 0) {
                        buff.append(s);
                    } else {
                        template.append(s);
                    }
                } else if ("p".equals(tag) || "li".equals(tag) || "a".equals(tag) || "td".equals(tag)
                        || "th".equals(tag) || "h1".equals(tag) || "h2".equals(tag) || "h3".equals(tag)
                        || "h4".equals(tag) || "body".equals(tag) || "b".equals(tag) || "code".equals(tag)
                        || "form".equals(tag) || "span".equals(tag) || "em".equals(tag)) {
                    if (buff.length() == 0) {
                        nextKey = documentName + "_" + (1000 + id++) + "_" + tag;
                        template.append(getSpace(s, true));
                    } else if (templateIsCopy) {
                        buff.append(getSpace(s, true));
                    }
                    if (templateIsCopy) {
                        buff.append(trim);
                        buff.append(getSpace(s, false));
                    } else {
                        buff.append(clean(trim));
                    }
                } else if ("pre".equals(tag) || "title".equals(tag) || "script".equals(tag) || "style".equals(tag)) {
                    // ignore, don't translate
                    template.append(s);
                } else {
                    System.out.println(f.getName() + " invalid wrapper tag for text: " + tag + " text: " + s);
                    System.out.println(parser.getRemaining());
                    throw new Exception();
                }
            } else if (event == XMLParser.START_ELEMENT) {
                stack.add(tag);
                String name = parser.getName();
                if ("code".equals(name) || "a".equals(name) || "b".equals(name) || "span".equals(name)) {
                    // keep tags if wrapped, but not if this is the wrapper
                    if (buff.length() > 0) {
                        buff.append(' ');
                        buff.append(parser.getToken().trim());
                        ignoreEnd = false;
                    } else {
                        ignoreEnd = true;
                        template.append(parser.getToken());
                    }
                } else if ("p".equals(tag) || "li".equals(tag) || "td".equals(tag) || "th".equals(tag)
                        || "h1".equals(tag) || "h2".equals(tag) || "h3".equals(tag) || "h4".equals(tag)
                        || "body".equals(tag) || "form".equals(tag)) {
                    if (buff.length() > 0) {
                        if (templateIsCopy) {
                            template.append(buff.toString());
                        } else {
                            template.append("${" + nextKey + "}");
                        }
                        add(prop, nextKey, buff);
                    }
                    template.append(parser.getToken());

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美人与性动xxxx| 欧美国产精品一区二区三区| 日韩欧美美女一区二区三区| 国产色婷婷亚洲99精品小说| 亚洲综合一区二区| 国产成人av资源| 91精品婷婷国产综合久久| 中文字幕成人av| 九九国产精品视频| 欧美日韩综合在线| 久久久久久久电影| 热久久国产精品| 在线观看一区二区精品视频| 久久女同精品一区二区| 天天综合色天天综合色h| a级精品国产片在线观看| 精品国产免费视频| 日本亚洲视频在线| 欧美色偷偷大香| 亚洲欧美一区二区三区极速播放| 国产剧情一区在线| 日韩免费视频线观看| 午夜电影一区二区三区| 在线欧美日韩精品| 亚洲免费成人av| 99国内精品久久| 国产精品美女久久久久aⅴ国产馆| 韩国理伦片一区二区三区在线播放 | 91精品国产色综合久久不卡电影| 国产精品久久久久三级| 国产成人av电影在线播放| 欧美精品一区二区精品网| 久久99精品久久久| 精品国产免费人成在线观看| 另类小说视频一区二区| 日韩欧美亚洲另类制服综合在线| 亚洲成人在线免费| 欧美亚洲另类激情小说| 亚洲成人av一区二区| 欧美曰成人黄网| 亚洲制服丝袜av| 欧美群妇大交群中文字幕| 亚洲18色成人| 日韩免费电影一区| 久久99热这里只有精品| 2020国产精品| 懂色av中文字幕一区二区三区| 国产欧美精品区一区二区三区 | 国产精品影视在线| 久久精品人人做人人爽97| 国产91丝袜在线18| 亚洲色图视频网站| 欧美视频一区在线| 蜜臀av一区二区| 久久久久国产精品麻豆| 成人动漫av在线| 亚洲一二三级电影| 精品动漫一区二区三区在线观看| 粉嫩欧美一区二区三区高清影视 | 国产精品一级二级三级| 欧美国产精品一区| 欧美色电影在线| 久久精品国产精品青草| 国产精品私人自拍| 欧美日韩国产系列| 黄网站免费久久| 一区二区三区免费在线观看| 在线播放中文一区| 高清免费成人av| 亚洲一级电影视频| 久久久久9999亚洲精品| 日本高清免费不卡视频| 久99久精品视频免费观看| 国产精品乱人伦中文| 欧美精品一二三| 成人禁用看黄a在线| 首页国产丝袜综合| 中文字幕精品在线不卡| 777亚洲妇女| av亚洲产国偷v产偷v自拍| 日韩在线a电影| 综合久久综合久久| 亚洲精品一区二区三区在线观看| 91色porny| 国产高清不卡一区二区| 日韩电影在线观看电影| 国产精品乱码妇女bbbb| 欧美大片免费久久精品三p | 亚洲精品成a人| 精品少妇一区二区三区| 欧美日韩一区二区三区四区五区 | 日本一区二区三区视频视频| 精品视频在线免费观看| jlzzjlzz欧美大全| 精品亚洲porn| 日韩国产精品久久久久久亚洲| 国产精品欧美一级免费| 精品精品国产高清a毛片牛牛| 欧美性大战久久| 99久久精品情趣| 国产成人免费9x9x人网站视频| 秋霞影院一区二区| 亚洲国产一区二区三区青草影视| 日韩一区中文字幕| 国产精品久久久久久户外露出| 精品少妇一区二区三区在线视频| 欧美电影影音先锋| 欧美三级电影网| 欧美亚一区二区| 色欧美乱欧美15图片| 91香蕉视频在线| 99re亚洲国产精品| 91小视频免费看| 色嗨嗨av一区二区三区| 99re这里只有精品6| 91网页版在线| 日本伦理一区二区| 欧洲精品一区二区| 欧美伦理影视网| 在线成人av影院| 日韩一区国产二区欧美三区| 日韩无一区二区| 精品国产一区二区三区av性色| 欧美精品一区视频| 国产欧美一区二区三区在线看蜜臀| 久久噜噜亚洲综合| 国产精品视频免费看| 亚洲欧美综合网| 一区二区欧美精品| 日韩在线观看一区二区| 精品在线播放免费| 国产激情一区二区三区桃花岛亚洲| 国产一区二区三区日韩| 成人妖精视频yjsp地址| 91在线视频在线| 欧美三级电影在线观看| 日韩免费在线观看| 国产精品免费丝袜| 夜夜揉揉日日人人青青一国产精品| 亚洲综合色自拍一区| 裸体歌舞表演一区二区| 国产精品香蕉一区二区三区| 99久久国产综合色|国产精品| 日本精品视频一区二区| 91精品国产色综合久久ai换脸 | 成人自拍视频在线观看| 一本到三区不卡视频| 91精品国产综合久久国产大片| 欧美精品一区二区三| 国产精品大尺度| 首页国产欧美日韩丝袜| 国产盗摄女厕一区二区三区| 91久久精品一区二区二区| 日韩欧美国产精品一区| 国产精品视频九色porn| 亚洲国产一区二区视频| 国产精品自拍三区| 欧美色中文字幕| 久久久久久久久久久久久夜| 亚洲少妇30p| 久久国产精品99精品国产| 91社区在线播放| 精品国产自在久精品国产| 一区二区三区电影在线播| 久久av老司机精品网站导航| av色综合久久天堂av综合| 欧美精品久久一区二区三区| 国产精品午夜免费| 午夜视频一区在线观看| www.66久久| 久久青草欧美一区二区三区| 艳妇臀荡乳欲伦亚洲一区| 国产精品一二三在| 欧美一级高清片在线观看| 综合中文字幕亚洲| 国产精品一区一区三区| 欧美一区二区三区四区五区| 亚洲精品中文在线影院| 国产经典欧美精品| 欧美不卡一区二区三区| 午夜日韩在线观看| 日本精品视频一区二区三区| 国产亚洲欧美日韩日本| 久久 天天综合| 欧美一区二区视频在线观看2022| 洋洋成人永久网站入口| 91首页免费视频| 国产精品盗摄一区二区三区| 国产高清在线精品| 久久无码av三级| 捆绑紧缚一区二区三区视频| 91精品在线免费| 日韩二区三区在线观看| 欧美精选午夜久久久乱码6080| 亚洲免费观看在线观看| aaa亚洲精品| 国产精品国产自产拍高清av| 国产v综合v亚洲欧| 欧美高清一级片在线观看| 高清国产一区二区三区|