원클릭으로
jmix-add-i18n-keys
Add complete Jmix message keys for entities, enums, views, actions, and validation text.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Add complete Jmix message keys for entities, enums, views, actions, and validation text.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Open a Jmix entity detail view from a button/action and refresh related data after save.
Add Jmix entity lifecycle event listeners to perform additional actions with saved or loaded entities.
Configure or audit Jmix fetch plans in XML views, fragments, DataManager loads, repositories, and entity events when loading references, avoiding N+1 queries, fixing unfetched attribute errors, or tuning data loading.
Add inline editable parent-child composition UI to a Jmix detail view, when a parent entity owns child records edited via a property-bound collection container (no query loader).
Create a Jmix Flow UI detail view with XML descriptor, save-close action, messages, and policies.
Create or change Jmix DTO entities and other non-persistent transfer models for UI data containers, REST/API payloads, custom data stores, external data, or calculated read models.
| name | jmix-add-i18n-keys |
| description | Add complete Jmix message keys for entities, enums, views, actions, and validation text. |
Use this skill whenever adding user-visible text, entities, enum values, views, or validation messages.
msg:// in XML descriptors.MessageBundle in view controllers and Messages in services/beans.msg:// reference against the bundle key exactly; key lookup is case-sensitive.msg://<message-group>/<key> references when the key belongs to another message group.com.company.app.entity/Customer=Customer
com.company.app.entity/Customer.name=Name
com.company.app.entity/OrderStatus=Order status
com.company.app.entity/OrderStatus.NEW=New
customerListView.title=Customers
customerDetailView.title=Customer
createOrderButton.text=Create order
A Jmix message reference has two forms:
msg://<key>.msg://<message-group>/<key>.The message group is usually the Java package-style bundle group before / in a properties key. Entity messages often use the entity package group, for example com.company.app.entity/Customer.name. View-local messages usually live in the view package group, for example com.company.app.view.customer/customerListView.title.
Brief references are resolved against the current XML descriptor message group. They are fine for keys stored next to that descriptor:
<view title="msg://customerListView.title">
<button id="createOrderButton" text="msg://createOrderButton.text"/>
</view>
Use a full reference when the key is in another group, for example entity captions, menu keys, shared application keys, or text used from a descriptor whose package does not match the key group:
<item view="Customer.list" title="msg://com.company.app.view.customer/customerListView.title"/>
<h4 text="msg://com.company.app.entity/Customer.orders"/>
For Bean Validation messages, keep the same full reference inside braces:
@NotNull(message = "{msg://com.company.app.entity/Customer.email.required}")
private String email;
@ViewComponent
private MessageBundle messageBundle;
String text = messageBundle.getMessage("createOrderButton.text");
For localized entity/attribute captions (not bundle-key formatting), inject io.jmix.core.MessageTools and Metadata: messageTools.getEntityCaption(metadata.getClass(Customer.class)) and messageTools.getPropertyCaption(metadata.getClass(Customer.class), "name").
Before finishing, search changed XML and Java for message references and verify the keys exist in the correct bundle with identical casing.
<button id="createOrderButton" text="msg://createOrderButton.text"/>
createOrderButton.text=Create order
Do not rely on similar casing such as CreateOrderButton.text or createorderButton.text.
msg:// keys that differ from properties keys only by case.msg://key references to keys stored in another message group.${0} placeholders in formatMessage; use Java formatter placeholders such as %s.