¿Alguien sabe de una biblioteca Java que me permita analizar archivos .PO? Simplemente quiero crear un Mapa de IDs y Valores para poder cargarlos en una base de datos.¿Hay una biblioteca Java para analizar los archivos PO gettext?
Respuesta
Según Java gettext utilities Manual que puede convertir el archivo PO a una clase ResourceBundle usando el programa msgfmt --java2
y leerlo usando java.util.ResourceBundle o gnu.gettext.GettextResource - supongo que es una forma más eficiente. Gettext-commons hacer exactamente lo mismo que incluye la creación de procesos intermedios para llamar msgfmt porque se posiciona como siguiente:
Gettext Commons es una biblioteca Java que hace uso de GNUutilidades gettext.
Si aún desea exactamente una biblioteca Java, la única forma que veo es escribir su propia biblioteca para analizar este formato, es decir, reescribir el código fuente msgfmt del lenguaje C al Java. Pero no estoy seguro de que sea más rápido que crear el proceso + ejecutar el programa C.
También intento lo mismo, ¿podría decirme cómo puedo usar exactamente 'msgfmt' en mi proyecto java para convertir po a ResourceBundle. Parece un comando. –
gettext-commons es el único que encontré mientras hacía algunas investigaciones hace algún tiempo.
No pude encontrar el código en ese proyecto que realmente lee los archivos PO. ¿Tuviste? –
Gettext-commons llama al msgfmt como un paso intermedio, por lo que no puede evitar una creación de proceso. Ver esta figura http://xnap-commons.sourceforge.net/gettext-commons/gettext-structure.png – aponomarenko
He buscado en Internet y no he podido encontrar una biblioteca existente, tampoco. Si usa Scala, es bastante fácil escribir un analizador, gracias a su función de combinador de analizadores.
Llame PoParser.parsePo("po file content")
. El resultado es una lista de Translation
.
que han hecho de este código en una biblioteca (puede ser utilizado por cualquier lenguaje de JVM, como Java, por supuesto!): https://github.com/ngocdaothanh/scaposer
import scala.util.parsing.combinator.JavaTokenParsers
trait Translation
case class SingularTranslation(
msgctxto: Option[String],
msgid: String,
msgstr: String) extends Translation
case class PluralTranslation(
msgctxto: Option[String],
msgid: String,
msgidPlural: String,
msgstrNs: Map[Int, String]) extends Translation
// http://www.gnu.org/software/hello/manual/gettext/PO-Files.html
object PoParser extends JavaTokenParsers {
// Removes the first and last quote (") character of strings
// and concats them.
private def unquoted(quoteds: List[String]): String =
quoteds.foldLeft("") { (acc, quoted) =>
acc + quoted.substring(1, quoted.length - 1)
}
// Scala regex is single line by default
private def comment = rep(regex("^#.*".r))
private def msgctxt = "msgctxt" ~ rep(stringLiteral) ^^ {
case _ ~ quoteds => unquoted(quoteds)
}
private def msgid = "msgid" ~ rep(stringLiteral) ^^ {
case _ ~ quoteds => unquoted(quoteds)
}
private def msgidPlural = "msgid_plural" ~ rep(stringLiteral) ^^ {
case _ ~ quoteds => unquoted(quoteds)
}
private def msgstr = "msgstr" ~ rep(stringLiteral) ^^ {
case _ ~ quoteds => unquoted(quoteds)
}
private def msgstrN = "msgstr[" ~ wholeNumber ~ "]" ~ rep(stringLiteral) ^^ {
case _ ~ number ~ _ ~ quoteds => (number.toInt, unquoted(quoteds))
}
private def singular =
(opt(comment) ~ opt(msgctxt) ~
opt(comment) ~ msgid ~
opt(comment) ~ msgstr ~ opt(comment)) ^^ {
case _ ~ ctxto ~ _ ~ id ~ _ ~ s ~ _ =>
SingularTranslation(ctxto, id, s)
}
private def plural =
(opt(comment) ~ opt(msgctxt) ~
opt(comment) ~ msgid ~
opt(comment) ~ msgidPlural ~
opt(comment) ~ rep(msgstrN) ~ opt(comment)) ^^ {
case _ ~ ctxto ~ _ ~ id ~ _ ~ idp ~ _ ~ tuple2s ~ _ =>
PluralTranslation(ctxto, id, idp, tuple2s.toMap)
}
private def exp = rep(singular | plural)
def parsePo(po: String): List[Translation] = {
val parseRet = parseAll(exp, po)
if (parseRet.successful) parseRet.get else Nil
}
}
Genial, +1 para usar Scala –
El tennera project on github contiene un analizador basado en antlr para GNU Gettext PO /MACETA. Creo que Redhat lo usa para un software de traducción basado en la web.
.MO analizador (no Java, pero Scala), analiza en Mapa: http://scalamagic.blogspot.com/2013/03/simple-gettext-parser.html, fuente: http://pastebin.com/csWx5Sbb
¡Bienvenido a Stackoverflow! En general, nos gustan las respuestas en el sitio para poder mantenernos firmes: los enlaces son geniales, pero si ese enlace se rompe alguna vez, la respuesta debería tener suficiente información para seguir siendo útil. Considere editar su respuesta para incluir más detalles. Consulte [Preguntas frecuentes] (http://www.stackoverflow.com/faq) para obtener más información. – slm
He encontrado algunas clases de Java para leer y escribir archivos po: https://launchpad.net/po-parser
- 1. analizando archivos gettext .po con python
- 2. Archivos Gettext .po bajo el control de versión
- 3. ¿Puedo actualizar automáticamente los archivos msg en los archivos .po de gettext para cambios de texto triviales?
- 4. ¿Hay una biblioteca de código abierto de Java para analizar archivos de Excel 2007?
- 5. ¿Hay alguna biblioteca para analizar archivos de AutoCAD?
- 6. traduzco archivos .js usando gettext
- 7. Combinar 2 archivos GetText
- 8. Cómo convertir archivos .po de GNU Gettext a archivos .ts de Qt?
- 9. Gettext: Cómo actualizar los archivos po y pot después de que se modifica la fuente
- 10. anula los archivos gettext .mo
- 11. ¿Hay una biblioteca Java para procesar archivos ONIX?
- 12. Servicio de traducción de Google para GNU gettext PO archivos que admiten plurales de estilo ngettext
- 13. ¿Traducir automáticamente archivos .po?
- 14. ¿Hay una función cmake para actualizar los archivos .pot?
- 15. Cómo convertir el archivo gettext .mo al archivo .po
- 16. ¿Alguien sabe de una biblioteca en Java que pueda analizar los archivos de forma de ESRI?
- 17. Uso de Babel: cómo proteger los comentarios del traductor (y las traducciones antiguas) en los archivos PO gettext de GNU?
- 18. ¿Hay una biblioteca Java para esteganografía?
- 19. ¿Cómo usar los archivos po/pot con php?
- 20. ¿Alguien puede analizar cómo funciona la generación del archivo de localización (.mo, .po)?
- 21. ¿Hay una biblioteca Java para analizar cadenas de formato de impresión?
- 22. Cómo trabajar eficientemente con los archivos PO de gettext al realizar pequeñas ediciones en valores de texto grandes
- 23. Django i18n: ¿hay una alternativa gettext?
- 24. Los reemplazos de gettext
- 25. Cómo crear archivos .po usando xgettext en Windows?
- 26. ¿Qué tiene de bueno gettext para los archivos de idioma?
- 27. Detectando errores en archivos .po
- 28. ¿Para qué se utilizan los diferentes formatos de archivo gettext?
- 29. ¿Hay una buena biblioteca de cifrado GnuPG para Java/Scala?
- 30. ¿Hay una biblioteca para descomprimir archivos .Z usando VB.NET?
¿Qué es exactamente lo que necesita ¿que hacer? –
Curioso, ¿Qué es un archivo PO? – Nishant
un archivo PO es un archivo de recursos generado por GNU gettext –