Skip to content

CLDR-19238 Add Bashkir Plurals and Ordinals#5427

Open
conradarcturus wants to merge 3 commits intomainfrom
CLDR-19238-ba-plurals
Open

CLDR-19238 Add Bashkir Plurals and Ordinals#5427
conradarcturus wants to merge 3 commits intomainfrom
CLDR-19238-ba-plurals

Conversation

@conradarcturus
Copy link
Contributor

CLDR-19238

Adding plural rules for Bashkir

  • This PR completes the ticket.

ALLOW_MANY_COMMITS=true

@conradarcturus conradarcturus self-assigned this Mar 4, 2026
@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Mar 4, 2026

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
cldr-next 27a3650 Commit Preview URL

Branch Preview URL
Mar 08 2026, 05:40 PM


<!-- 3: one,few,other -->
<pluralRules locales="ba">
<pluralRule count="one">n = 0 or n % 10 = 1,2,4,5,7,8 or n % 100 = 20,50,70,80 or n % 1000 = 0 and n % 1000000 != 0</pluralRule>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to double-check: does "and" have higher precedence than "or"? I assumed the following logic in the ticket, but now I’m having second thoughts:
(n = 0) or (n % 10 = 1,2,4,5,7,8) or (n % 100 = 20,50,70,80) or (n % 1000 = 0 and n % 1000000 != 0)

Copy link
Contributor Author

@conradarcturus conradarcturus Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for checking. The logical groups are first split on the ors.

I have a plural rule debugger on my computer that I'm working on, maybe it helps to visualize the rules:

Your "one" rule
Screenshot 2026-03-04 at 11 18 28

Your "few" rule
Screenshot 2026-03-04 at 11 21 36

A full table
Screenshot 2026-03-04 at 11 18 38

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fantastic, this is correct, thank you!

@conradarcturus
Copy link
Contributor Author

It looks like I need to update the minimal pair examples in ba.xml to make this succeed. For example these are the Kazakh examples:

			<pluralMinimalPairs count="one">Cебетте {0} Х бар. Ол сіздікі ме?</pluralMinimalPairs>
			<pluralMinimalPairs count="other">Себетте {0} Х бар. Олар сіздікі ме?</pluralMinimalPairs>
			<ordinalMinimalPairs ordinal="many">{0}-ші бұрылыстан оңға бұрылыңыз.</ordinalMinimalPairs>
			<ordinalMinimalPairs ordinal="other">{0}-шы бұрылыстан оңға бұрылыңыз.</ordinalMinimalPairs>

Can you provide the equivalent examples for Bashkir?

@conradarcturus
Copy link
Contributor Author

I meant to say @stdbug can you provide plural minimal pair examples?

@conradarcturus conradarcturus force-pushed the CLDR-19238-ba-plurals branch from 191d1d5 to a191ab5 Compare March 5, 2026 01:56
@jira-pull-request-webhook
Copy link

Hooray! The files in the branch are the same across the force-push. 😃

~ Your Friendly Jira-GitHub PR Checker Bot

@stdbug
Copy link

stdbug commented Mar 5, 2026

I meant to say @stdbug can you provide plural minimal pair examples?

Sure, here are the examples: Updated: see a comment with fixed examples below

<pluralMinimalPairs count="one">Арбала {0} алма бар</pluralMinimalPairs>
<pluralMinimalPairs count="other">Арбала {0} алма бар</pluralMinimalPairs>
<ordinalMinimalPairs ordinal="one">{0}-се сатта уң яҡҡа боролоғоҙ</ordinalMinimalPairs>
<ordinalMinimalPairs ordinal="few">{0}-сө сатта уң яҡҡа боролоғоҙ</ordinalMinimalPairs>
<ordinalMinimalPairs ordinal="other">{0}-сы сатта уң яҡҡа боролоғоҙ</ordinalMinimalPairs>

@macchiati
Copy link
Member

macchiati commented Mar 5, 2026 via email

@stdbug
Copy link

stdbug commented Mar 5, 2026

Understood. This version demonstrates the grammatical differences:

<pluralMinimalPairs count="one">Миндә {0} алма бар, уны һиңә бирәйемме?</pluralMinimalPairs>
<pluralMinimalPairs count="other">Миндә {0} алма бар, уларҙы һиңә бирәйемме?</pluralMinimalPairs>
<ordinalMinimalPairs ordinal="one">{0}-се сатта уң яҡҡа боролоғоҙ</ordinalMinimalPairs>
<ordinalMinimalPairs ordinal="few">{0}-сө сатта уң яҡҡа боролоғоҙ</ordinalMinimalPairs>
<ordinalMinimalPairs ordinal="other">{0}-сы сатта уң яҡҡа боролоғоҙ</ordinalMinimalPairs>

The first two translate to: "I have {0} apple(s), should I give it/them to you?"

One clarification: in which cases should the zero count be handled by a separate rule? In Bashkir, much like in English or Russian, when "0" is used with a noun, the referring pronoun is typically plural (e.g., "I have 0 apples, I can give them all to you"). Though, naturally, we usually prefer the "I have no apples" construction in speech.

@macchiati
Copy link
Member

Good question. The normal approach is to supply whatever would work with the digit 0.

Because the 0 case is often reworded, many implementations will also provide special handling for that. The code that normally used with the categories provides for that.

@stdbug
Copy link

stdbug commented Mar 6, 2026

Then it should be fine to stick with the current one/other approach.

@conradarcturus conradarcturus force-pushed the CLDR-19238-ba-plurals branch from a191ab5 to 27a3650 Compare March 8, 2026 17:39
@jira-pull-request-webhook
Copy link

Notice: the branch changed across the force-push!

  • common/main/ba.xml is now changed in the branch

View Diff Across Force-Push

~ Your Friendly Jira-GitHub PR Checker Bot

@conradarcturus
Copy link
Contributor Author

Ah, yikes. Now it looks like we have a problem since Bashkir changed from 1 cardinal plural state (count="other) to 2 cardinals (count="one" or "other"). What's the order of operations to fix this? Should I add a placeholder to be fixed in the survey tool?

@macchiati do we have any utilities to help expand plural states?

			<field type="year">
				<displayName>йыл</displayName>
				<relative type="-1">былтыр</relative>
				<relative type="0">быйыл</relative>
				<relative type="1">киләһе йылда</relative>
				<relativeTime type="future">
					<relativeTimePattern count="other">{0} йылдан</relativeTimePattern>
				</relativeTime>
				<relativeTime type="past">
					<relativeTimePattern count="other">{0} йыл элек</relativeTimePattern>
				</relativeTime>
			</field>
ba [Bashkir]	error	▸Date_&_Time|Relative|Relative_Year|future-one◂	〈in {0} year〉	【】	〈{0} йылдан〉	«=»	【】	⁅incomplete logical group⁆	❮Error: Incomplete logical group - missing values for: [future-one]; level=modern❯	https://st.unicode.org/cldr-apps/v#/ba//54df72724602207e	//ldml/dates/fields/field[@type="year"]/relativeTime[@type="future"]/relativeTimePattern[@count="other"]
Error:  Error: Incomplete logical group - missing values for: [future-one]; level=modern
ba [Bashkir]	error	▸Date_&_Time|Relative|Relative_Year|past-one◂	〈{0} year ago〉	【】	〈{0} йыл элек〉	«=»	【】	⁅incomplete logical group⁆	❮Error: Incomplete logical group - missing values for: [past-one]; level=modern❯	https://st.unicode.org/cldr-apps/v#/ba//1d9e8a660d095e54	//ldml/dates/fields/field[@type="year"]/relativeTime[@type="past"]/relativeTimePattern[@count="other"]
Error:  Error: Incomplete logical group - missing values for: [past-one]; level=modern
ba [Bashkir]	error	▸Date_&_Time|Relative|Relative_Year_Short|future-one◂	〈in {0} yr.〉	【】	〈{0} йылдан〉	«=»	【】	⁅incomplete logical group⁆	❮Error: Incomplete logical group - missing values for: [future-one]; level=modern❯	https://st.unicode.org/cldr-apps/v#/ba//1436a4afd2938017	//ldml/dates/fields/field[@type="year"]/relativeTime[@type="future"]/relativeTimePattern[@count="other"]
Error:  Error: Incomplete logical group - missing values for: [future-one]; level=modern
ba [Bashkir]	error	▸Date_&_Time|Relative|Relative_Year_Short|past-one◂	〈{0} yr. ago〉	【】	〈{0} йыл элек〉	«=»	【】	⁅incomplete logical group⁆	❮Error: Incomplete logical group - missing values for: [past-one]; level=modern❯	https://st.unicode.org/cldr-apps/v#/ba//106a85f522f3eeb6	//ldml/dates/fields/field[@type="year"]/relativeTime[@type="past"]/relativeTimePattern[@count="other"]
Error:  Error: Incomplete logical group - missing values for: [past-one]; level=modern
ba [Bashkir]	error	▸Date_&_Time|Relative|Relative_Year_Narrow|future-one◂	〈in {0}y〉	【】	〈{0} йылдан〉	«=»	【】	⁅incomplete logical group⁆	❮Error: Incomplete logical group - missing values for: [future-one]; level=modern❯	https://st.unicode.org/cldr-apps/v#/ba//588a5ed6b747a1c8	//ldml/dates/fields/field[@type="year"]/relativeTime[@type="future"]/relativeTimePattern[@count="other"]
Error:  Error: Incomplete logical group - missing values for: [future-one]; level=modern
ba [Bashkir]	error	▸Date_&_Time|Relative|Relative_Year_Narrow|past-one◂	〈{0}y ago〉	【】	〈{0} йыл элек〉	«=»	【】	⁅incomplete logical group⁆	❮Error: Incomplete logical group - missing values for: [past-one]; level=modern❯	https://st.unicode.org/cldr-apps/v#/ba//2182605c107cd4bc	//ldml/dates/fields/field[@type="year"]/relativeTime[@type="past"]/relativeTimePattern[@count="other"]
...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants