I wanting to utilize the PropertyGrid in a application. I have a requirement to support multiple languages. What is the best approach to localize the strings displayed to the user? I am referring the Property Names, and Property Descriptions. I would also like to categorize properties and would like the categories translated.
I have tried an approach I found on CodeProject, but it is designed for WinForms and not WPF. It uses a GlobalPropertyDescriptor which is derived from PropertyDescriptor. This class overrides the Name, DisplayName, and Description properties to retrieve localized strings from string tables. The problem to the approach is the getters for the DisplayName and Description properties are never accessed. The Name property is accessed.
Each class displayed in a PropertyGrid inherits from a common base class that implements an ICustomTypeDescriptor. Most of the what happens here is in the GetProperties functions.
Bottom line is this approach is not working for the WPF version of the PropertyGrid and I am looking for some guidance.
Any assistance is greatly appreciated.
I have tried an approach I found on CodeProject, but it is designed for WinForms and not WPF. It uses a GlobalPropertyDescriptor which is derived from PropertyDescriptor. This class overrides the Name, DisplayName, and Description properties to retrieve localized strings from string tables. The problem to the approach is the getters for the DisplayName and Description properties are never accessed. The Name property is accessed.
Each class displayed in a PropertyGrid inherits from a common base class that implements an ICustomTypeDescriptor. Most of the what happens here is in the GetProperties functions.
Bottom line is this approach is not working for the WPF version of the PropertyGrid and I am looking for some guidance.
Any assistance is greatly appreciated.
6 Answers, 1 is accepted
0
Robert
Top achievements
Rank 1
answered on 08 Apr 2014, 06:15 PM
I have added the following attribute to one of my properties.
I have string table for each support language.
DisplayResources is where my string tables are.
VerificationTime, VerificationTimeDescription, and VerificationTimeGroup all exists as Names each of my string tables. Each name in the string table has the desired Value to be displayed.
Name is the only string that is correctly translated, leading me to believe the access to the resource is correct.
Why can't I localize Description, and GroupName?
[Display(ResourceType = typeof(DisplayResources), Name = "VerificationTime", Description = "VerificationTimeDescription", GroupName = "VerificationTimeGroup")]
I have string table for each support language.
DisplayResources is where my string tables are.
VerificationTime, VerificationTimeDescription, and VerificationTimeGroup all exists as Names each of my string tables. Each name in the string table has the desired Value to be displayed.
Name is the only string that is correctly translated, leading me to believe the access to the resource is correct.
Why can't I localize Description, and GroupName?
0
Hello,
The built-in localization for RadPropertyGrid supports localizing just two values. As to it, you can check our online documentation on Localization for RadPropertyGrid and the general article on the built-in Localization mechanisms.
Apart from that you can also apply your own localization through data annotations attributes. This is what you are actually trying to do. I have attached a test solution demonstrating how this can be achieved.
I hope the solution works for you.
Regards,
Didie
Telerik
The built-in localization for RadPropertyGrid supports localizing just two values. As to it, you can check our online documentation on Localization for RadPropertyGrid and the general article on the built-in Localization mechanisms.
Apart from that you can also apply your own localization through data annotations attributes. This is what you are actually trying to do. I have attached a test solution demonstrating how this can be achieved.
I hope the solution works for you.
Regards,
Didie
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.
0
Robert
Top achievements
Rank 1
answered on 10 Apr 2014, 07:14 PM
Thank you for your help. Your solution works perfectly.
In my solution I am still having problems. There are some subtle differences, but basically I ended up using the same approach as in your solution. Here are the differences.
I am using a trial version of 2014.1.331.45.
My ViewModels are in a separate class library. I using the resources from that library.
I am using a fair amount of inheritance in my view models, but one of the properties has the attributes applied to the actual class I am binding to.
In my solution the Name works correct, but the Description and GroupName do not.
Setting break points on the VerificationTime, VerificationTimeDescription, and VerificationTimeGroup properties of my Resources class I can see that VerificationTime getter is accessed, but the others are not.
I was going to send my project Attach files does not support zip files.
In my solution I am still having problems. There are some subtle differences, but basically I ended up using the same approach as in your solution. Here are the differences.
I am using a trial version of 2014.1.331.45.
My ViewModels are in a separate class library. I using the resources from that library.
I am using a fair amount of inheritance in my view models, but one of the properties has the attributes applied to the actual class I am binding to.
In my solution the Name works correct, but the Description and GroupName do not.
Setting break points on the VerificationTime, VerificationTimeDescription, and VerificationTimeGroup properties of my Resources class I can see that VerificationTime getter is accessed, but the others are not.
I was going to send my project Attach files does not support zip files.
0
Hello,
The trial version should not make any difference in the behavior you get. Would you please open a support ticket and send us the demo solution?
That way we will check it locally and advise further.
Regards,
Didie
Telerik
The trial version should not make any difference in the behavior you get. Would you please open a support ticket and send us the demo solution?
That way we will check it locally and advise further.
Regards,
Didie
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.
0
Robert
Top achievements
Rank 1
answered on 14 Apr 2014, 05:36 PM
If the RadPropertyGrid is being used to edit a collection of objects the localization does not work as expected. In my case the Name of the property is localized but not the description or group name.
It's too bad, because I really need the multiple object PropertySetModes and the localization. Each work, but not at the same time.
It's too bad, because I really need the multiple object PropertySetModes and the localization. Each work, but not at the same time.
0
Hello,
I am glad to let you know we found the reason for this behavior and we managed to resolve the issue. The fix is expected to be included in the next latest internal build.
Regards,
Didie
Telerik
I am glad to let you know we found the reason for this behavior and we managed to resolve the issue. The fix is expected to be included in the next latest internal build.
Regards,
Didie
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.