Localizability on BC AL Helphttps://microsoft.github.io/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/Recent content in Localizability on BC AL HelpHugo -- gohugo.ioen-usCaptionML on System Pageshttps://microsoft.github.io/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/Mon, 01 Jan 0001 00:00:00 +0000https://microsoft.github.io/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/captionml-for-system-tables/CaptionML should always be specified on a page field for a system table. By default, system tables do not have captions, so if you need to use them in the UI then captions need to be added. Bad code ... { 2 ;2 ;Field ; SourceExpr=Name } ... OBJECT Table 2000000000 User ... { 2 ; ;Name ;Text50 } Good code ... { 2 ;2 ;Field ; CaptionML=ENU=Name; SourceExpr=Name } .FIELDCAPTION and TABLECAPTIONhttps://microsoft.github.io/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/Mon, 01 Jan 0001 00:00:00 +0000https://microsoft.github.io/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/fieldcaption-and-tablecaption/For user messages, errors etc., use FIELDCAPTION not FIELDNAME and TABLECAPTION not TABLENAME. Reason: The correct translation will be automatically used. If the caption/name changes, then there will be a single point of change needed. Bad code IF NOT CONFIRM(UpdateLocationQst,TRUE,FIELDNAME("Location Code"),...) Good code IF NOT CONFIRM(UpdateLocationQst,TRUE,FIELDCAPTION("Location Code"),...)Global Text Constantshttps://microsoft.github.io/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/Mon, 01 Jan 0001 00:00:00 +0000https://microsoft.github.io/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/global-text-constants/Declare Text Constant as global variables. Bad code PROCEDURE GetRequirementText@6(...) : Text\[50\]; VAR RequirementOptionsTxt@1002 : TextConst 'ENU=Shipment,Receive,Pick,Put-Away'; BEGIN Good code VAR RequirementOptionsTxt@1002 : TextConst 'ENU=Shipment,Receive,Pick,Put-Away'; ... PROCEDURE GetRequirementText@6(...) : Text\[50\]; BEGINUse Text Constantshttps://microsoft.github.io/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/Mon, 01 Jan 0001 00:00:00 +0000https://microsoft.github.io/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/Pass user messages using Text Constants. It makes translation easy. Bad code ImportAttachmentQst@1021 : TextConst 'ENU="Import attachment "'; ... IF CONFIRM(ImportAttachmentQst + Caption +'?',TRUE) THEN BEGIN Good code ImportAttachmentQst@1021 : TextConst 'ENU="Import attachment %1?"'; ... IF CONFIRM(STRSUBSTNO(ImportAttachmentQst, Caption),TRUE) THEN BEGIN Bad code ... IF NOT CONFIRM( STRSUBSTNO( 'Difference on Periodic entries: %1 on %2' + 'Do you want to continue?',Balance,Date), TRUE) THEN ERROR('Program terminated by the user'); Good codeUsing OptionCaptionMLhttps://microsoft.github.io/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/Mon, 01 Jan 0001 00:00:00 +0000https://microsoft.github.io/bcalhelp/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/The OptionCaptionML should be filled in for sourceexpression using option data types. Bad code { 30 ;TextBox ;17850;0 ;150 ;423 ;Name=Selection; SourceExpr=Selection; DataSetFieldName=Selection } ... Selection@1008 : 'Open,Closed,Open and Closed'; ... Good code { 30 ;TextBox ;17850;0 ;150 ;423 ;Name=Selection; OptionCaptionML=ENU=Open,Closed,Open and Closed; SourceExpr=Selection; DataSetFieldName=Selection } ... Selection@1008 : 'Open,Closed,Open and Closed';