- Notifications
You must be signed in to change notification settings - Fork 7
ResourceBundle
h908714124 edited this page Aug 27, 2021 · 11 revisions
In order to do internationalization, you need a Map<String, String>
containing message keys and the corresponding translations.
If you have a ResourceBundle
, you have to convert it to a map first:
private static Map<String, String> toMap(ResourceBundle bundle) { return Collections.list(bundle.getKeys()).stream() .collect(Collectors.toMap(Function.identity(), bundle::getString)); }
Call the withMessages(Map<String, String>)
method on the generated parser as follows:
public static void main(String[] args) { Map<String, String> messages = Map.of("key.apple", "manzana"); DeleteCommand command = new DeleteCommandParser().parse(List.of(args)) .orElseThrow(failure -> { StandardErrorHandler.builder() .withMessages(messages) .build().printErrorMessage(notSuccess); System.exit(1); return new RuntimeException(); }); // ... }
In the command class, use the descriptionKey
attribute to associate the message key with an option or parameter:
@Option(names = "--gateway-host", description = "apple", descriptionKey = "key.apple") abstract String gatewayHost();