я нашел this и это было очень полезно то, что я хочу сделать, но есть способ сделать то, что в inList следовать Grails ИнтернационализацияИнтернационализация в inList
Благодарности
я нашел this и это было очень полезно то, что я хочу сделать, но есть способ сделать то, что в inList следовать Grails ИнтернационализацияИнтернационализация в inList
Благодарности
я нашел workaround, я думаю, что это может помочь ..
1. ToString()
Как вы знаете, экранные экраны просто выводят значения в выделениях и выпадающих списках через метод toString() показанного объекта. Мы можем построить каждое перечисление с помощью жесткого кодирования и иметь toString() вернуть это значение.
class Product {
enum Status {
AVAILABLE("Beschikbaar"), SOLD_OUT("Uitverkocht")
final String value
Status(String value) {
this.value = value
}
String toString() {
value
}
}
String name
Status status
static constraints = { name blank: false, unique: true }
}
Фактические имена перечисления теперь только появляются в генерируемый HTML:
<select name="status" required="" id="status" >
<option value="AVAILABLE" >Beschikbaar</option>
<option value="SOLD_OUT" >Uitverkocht</option>
</select>
2. MessageSourceResolvable
К настоящему моменту вы, вероятно, понимают, над жестко запрограммированным решением работает только один язык, один жестко закодирован в перечислении его elf - это вызовет проблемы, когда через месяц ваше приложение должно будет поддерживать второй язык :-) Итак, как мы используем тот факт, что у нас уже есть message_XX.properties, где мы поместили наши другие ключи сообщений? Используйте базовую структуру Spring. Попросите наш enum реализовать org.springframework.context.MessageSourceResolvable, например. как это:
enum Status implements org.springframework.context.MessageSourceResolvable {
AVAILABLE, SOLD_OUT
public Object[] getArguments() { [] as Object[] }
public String[] getCodes() { [ name() ] }
public String getDefaultMessage() { "?-" + name() }
}
Теперь мы можем обеспечить значение в наших messages_nl.properties для каждого перечисления мы имеем:
product.label=Product
product.name.label=Naam
product.status.label=Status
AVAILABLE=Beschikbaar
SOLD_OUT=Uitverkocht