<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Localising WPF Applications Using RESX Files and Standard Data Binding (Without a MarkupExtension)</title>
	<atom:link href="http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/</link>
	<description>The Technical Jibber Jabber of Steven Robbins</description>
	<lastBuildDate>Fri, 30 Jul 2010 05:59:46 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: srobbins</title>
		<link>http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/comment-page-1/#comment-179</link>
		<dc:creator>srobbins</dc:creator>
		<pubDate>Fri, 19 Feb 2010 07:40:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.grumpydev.com/?p=239#comment-179</guid>
		<description>Hello There. You&#039;re right, there&#039;s no way to static checking of normal bindings, you will have to use one of the standard binding debugging techniques (output window or trace listener are the ones I use). I&#039;ve used this technique in quite a large project though and, if you stick to conventions for naming the resources, I haven&#039;t seen any issues with it.</description>
		<content:encoded><![CDATA[<p>Hello There. You&#8217;re right, there&#8217;s no way to static checking of normal bindings, you will have to use one of the standard binding debugging techniques (output window or trace listener are the ones I use). I&#8217;ve used this technique in quite a large project though and, if you stick to conventions for naming the resources, I haven&#8217;t seen any issues with it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Notre</title>
		<link>http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/comment-page-1/#comment-178</link>
		<dc:creator>Notre</dc:creator>
		<pubDate>Thu, 18 Feb 2010 23:00:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.grumpydev.com/?p=239#comment-178</guid>
		<description>Hi Steven,

This is really interesting.  I reviewed the WPF localization guide on CodePlex and for the most part, I prefer your solution to any of those discussed in the document.

The one thing I like about the x:Static approach is the ability to catch binding errors at compile time.  I take it this is impossible to achieve using standard binding?  (Sorry, I&#039;m pretty new to WPF so hopefully this isn&#039;t a really dumb question).

Thanks!</description>
		<content:encoded><![CDATA[<p>Hi Steven,</p>
<p>This is really interesting.  I reviewed the WPF localization guide on CodePlex and for the most part, I prefer your solution to any of those discussed in the document.</p>
<p>The one thing I like about the x:Static approach is the ability to catch binding errors at compile time.  I take it this is impossible to achieve using standard binding?  (Sorry, I&#8217;m pretty new to WPF so hopefully this isn&#8217;t a really dumb question).</p>
<p>Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: srobbins</title>
		<link>http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/comment-page-1/#comment-130</link>
		<dc:creator>srobbins</dc:creator>
		<pubDate>Sat, 03 Oct 2009 07:36:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.grumpydev.com/?p=239#comment-130</guid>
		<description>If you clear your browser cache and retry it should be fine. I&#039;ve finally managed to troubleshoot this with someone and it looks like it was down to apache&#039;s gzip corrupting the zip files in transfer in some scenarios (but working fine 99% of the time). Zips are now excluded from Apache&#039;s compression and that seems to have sorted it!</description>
		<content:encoded><![CDATA[<p>If you clear your browser cache and retry it should be fine. I&#8217;ve finally managed to troubleshoot this with someone and it looks like it was down to apache&#8217;s gzip corrupting the zip files in transfer in some scenarios (but working fine 99% of the time). Zips are now excluded from Apache&#8217;s compression and that seems to have sorted it!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marcos Tabaj</title>
		<link>http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/comment-page-1/#comment-129</link>
		<dc:creator>Marcos Tabaj</dc:creator>
		<pubDate>Fri, 02 Oct 2009 02:09:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.grumpydev.com/?p=239#comment-129</guid>
		<description>Steven,

Seems like the prism exemple zip file is invalid.  i tried to open it in 2 different computers and I get an error messages.   Please check.

Thanks</description>
		<content:encoded><![CDATA[<p>Steven,</p>
<p>Seems like the prism exemple zip file is invalid.  i tried to open it in 2 different computers and I get an error messages.   Please check.</p>
<p>Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: srobbins</title>
		<link>http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/comment-page-1/#comment-125</link>
		<dc:creator>srobbins</dc:creator>
		<pubDate>Wed, 09 Sep 2009 10:22:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.grumpydev.com/?p=239#comment-125</guid>
		<description>Yes, it&#039;s a shame that Silverlight doesn&#039;t support the &quot;dot&quot; or array syntax in bindings, it does come in handy at times - I&#039;ve voted for &quot;full binding support&quot; on user voice :-)

The ResourceManager does allow us to work with things other than strings too (images etc) but again, I don&#039;t think that works in Silverlight, although I&#039;ve not tried it in SL3.

At least all of these approaches avoid LocBAML and strong references to UIElements/Events :-)</description>
		<content:encoded><![CDATA[<p>Yes, it&#8217;s a shame that Silverlight doesn&#8217;t support the &#8220;dot&#8221; or array syntax in bindings, it does come in handy at times &#8211; I&#8217;ve voted for &#8220;full binding support&#8221; on user voice <img src='http://www.grumpydev.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>The ResourceManager does allow us to work with things other than strings too (images etc) but again, I don&#8217;t think that works in Silverlight, although I&#8217;ve not tried it in SL3.</p>
<p>At least all of these approaches avoid LocBAML and strong references to UIElements/Events <img src='http://www.grumpydev.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Laurent Bugnion</title>
		<link>http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/comment-page-1/#comment-124</link>
		<dc:creator>Laurent Bugnion</dc:creator>
		<pubDate>Wed, 09 Sep 2009 10:07:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.grumpydev.com/?p=239#comment-124</guid>
		<description>Yes I think that Tim&#039;s approach is similar to yours except for the ResourceManagerService part. I wanted to mention it anyway because the syntax will be compatible for WPF and SL while unfortunately the array syntax doesn&#039;t work in SL :(

My thought right now is to include a LocalizableViewModel in the MVVM Light Toolkit, which would cover simple scenarios, and then your solution with the ResourceManagerService is great for complex and distributed scenarios.

Nice work :)
Laurent</description>
		<content:encoded><![CDATA[<p>Yes I think that Tim&#8217;s approach is similar to yours except for the ResourceManagerService part. I wanted to mention it anyway because the syntax will be compatible for WPF and SL while unfortunately the array syntax doesn&#8217;t work in SL <img src='http://www.grumpydev.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>My thought right now is to include a LocalizableViewModel in the MVVM Light Toolkit, which would cover simple scenarios, and then your solution with the ResourceManagerService is great for complex and distributed scenarios.</p>
<p>Nice work <img src='http://www.grumpydev.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Laurent</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: srobbins</title>
		<link>http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/comment-page-1/#comment-123</link>
		<dc:creator>srobbins</dc:creator>
		<pubDate>Wed, 09 Sep 2009 09:52:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.grumpydev.com/?p=239#comment-123</guid>
		<description>Tim&#039;s approach is great for simple scenarios, but once you have several resource files, split amongst several projects, and want to potentially use resources across modules in a PRISM app then I&#039;m not sure it&#039;s going to be managable. The last point is the reason for maintaining a dictionary of ResourceManager, otherwise the solution is mostly the same :-)</description>
		<content:encoded><![CDATA[<p>Tim&#8217;s approach is great for simple scenarios, but once you have several resource files, split amongst several projects, and want to potentially use resources across modules in a PRISM app then I&#8217;m not sure it&#8217;s going to be managable. The last point is the reason for maintaining a dictionary of ResourceManager, otherwise the solution is mostly the same <img src='http://www.grumpydev.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Laurent Bugnion</title>
		<link>http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/comment-page-1/#comment-122</link>
		<dc:creator>Laurent Bugnion</dc:creator>
		<pubDate>Wed, 09 Sep 2009 09:43:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.grumpydev.com/?p=239#comment-122</guid>
		<description>For Silverlight (and this would work in WPF too), an interesting approach is posted by Tim Heuer: http://timheuer.com/blog/archive/2009/08/26/silverlight-string-localization.aspx

This approach can be leveraged into a &quot;LocalizableViewModel&quot; base class, like Corrado Cavalli is exposing here: http://groups.google.com/group/wpf-disciples/browse_thread/thread/acf4b88103a9872

I think I just found a new feature to add to the MVVM Light Toolkit...

Cheers,
Laurent</description>
		<content:encoded><![CDATA[<p>For Silverlight (and this would work in WPF too), an interesting approach is posted by Tim Heuer: <a href="http://timheuer.com/blog/archive/2009/08/26/silverlight-string-localization.aspx" rel="nofollow">http://timheuer.com/blog/archive/2009/08/26/silverlight-string-localization.aspx</a></p>
<p>This approach can be leveraged into a &#8220;LocalizableViewModel&#8221; base class, like Corrado Cavalli is exposing here: <a href="http://groups.google.com/group/wpf-disciples/browse_thread/thread/acf4b88103a9872" rel="nofollow">http://groups.google.com/group/wpf-disciples/browse_thread/thread/acf4b88103a9872</a></p>
<p>I think I just found a new feature to add to the MVVM Light Toolkit&#8230;</p>
<p>Cheers,<br />
Laurent</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: srobbins</title>
		<link>http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/comment-page-1/#comment-121</link>
		<dc:creator>srobbins</dc:creator>
		<pubDate>Wed, 09 Sep 2009 05:24:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.grumpydev.com/?p=239#comment-121</guid>
		<description>Thanks for the comments Laurent, much appreciated.

I must admit I haven&#039;t considered Silverlight yet, although I probably should have. It&#039;s a shame that Binding is so closed off, it would be nice if we could extend it with something like:

Bindings.RegisterExtension(regEx, (src, ctx, opt) =&gt; { return ctx[opt.params[0]]; } );

Probably never going to happen though :-) 

Another Silverlight alternative would be to possibly use T4 to automatically generate INPC classes based on a resx, or even replace the standard resx compiler with something that produces INPC classes. I do like to stick to resx files, partly for the tooling support, and partly because I can just ship the XML files to a translation house to be translated.</description>
		<content:encoded><![CDATA[<p>Thanks for the comments Laurent, much appreciated.</p>
<p>I must admit I haven&#8217;t considered Silverlight yet, although I probably should have. It&#8217;s a shame that Binding is so closed off, it would be nice if we could extend it with something like:</p>
<p>Bindings.RegisterExtension(regEx, (src, ctx, opt) =&gt; { return ctx[opt.params[0]]; } );</p>
<p>Probably never going to happen though <img src='http://www.grumpydev.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
<p>Another Silverlight alternative would be to possibly use T4 to automatically generate INPC classes based on a resx, or even replace the standard resx compiler with something that produces INPC classes. I do like to stick to resx files, partly for the tooling support, and partly because I can just ship the XML files to a translation house to be translated.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Laurent Bugnion</title>
		<link>http://www.grumpydev.com/2009/09/08/localising-wpf-applications-using-resx-files-and-standard-data-binding-without-a-markupextension/comment-page-1/#comment-120</link>
		<dc:creator>Laurent Bugnion</dc:creator>
		<pubDate>Tue, 08 Sep 2009 21:15:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.grumpydev.com/?p=239#comment-120</guid>
		<description>It is an interesting approach, and I don&#039;t think I saw this before. In addition to the problems of the static binding and of the markup extension, you can add that these do not work in Silverlight (yet?) so you cannot have one approach for all situations with these two solutions.

Unfortunately, I am not sure that the solution you propose here works in Silverlight either. As far as I can remember, the array syntax is not supported in bindings in Silverlight. I didn&#039;t test the &quot;dot&quot; syntax, but I am pretty sure that it will also fail in SL.

So what&#039;s left if we want an ubiquitous solution? Well, what I do is that I declare some properties on my VM (or on a sub-VM dedicated to localization) and I bind to these properties. On the plus side: It is a fairly easy syntax, and uses the well known mechanisms of ViewModels. If the application needs to change language dynamically, you can use PropertyChanged events, which are also well known. This works in SL and in WPF.

On the down side however, declaring one VM property for every possible localizable string can be a total overkill in large applications.

For WPF applications, I think that the solution you propose is innovative and definitely worth analyzing further.

Finally, as usual when I talk about localization, I want to mention that the firm Alchemy is proposing a localization tool that claims to support WYSIWYG. There is a demo available on their website. I was in contact with them and need to spend some time evaluating the tool when I will have more time.

Cheers,
Laurent</description>
		<content:encoded><![CDATA[<p>It is an interesting approach, and I don&#8217;t think I saw this before. In addition to the problems of the static binding and of the markup extension, you can add that these do not work in Silverlight (yet?) so you cannot have one approach for all situations with these two solutions.</p>
<p>Unfortunately, I am not sure that the solution you propose here works in Silverlight either. As far as I can remember, the array syntax is not supported in bindings in Silverlight. I didn&#8217;t test the &#8220;dot&#8221; syntax, but I am pretty sure that it will also fail in SL.</p>
<p>So what&#8217;s left if we want an ubiquitous solution? Well, what I do is that I declare some properties on my VM (or on a sub-VM dedicated to localization) and I bind to these properties. On the plus side: It is a fairly easy syntax, and uses the well known mechanisms of ViewModels. If the application needs to change language dynamically, you can use PropertyChanged events, which are also well known. This works in SL and in WPF.</p>
<p>On the down side however, declaring one VM property for every possible localizable string can be a total overkill in large applications.</p>
<p>For WPF applications, I think that the solution you propose is innovative and definitely worth analyzing further.</p>
<p>Finally, as usual when I talk about localization, I want to mention that the firm Alchemy is proposing a localization tool that claims to support WYSIWYG. There is a demo available on their website. I was in contact with them and need to spend some time evaluating the tool when I will have more time.</p>
<p>Cheers,<br />
Laurent</p>
]]></content:encoded>
	</item>
</channel>
</rss>
