Simple things should be simple, complicated things should be complicated. For translations, to me that means:
- Single language (any language, not just English) content should be as easy as possible
- Representing multiple translations for content should be as easy as possible, in particular for common use cases.
- Enable edge cases and more complicated things via extensions/custom properties
- Let things that can be done by implementations be done by implementations. Don't design more in the specification than what needs to be there.
Given those goals, I have two thoughts on the existing proposals. First, the hash-based approach may not be necessary. Second, if it is the best solution, using a single-key map to represent the language for an individual field is probably not the best approach (see second file).