L20n/Features/Entities vs Variables

From MozillaWiki
< L20n‎ | Features
Revision as of 14:02, 1 March 2012 by StasM (talk | contribs) (Created page with "== goal == we need to be able to recognize variables from a developer from entities located in resources == example == We decided to separate the expression syntax used to call...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

goal

we need to be able to recognize variables from a developer from entities located in resources

example

We decided to separate the expression syntax used to call to other entities from the syntax used to reference developer provided variables.

Developer provided variables (either from the context or a call) are referenced by a name, no changes here. But in order to reference another entity, a prefix ":" has to be used. It looks like this:

<brandName {
  nominative: "Firefox",
  genitive: "Firefoksa"
}
  _gender: { mac: 'male', win: 'female' }
  accesskey: { mac: 'F', win: 'C'}
>

<about "About {{ :brandName.nominative }}">
<update[:brandName:_gender.win] {
  male: "{{ :brandName }} has been updated.  The update took {{ updateTime }} seconds."
  female: "{{ :brandName:accesskey.mac }}"
}>

The rationale here is that we expect localizers to reference developer provided variables much more often, while referencing other entities (except for a brandName like cases) will be rather an exception.

For computed calls, the syntax will look like this:

/*
   For variables:
   var1 - "accesskey"
   var2 - "entity2"
   var3 - "win"
 */

<entity1 "value"
 accesskey: "c">

<entity2 "value">

<entity3 {
  win: "test",
  lin: "test2"
}>
/*
  This will compute to "Hello c and value and test"
*/
<title "Hello {{ :entity1:[var1] }} and {{ :[var2] }} and {{ :entity3[var3] }}">

status

  • open
  • stas, gandalf - ok
  • pike - ?