Skip to content
Novus Examples
json1.7 KB

CLDR Plural Rules — Welsh (6 categories)

Welsh CLDR cardinal and ordinal plural rules with the exact integer samples that select each category, the equivalent gettext Plural-Forms expression, and a note on the trap the language exposes: welsh is the only cldr locale using all six categories for both cardinals and ordinals, and its categories are enumerations (3, 6) rather than modulo ranges — a rule engine that assumes 'few' means a range fails here.

Preview — first 50 linesjson
{
  "locale": "cy",
  "language": "Welsh",
  "source": "CLDR plural rules",
  "note": "Rule expressions use CLDR plural-rule syntax: n is the absolute value of the source number, i its integer digits and v the count of visible fraction digits. Categories are selected by the FIRST matching rule; 'other' is always the fallback. Assert on the category returned for each sample value, not on any wording.",
  "categories": [
    "zero",
    "one",
    "two",
    "few",
    "many",
    "other"
  ],
  "cardinal": {
    "zero": "n = 0",
    "one": "n = 1",
    "two": "n = 2",
    "few": "n = 3",
    "many": "n = 6",
    "other": "(default — everything the rules above do not match)"
  },
  "cardinalSamples": {
    "zero": [
      0
    ],
    "one": [
      1
    ],
    "two": [
      2
    ],
    "few": [
      3
    ],
    "many": [
      6
    ],
    "other": [
      4,
      5,
      7,
      8,
      9,
      10,
      100,
      1.5
    ]
  },
  "ordinal": {
    "zero": "n = 0,7,8,9",
88 lines total — download for the full file.

Specifications

Locale
cy
Language
Welsh
Cardinal Categories
6
Categories
zero, one, two, few, many, other
Has Ordinal Categories
6
Gettext Nplurals
6
Seed
20260807
Wave
p7
Line Endings
LF

Testing contract

Reference control
Scenario
Run every value in `cardinalSamples` and `ordinalSamples` through a plural engine configured for cy.
Expected result
Each value returns the category it is filed under — 6 distinct cardinal categories for cy, with 'other' as the fallback.

What is a .json file?

JSON (JavaScript Object Notation) is a lightweight, text-based data-interchange format representing objects, arrays, strings, numbers, booleans, and null. It is language-independent, human-readable, and the dominant format for web APIs and configuration. It requires a single well-formed root value.

How to use this file

Use an example JSON file to test parsers and serializers, schema validation, Unicode and number-precision handling, and API request or response processing.

How to use this file for testing

“CLDR Plural Rules — Welsh (6 categories)” is a deterministic Novus Examples fixture for Internationalization, Localization catalogs, JSON parsing. Parallel text and accented, multi-script content — for testing translation pipelines, Unicode handling, and localization tooling.

Documented properties for this file: seed 20260807 · Welsh · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

Translation-catalog fixtures carry the same message set across formats, each with its native placeholder syntax. Test your i18n loader, catalog converter, or translation-memory tool, and use the RTL and CJK variants to check bidirectional text and Unicode handling.

Load the catalog with your i18n framework and verify placeholder interpolation and plural handling; the RTL and CJK variants exercise bidirectional text and font fallback.

Code examples

import json

with open("plural-rules-cy.json") as f:
    data = json.load(f)
print(type(data), len(data))

Generated by generation/localization_p7.py. Free for any use, no attribution required — license.