I know Alec was working on a writeup on this topic as well. Alec, I'd be curious to know if Katie's ideas match up with yours?
Yeah, I actually had a whole writeup and thunderbird must have crashed before I sent it. Lame :)

Anyhow, I've been meaning to rewrite stuff  and I like Katie's summary:

I'm open to other proposals, just wanted to make the point that user data shouldn't be localized and should be indexed.
I just finished up the table header attribute display to be fully localized and it got me thinking about the different ways that displayName applies. The three big cases I came up with are Kinds, Attributes, and Item instances. What follows is my understanding of how these are used in chandler today.

One of the key bits of this is the notion of Item instances vs. Kinds & Attributes. Leaving aside for now that Kinds and Attributes are technically also Item instances, there is a difference in the way we use these things in the code.

And Item instance takes place in the form of user data, (Notes, Tasks, Events, etc) or in the form of internal objects that we use to maintain the rest of chandler (i.e. Blocks, TimeZone information, Preferences, etc)

Item instances generally do not come with much in the way of pre-set attributes beyond really basic things like "New Event" or "Untitled" - and if anything I think those values are really functions of the view that is presenting them - i.e. the Chandler UI might set an event to say "New Event" for the user, so that the user knows to type a new name. the string "New Event" is not necessarily part of the domain model. These values tend to be dynamic because the user could change them at any time.

Kinds and Attributes are slightly different though: They really are what most of the domain model is, and there is really only one of each Kind or Attribute - one CalendarEvent kind, one Task kind, etc. the displayName of these Kinds generally do not change, but as of today they do appear in the UI in more static elements like the Table column headers. This means they do in fact have to be localized, even though they're part of the Domain Model, but of course they don't need to be indexed.

I guess I began this to try to understand if things in the Domain Model needed to be localized, and that's what's happening here. However, in the same way that "New Event" is a function of the view, its also possible that the displayName of each Kind/Attribute could also be a sort of function of the view (i.e. the UI), but I can't think of a practical way to make it part of the view.

So in any case it seems like the semantic difference between a Kind/Attribute's displayName and an Item Instance's displayName is whether or not it is indexed and not too much else. If that's the only difference, I would probably vote that we continue using the "displayName attribute override" mechanism that Andi introduced me to last week, where everything has a localizable displayName, but that ContentItem has its own displayName that is simply overridden to indicate that it should be indexed.

So the answer to my original query (the subject of the thread) is, IMO, "it is not necessarily a good thing, but it doesn't seem to bad either."

Alec
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "chandler-dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/chandler-dev

Reply via email to