Вы правильно назвали это: конкатенация.Проблема в том, что конкатенация является одним из наиболее серьезных (как и в случае высокой степени серьезности) дефектов i18n.Вместо того, чтобы делать то, что вы делаете, я бы посоветовал вам помещать целые строки (или в худшем случае сценариев с заполнителями) в файлы ресурсов, даже если вам приходится дублировать ресурсы (эти дублированные ресурсы могут переводиться по-разному в зависимости от контекста).).
Позвольте привести пример: когда я был в команде L10n, у нас была консоль с несколькими страницами, каждая страница имела заголовок «Что-то Политика », т.е.«Брандмауэр Политика », «Антивирус и антишпионское ПО Политика ».Кто-то подумал, что это хорошая идея - сохранить некоторые ценные кусочки и просто соединить заголовок вместе:
String title = Resources.getString("Firewall") + "<b>" + Resources.getString("Policy") + "</b>";
Единственная проблема, с которой мы столкнулись, это правильный польский перевод, звучащий как " Polityka zapory ogniowej"то есть «Политика» на первом месте.На самом деле мы перевели это как «Zapora ogniowa Polityka », что далеко не соответствует правильному переводу (обратите внимание, что перевод «Firewall» должен быть родительным падежом ... Переводчик понятия не имел, что он переводит, поэтомуперевод. И это не могло быть исправлено, так как мы не смогли переупорядочить предложение.
Исправление требовало экстернализации всей строки, так что на самом деле все благие намерения оригинального разработчика пошли в ад.
Если вы все еще читаете это, пожалуйста, имейте в виду, что всем двоеточиям во французском языке должен предшествовать пробел (это только их правило). Повторное использование одних и тех же переводов для построения нескольких предложений может запретить это...