Typically, if you use a template engine such as Sitemesh or Velocity, you can more effectively manage these smaller HTML blocks as subtopics.
Thus, you can gradually collapse lines that are purely internationalized into groups and make them relevant to these markup outlines. Having done this work using application templates that span multiple languages ββin the same language, as well as multiple locales, we never posted markup in our message packages.
I would suggest that a key good practice would be to avoid placing markup (even at a low level, as you put it) inside message properties files at all costs! The potential that this has for unleashing hell is not something that needs to be overlooked - biting a bullet and breaking everything correctly is much less than just managing files with scattered HTML markup. Its important that you can visualize the markup as whole pieces and dispersion, which would everywhere create daily development, because:
- You will lose the IDE color highlight and syntax check
- There is a high probability that one locale file or another can be easily deleted when changing the design / layout of the filter down.
Destroying things (to a realistic point, for example, the structure of logical sentences, but not more subtle) is a bit of hard work, but worth the effort.
Regarding the breakup details, here is an example of what we did:
comment.atom-details=Subscribe To Comments comment.username-mandatory=You must supply your name comment.useremail-mandatory=You must supply your email address comment.email.notification=Dear {0}, the comment thread you are watching has been updated. comment.feed.title=Comments on {0} comment.feed.title.default=Comments comment.feed.entry.title=Comment on {0} at {1,date,medium} {2,time,HH:mm} by {3} comment.atom-details=Suscribir a Comentarios comment.username-mandatory=Debes indicar tu nombre comment.useremail-mandatory=Debes indicar tu direcci\u00f3n de correo electr\u00f3nico comment.email.notification=La conversaci\u00f3n que estas viendo ha sido actualizada comment.feed.title=Comentarios sobre {0} comment.feed.title.default=Comentarios comment.feed.entry.title=Comentarios sobre {0} a {1,date,medium} {2,time,HH:mm} por {3}
So, you can do interesting things with how you replace a string in a message package, which can also help you keep its logical value, but you can manipulate its middle sentence.