Page MenuHomePhabricator

Make it more clear when a translation provides bad variants
ClosedPublic

Authored by epriestley on Mar 29 2016, 12:31 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Jan 30, 3:24 PM
Unknown Object (File)
Mon, Jan 27, 7:47 PM
Unknown Object (File)
Sat, Jan 25, 1:43 PM
Unknown Object (File)
Fri, Jan 24, 12:31 PM
Unknown Object (File)
Fri, Jan 24, 12:31 PM
Unknown Object (File)
Fri, Jan 24, 12:31 PM
Unknown Object (File)
Tue, Jan 21, 12:32 PM
Unknown Object (File)
Sat, Jan 18, 6:52 AM
Subscribers
None

Details

Summary

Ref T10688. When you have a translation like "I saw %s dog(s)", you can provide multiple variants in the translation file that are selected based on the argument's plurality or gender.

However, if you pass something which is not a number and not gendered, we can't use it to choose a variant (we have no idea which variant we should select for a phutil_tag() or arbitrary string).

An example of bad variant data is:

'%s touched %s %s time(s).' => array(
  array(
    '%s touched %s once.',
    '%s touched %s %s times.',
  )
)

This data intends to vary on the third parameter (the number of touches) but actually varies on the second parameter (the touched thing).

Unless that second parameter is a number or a person, this data is incorrect and tries to vary on a non-gendered, non-plural value.

The correct data uses an extra array to vary on the third parameter instead of the second parameter:

'%s touched %s %s time(s).' => array(
  array(
    array(
      '%s touched %s once.',
      '%s touched %s %s times.',     
    )
  )
)
Test Plan

Screen Shot 2016-03-29 at 5.26.49 AM.png (640×1 px, 171 KB)

Diff Detail

Repository
rPHU libphutil
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

epriestley retitled this revision from to Make it more clear when a translation provides bad variants.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added reviewers: chad, lpriestley.
chad edited edge metadata.
This revision is now accepted and ready to land.Mar 29 2016, 1:47 PM
This revision was automatically updated to reflect the committed changes.