Hi, there are some problems in Base Application.
#1. Empty " " options and enums, those have caption ' ' and should be locked:
Caption = ' ', Locked = true;
For options it is more problematic because they come in one big comma-separated text that should not be locked completely. Those options should be converted to enums or maybe have additional syntax for specifying option captions per value - something like this:
OptionLabels =
label ' ', Locked = true,
label 'Some Option 1',
label 'Some Option 2',
...;
// I would prefer enums to this :)
Personally, I just want OptionString-like things gone. Not being able to use comma in caption is annoying. Use arrays/lists instead.
#2. Some labels should be marked as Locked when they use non-translatable text (e.g. product names, formulas, XML tags, etc.).
These should be easy to find - just look texts that are the same in all standard translations that come with BC.
#3. Empty control captions - those should be removed and replaced with property ShowCaption = false.
#4. Many texts are duplicated - like confirm and error messages, optionstrings. Those should be put into single functions and enums, and used from there. That would help to reduce the translation file size. Currently about half of Base Application.g.xlf is just duplicate translations and that is not even taking splitting optionstrings into enums into account.
Things like report labels and page tooltips are more problematic - so these are ideas that are harder to implement.
For report labels maybe add some inheritance syntax that could take translation from some codeunit with constants, e.g.
codeunit ... "Report Labels"
{
var
// Access = Local | Internal | Public. Default is Local.
// Object access has higher priority - so Internal object will only expose Internal labels.
AmountIncludingVatLbl: Label 'Amount including VAT', Access = Public;
}
report ...
{
labels
{
_ = Label::"Codeunit Report Labels"::AmountIncludingVATLbl;
}
}
For page tooltips a new property on table field ToolTip could help:
// in table
field(...; "Some Advanced Setting"; ...)
{
Caption = 'Some Advanced Setting';
ToolTip = 'Specifies some advanced setting. Enter ... to ...';
}
// reuse tooltips and captions in multiple objects
field(...; "Some Advanced Setting"; ...)
{
Caption = Label::"Codunit Advanced Stuff"::SomeAdvancedSettingFieldCaptionLbl;
ToolTip = Label::"Codeunt Advanced Stuff"::SomeAdvancedSettingFieldToolTipLbl;
}
// in page
field("Some Advanced Setting"; Rec."Some Advanced Setting")
{
}
Thanks.

Business Central Team (administrator)
Thank you for this suggestion! Currently this is not on our roadmap. We are tracking this idea and if it gathers more votes and comments we will consider it in the future. Best regards, Business Central Team