Like this:
https://bitbucket.org/anders_melander/better-translation-manager/src/f96e7dcdba22667560178d32aebb5137484107f0/Source/amLocalization.Model.pas?at=master#lines-578
// -----------------------------------------------------------------------------
//
// Strings
//
// -----------------------------------------------------------------------------
resourcestring
sTranslationValidationWarningEmptyness = 'Source or translation is empty and the other is not';
sTranslationValidationWarningAccelerator = 'Accelerator count mismatch';
sTranslationValidationWarningFormatSpecifier = 'Format specifier count mismatch';
sTranslationValidationWarningLineBreak = 'Linebreak count mismatch';
sTranslationValidationWarningLeadSpace = 'Leading space count mismatch';
sTranslationValidationWarningTrailSpace = 'Trailing space count mismatch';
sTranslationValidationWarningTerminator = 'Translation is terminated differently than source';
sTranslationValidationWarningPipe = 'Pipe character count mismatch';
sTranslationValidationWarningSurround = 'Surround character mismatch';
const
// Note: Must use PResStringRec or values will be of the language active at the time System._InitResStrings was called,
// which means that the user language selection will not affect the values as it should.
sTranslationValidationWarnings: array[TTranslationWarning] of PResStringRec = (
@sTranslationValidationWarningEmptyness,
@sTranslationValidationWarningAccelerator,
@sTranslationValidationWarningFormatSpecifier,
@sTranslationValidationWarningLineBreak,
@sTranslationValidationWarningLeadSpace,
@sTranslationValidationWarningTrailSpace,
@sTranslationValidationWarningTerminator,
@sTranslationValidationWarningPipe,
@sTranslationValidationWarningSurround);
and then use the strings like this:
https://bitbucket.org/anders_melander/better-translation-manager/src/f96e7dcdba22667560178d32aebb5137484107f0/Source/amLocalization.Dialog.Main.pas?at=master#amLocalization.Dialog.Main.pas-2600
Item.Caption := LoadResString(sTranslationValidationWarnings[Warning]);
FWIW, I believe this is also the way the VCL/RTL itself does it.