Там какие-либо инструменты должны преобразовать файл локализованной строки iPhone в файл строковых ресурсов, который может использоваться в Android? [закрытый]

14
задан Janusz 29 June 2010 в 13:32
поделиться

3 ответа

Ок, я написал свой собственный конвертер, используя немного кода от Алекса.

public static void main(String[] args) throws IOException {
    Scanner fileScanner =
            new Scanner(new FileInputStream(args[0]), "utf-16");
    Writer writer =
            new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
                    new File(args[1])), "UTF8"));
    writer.append("<?xml version=\"1.0\" encoding=\"utf-8\"?> <resources>");
    while (fileScanner.hasNextLine()) {
        String line = fileScanner.nextLine();
        if (line.contains("=")) {
            line = line.trim();
            line = line.replace("\"", "");
            line = line.replace(";", "");
            String[] parts = line.split("=");
            String nextLine =
                    "<string name=\"" + parts[0].trim() + "\">"
                            + parts[1].trim() + "</string>";
            System.out.println(nextLine);
            writer.append(nextLine);
        }
    }
    fileScanner.close();
    writer.append("</resources>");
    writer.close();
}

Было немного сложно заставить Java правильно читать и записывать UTF 16, который я получил из проекта xcode, но теперь он работает как шарм.

4
ответ дан 1 December 2019 в 09:12
поделиться

Это одна из тех областей, где могут пригодиться образ мышления и инструментарий Unix. Я не знаю, на что похож формат iPhone, но если это то, что вы говорите, с каждым значением по одному в строке, простой вызов sed может сделать это:

$ cat infile
"key"="value"
"key2"="value2"
$ sed 's/ *"\([^"]*\)" *= *"\([^"]*\)"/<string name="\1">\2<\/string>/' infile
<string name="key">value</string>
<string name="key2">value2</string>
$

Я ожидаю, что sed доступен на вашем OSX установить.

6
ответ дан 1 December 2019 в 09:12
поделиться

«Инструмент», который я использовал для преобразования файла свойств Java:

    BufferedReader br = new BufferedReader(new InputStreamReader(
            new FileInputStream("c:/messages_en.properties"), "utf-8"));
    String line = null;
    while ((line = br.readLine()) != null) {
        line = line.trim();
        if (line.length() > 0) {
            String[] parts = line.split(" = ");
            System.out.println("<string name=\"" + parts[0] + "\">"
                    + parts[1] + "</string>");
        }
    }
    br.close();
3
ответ дан 1 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: