HomePhabricator

Make it more clear when a translation provides bad variants

Description

Make it more clear when a translation provides bad variants

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)

Reviewers: lpriestley, chad

Reviewed By: chad

Maniphest Tasks: T10688

Differential Revision: https://secure.phabricator.com/D15545

Details

Provenance
epriestleyAuthored on Mar 29 2016, 12:24 PM
epriestleyPushed on Mar 29 2016, 1:49 PM
Reviewer
chad
Differential Revision
D15545: Make it more clear when a translation provides bad variants
Parents
rPHUb4f38af38480: Implement a stream iterator and hashing iterator
Branches
Unknown
Tags
Unknown
Tasks
T10688: Badge translation error
Build Status
Buildable 11344
Build 14117: Run Core Tests