{
  "id": 64,
  "locale": "en",
  "english_name": "English",
  "native_name": "English",
  "right_to_left": false,
  "flag_url": "https://cdn.translationexchange.com/flags/default/languages/16/en.png",
  "contexts": {
    "list": {
      "rules": {
        "one": {
          "description": "{token} contains 1 element",
          "conditions": "(= 1 @count)",
          "conditions_expression": [
            "=",
            1,
            "@count"
          ]
        },
        "other": {
          "description": "{token} contains at least 2 elements"
        }
      },
      "keys": [
        "one",
        "other"
      ],
      "default_key": "other",
      "token_expression": "/.*(items|list)(\\d)*$/",
      "variables": [
        "@count"
      ],
      "token_mapping": [
        "unsupported",
        {
          "one": "{$0}",
          "other": "{$1}"
        }
      ]
    },
    "date": {
      "rules": {
        "future": {
          "description": "{token} is in the past",
          "conditions": "(< @date (today))",
          "conditions_expression": [
            "<",
            "@date",
            [
              "today"
            ]
          ]
        },
        "present": {
          "description": "{token} is in the present",
          "conditions": "(= @date (today))",
          "conditions_expression": [
            "=",
            "@date",
            [
              "today"
            ]
          ]
        },
        "past": {
          "description": "{token} is in the future",
          "conditions": "(> @date (today))",
          "conditions_expression": [
            ">",
            "@date",
            [
              "today"
            ]
          ]
        }
      },
      "keys": [
        "past",
        "present",
        "future"
      ],
      "default_key": "present",
      "token_expression": "/.*(date|time)(\\d)*$/",
      "variables": [
        "@date"
      ],
      "token_mapping": [
        "unsupported",
        "unsupported",
        {
          "past": "{$0}",
          "present": "{$1}",
          "future": "{$2}"
        }
      ]
    },
    "number": {
      "rules": {
        "one": {
          "description": "{token} is 1",
          "examples": "1",
          "conditions": "(= @n 1)",
          "conditions_expression": [
            "=",
            "@n",
            1
          ]
        },
        "other": {
          "description": "{token} is not 1",
          "examples": "0, 2-999; 1.2, 2.07..."
        }
      },
      "keys": [
        "one",
        "other"
      ],
      "default_key": "other",
      "token_expression": "/.*(count|num|minutes|seconds|hours|sum|total)(\\d)*$/",
      "variables": [
        "@n"
      ],
      "token_mapping": [
        {
          "one": "{$0}",
          "other": "{$0::plural}"
        },
        {
          "one": "{$0}",
          "other": "{$1}"
        }
      ]
    },
    "gender": {
      "rules": {
        "female": {
          "description": "{token} is a female",
          "conditions": "(= 'female' @gender)",
          "conditions_expression": [
            "=",
            "female",
            "@gender"
          ]
        },
        "male": {
          "description": "{token} is a male",
          "conditions": "(= 'male' @gender)",
          "conditions_expression": [
            "=",
            "male",
            "@gender"
          ]
        },
        "other": {
          "description": "{token}'s gender is unknown"
        }
      },
      "keys": [
        "male",
        "female",
        "other"
      ],
      "default_key": "other",
      "token_expression": "/.*(user|translator|profile|actor|target)(\\d)*$/",
      "variables": [
        "@gender"
      ],
      "token_mapping": [
        {
          "other": "{$0}"
        },
        {
          "male": "{$0}",
          "female": "{$1}",
          "other": "{$0}/{$1}"
        },
        {
          "male": "{$0}",
          "female": "{$1}",
          "other": "{$2}"
        }
      ]
    },
    "genders": {
      "rules": {
        "female": {
          "description": "{token} contains 1 female",
          "conditions": "(&& (= 1 (count @genders)) (all @genders 'female'))",
          "conditions_expression": [
            "&&",
            [
              "=",
              1,
              [
                "count",
                "@genders"
              ]
            ],
            [
              "all",
              "@genders",
              "female"
            ]
          ]
        },
        "male": {
          "description": "{token} contains 1 male",
          "conditions": "(&& (= 1 (count @genders)) (all @genders 'male'))",
          "conditions_expression": [
            "&&",
            [
              "=",
              1,
              [
                "count",
                "@genders"
              ]
            ],
            [
              "all",
              "@genders",
              "male"
            ]
          ]
        },
        "other": {
          "description": "{token} contains at least 2 people"
        },
        "unknown": {
          "description": "{token} contains 1 person with unknown gender",
          "conditions": "(&& (= 1 (count @genders)) (all @genders 'unknown'))",
          "conditions_expression": [
            "&&",
            [
              "=",
              1,
              [
                "count",
                "@genders"
              ]
            ],
            [
              "all",
              "@genders",
              "unknown"
            ]
          ]
        }
      },
      "keys": [
        "male",
        "female",
        "unknown",
        "other"
      ],
      "default_key": "other",
      "token_expression": "/.*(users|profiles|actors|targets)(\\d)*$/",
      "variables": [
        "@genders"
      ],
      "token_mapping": [
        {
          "male": "{$0}",
          "female": "{$0}",
          "unknown": "{$0}",
          "other": "{$0}"
        },
        {
          "male": "{$0}",
          "female": "{$0}",
          "unknown": "{$0}",
          "other": "{$1}"
        },
        {
          "male": "{$0}",
          "female": "{$1}",
          "unknown": "{$0}/{$1}",
          "other": "{$2}"
        },
        {
          "male": "{$0}",
          "female": "{$1}",
          "unknown": "{$2}",
          "other": "{$3}"
        }
      ]
    }
  },
  "cases": {
    "times": {
      "rules": [
        {
          "description": "replace '1' with 'once'",
          "conditions": "(= 1 @value)",
          "conditions_expression": [
            "=",
            1,
            "@value"
          ],
          "operations": "(replace '1' 'once' @value)",
          "operations_expression": [
            "replace",
            "1",
            "once",
            "@value"
          ]
        },
        {
          "description": "replace '2' with 'twice'",
          "conditions": "(= 2 @value)",
          "conditions_expression": [
            "=",
            2,
            "@value"
          ],
          "operations": "(replace '2' 'twice' @value)",
          "operations_expression": [
            "replace",
            "2",
            "twice",
            "@value"
          ]
        },
        {
          "description": "in all other cases, append x times",
          "conditions": "(true)",
          "conditions_expression": [
            "true"
          ],
          "operations": "(append ' times' @value)",
          "operations_expression": [
            "append",
            " times",
            "@value"
          ]
        }
      ],
      "latin_name": "Iteration",
      "description": "The iteration form of the cardinal numbers",
      "application": "phrase"
    },
    "plural": {
      "rules": [
        {
          "description": "Uncountable word",
          "conditions": "(in 'sheep,fish,series,species,money,rice,information,equipment' @value)",
          "conditions_expression": [
            "in",
            "sheep,fish,series,species,money,rice,information,equipment",
            "@value"
          ],
          "operations": "@value",
          "operations_expression": "@value"
        },
        {
          "description": "Irregular word",
          "conditions": "(= 'move' @value)",
          "conditions_expression": [
            "=",
            "move",
            "@value"
          ],
          "operations": "(quote 'moves')",
          "operations_expression": [
            "quote",
            "moves"
          ]
        },
        {
          "description": "Irregular word",
          "conditions": "(= 'sex' @value)",
          "conditions_expression": [
            "=",
            "sex",
            "@value"
          ],
          "operations": "(quote 'sexes')",
          "operations_expression": [
            "quote",
            "sexes"
          ]
        },
        {
          "description": "Irregular word",
          "conditions": "(= 'child' @value)",
          "conditions_expression": [
            "=",
            "child",
            "@value"
          ],
          "operations": "(quote 'children')",
          "operations_expression": [
            "quote",
            "children"
          ]
        },
        {
          "description": "Irregular word",
          "conditions": "(= 'person' @value)",
          "conditions_expression": [
            "=",
            "person",
            "@value"
          ],
          "operations": "(quote 'people')",
          "operations_expression": [
            "quote",
            "people"
          ]
        },
        {
          "conditions": "(match '/(quiz)$/i' @value)",
          "conditions_expression": [
            "match",
            "/(quiz)$/i",
            "@value"
          ],
          "operations": "(replace '/(quiz)$/i' '$1zes' @value)",
          "operations_expression": [
            "replace",
            "/(quiz)$/i",
            "$1zes",
            "@value"
          ]
        },
        {
          "conditions": "(match '/^(ox)$/i' @value)",
          "conditions_expression": [
            "match",
            "/^(ox)$/i",
            "@value"
          ],
          "operations": "(replace '/^(ox)$/i' '$1en' @value)",
          "operations_expression": [
            "replace",
            "/^(ox)$/i",
            "$1en",
            "@value"
          ]
        },
        {
          "conditions": "(match '/([m|l])ouse$/i' @value)",
          "conditions_expression": [
            "match",
            "/([m|l])ouse$/i",
            "@value"
          ],
          "operations": "(replace '/([m|l])ouse$/i' '$1ice' @value)",
          "operations_expression": [
            "replace",
            "/([m|l])ouse$/i",
            "$1ice",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(matr|vert|ind)ix|ex$/i' @value)",
          "conditions_expression": [
            "match",
            "/(matr|vert|ind)ix|ex$/i",
            "@value"
          ],
          "operations": "(replace '/(matr|vert|ind)ix|ex$/i' '$1ices' @value)",
          "operations_expression": [
            "replace",
            "/(matr|vert|ind)ix|ex$/i",
            "$1ices",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(x|ch|ss|sh)$/i' @value)",
          "conditions_expression": [
            "match",
            "/(x|ch|ss|sh)$/i",
            "@value"
          ],
          "operations": "(replace '/(x|ch|ss|sh)$/i' '$1es' @value)",
          "operations_expression": [
            "replace",
            "/(x|ch|ss|sh)$/i",
            "$1es",
            "@value"
          ]
        },
        {
          "conditions": "(match '/([^aeiouy]|qu)y$/i' @value)",
          "conditions_expression": [
            "match",
            "/([^aeiouy]|qu)y$/i",
            "@value"
          ],
          "operations": "(replace '/([^aeiouy]|qu)y$/i' '$1ies' @value)",
          "operations_expression": [
            "replace",
            "/([^aeiouy]|qu)y$/i",
            "$1ies",
            "@value"
          ]
        },
        {
          "conditions": "(match '/([^aeiouy]|qu)ies$/i' @value)",
          "conditions_expression": [
            "match",
            "/([^aeiouy]|qu)ies$/i",
            "@value"
          ],
          "operations": "(replace '/([^aeiouy]|qu)ies$/i' '$1y' @value)",
          "operations_expression": [
            "replace",
            "/([^aeiouy]|qu)ies$/i",
            "$1y",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(hive)$/i' @value)",
          "conditions_expression": [
            "match",
            "/(hive)$/i",
            "@value"
          ],
          "operations": "(replace '/(hive)$/i' '$1s' @value)",
          "operations_expression": [
            "replace",
            "/(hive)$/i",
            "$1s",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(?:([^f])fe|([lr])f)$/i' @value)",
          "conditions_expression": [
            "match",
            "/(?:([^f])fe|([lr])f)$/i",
            "@value"
          ],
          "operations": "(replace '/(?:([^f])fe|([lr])f)$/i' '$1$2ves' @value)",
          "operations_expression": [
            "replace",
            "/(?:([^f])fe|([lr])f)$/i",
            "$1$2ves",
            "@value"
          ]
        },
        {
          "conditions": "(match '/sis$/i' @value)",
          "conditions_expression": [
            "match",
            "/sis$/i",
            "@value"
          ],
          "operations": "(replace '/sis$/i' 'ses' @value)",
          "operations_expression": [
            "replace",
            "/sis$/i",
            "ses",
            "@value"
          ]
        },
        {
          "conditions": "(match '/([ti])um$/i' @value)",
          "conditions_expression": [
            "match",
            "/([ti])um$/i",
            "@value"
          ],
          "operations": "(replace '/([ti])um$/i' '$1a' @value)",
          "operations_expression": [
            "replace",
            "/([ti])um$/i",
            "$1a",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(buffal|tomat|potat)o$/i' @value)",
          "conditions_expression": [
            "match",
            "/(buffal|tomat|potat)o$/i",
            "@value"
          ],
          "operations": "(replace '/(buffal|tomat|potat)o$/i' '$1oes' @value)",
          "operations_expression": [
            "replace",
            "/(buffal|tomat|potat)o$/i",
            "$1oes",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(bu)s$/i' @value)",
          "conditions_expression": [
            "match",
            "/(bu)s$/i",
            "@value"
          ],
          "operations": "(replace '/(bu)s$/i' '$1ses' @value)",
          "operations_expression": [
            "replace",
            "/(bu)s$/i",
            "$1ses",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(alias|status)$/i' @value)",
          "conditions_expression": [
            "match",
            "/(alias|status)$/i",
            "@value"
          ],
          "operations": "(replace '/(alias|status)$/i' '$1es' @value)",
          "operations_expression": [
            "replace",
            "/(alias|status)$/i",
            "$1es",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(octop)us$/i' @value)",
          "conditions_expression": [
            "match",
            "/(octop)us$/i",
            "@value"
          ],
          "operations": "(replace '/(octop)us$/i' '$1i' @value)",
          "operations_expression": [
            "replace",
            "/(octop)us$/i",
            "$1i",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(ax|test)is$/i' @value)",
          "conditions_expression": [
            "match",
            "/(ax|test)is$/i",
            "@value"
          ],
          "operations": "(replace '/(ax|test)is$/i' '$1es' @value)",
          "operations_expression": [
            "replace",
            "/(ax|test)is$/i",
            "$1es",
            "@value"
          ]
        },
        {
          "conditions": "(match '/us$/i' @value)",
          "conditions_expression": [
            "match",
            "/us$/i",
            "@value"
          ],
          "operations": "(replace '/us$/i' '$1es' @value)",
          "operations_expression": [
            "replace",
            "/us$/i",
            "$1es",
            "@value"
          ]
        },
        {
          "conditions": "(match '/s$/i' @value)",
          "conditions_expression": [
            "match",
            "/s$/i",
            "@value"
          ],
          "operations": "(replace '/s$/i' 's' @value)",
          "operations_expression": [
            "replace",
            "/s$/i",
            "s",
            "@value"
          ]
        },
        {
          "conditions": "(match '/$/' @value)",
          "conditions_expression": [
            "match",
            "/$/",
            "@value"
          ],
          "operations": "(replace '/$/' 's' @value)",
          "operations_expression": [
            "replace",
            "/$/",
            "s",
            "@value"
          ]
        }
      ],
      "latin_name": "Plural",
      "description": "Converts singular form to plural",
      "application": "phrase"
    },
    "ordinal": {
      "rules": [
        {
          "description": "replace 1 with 'first'",
          "conditions": "(= 1 @value)",
          "conditions_expression": [
            "=",
            1,
            "@value"
          ],
          "operations": "(replace 1 'first' @value)",
          "operations_expression": [
            "replace",
            1,
            "first",
            "@value"
          ]
        },
        {
          "description": "replace 2 with 'second'",
          "conditions": "(= 2 @value)",
          "conditions_expression": [
            "=",
            2,
            "@value"
          ],
          "operations": "(replace 2 'first' @value)",
          "operations_expression": [
            "replace",
            2,
            "first",
            "@value"
          ]
        },
        {
          "description": "replace 3 with 'third'",
          "conditions": "(= 3 @value)",
          "conditions_expression": [
            "=",
            3,
            "@value"
          ],
          "operations": "(replace 3 'third' @value)",
          "operations_expression": [
            "replace",
            3,
            "third",
            "@value"
          ]
        }
      ],
      "latin_name": "Ordinal",
      "description": "The adjective form of the cardinal numbers",
      "application": "phrase"
    },
    "ord": {
      "rules": [
        {
          "description": "append 'st' if value ends in 1, but not in 11",
          "examples": "1, 21, 31, 41, 101, 121...",
          "conditions": "(&& (match '/1$/' @value) (! (match '/11$/' @value)))",
          "conditions_expression": [
            "&&",
            [
              "match",
              "/1$/",
              "@value"
            ],
            [
              "!",
              [
                "match",
                "/11$/",
                "@value"
              ]
            ]
          ],
          "operations": "(append 'st' @value)",
          "operations_expression": [
            "append",
            "st",
            "@value"
          ]
        },
        {
          "description": "append 'nd' if value ends in 2, but not in 12",
          "examples": "2, 22, 32, 42, 102, 122...",
          "conditions": "(&& (match '/2$/' @value) (! (match '/12$/' @value)))",
          "conditions_expression": [
            "&&",
            [
              "match",
              "/2$/",
              "@value"
            ],
            [
              "!",
              [
                "match",
                "/12$/",
                "@value"
              ]
            ]
          ],
          "operations": "(append 'nd' @value)",
          "operations_expression": [
            "append",
            "nd",
            "@value"
          ]
        },
        {
          "description": "append 'nd' if value ends in 3, but not in 13",
          "examples": "3, 23, 33, 43, 103, 123...",
          "conditions": "(&& (match '/3$/' @value) (! (match '/13$/' @value)))",
          "conditions_expression": [
            "&&",
            [
              "match",
              "/3$/",
              "@value"
            ],
            [
              "!",
              [
                "match",
                "/13$/",
                "@value"
              ]
            ]
          ],
          "operations": "(append 'rd' @value)",
          "operations_expression": [
            "append",
            "rd",
            "@value"
          ]
        },
        {
          "description": "append 'th' in all other cases",
          "examples": "0, 4, 5, 6, 7, 8, 9, 11, 12, 13, 111, 113...",
          "conditions": "(true)",
          "conditions_expression": [
            "true"
          ],
          "operations": "(append 'th' @value)",
          "operations_expression": [
            "append",
            "th",
            "@value"
          ]
        }
      ],
      "latin_name": "Ordinal",
      "description": "The adjective form of the cardinal numbers",
      "application": "phrase"
    },
    "singular": {
      "rules": [
        {
          "description": "Uncountable word",
          "conditions": "(in 'sheep,fish,series,species,money,rice,information,equipment' @value)",
          "conditions_expression": [
            "in",
            "sheep,fish,series,species,money,rice,information,equipment",
            "@value"
          ],
          "operations": "@value",
          "operations_expression": "@value"
        },
        {
          "description": "Irregular word",
          "conditions": "(= 'moves' @value)",
          "conditions_expression": [
            "=",
            "moves",
            "@value"
          ],
          "operations": "(quote 'move')",
          "operations_expression": [
            "quote",
            "move"
          ]
        },
        {
          "description": "Irregular word",
          "conditions": "(= 'sexes' @value)",
          "conditions_expression": [
            "=",
            "sexes",
            "@value"
          ],
          "operations": "(quote 'sex')",
          "operations_expression": [
            "quote",
            "sex"
          ]
        },
        {
          "description": "Irregular word",
          "conditions": "(= 'children' @value)",
          "conditions_expression": [
            "=",
            "children",
            "@value"
          ],
          "operations": "(quote 'child')",
          "operations_expression": [
            "quote",
            "child"
          ]
        },
        {
          "description": "Irregular word",
          "conditions": "(= 'people' @value)",
          "conditions_expression": [
            "=",
            "people",
            "@value"
          ],
          "operations": "(quote 'person')",
          "operations_expression": [
            "quote",
            "person"
          ]
        },
        {
          "conditions": "(match '/(n)ews$/i' @value)",
          "conditions_expression": [
            "match",
            "/(n)ews$/i",
            "@value"
          ],
          "operations": "(replace '/(n)ews$/i' '$1ews' @value)",
          "operations_expression": [
            "replace",
            "/(n)ews$/i",
            "$1ews",
            "@value"
          ]
        },
        {
          "conditions": "(match '/([ti])a$/i' @value)",
          "conditions_expression": [
            "match",
            "/([ti])a$/i",
            "@value"
          ],
          "operations": "(replace '/([ti])a$/i' '$1um' @value)",
          "operations_expression": [
            "replace",
            "/([ti])a$/i",
            "$1um",
            "@value"
          ]
        },
        {
          "conditions": "(match '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i' @value)",
          "conditions_expression": [
            "match",
            "/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i",
            "@value"
          ],
          "operations": "(replace '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i' '$1$2sis' @value)",
          "operations_expression": [
            "replace",
            "/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i",
            "$1$2sis",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(^analy)ses$/i' @value)",
          "conditions_expression": [
            "match",
            "/(^analy)ses$/i",
            "@value"
          ],
          "operations": "(replace '/(^analy)ses$/i' '$1sis' @value)",
          "operations_expression": [
            "replace",
            "/(^analy)ses$/i",
            "$1sis",
            "@value"
          ]
        },
        {
          "conditions": "(match '/([^f])ves$/i' @value)",
          "conditions_expression": [
            "match",
            "/([^f])ves$/i",
            "@value"
          ],
          "operations": "(replace '/([^f])ves$/i' '$1fe' @value)",
          "operations_expression": [
            "replace",
            "/([^f])ves$/i",
            "$1fe",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(hive)s$/i' @value)",
          "conditions_expression": [
            "match",
            "/(hive)s$/i",
            "@value"
          ],
          "operations": "(replace '/(hive)s$/i' '$1' @value)",
          "operations_expression": [
            "replace",
            "/(hive)s$/i",
            "$1",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(tive)s$/i' @value)",
          "conditions_expression": [
            "match",
            "/(tive)s$/i",
            "@value"
          ],
          "operations": "(replace '/(tive)s$/i' '$1' @value)",
          "operations_expression": [
            "replace",
            "/(tive)s$/i",
            "$1",
            "@value"
          ]
        },
        {
          "conditions": "(match '/([lr])ves$/i' @value)",
          "conditions_expression": [
            "match",
            "/([lr])ves$/i",
            "@value"
          ],
          "operations": "(replace '/([lr])ves$/i' '$1f' @value)",
          "operations_expression": [
            "replace",
            "/([lr])ves$/i",
            "$1f",
            "@value"
          ]
        },
        {
          "conditions": "(match '/([^aeiouy]|qu)ies$/i' @value)",
          "conditions_expression": [
            "match",
            "/([^aeiouy]|qu)ies$/i",
            "@value"
          ],
          "operations": "(replace '/([^aeiouy]|qu)ies$/i' '$1y' @value)",
          "operations_expression": [
            "replace",
            "/([^aeiouy]|qu)ies$/i",
            "$1y",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(s)eries$/i' @value)",
          "conditions_expression": [
            "match",
            "/(s)eries$/i",
            "@value"
          ],
          "operations": "(replace '/(s)eries$/i' '$1eries' @value)",
          "operations_expression": [
            "replace",
            "/(s)eries$/i",
            "$1eries",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(m)ovies$/i' @value)",
          "conditions_expression": [
            "match",
            "/(m)ovies$/i",
            "@value"
          ],
          "operations": "(replace '/(m)ovies$/i' '$1ovie' @value)",
          "operations_expression": [
            "replace",
            "/(m)ovies$/i",
            "$1ovie",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(x|ch|ss|sh)es$/i' @value)",
          "conditions_expression": [
            "match",
            "/(x|ch|ss|sh)es$/i",
            "@value"
          ],
          "operations": "(replace '/(x|ch|ss|sh)es$/i' '$1' @value)",
          "operations_expression": [
            "replace",
            "/(x|ch|ss|sh)es$/i",
            "$1",
            "@value"
          ]
        },
        {
          "conditions": "(match '/([m|l])ice$/i' @value)",
          "conditions_expression": [
            "match",
            "/([m|l])ice$/i",
            "@value"
          ],
          "operations": "(replace '/([m|l])ice$/i' '$1ouse' @value)",
          "operations_expression": [
            "replace",
            "/([m|l])ice$/i",
            "$1ouse",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(bus)es$/i' @value)",
          "conditions_expression": [
            "match",
            "/(bus)es$/i",
            "@value"
          ],
          "operations": "(replace '/(bus)es$/i' '$1' @value)",
          "operations_expression": [
            "replace",
            "/(bus)es$/i",
            "$1",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(o)es$/i' @value)",
          "conditions_expression": [
            "match",
            "/(o)es$/i",
            "@value"
          ],
          "operations": "(replace '/(o)es$/i' '$1' @value)",
          "operations_expression": [
            "replace",
            "/(o)es$/i",
            "$1",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(shoe)s$/i' @value)",
          "conditions_expression": [
            "match",
            "/(shoe)s$/i",
            "@value"
          ],
          "operations": "(replace '/(shoe)s$/i' '$1' @value)",
          "operations_expression": [
            "replace",
            "/(shoe)s$/i",
            "$1",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(cris|ax|test)es$/i' @value)",
          "conditions_expression": [
            "match",
            "/(cris|ax|test)es$/i",
            "@value"
          ],
          "operations": "(replace '/(cris|ax|test)es$/i' '$1is' @value)",
          "operations_expression": [
            "replace",
            "/(cris|ax|test)es$/i",
            "$1is",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(octop|vir)i$/i' @value)",
          "conditions_expression": [
            "match",
            "/(octop|vir)i$/i",
            "@value"
          ],
          "operations": "(replace '/(octop|vir)i$/i' '$1us' @value)",
          "operations_expression": [
            "replace",
            "/(octop|vir)i$/i",
            "$1us",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(alias|status)es$/i' @value)",
          "conditions_expression": [
            "match",
            "/(alias|status)es$/i",
            "@value"
          ],
          "operations": "(replace '/(alias|status)es$/i' '$1' @value)",
          "operations_expression": [
            "replace",
            "/(alias|status)es$/i",
            "$1",
            "@value"
          ]
        },
        {
          "conditions": "(match '/^(ox)en$/i' @value)",
          "conditions_expression": [
            "match",
            "/^(ox)en$/i",
            "@value"
          ],
          "operations": "(replace '/^(ox)en$/i' '$1' @value)",
          "operations_expression": [
            "replace",
            "/^(ox)en$/i",
            "$1",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(vert|ind)ices$/i' @value)",
          "conditions_expression": [
            "match",
            "/(vert|ind)ices$/i",
            "@value"
          ],
          "operations": "(replace '/(vert|ind)ices$/i' '$1ex' @value)",
          "operations_expression": [
            "replace",
            "/(vert|ind)ices$/i",
            "$1ex",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(matr)ices$/i' @value)",
          "conditions_expression": [
            "match",
            "/(matr)ices$/i",
            "@value"
          ],
          "operations": "(replace '/(matr)ices$/i' '$1ix' @value)",
          "operations_expression": [
            "replace",
            "/(matr)ices$/i",
            "$1ix",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(quiz)zes$/i' @value)",
          "conditions_expression": [
            "match",
            "/(quiz)zes$/i",
            "@value"
          ],
          "operations": "(replace '/(quiz)zes$/i' '$1' @value)",
          "operations_expression": [
            "replace",
            "/(quiz)zes$/i",
            "$1",
            "@value"
          ]
        },
        {
          "conditions": "(match '/(us)es$/i' @value)",
          "conditions_expression": [
            "match",
            "/(us)es$/i",
            "@value"
          ],
          "operations": "(replace '/(us)es$/i' '$1' @value)",
          "operations_expression": [
            "replace",
            "/(us)es$/i",
            "$1",
            "@value"
          ]
        },
        {
          "conditions": "(match '/s$/i' @value)",
          "conditions_expression": [
            "match",
            "/s$/i",
            "@value"
          ],
          "operations": "(replace '/s$/i' '' @value)",
          "operations_expression": [
            "replace",
            "/s$/i",
            "",
            "@value"
          ]
        }
      ],
      "latin_name": "Singular",
      "description": "Converts plural form to singular",
      "application": "phrase"
    },
    "pos": {
      "rules": [
        {
          "description": "if value ends in s, append '",
          "conditions": "(match '/s$/' @value)",
          "conditions_expression": [
            "match",
            "/s$/",
            "@value"
          ],
          "operations": "(append \"'\" @value)",
          "operations_expression": [
            "append",
            "'",
            "@value"
          ]
        },
        {
          "description": "in all other cases, append 's",
          "conditions": "(true)",
          "conditions_expression": [
            "true"
          ],
          "operations": "(append \"'s\" @value)",
          "operations_expression": [
            "append",
            "'s",
            "@value"
          ]
        }
      ],
      "latin_name": "Possessive",
      "description": "Used to indicate possession (i.e., ownership). It is usually created by adding 's to the word",
      "application": "phrase"
    }
  }
}