Я нашел этот отличный скрипт Ганта на http://blog.armbruster-it.de/2010/07/getting-a-list-of-all-i18n-properties-used-in-a-grails.-application/ Спасибо, Стефан!
Описание: создать список всех свойств i18n, используемых в groovy-коде и шаблонах gsp.
def properties = []
new File(".").eachFileRecurse {
if (it.file) {
switch (it) {
case ~/.*\.groovy/:
def matcher = it.text =~ /code:\s*["'](.*?)["']/
matcher.each { properties << it[1] }
break
case ~/.*\.gsp/:
def matcher = it.text =~ /code=["'](.*?)["']/
matcher.each { properties << it[1] }
break
}
}
}
println properties.sort().unique().join("\n")
Я попытался расширить его следующим образом. Допустим, у нас есть свойства сообщения soem, такие как:
message(code: 'product.label', default: 'Product')
Что мы хотим получить на выходе скрипта примерно так:
product.label=Product
Я попытался добавить некоторое условие в регулярное выражение:
def matcher = it.text =~ /code=["'](.*?)["'] | default=\s*["'](.*?)["']/
и заполнить его свойствами. Но поскольку регулярное выражение не находит пары частей «код и по умолчанию», это не сработает.
Любая идея, как изменить регулярное выражение или весь скрипт, чтобы сделать это?