Нет, предложенное вами решение не имеет смысла. Во-первых, переключение на основе текущего десятичного разделителя ненадежно. Во-вторых, если вы уже знаете положения пунктов меню, и они всегда работают, независимо от языка программы, то зачем вообще возиться с надписями на английском языке? Просто используйте позиции меню все время. (Или, если у вас уже есть что-то настроенное для выбора текста меню на основе языка, почему бы не использовать текст меню на французском языке вместо переключения между английскими text и французскими позициями ? )
Чтобы сделать то, что вы предлагаете, вы можете настроить двумерный массив идентификаторов меню:
const
TLanguage = (lEnglish, lFrench);
TUIElement = (uiFileNew, uiFileOpen, ...);
MenuIDs = array[TUIElement] of array[TLanguage] of string = (
('File|New', '[4|2]'),
('File|Open', '[4|3]')
);
Затем, когда вы хотите строку, выберите элемент, который соответствует вашему элементу пользовательского интерфейса, а затем выберите строку для текущего языка:
if tcDecimalSeparator = '.' then
CurrentLang := lEnglish
else
CurrentLang := lFrench;
UseMenuItem(MenuIDs[uiFileNew, CurrentLang]);