In my application I have paragraphs with mixed static text and HTML formatting and links. I'm looking for a good localization solution that keeps resources decoupled from markup. Let's say we have the following paragraph:
<p>Let's have a <a href="someURL">cup of coffee</a> and get <b>energized</b>.</p>
Using the standard resx solution forces me to embed the HTML markup and the link destinations in the resx string. This is bad because it couples markup/CSS/app structure with resources.
The next best thing is to split the paragraph such that localized content never contains markup. In the above example I would have 4 para fragments: 1) "Let's have a" as plain text 2) "cup of coffee" as a link 3) "and get" as plain text 4) "energized" as bold text
The problem with this solution is that fragmentation makes maintenace of resources a complete nightmare plus it forces a certain order of the paragraph fragments which might not fit the grammar of all cultures. For instance, in the translated language the proper translation might be
<p>Let's get <b>energized</b> with a <a href="someURL">cup of coffee</a>.</p>
I don't think I can quite get away with not embedding markup into resources and that might not be a huge deal. Using proper markup/CSS (span, div, id, class) I can create abstractions that would lessen the impact of coupling.
What do I do about the link URLs though? Thanks,
Stefan
Don't view the HTML as "formatting", but as structure, and save all of it to a resource data store (such as resx, or a database, or xml files or something). Then you can stop worrying about little bits of text inside a paragraph. Instead, you'll have some reference to a resource called "paragraph_energized_with_coffee" or something, per locale, and whatever software you use to edit the resources will determine what flexibility editors have in structuring the html inside each resource.
Do it like this:
<%= String.Format("Resources.MyResource.mydata","someURL") %>
and use this as your resource string:
<p>Let's have a <a href="{0}">cup of coffee</a> and get <b>energized</b>.</p>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With