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)
Tue, Apr 16, 11:03 AM
Unknown Object (File)
Thu, Apr 11, 9:17 AM
Unknown Object (File)
Thu, Apr 11, 7:35 AM
Unknown Object (File)
Wed, Apr 10, 7:46 PM
Unknown Object (File)
Fri, Apr 5, 3:46 PM
Unknown Object (File)
Sun, Mar 31, 5:26 AM
Unknown Object (File)
Thu, Mar 28, 12:54 PM
Unknown Object (File)
Mar 5 2024, 1:32 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.