Ci sono strumenti per convertire un file di string localizzato da Iphone in un file di risorse di string che può essere utilizzato in Android?

Ho il file localizzato di stringhe che viene utilizzato nell'applicazione Iphone che lavoro su port a Android. Ci sono strumenti che passano attraverso il file tratto dal progetto xcode e creano il xml necessario per utilizzare le stringhe in android?

Poiché il file di apple è un file di valore chiave semplice, c'è uno strumento che converte la string in questo formato

  • Come posso scoprire la cartella di immagini delle telecamere di un telefono Android?
  • Imansible risolvere: com.google.firebase: firebase-analytics: 9.0.0
  • Raccogliere una foto dalla galleria e mostrare in una vista di image
  • android aggiunge l'imbottitura tra i pulsanti radiogruppo a livello di programmazione
  • Quando si utilizza scrollTo ListView non si aggiorna, ma quando lo scorrimento manuale viene aggiornato
  • Come impostare la dimensione e il layout in onSizeChanged?
  • "Chiave" = "valore"

    a questa:

    <string name="key"> value </string>

    Questo strumento dovrebbe essere facile da build, ma apprezzo tutti i puntatori di strumenti già funzionanti.

  • Come passare le variables alla visualizzazione personalizzata Prima di call onDraw ()?
  • Come faccio a impedire che Android esegua uno screenshot quando la mia applicazione va in background?
  • Conversione da GLSurfaceView a TextureView (tramite GLTextureView)
  • Utilizzo di JAVA RMI nell'applicazione Android
  • Invio di dati tramite Bluetooth
  • Perché l'intento inviato da LocalBroadCastManager da IntentService non viene ricevuto da BroadCastReceiver all'interno della class Attività?
  • 8 Solutions collect form web for “Ci sono strumenti per convertire un file di string localizzato da Iphone in un file di risorse di string che può essere utilizzato in Android?”

    Penso che ti piaccia questo strumento:

    http://members.home.nl/bas.de.reuver/files/stringsconvert.html

    Anche questo, ma manca di alcune funzioni (come la conversione dello spazio bianco nel nome):

    http://localise.biz/free/converter/ios-to-android

    È gratuito, non ha bisogno di logging e non avrai bisogno di build il tuo script!

    Questa è una delle aree in cui la mentalità e gli strumenti di Unix sono utili. Non so cosa sia il formato iPhone, ma se è quello che dici, con each valore per linea, una semplice chiamata di sed può farlo:

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

    Mi aspetto che sed sia disponibile nell'installazione OSX.

    Ok ho scritto il mio piccolo converter utilizzando un po 'dal codice di alex.

     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(); } 

    Era un po 'difficile get Java per leggere e scrivere correttamente l'input UTF 16 che ho ottenuto dal progetto xcode ma adesso funziona come un fascino.

    Ho migliorato il tuo metodo principale sopra per lavorare per me:

     import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.Scanner; public class StringsConverter { 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\"?>\n<resources>\n"); while (fileScanner.hasNextLine()) { String line = fileScanner.nextLine(); if (line.contains("=")) { String[] parts = line.split("="); parts[0] = parts[0].trim() .replace(" ", "_") .replace("\\n", "_") .replace("-", "_") .replace("\"", "") .replace(";", "") .replace("'", "") .replace("/", "") .replace("(", "") .replace(")", "") .replace("?", "_Question"); parts[1] = parts[1].trim().substring(1, parts[1].length()-3); parts[1] = parts[1].replace("'", "\\'"); String nextLine = "<string name=\"" + parts[0] + "\">" + parts[1].trim() + "</string>"; System.out.println(nextLine); writer.append(nextLine + "\n"); } } fileScanner.close(); writer.append("</resources>"); writer.close(); } } 

    Lo strumento che ho usato per convertire un file di properties; 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(); 

    Aggiunte alcune modifiche alle soluzioni di cui sopra:

    • Nomi di stringhe con stile Android – mondi minuscoli, separati da "_";
    • Convertire gli argomenti di formato string iOS in formato java (% @,% @ a% 1 $ s,% 2 $ s …)
    • Convertire i commenti;

     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\"?>\n<resources>"); writer.append("\n"); while (fileScanner.hasNextLine()) { String line = fileScanner.nextLine(); if (line.contains("=")) { line = line.trim(); line = line.replace("\"", ""); line = line.replace(";", ""); String[] parts = line.split("="); String resultName = processName(parts[0]); String resultValue = processValue(parts[1]); String nextLine = "<string name=\"" + resultName.toLowerCase() + "\">" + resultValue + "</string>"; System.out.println(nextLine); writer.append(nextLine); writer.append("\n"); } else { line = line.replace("/*", "<!--"); line = line.replace("*/", "-->"); writer.append(line); writer.append("\n"); } } fileScanner.close(); writer.append("</resources>"); writer.close(); } private static String processValue(String part) { String value = part.trim(); StringBuilder resultValue = new StringBuilder(); if (value.contains("%@")) { int formatCnt = 0; for (int i = 0; i < value.length(); i++) { char c = value.charAt(i); char next = value.length() > i + 1 ? value.charAt(i + 1) : '\0'; if (c == '%' && next == '@') { formatCnt++; resultValue.append('%'); resultValue.append(formatCnt); resultValue.append("$s"); i++; } else { resultValue.append(value.charAt(i)); } } } else{ resultValue.append(value); } return resultValue.toString(); } private static String processName(String part) { String name = part.trim(); name = name.replace(" ", "_"); name = name.replace("-", "_"); name = name.replace("\n", "_"); name = name.replaceAll("[^A-Za-z0-9 _]", ""); if (Character.isDigit(name.charAt(0))) { name = "_" + name; } StringBuilder resultName = new StringBuilder(); for (int i = 0; i < name.length(); i++) { char c = name.charAt(i); if (Character.isUpperCase(c)) { char prev = i > 0 ? name.charAt(i - 1) : '\0'; if (prev != '_' && !Character.isUpperCase(prev) && prev != '\0') { resultName.append('_'); } resultName.append(Character.toLowerCase(c)); } else { resultName.append(Character.toLowerCase(c)); } } return resultName.toString(); } 

    Questo non risponde veramente alla tua domanda, ma puoi considerare DMLocalizedString per il tuo futuro progetto iOS + Android. Attualmente la fonte è per iOS solo, ma credo che fare la versione Android è abbastanza facile.

    Per la conversione su Android , utilizzare il mio codice di regex. È ansible testare in linea (copiare la string di sostituzione):

    http://www.phpliveregex.com/p/6dA

    la string di sostituzione è <string name="$1">$2</string>

    Per la conversione in iOS , utilizzare il mio codice regex (copiare la string di sostituzione):

    http://www.phpliveregex.com/p/6dC

    la regex utilizzata è ^\<string name=\"(.*)\"\>(.*)\<\/string\>/m , la string di sostituzione è "$1" = "$2";

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.