Хороший редактор файлов свойств Java - PullRequest
32 голосов
/ 02 марта 2011

Я работаю над проектом Java с открытым исходным кодом, и у нас есть много файлов свойств ресурсов, которые содержат локализуемые ресурсы сообщений.Эти файлы переведены добровольцами на более чем 20 языков, и я являюсь разработчиком, который в основном редактирует код.

В Java файлы ресурсов для разных локалей группируются в соответствии с соглашением об именах.Например, если ресурс по умолчанию (обычно английский) - «foo.properties», японский ресурс - «foo_ja.properties», французский - «foo_fr.properties» и т. Д. Ради этого вопроса давайте назовем эту группу«группа ресурсов».

Теперь, время от времени, мне нужно реорганизовывать эти файлы ресурсов.Кроме того, мне нужен инструмент для поддержки основ файлов свойств.В общем, мой список требований выглядит примерно так:

  1. Переименование имени ключа свойства, и я хочу, чтобы инструмент переименовал все ключи во всех файлах в одной группе, без моего индивидуального прохожденияих.
  2. Переместите свойство из одной группы ресурсов в другую, и я хочу, чтобы инструмент делал это для каждого файла ресурсов в группе.
  3. В Java файлы ресурсов находятся в ISO-Кодировка 8859-1, а не кодировка платформы по умолчанию.
  4. Я не хочу видеть \ uXXXX при редактировании / просмотре файлов свойств, но я ожидаю, что инструмент сохранит их.
  5. Я не хочу, чтобы инструмент изменял порядок свойств в файле ресурсов и не связывался с комментариями.Я ожидаю, что инструмент сохранит их.
  6. Я хочу, чтобы инструмент обрабатывал другие детали синтаксиса файлов ресурсов, такие как многострочный текст.

К сожалению, я не нашел ничего хорошегоинструмент, который соответствует этим критериям.Я в первую очередь пользователь IntelliJ IDEA, но он не подходит для № 2 и № 3.Встроенный редактор файлов свойств Eclipse еще хуже, и AFAICT это не делает # 1, # 2, # 4.На самом деле ему не хватает представления, которое пересекает файлы ресурсов в одной группе.NetBeans также примитивен.То же самое относится и к NetBeans, хотя он # 4.

Кто-нибудь знает хороший инструмент, который отвечает всем требованиям?

Ответы [ 9 ]

5 голосов
/ 02 марта 2011

Я использовал плагин для затмения. Я думаю, что это: http://sourceforge.net/projects/eclipse-rbe/

Это нормально, позволяет добавлять и переименовывать свойства, показывает предупреждения, если свойство переведено не на все поддерживаемые языки и т. Д.

Его недостаток в том, что он всегда использует нотацию `\ uXXXX 'для символов Юникода. Таким образом, вы должны использовать этот плагин для чтения созданных файлов. Это делает поиск очень сложным. И я не знаю, возможно ли настроить его для создания UTF-8-кодированных пакетов.

3 голосов
/ 06 января 2014

Взгляните на онлайн-инструмент POEditor https://poeditor.com. Его проект основан.

3 голосов
/ 02 июня 2012

Проверьте Multiproperties , если вы все еще ищете такой плагин: см. Здесь

Отсутствует только требование №6.

2 голосов
/ 15 марта 2011

На данный момент, я думаю, ответ заключается в том, что в Java нет хорошего редактора файлов свойств, который бы соответствовал перечисленным критериям. prbeditor звучит многообещающе, но его уже нет, IntelliJ IDEA хорошо выглядит на бумаге, но страдает от критической ошибки, и тогда плагины Eclipse все несколько примитивны.

2 голосов
/ 06 марта 2011

Я уже некоторое время использую prbeditor , и я думаю, что он может удовлетворить ваши требования:

  1. Это можно сделать, изменив ключевой столбец в табличном представлении.
  2. Это можно сделать, скопировав столбец ключа, который фактически скопирует ключ и все значения на разных языках, а затем вставив его в другое табличное представление, которое вставит ключ и значения в разные столбцы табличного представления. .
  3. Символы могут быть экранированы с помощью \ uXXXX, но не уверен, что он делает это только для символов, отличных от ISO-8591-1, или даже для всех символов, отличных от US-ASCII.
  4. \ uXXXX декодируется для редактора и записывается обратно в файл как \ uXXXX.
  5. Порядок свойств не изменяется, не уверен, как он обрабатывает комментарии.
  6. Вы можете ввести многострочный текст, и он будет правильно записан в файл свойств.
2 голосов
/ 02 марта 2011

Оказывается, IntelliJ должен быть в состоянии сделать # 3 (за исключением того, что он не работает в текущем выпуске из-за ошибки .) Так что у меня остается только # 2.

В настоящее время (и для рассматриваемой проблемы) я решил, что собрать скрипт Groovy быстрее, чем опробовать эти инструменты:

#!/usr/bin/env groovy
// base name of the resource group to move a property from
File base = new File(args[0])
// key name of the property to move
String from = args[1]
// base name of the resource group to move the property to
File dst  = new File(args[2])
// name of the new property after move
String to = args[3]

/*
TODO:
  support multi-line
  insert the text in a better place, in the sort order
*/

base.parentFile.eachFileMatch(~"${base.name}(_.*)?\\.properties") { f ->
  def l = f.name.substring(base.name.length())
  println "${f}"

  def tmp = new File(f.path+".tmp")

  // delete this property from the source, and remember it
  def dropped = null;
  tmp.withWriter("iso-8859-1") { w ->
    f.filterLine(w,"iso-8859-1") { line ->
      if (line.startsWith(from)) {
        dropped = line;
        return false;
      } else {
        return true;
      }
    }
  }
  tmp.renameTo(f)

  if (dropped==null)    return; // nothing to copy to

  // append
  f = new File(dst.path+l)
  tmp = new File(f.path+".tmp")
  println "-> ${f}"

  existing = f.bytes
  needsLF = (existing[existing.length-1]!='\n')

  f.withWriterAppend("iso-8859-1") { w ->
    if (needsLF) w.write('\n')
    w.write(to+dropped.substring(from.length()))
    w.write('\n')
  }
}

Этот скрипт взломан и не понимает свойстваСинтаксис файла, так что это не очень надежно.Но VCS может компенсировать этот недостаток, позволяя вам точно увидеть, что сделал скрипт.

Я все еще надеюсь найти хороший инструмент, чтобы в более длительной перспективе я был более продуктивным.Поэтому, пожалуйста, продолжайте получать ответы!

2 голосов
/ 02 марта 2011

Редактор свойств (плагин Eclipse) точно # 4.Никогда не нуждался в этом ни для чего другого.

1 голос
/ 09 июля 2015

Это старый, но хороший инструмент.

JRC-Editor: http://zaval.org/products/jrc-editor/ он делает все, кроме вас, но переупорядочивает ключи (сортирует их), что может быть не тем, что вы хотите. (Может быть, эту функцию можно отключить)

Хотя переупорядочивать ключи может быть нехорошо, я считаю, что это очень полезно, когда много людей работают над одним набором ресурсов. Инструменты контроля версий, такие как SVN, имеют больше шансов объединить отсортированные пакеты ресурсов.

0 голосов
/ 06 декабря 2011

check j18n http://j18n.nomagicsoftware.com Он делает то, что вы хотите и вводит наследование ресурсов, а также обеспечивает управление версиями для всех правок

...