Every object, field, action and label in an extension has a caption, and the platform can show them in any language the user chooses. The TranslationFile feature generates an XLIFF file; translators (or you) fill it; the app ships it. Why to do this even for a UK-only extension, the workflow, locked labels, and translating data as well as code.
Business Central users pick a language in My Settings, and every caption on every page follows it. An extension that ships only its source captions shows English to a Polish warehouse worker in a tenant where everything else is Polish. More to the point, separating what the code calls a thing from what the user sees is good design even in one language: you can reword a field for users without a schema change.
Every object, field, action, enum value and page control has Caption. Set it on everything (UICop insists). The caption is the source-language text; the name is for code. Report labels (labels { }) and text constants (Label variables) are also translatable, which is why all user-facing text is a Label (naming post).
"features": ["TranslationFile"] (and "TranslationsWithNamespaces" on runtime 18+). Build. The compiler writes Translations/<AppName>.g.xlf: every translatable string with its ID and source text.<AppName>.<culture>.xlf (.de-DE.xlf, .fr-FR.xlf) with the target elements filled in. The generated file is regenerated on every build; the language files are yours and are merged by tooling.Locked = true on a label excludes it from the XLIFF: technical strings, telemetry, URLs, format strings. Comment = '%1 = Customer No.' tells the translator what the placeholder is; without it they will guess, and the Polish version will have the words in the wrong order. MaxLength on a label warns the translator the text must fit a field.
Item descriptions, payment terms descriptions and the like are data, not captions. The base application's Translation table and Codeunit Translation (Translation.Set(Rec, FieldNo, LanguageId, Text) / Get) store per-language values for any field you register, with the standard "Translations" page pattern. Item translations for documents are the older Item Translation table used by sales documents in the customer's language. Use the first for your own tables; respect the second when you print.
Dates, numbers and currency formats follow the user's region, not the language; use Format with no format string for display and Format(x, 0, 9) for machine-readable, and never build a number into text with string concatenation that assumes a decimal point.