添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
This commit is contained in:
161
MX-PD-盘古 - new/PanGu.DieBonderApp/.github/instructions/localization-popup.instructions.md
vendored
Normal file
161
MX-PD-盘古 - new/PanGu.DieBonderApp/.github/instructions/localization-popup.instructions.md
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||
---
|
||||
applyTo: "MainShell/Common/**/*.cs,**/*ViewModel.cs,**/*Service.cs,**/*Process*.cs"
|
||||
---
|
||||
|
||||
# Localization and Popup Instructions
|
||||
|
||||
## Scope
|
||||
These rules apply to internal program message dialogs only.
|
||||
|
||||
Do not apply these rules to:
|
||||
- database alarms
|
||||
- PLC alarm chain
|
||||
- device alarm chain
|
||||
- AlarmAsync main alarm path
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**<2A><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>**<2A><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||||
- <20><><EFBFBD>ݿⱨ<DDBF><E2B1A8>
|
||||
- PLC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·
|
||||
- <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·
|
||||
- `AlarmAsync()` <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·
|
||||
|
||||
## Required Popup Pattern
|
||||
For internal prompts:
|
||||
1. define MessageKey enum value in `MainShell/Common/MessageKey.cs`
|
||||
2. add mapping in `LanguageResourceHelper.ResourceKeyMap`
|
||||
3. add Chinese resource in `MainShell/Language/MXJM_CN.xaml`
|
||||
4. add English resource in `MainShell/Language/MXJM_EN.xaml`
|
||||
5. call `LocalizedMessageBox.Show()` or `LocalizedMessageBox.ShowFormat()`
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD>
|
||||
1. <20><> `MessageKey.cs` <20>ж<EFBFBD><D0B6><EFBFBD>ö<EFBFBD><C3B6>
|
||||
2. <20><> `LanguageResourceHelper.ResourceKeyMap` <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>
|
||||
3. <20><> `MXJM_CN.xaml` <20>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
||||
4. <20><> `MXJM_EN.xaml` <20>в<EFBFBD>Ӣ<EFBFBD><D3A2><EFBFBD><EFBFBD>Դ
|
||||
5. ҵ<><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ<CDB3><D2BB><EFBFBD><EFBFBD> `LocalizedMessageBox.Show()` <20><> `ShowFormat()`
|
||||
|
||||
## Required Title Keys
|
||||
Use:
|
||||
- MessageKey.TitleInfo
|
||||
- MessageKey.TitleWarning
|
||||
- MessageKey.TitleError
|
||||
- MessageKey.TitleConfirm
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһʹ<EFBFBD>ã<EFBFBD>
|
||||
- `MessageKey.TitleInfo`
|
||||
- `MessageKey.TitleWarning`
|
||||
- `MessageKey.TitleError`
|
||||
- `MessageKey.TitleConfirm`
|
||||
|
||||
## Formatting Rules
|
||||
- For parameterized messages, use `ShowFormat()`
|
||||
- Resource text should use placeholders such as `{0}`, `{1}`
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>İ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD> `ShowFormat()`<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ı<EFBFBD>ʹ<EFBFBD><EFBFBD> `{0}`<EFBFBD><EFBFBD>`{1}` ռλ<D5BC><CEBB><EFBFBD><EFBFBD>
|
||||
|
||||
## Forbidden Patterns
|
||||
Do not generate:
|
||||
- `MwMessageBox.Show("<22><><EFBFBD><EFBFBD>")`
|
||||
- `MessageBox.Show("<22><><EFBFBD><EFBFBD>")`
|
||||
- `LocalizedMessageBox.Show("resourceKeyString")`
|
||||
- direct resource dictionary access for popup text
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- `MwMessageBox.Show("<22><><EFBFBD><EFBFBD>")`
|
||||
- `MessageBox.Show("<22><><EFBFBD><EFBFBD>")`
|
||||
- `LocalizedMessageBox.Show("<22><>Դkey<65>ַ<EFBFBD><D6B7><EFBFBD>")`
|
||||
- ֱ<>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD>
|
||||
|
||||
## Migration Rule
|
||||
When modifying old internal prompt code, prefer migrating old MessageBox/MwMessageBox usage to LocalizedMessageBox and update:
|
||||
- MessageKey enum
|
||||
- ResourceKeyMap
|
||||
- Chinese resource
|
||||
- English resource
|
||||
- business code call site
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
Ǩ<EFBFBD>ƾɴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>еij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾʱ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ȸ<EFBFBD>Ϊ `LocalizedMessageBox` <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>룺
|
||||
- MessageKey ö<><C3B6>
|
||||
- ResourceKeyMap ӳ<><D3B3>
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
||||
- Ӣ<><D3A2><EFBFBD><EFBFBD>Դ
|
||||
- ҵ<><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>
|
||||
|
||||
## Workflow / Process Error and Message Localization
|
||||
Error messages, status messages, and user-facing messages generated in:
|
||||
- Service layer (Service/*Service.cs)
|
||||
- Activity layer (MainShell/Process/Activity/*.cs)
|
||||
- ProcessService implementations
|
||||
|
||||
Must follow the same localization requirements as popup dialogs:
|
||||
1. Define MessageKey enum values for all error/status messages
|
||||
2. Register in LanguageResourceHelper.ResourceKeyMap
|
||||
3. Add translations in MXJM_CN.xaml and MXJM_EN.xaml
|
||||
4. Pass MessageKey enum (not raw strings) in WorkflowContext or result objects
|
||||
5. Display messages using LocalizedMessageBox from ViewModel/View layer
|
||||
|
||||
Do not hardcode error messages or status strings in Service/Activity code.
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
|
||||
- Service <20>㣨Service/*Service.cs<63><73>
|
||||
- Activity <20>㣨MainShell/Process/Activity/*.cs<63><73>
|
||||
- ProcessService ʵ<><CAB5>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD>뵯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ı<EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD>淶<EFBFBD><EFBFBD>
|
||||
1. <20><> MessageKey <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>/״̬<D7B4><CCAC>Ϣ<EFBFBD><CFA2>ö<EFBFBD><C3B6>ֵ
|
||||
2. <20><> LanguageResourceHelper.ResourceKeyMap <20><>ע<EFBFBD><D7A2>
|
||||
3. <20><> MXJM_CN.xaml <20><> MXJM_EN.xaml <20><><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
||||
4. <20><> WorkflowContext <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD> MessageKey ö<><C3B6>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
5. <20><> ViewModel/View <20><>ʹ<EFBFBD><CAB9> LocalizedMessageBox <20><>ʾ<EFBFBD><CABE>Ϣ
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Service/Activity <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>״̬<D7B4>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
## Example: Adding Workflow Error Message
|
||||
For a new workflow error in a Service:
|
||||
|
||||
1. Define in `MessageKey.cs`:
|
||||
```csharp
|
||||
ProcessError_InvalidToolId,
|
||||
ProcessError_HardwareTimeout,
|
||||
```
|
||||
|
||||
2. Add to `LanguageResourceHelper.ResourceKeyMap`:
|
||||
```csharp
|
||||
{ MessageKey.ProcessError_InvalidToolId,
|
||||
"MXJM:ProcessError_InvalidToolId" },
|
||||
{ MessageKey.ProcessError_HardwareTimeout,
|
||||
"MXJM:ProcessError_HardwareTimeout" },
|
||||
```
|
||||
|
||||
3. In result object, return the message key:
|
||||
```csharp
|
||||
public MessageKey? ErrorMessageKey { get; set; }
|
||||
```
|
||||
|
||||
4. In Activity's AfterExecute or ViewModel, check and display:
|
||||
```csharp
|
||||
if (result.ErrorMessageKey.HasValue)
|
||||
{
|
||||
LocalizedMessageBox.Show(result.ErrorMessageKey.Value,
|
||||
MessageKey.TitleError);
|
||||
}
|
||||
```
|
||||
|
||||
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
<EFBFBD>Թ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
1. <20><> `MessageKey.cs` <20>ж<EFBFBD><D0B6>壺
|
||||
ProcessError_InvalidToolId
|
||||
ProcessError_HardwareTimeout
|
||||
|
||||
2. <20><> `LanguageResourceHelper.ResourceKeyMap` <20><>ע<EFBFBD><D7A2>
|
||||
3. <20><> Service <20><><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>а<EFBFBD><D0B0><EFBFBD> MessageKey
|
||||
4. <20><> Activity AfterExecute <20><> ViewModel <20>м<EFBFBD><D0BC>鲢ʹ<E9B2A2><CAB9> LocalizedMessageBox <20><>ʾ
|
||||
Reference in New Issue
Block a user