I think that adding an overload for loc(String,String) that maps to loc(String,NodeSeq) with null testing provides simplicity for the user (not having to explicitly wrap everything in Text() unless you have specific need for it). At the risk of making this a little more complex but adding some flexibility, how about
def loc(key : String, default : => String) = loc(str).openOr(Text(Box.!!(default).openOr(""))) I'm not sure what we really want to return if the provided default is null. I was also wondering if we want to Log a failed lookup key so that you could easily determine that you missed some l10n properties. That could look like: def loc(key : String, default : => String) = loc(str).openOr({ Log.warn({() => "Failed lookup of " + key + " for locale " + S.locale}) Text(Box.!!(default).openOr("")) } Cheers, Derek On Fri, Mar 6, 2009 at 4:57 PM, David Pollak <feeder.of.the.be...@gmail.com>wrote: > > > On Fri, Mar 6, 2009 at 3:52 PM, Timothy Perrett > <timo...@getintheloop.eu>wrote: > >> Isn't the danger here that Text() will explode if for some reason default >> was null (e.g Reading from a DB)? >> >> It's not a massive issue, as people should be diligent about supplying >> defaults but it's just a though. >> > > You can always add null testing. > - Show quoted text - > > >> >> Cheers, Tim >> >> Sent from my iPhone >> >> On 6 Mar 2009, at 18:32, Derek Chen-Becker <dchenbec...@gmail.com> wrote: >> >> It would be a little cleaner if there was a helper overload: >> >> def loc (key : String, default : String) = loc(key, Text(default)) >> >> Derek >> >> On Fri, Mar 6, 2009 at 12:16 PM, Timothy Perrett <timo...@getintheloop.eu >> > wrote: >> >>> >>> I've just been looking at some of the other method overloads in S and >>> it appears we already have: >>> >>> S.loc(String, NodeSeq) >>> >>> This is exactly what I need anyway - wondering if there is any need to >>> override S.? with another method now? >>> >>> Cheers, Tim >>> >>> On Mar 6, 5:03 pm, Timothy Perrett <timo...@getintheloop.eu> wrote: >>> > Sounds cool - I'll make the change and commit it. >>> > >>> > Cheers, Tim >>> > >>> > On 06/03/2009 16:56, "marius d." <marius.dan...@gmail.com> wrote: >>> > >>> > >>> > >>> > > +1 for overloading '? ' >>> > >>> > > On Mar 6, 4:52 pm, Derek Chen-Becker <dchenbec...@gmail.com> wrote: >>> > >> I think this is a reasonable addition, but I would use >>> > >>> > >> def ?(key : String, defaultKey : String) = ... >>> > >>> > >> That way changing the default text just doesn't require changes to >>> code. >>> > >>> > >> Derek >>> > >>> > >> On Fri, Mar 6, 2009 at 6:29 AM, Tim Perrett <timo...@getintheloop.eu> >>> wrote: >>> > >>> > >>> Guys, >>> > >>> > >>> I have a situation where I want to localize a bunch of dynamic >>> texts, >>> > >>> however the current behavior of S.? is to return the input text if >>> its >>> > >>> found in a resource bundle. Whilst I see the rational for this, I >>> have >>> > >>> another situation where I want to pass a key, and if it doesn't >>> find >>> > >>> it, display something else (the english version). Id rather not use >>> > >>> the english text as the translation key, as if the english text >>> > >>> changes, my database translations will break (not good!) >>> > >>> > >>> I can achieve the functionality needed right by doing something >>> like: >>> > >>> > >>> S.loc(item.localization_key.toString + ".name") match { >>> > >>> case Full(t) => t >>> > >>> case _ => Text(doc.name.toString) >>> > >>> } >>> > >>> > >>> But it would be nice if we could have a utility method in S which >>> > >>> allowed you do do: >>> > >>> > >>> ?("my.localization.key", defaultText.toString) >>> > >>> > >>> Thoughts? >>> > >>> > >>> Cheers, Tim >>> >>> >> >> >> >> >> > > > -- > Lift, the simply functional web framework http://liftweb.net > Beginning Scala http://www.apress.com/book/view/1430219890 > Follow me: http://twitter.com/dpp > Git some: http://github.com/dpp- Show quoted text - > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---