Hi everyone,
I'm experiencing an issue with the french translation of a field I added using a DAC extension. I thought I had done everything right, but my implementation isn't working (the english term is displayed instead of the french one) and I can't figure out why.
Version : Acumatica 24R114.
1°) The Field declaration in its DAC :
#region CegEStatus
[PXDBString(50, IsUnicode = true)]
[PXDefault(PersistingCheck = PXPersistingCheck.Nothing)]
[PXUIField(DisplayName = "Electronic Status", Enabled = false, Visibility = PXUIVisibility.SelectorVisible)]
[EIStatuses.List]
public virtual string CegEStatus { get; set; }
public abstract class cegEStatus : BqlString.Field<cegEStatus> { }
#endregion
2°) EIStatuses list attribute configuration
public class EIStatuses
{
#region Constants
/// <summary>
/// Published when the invoice has been uploaded to eFacture
/// </summary>
public const string IUploaded = "100";
/// <summary>
/// Published when the invoice has been completed to eFacture
/// </summary>
public const string IConfirmed = "101";
/// <summary>
/// Published when the invoice has been completed to eFacture
/// </summary>
public const string ICompleted = "102";
/// <summary>
/// Published when the invoice has been checked for viruses, and none were found
/// </summary>
public const string ISafetyCheckSucceeded = "103";
/// <summary>
/// Published when the invoice has been checked for viruses, and some were found
/// </summary>
public const string ISafetyCheckFailed = "104";
/// <summary>
/// Published when the invoice has been successfully validated(PDF format, XML technical checks, XML functional checks)
/// </summary>
public const string IValidated = "105";
/// <summary>
/// Published when the invoice has failed the validation(PDF format, XML technical checks, XML functional checks)
/// </summary>
public const string IValidationFailed = "106";
/// <summary>
/// Published when the invoice has been scheduled to be sent to the outgoing platform
/// </summary>
public const string IPlannedForDeposit = "107";
#endregion
#region Labels
private static readonly string[] _statusKeys = new string[]
{
IUploaded,
IConfirmed,
ICompleted,
ISafetyCheckSucceeded,
ISafetyCheckFailed,
IValidationFailed,
IValidated,
IPlannedForDeposit,
};
private static readonly string[] _statusValues = new string[]
{
Messages.Uploaded,
Messages.Confirmed,
Messages.Completed,
Messages.SafetyCheckSucceeded,
Messages.SafetyCheckFailed,
Messages.ValidationFailed,
Messages.Validated,
Messages.PlannedForDeposit,
Messages.Deposited,
};
public class ListAttribute : PXStringListAttribute
{
public ListAttribute() : base(_statusKeys, _statusValues) { }
}
#endregion
}
3°) Message settings
Class : Cegid.Erp.Common.EInvoice.Messages.
[ExcludeFromCodeCoverage]
[PXLocalizable(Prefix)]
public static class Messages
{
public const string Prefix = "Einvoicing";
#region Electronic statuses
public const string Uploaded = "Uploaded";
public const string Confirmed = "Confirmed";
public const string SafetyCheckSucceeded = "SafetyCheckSucceeded";
public const string SafetyCheckFailed = "SafetyCheckFailed";
public const string ValidationFailed = "ValidationFailed";
public const string Validated = "Validated";
public const string PlannedForDeposit = "PlannedForDeposit";
public const string Deposited = "Deposited";
#endregion
}
4°) Dictionary settings
When I look for the term “Validationfailed” in the dictionary, it appears with the french translation ‘Validation en erreur’. It is marked as used for the right messages class.
With these settings, I expect the CegEStatus field to display the translated value “validation en erreur” but it displays instead the original value “ValidationFailed”.