Это зависит от вашего приложения.
Если вы думаете, локализация пользовательского интерфейса, презентации определенно затронуты.
Я бы сказал, что средний уровень не должен генерировать никаких сообщений.
Исключения предназначены для разработчиков, а не для пользователей. Поэтому в презентации запишите исключение и представьте его пользователю в локализованном виде, сказав что-то вроде: «Произошла фатальная ошибка 12313, отправьте этот отчет ...»
(может быть, даже приятнее, вы вообще не показываете текст исключения, предлагаете пользователю кнопку «Отправить отчет о сбое», а также кнопку «Показать отчет», чтобы вы могли видеть, что вы не отправляете какие-либо личные данные).
Но если вы относитесь к вещам, выходящим за рамки пользовательского интерфейса, то это может повлиять и на другие.
Бизнес-логика может быть затронута (например, то, как налоговые системы работают в разных странах). И это не зависит от пользовательского интерфейса (Канада или Австралия имеют другую налоговую систему, чем США, даже если пользовательский интерфейс все еще английский).
Поэтому вы можете захотеть сделать этот слой очень модульным.
Содержание базы данных также может быть затронуто. Представьте, что у вас есть продукты, которые недоступны (или запрещены) в определенных странах. Так что вам может понадобиться дополнительные поля (или таблицы) для переноса этой информации.
Итак, в конце ответ: «Вы должны думать о i18n на каждом уровне!» и спросите себя "что если"