До .NET у нас была своя собственная система локализации фраз, и мы построили таким образом, чтобы комментарии помещались в строку форматирования, например: "{0: цена}". Я обнаруживаю, что с каждым годом все больше скучаю по этому.
Не похоже, что есть способ документировать строки форматирования на месте, как это в .NET:
string.Format("{0//numerator} / {1//denominator} = {2//ratio}"
,somevar
,anothervar
,yetanothervar);
В частности, это полезно в локализации / фразеологии, где точки вставки переупорядочиваются без изменения кода:
string.Format("Dividing {1//denominator} into {0//numerator} gives {2//ratio}"
,somevar
,anothervar
,yetanothervar);
У кого-нибудь есть какие-то уловки, которые они используют, чтобы документировать их, чтобы избежать ошибок при перестановке терминов в обслуживании / локализации и т. Д.?
Причина, по которой комментарии важны, состоит в том, что для локализации и настройки обычно строка не находится в коде с переменными - у меня они были в файлах ресурсов, в app.config и в базах данных.
В реальном примере подклассный элемент управления предоставляет свойство PhraseID (элементы управления отображаются на идентификаторы в XML-файле, сгенерированном из формы, а элементы управления формой переводятся на лету), поэтому подклассовая форма выполняет что-то вроде этого:
// Handle the phrases without insertion points - this is in the base class
foreach (Control in this.Controls) {
IXLatable ixl = (IXLatable) Control;
ixl.Text = GetPhrase(ixl.PhraseID);
}
// in the individual form classes, they override the behavior for complex displays:
lnkPublish.Text = string.Format(GetPhrase(lnkPublish.PhraseID), filename, foldername, userid);
Где словарь содержит строку по умолчанию и локализованную строку, например:
phraseid, language code, phrase
1,en,"{0//filename} published to {1//foldername} by {2//userid}"
1,pl,"{2//userid} ublishedpay ethay ilefay {0//filename} otay {1//foldername}"
Гораздо менее вероятно, что переводчик (который никогда не видит исходный код) получит неправильные индексы, если им будут предоставлены комментарии в фразе по умолчанию. И для нелокализованного говорящего легче устранять проблемы в переведенном ресурсе.