Re: [T5] How to skin .properties files? Localization almost good...
This approach sounds really promising and works out well for templates. But how about properties? As the author said, something similiar can be used for properties. However, I have difficulties in finding the equivalent... Andreas Pardeike-2 wrote: On 5 mar 2008, at 06.46, Vjeran Marcinko wrote: Anyway, sometimes I deploy my Tapestry application to various customers which want to have dfferent text messages or maybe even outlook of some pages. I can use CSS for some of it, but lets say that I want to pick different page/global .property file for displaying different messages stored in them. Actually, perfect solution for me would be some kindof Locale which could be set initially through Tapestry configuration, so I could have smething like: Home.html Home_customer1.html Home_customer2.html I would solve this by defining my own PageTemplateLocator (and similar for properties too). It would need a service 'YourCustomerMode' which would be inserted into the template constructor: First, in AppModule.java: public PageTemplateLocator buildMyPageLocator( @ContextProvider AssetFactory contextAssetFactory, ComponentClassResolver componentClassResolver, YourCustomerMode customer) { return new MyTemplateLocator(contextAssetFactory.getRootResource(), componentClassResolver, customer); } public static void contributeAliasOverrides( @InjectService(MyPageLocator) PageTemplateLocator locator, ConfigurationAliasContributionPageTemplateLocator configuration) { configuration.add(AliasContribution.create(PageTemplateLocator.class, locator)); } and the MyTemplateLocator.java: public class MyTemplateLocator implements PageTemplateLocator { private final Resource _contextRoot; private final ComponentClassResolver _resolver; private final YourCustomerMode _customerMode; public MyTemplateLocator(Resource contextRoot, ComponentClassResolver resolver, YourCustomerMode customerMode) { _contextRoot = contextRoot; _resolver = resolver; _ customerMode = customerMode; } public Resource findPageTemplateResource(ComponentModel model, Locale locale) { String className = model.getComponentClassName(); if(!className.contains(.pages.)) return null; String logicalName = _resolver.resolvePageClassNameToPageName(className); int slashx = logicalName.lastIndexOf('/'); if(slashx 0) { String simpleClassName = InternalUtils.lastTerm(className); logicalName = logicalName.substring(0, slashx + 1) + simpleClassName; } String path = format(%s_%s.html, logicalName, _customerMode.getCurrentCustomerName()); return _contextRoot.forFile(path).forLocale(locale); } } // Andreas Pardeike - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- View this message in context: http://old.nabble.com/-T5--How-to-%22skin%22-.properties-files--Localization-almost-good...-tp15843698p29098637.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] How to skin .properties files? Localization almost good...
Hi Actually locale are made of three elements a language, a country and a variant. Maybe you can set a variant per customer... 2010/7/7 t5_lothar lothar_n...@gmx.de This approach sounds really promising and works out well for templates. But how about properties? As the author said, something similiar can be used for properties. However, I have difficulties in finding the equivalent... Andreas Pardeike-2 wrote: On 5 mar 2008, at 06.46, Vjeran Marcinko wrote: Anyway, sometimes I deploy my Tapestry application to various customers which want to have dfferent text messages or maybe even outlook of some pages. I can use CSS for some of it, but lets say that I want to pick different page/global .property file for displaying different messages stored in them. Actually, perfect solution for me would be some kindof Locale which could be set initially through Tapestry configuration, so I could have smething like: Home.html Home_customer1.html Home_customer2.html I would solve this by defining my own PageTemplateLocator (and similar for properties too). It would need a service 'YourCustomerMode' which would be inserted into the template constructor: First, in AppModule.java: public PageTemplateLocator buildMyPageLocator( @ContextProvider AssetFactory contextAssetFactory, ComponentClassResolver componentClassResolver, YourCustomerMode customer) { return new MyTemplateLocator(contextAssetFactory.getRootResource(), componentClassResolver, customer); } public static void contributeAliasOverrides( @InjectService(MyPageLocator) PageTemplateLocator locator, ConfigurationAliasContributionPageTemplateLocator configuration) { configuration.add(AliasContribution.create(PageTemplateLocator.class, locator)); } and the MyTemplateLocator.java: public class MyTemplateLocator implements PageTemplateLocator { private final Resource _contextRoot; private final ComponentClassResolver _resolver; private final YourCustomerMode _customerMode; public MyTemplateLocator(Resource contextRoot, ComponentClassResolver resolver, YourCustomerMode customerMode) { _contextRoot = contextRoot; _resolver = resolver; _ customerMode = customerMode; } public Resource findPageTemplateResource(ComponentModel model, Locale locale) { String className = model.getComponentClassName(); if(!className.contains(.pages.)) return null; String logicalName = _resolver.resolvePageClassNameToPageName(className); int slashx = logicalName.lastIndexOf('/'); if(slashx 0) { String simpleClassName = InternalUtils.lastTerm(className); logicalName = logicalName.substring(0, slashx + 1) + simpleClassName; } String path = format(%s_%s.html, logicalName, _customerMode.getCurrentCustomerName()); return _contextRoot.forFile(path).forLocale(locale); } } // Andreas Pardeike - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- View this message in context: http://old.nabble.com/-T5--How-to-%22skin%22-.properties-files--Localization-almost-good...-tp15843698p29098637.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- Regards, Christophe Cordenier. Committer on Apache Tapestry 5 Co-creator of wooki @wookicentral.com
Re: [T5] How to skin .properties files? Localization almost good...
we had to do something similar and at the end we decided to create a new binder prefix branding and use the brand associated to the request to retrieve a label from a property file, appending the property label to the key. So for example: if we want to print the title in english for client 1. we do: ${branding:title}. In the .properties there must exist a label for the given branding. For example: title-client1=The title for the client one. On Wed, Jul 7, 2010 at 11:04 PM, Christophe Cordenier christophe.corden...@gmail.com wrote: Hi Actually locale are made of three elements a language, a country and a variant. Maybe you can set a variant per customer... 2010/7/7 t5_lothar lothar_n...@gmx.de This approach sounds really promising and works out well for templates. But how about properties? As the author said, something similiar can be used for properties. However, I have difficulties in finding the equivalent... Andreas Pardeike-2 wrote: On 5 mar 2008, at 06.46, Vjeran Marcinko wrote: Anyway, sometimes I deploy my Tapestry application to various customers which want to have dfferent text messages or maybe even outlook of some pages. I can use CSS for some of it, but lets say that I want to pick different page/global .property file for displaying different messages stored in them. Actually, perfect solution for me would be some kindof Locale which could be set initially through Tapestry configuration, so I could have smething like: Home.html Home_customer1.html Home_customer2.html I would solve this by defining my own PageTemplateLocator (and similar for properties too). It would need a service 'YourCustomerMode' which would be inserted into the template constructor: First, in AppModule.java: public PageTemplateLocator buildMyPageLocator( @ContextProvider AssetFactory contextAssetFactory, ComponentClassResolver componentClassResolver, YourCustomerMode customer) { return new MyTemplateLocator(contextAssetFactory.getRootResource(), componentClassResolver, customer); } public static void contributeAliasOverrides( @InjectService(MyPageLocator) PageTemplateLocator locator, ConfigurationAliasContributionPageTemplateLocator configuration) { configuration.add(AliasContribution.create(PageTemplateLocator.class, locator)); } and the MyTemplateLocator.java: public class MyTemplateLocator implements PageTemplateLocator { private final Resource _contextRoot; private final ComponentClassResolver _resolver; private final YourCustomerMode _customerMode; public MyTemplateLocator(Resource contextRoot, ComponentClassResolver resolver, YourCustomerMode customerMode) { _contextRoot = contextRoot; _resolver = resolver; _ customerMode = customerMode; } public Resource findPageTemplateResource(ComponentModel model, Locale locale) { String className = model.getComponentClassName(); if(!className.contains(.pages.)) return null; String logicalName = _resolver.resolvePageClassNameToPageName(className); int slashx = logicalName.lastIndexOf('/'); if(slashx 0) { String simpleClassName = InternalUtils.lastTerm(className); logicalName = logicalName.substring(0, slashx + 1) + simpleClassName; } String path = format(%s_%s.html, logicalName, _customerMode.getCurrentCustomerName()); return _contextRoot.forFile(path).forLocale(locale); } } // Andreas Pardeike - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- View this message in context: http://old.nabble.com/-T5--How-to-%22skin%22-.properties-files--Localization-almost-good...-tp15843698p29098637.html Sent from the Tapestry - User mailing list archive at Nabble.com. - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- Regards, Christophe Cordenier. Committer on Apache Tapestry 5 Co-creator of wooki @wookicentral.com - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: [T5] How to skin .properties files? Localization almost good...
I agree with vjeran, there sholud be an aditional string besides locale for distinguishing resources. Home.html Home_customer1.html Home_customer1_en.html Home_customer2.html Home_customer2_en.html Davor Hrg On Wed, Mar 5, 2008 at 6:46 AM, Vjeran Marcinko [EMAIL PROTECTED] wrote: Hello. I already had this minor problem with Tapestry versions prior to T5, and it seems to me that it still persists... Anyway, sometimes I deploy my Tapestry application to various customers which want to have dfferent text messages or maybe even outlook of some pages. I can use CSS for some of it, but lets say that I want to pick different page/global .property file for displaying different messages stored in them. Actually, perfect solution for me would be some kindof Locale which could be set initially through Tapestry configuration, so I could have smething like: Home.properties Home_customer1.properties Home_customer2.properties Home.html Home_customer1.html Home_customer2.html Unfortunately, setting some dummy Locales like customer1 via JVM parameters doesn't work. It raises errors on multiple places in my app (not related to Tapestry). Ideas? BTW, has old Tapestry guys like Erik Hatcher, Mindbridge etc.. left to some other web open source projects? :) Regads, Vjeran - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [T5] How to skin .properties files? Localization almost good...
On 5 mar 2008, at 06.46, Vjeran Marcinko wrote: Anyway, sometimes I deploy my Tapestry application to various customers which want to have dfferent text messages or maybe even outlook of some pages. I can use CSS for some of it, but lets say that I want to pick different page/global .property file for displaying different messages stored in them. Actually, perfect solution for me would be some kindof Locale which could be set initially through Tapestry configuration, so I could have smething like: Home.html Home_customer1.html Home_customer2.html I would solve this by defining my own PageTemplateLocator (and similar for properties too). It would need a service 'YourCustomerMode' which would be inserted into the template constructor: First, in AppModule.java: public PageTemplateLocator buildMyPageLocator( @ContextProvider AssetFactory contextAssetFactory, ComponentClassResolver componentClassResolver, YourCustomerMode customer) { return new MyTemplateLocator(contextAssetFactory.getRootResource(), componentClassResolver, customer); } public static void contributeAliasOverrides( @InjectService(MyPageLocator) PageTemplateLocator locator, ConfigurationAliasContributionPageTemplateLocator configuration) { configuration.add(AliasContribution.create(PageTemplateLocator.class, locator)); } and the MyTemplateLocator.java: public class MyTemplateLocator implements PageTemplateLocator { private final Resource _contextRoot; private final ComponentClassResolver _resolver; private final YourCustomerMode _customerMode; public MyTemplateLocator(Resource contextRoot, ComponentClassResolver resolver, YourCustomerMode customerMode) { _contextRoot = contextRoot; _resolver = resolver; _ customerMode = customerMode; } public Resource findPageTemplateResource(ComponentModel model, Locale locale) { String className = model.getComponentClassName(); if(!className.contains(.pages.)) return null; String logicalName = _resolver.resolvePageClassNameToPageName(className); int slashx = logicalName.lastIndexOf('/'); if(slashx 0) { String simpleClassName = InternalUtils.lastTerm(className); logicalName = logicalName.substring(0, slashx + 1) + simpleClassName; } String path = format(%s_%s.html, logicalName, _customerMode.getCurrentCustomerName()); return _contextRoot.forFile(path).forLocale(locale); } } // Andreas Pardeike - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]