customDocLabel static method
Custom document display name based on language. Follows React priority as closely as possible: selected option/label translation → displayNameFR/EN → name → translated labelKey / documentListType / workspaceSettings fallback → key.
Implementation
static String customDocLabel(String lang, Map<String, dynamic> doc) {
final key = doc['key'] as String? ?? '';
final label = doc['label'] as String?;
final labelKey = doc['labelKey'] as String?;
final translationKeys = <String>[
if (label != null && label.isNotEmpty) label,
if (labelKey != null && labelKey.isNotEmpty) labelKey,
if (standardDocLabelKeys.containsKey(key)) standardDocLabelKeys[key]!,
if (key.isNotEmpty) 'documentListType.$key',
if (key.isNotEmpty) 'workspaceSettings.documentsPageName.$key',
];
for (final translationKey in translationKeys) {
final translated = t(lang, translationKey);
if (translated != translationKey) {
return translated;
}
}
if (lang == 'fr') {
final fr = doc['displayNameFR'] as String?;
if (fr != null && fr.trim().isNotEmpty) return fr.trim();
final en = doc['displayNameEN'] as String?;
if (en != null && en.trim().isNotEmpty) return en.trim();
} else if (lang == 'en') {
final en = doc['displayNameEN'] as String?;
if (en != null && en.trim().isNotEmpty) return en.trim();
final fr = doc['displayNameFR'] as String?;
if (fr != null && fr.trim().isNotEmpty) return fr.trim();
} else {
// Other languages: try FR first, then EN
final fr = doc['displayNameFR'] as String?;
if (fr != null && fr.trim().isNotEmpty) return fr.trim();
final en = doc['displayNameEN'] as String?;
if (en != null && en.trim().isNotEmpty) return en.trim();
}
final name = doc['name'] as String?;
if (name != null && name.trim().isNotEmpty) return name.trim();
for (final translationKey in translationKeys) {
final translated = t(lang, translationKey);
if (translated != translationKey) {
return translated;
}
}
return key;
}