Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[String][EnglishInflector] Pluralize on words ending with -on mostly wrong #54611

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
DesLynx opened this issue Apr 15, 2024 · 1 comment
Closed

Comments

@DesLynx
Copy link

DesLynx commented Apr 15, 2024

Symfony version(s) affected

5.4 +

Description

When using the EnglishInflector of the String component to pluralize words ending with -on the results are mainly wrong because of the follwing rule in the SINGULAR_MAP:

        // bacteria (bacterium), criteria (criterion), phenomena (phenomenon)
        ['no', 2, true, true, 'a'],

This -on rule is not valid in most of the cases. The rule works for foreign (mainly greek) words. This is an irregular case not a standard.

We can already see 3 other rules for words ending in -pon, -son and -con.

How to reproduce

// First, run "composer require symfony/string"
// Then, execute this file:
<?php
require_once __DIR__.'/vendor/autoload.php';
use Symfony\Component\String\Inflector\EnglishInflector;

// returns "butta" instead of "buttons"
echo (new EnglishInflector())->pluralize('button');

Possible Solution

I'm not an english native-speaker nor an expert of english grammar but I think that it would be better to have a rule dedicated to the foreign word ending in -on, phenomenon and criterion (and maybe others) + a generic rule for words ending in -on.

Additional Context

No response

@derrabus
Copy link
Member

The inflector will never be perfect or complete. We fix such issues whenever someone comes up with a wrong pluralization. Please submit a PR that adds the words that you've found wrongly pluralized to our tests and that fixes the issue.

fabpot pushed a commit to DesLynx/symfony that referenced this issue Jun 9, 2024
fabpot added a commit that referenced this issue Jun 9, 2024
…ngularization of -a ending foreign words (Geordie, DesLynx)

This PR was squashed before being merged into the 5.4 branch.

Discussion
----------

[String] Fix #54611 pluralization of -on ending words + singularization of -a ending foreign words

| Q             | A
| ------------- | ---
| Branch?       | 5.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Issues        | Fix #54611
| License       | MIT

* fix the pluralization of -on ending words as -ons (with exception for "criterion" and "phenomenon")

* fix singularization of -a ending foreign words (see https://english-zone.com/spelling/plurals.html)
![image](https://github.com/symfony/symfony/assets/72632819/ee32d12d-63b6-49ef-a815-4d9f1dc2d405)

note: I left "data" uninflected because it seems to me that changing it to the datum/data inflection could cause side effects as "data" is a widely used word (especially in the coding world).

* update the test suites (String component + deprecated Inflector component) according to the changes

Commits
-------

91325ea [String] Fix #54611 pluralization of -on ending words + singularization of -a ending foreign words
@fabpot fabpot closed this as completed Jun 9, 2024
xabbuh added a commit that referenced this issue Jun 21, 2024
* 5.4: (21 commits)
  [SecurityBundle] Add `provider` XML attribute to the authenticators it’s missing from
  [DoctrineBridge] Test reset with a true manager
  Sync php-cs-fixer config file with 7.2
  [HttpClient] Fix parsing SSE
  [Notifier] Fix thread key in GoogleChat bridge
  [HttpKernel][Security] Fix accessing session for stateless request
  [Serializer] Fix `ObjectNormalizer` with property path
  test handling of special "value" constraint option
  [PhpUnitBridge] Add missing import
  [FrameworkBundle] Fix setting default context for certain normalizers
  [57251] Missing translations for Romanian (ro)
  [ErrorHandler] Fix rendered exception code highlighting on PHP 8.3
  [String] Fix #54611 pluralization of -on ending words + singularization of -a ending foreign words
  [Validator] [UniqueValidator] Use correct variable as parameter in (custom) error message
  [Messenger] Comply with Amazon SQS requirements for message body
  fix cssColor HSLA test dataProvider
  properly handle invalid data for false/true types
  chore: upgrade class doc
  add space in error message
  [Messenger] [Amqp] Handle AMQPConnectionException when publishing a message.
  ...
symfonyaml pushed a commit to symfonyaml/symfony that referenced this issue Oct 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants