.NET property names and translation

J

John Allen

Hi there,

Does anyone know if the standard "PropertyGrid" control is (foreign)
language sensitive. If I display an object in the control, and my object has
the native .NET "Size" struct as a property (which also contains its own
""Width" and "Height" members), will someone running my app on a German
version of Windows for instance still see "Size", "Width" and "Height" in
the property window. Or does it get translated into German accordingly. If
not then how would I translate it. Thanks.
 
V

VisualHint

Hello John,

no the property names won't be translated automatically. You will have
to derive a new attribute from DisplayNameAttribute so that it can
look into resources for example or create your own TypeDescriptor.
There is a CodeProject article on that. Go to the Microsoft
PropertyGrid Resource List and click the "localization" tag.

Best regards,

Nicolas Cadilhac @ VisualHint (http://www.visualhint.com)
Home of Smart PropertyGrid for .Net and MFC
Microsoft PropertyGrid Resource List - http://
www.propertygridresourcelist.com
 
J

John Allen

no the property names won't be translated automatically. You will have
to derive a new attribute from DisplayNameAttribute so that it can
look into resources for example or create your own TypeDescriptor.
There is a CodeProject article on that. Go to the Microsoft
PropertyGrid Resource List and click the "localization" tag.

Ok, thanks very much.
 
S

Stoitcho Goutsev \(100\)

John,

This can be definitely done. There are two things you need to localize -
property names and category names.
The category are easy to localize. Just inherit your own class from the
CategoryAttribute and override its GetLocalizedString virtual method. This
method is called by the Category property first time the property is read.
Here you need to return your localized version of the category name.

With the property names it is not that easy. The property grid uses
PropertyDescriptor objects to display and manipulate object proeprties. For
the property name it reads the DisplayName property of the
PropertyDescriptor. DisplayName is virtual, but read only so it can be only
override to return localized version of the property name. I believe you can
create your own PropertyDescriptor class that iherits from the
PropertyDescriptor and overrides DisplayName p then you can create
TypeConverter the return colleciton of this special property descritors for
the class properties upon calling GetProperties method.
You can also implement a ICustomTypeDescriptor interface

Actually I looked around on the net and I found pretty good article for you
with a sample code

http://www.codeproject.com/cs/miscctrl/gpg_revisited.asp

HTH
 
J

John Allen

This can be definitely done. There are two things you need to localize -
property names and category names.
The category are easy to localize. Just inherit your own class from the
CategoryAttribute and override its GetLocalizedString virtual method. This
method is called by the Category property first time the property is read.
Here you need to return your localized version of the category name.

With the property names it is not that easy. The property grid uses
PropertyDescriptor objects to display and manipulate object proeprties.
For the property name it reads the DisplayName property of the
PropertyDescriptor. DisplayName is virtual, but read only so it can be
only override to return localized version of the property name. I believe
you can create your own PropertyDescriptor class that iherits from the
PropertyDescriptor and overrides DisplayName p then you can create
TypeConverter the return colleciton of this special property descritors
for the class properties upon calling GetProperties method.
You can also implement a ICustomTypeDescriptor interface

Actually I looked around on the net and I found pretty good article for
you with a sample code

http://www.codeproject.com/cs/miscctrl/gpg_revisited.asp

Thanks very much. Somone else also referred me to a "codeproject" article
but I haven't located it yet (I assume it's the same as yours). I will look
into it. As for the other info, I've also been looking into that for several
days now and am finally getting my head wrapped around the details (though
I'll be relying on the "TypeDescriptionProvider" attribute instead of
inheriting from "ICustomTypeDescriptor" directly). Customizing a
"PropertyGrid" is no easy task needless to say. I was hoping at the very
least that the native .NET properties would be automatically translated
(where appropriate) but that was wishful thinking. In any case, on a
separate issue, do you know off-hand if it's possible to change the
font/color of an individual "PropertyGrid" row. I don't believe so based on
my research (without a lot of pain) but I'm hoping someone knows better.
Anyway, thanks again.
 
S

Stoitcho Goutsev \(100\)

John,

I don't want to disapoint, but I don't think you can change the font or
color of individual rows.
As far as TypeDescriptionProvider goes just keep in mind that it is not
supported by pre 2.0 versions of the framework (I believe you already know
that)
 
J

John Allen

I don't want to disapoint, but I don't think you can change the font or
color of individual rows.

I didn't think so and it's quite surprising to me actually.
As far as TypeDescriptionProvider goes just keep in mind that it is not
supported by pre 2.0 versions of the framework (I believe you already know
that)

Yes, I'm aware of that. My app is targetting 2.0 and later so it's not an
issue. Anyway, thanks again. You've been very helpful.
 
V

VisualHint

Hello John,

I think you have now 2 different codeproject articles to solve your
issue ;)

Concerning the colors, the MSPG won't do it but Smart PropertyGrid
will. Almost every visual aspect is customizable.

Best regards,

Nicolas Cadilhac @ VisualHint (http://www.visualhint.com)
Home of Smart PropertyGrid for .Net and MFC
Microsoft PropertyGrid Resource List - http://
www.propertygridresourcelist.com
 
J

John Allen

Hello John,
I think you have now 2 different codeproject articles to solve your
issue ;)

Concerning the colors, the MSPG won't do it but Smart PropertyGrid
will. Almost every visual aspect is customizable.

Best regards,

Nicolas Cadilhac @ VisualHint (http://www.visualhint.com)
Home of Smart PropertyGrid for .Net and MFC
Microsoft PropertyGrid Resource List - http://
www.propertygridresourcelist.com

Shameless plug :) but I'll check it out anyway (thanks)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top