Interesting discussion. I have long been an advocate for separating the way genealogical data is stored from the way genealogical data is displayed. The following is a considerable oversimplification and doesn't cover all the cases, but in a perfect world I think my theory would involve storing a date as something like month=1,day=5,year=1856. Said date could then be displayed as 1/5/1856 or 5/1/1856 depending on local conventions, or as 5 Jan 1856 or as 5 January 1856 depending on local conventions, or as 5 January 1856 or as 5 janvier 1856 depending on local conventions (and if I'm doing it correctly for French - I'm probably not).
This little discussion makes it clear that my little theory is incomplete. Instead, I should say we need to separate the way genealogical data is entered from the way genealogical data is stored from the way genealogical data is displayed. In the case of dates, I think that means that there should be date templates for input, that software should feel free to store dates any way it wishes internally, and that there should be date templates for output. The input and output templates for dates would need to include language tags.
That still begs the question of data exchange. One piece of software's output is another piece of software's input. Perhaps there should be a standard for data exchange that is something like the month=1,day=5,year=1856 idea. Of course, such an exchange standard would need to cover all the bases of Julian vs. Gregorian dates, quarter dates, approximate dates, estimated dates, before dates, after dates, date ranges, Quaker dates, etc.
P.S. I would actually picture data exchange being done in more of an XML style or JSON style than in a keyword style. The exact details wouldn't matter as long as it covered all the cases. But nothing like this is ever going to happen because the intertia of not changing is so strong when it comes genealogy standards.