{
  "aztec-sign-calculator": {
    "heading": "Aztec day sign for your date of birth",
    "subheading": "Tonalpohualli day sign (20 signs × 13 numbers), trecena and patron deity, using the same correlation as the Maya tzolk'in.",
    "inputs_title": "Date of birth",
    "birth_date": "Date of birth",
    "invalid_date": "Enter a date between 1900 and 2100.",
    "correlation_short": "Correlation: the fall of Tenochtitlan, 13 August 1521 (Julian calendar), falls on a 1 Cóatl day, as in the GMT correlation of the Maya tzolk'in.",
    "result_label": "Your Aztec day sign",
    "copy_label": "Copy",
    "number_label": "Number (1 to 13)",
    "trecena_label": "Trecena",
    "trecena_rank": "trecena {{n}} of 20",
    "patron_label": "Patron deity of the sign",
    "position_label": "Day in the cycle",
    "signs_title": "The 20 tonalpohualli day signs",
    "notes_title": "Correlation and limits",
    "correlation_note": "The tonalpohualli and the Maya tzolk'in follow the same 260-day count. Chroniclers date the fall of Tenochtitlan, 13 August 1521 (Julian), to a 1 Cóatl day; the GMT correlation (584283) does give 1 Cóatl for that day, and the tool applies it.",
    "press_lists_note": "Some lists published in the press give a fixed sign for each date of the year. A 260-day count does not come back to the same date from one year to the next (365 = 260 + 105), so your sign may differ from those lists.",
    "tradition_note": "The tonalpohualli was the ritual and divinatory calendar of the Mexica. The sign and its deity are shown here as cultural heritage, not as a prediction.",
    "copy_text": "Aztec day sign: {{day}} ({{meaning}}). Trecena {{trecena}}. Patron deity: {{patron}}.",
    "sign_0": "Crocodile",
    "sign_1": "Wind",
    "sign_2": "House",
    "sign_3": "Lizard",
    "sign_4": "Serpent",
    "sign_5": "Death",
    "sign_6": "Deer",
    "sign_7": "Rabbit",
    "sign_8": "Water",
    "sign_9": "Dog",
    "sign_10": "Monkey",
    "sign_11": "Grass",
    "sign_12": "Reed",
    "sign_13": "Jaguar",
    "sign_14": "Eagle",
    "sign_15": "Vulture",
    "sign_16": "Movement",
    "sign_17": "Flint",
    "sign_18": "Rain",
    "sign_19": "Flower"
  },
  "kua-number-calculator": {
    "heading": "Kua number calculator",
    "subheading": "Kua number, East or West group and favourable directions from the Chinese solar year and sex.",
    "inputs_title": "Birth date and sex",
    "birth_date": "Date of birth",
    "sex_label": "Sex (the formula differs)",
    "sex_female": "Female",
    "sex_male": "Male",
    "lichun_day_warning": "Born on Lichun day ({{date}}, Beijing time): the solar year depends on the time of birth.",
    "before_lichun_label": "Born before that time (previous solar year)",
    "range_note": "Dates from 1901 to 2099. The Chinese solar year starts at Lichun, around 4 February: a birth in January or early February counts for the previous year.",
    "invalid_date": "Enter a date of birth between 1901 and 2099.",
    "result_label": "Your Kua number",
    "copy_label": "Copy",
    "group_east": "East group",
    "group_west": "West group",
    "trigram_kan": "Kan trigram ☵ (water)",
    "trigram_kun": "Kun trigram ☷ (earth)",
    "trigram_zhen": "Zhen trigram ☳ (wood)",
    "trigram_xun": "Xun trigram ☴ (wood)",
    "trigram_qian": "Qian trigram ☰ (metal)",
    "trigram_dui": "Dui trigram ☱ (metal)",
    "trigram_gen": "Gen trigram ☶ (earth)",
    "trigram_li": "Li trigram ☲ (fire)",
    "solar_year_label": "Chinese solar year",
    "born_before_lichun": "Born before Lichun: the previous year is used.",
    "born_after_lichun": "Born after Lichun: the calendar year is used.",
    "lichun_label": "Lichun {{year}} (start of spring)",
    "beijing_time": "Beijing time (UTC+8), computed to within 10 minutes",
    "steps_title": "Step-by-step calculation",
    "step_digits": "Last two digits of the solar year: {{yy}}, reduced to one digit: {{r}}",
    "step_male_before": "Male, solar year before 2000: 10 − {{r}} = {{raw}}",
    "step_male_after": "Male, solar year 2000 or later: 9 − {{r}} = {{raw}}",
    "step_female_before": "Female, solar year before 2000: {{r}} + 5 = {{raw}}",
    "step_female_after": "Female, solar year 2000 or later: {{r}} + 6 = {{raw}}",
    "step_reduce": "Reduce to one digit (0 counts as 9): {{raw}} → {{reduced}}",
    "step_five_male": "5 has no trigram: it becomes 2 for a male.",
    "step_five_female": "5 has no trigram: it becomes 8 for a female.",
    "directions_title": "Directions in the Eight Mansions system",
    "col_position": "Position",
    "col_direction": "Direction",
    "col_quality": "Quality",
    "favorable": "Favourable",
    "unfavorable": "Unfavourable",
    "pos_sheng_qi": "Sheng Qi (vitality, success)",
    "pos_tian_yi": "Tian Yi (health)",
    "pos_yan_nian": "Yan Nian (relationships, longevity)",
    "pos_fu_wei": "Fu Wei (stability)",
    "pos_huo_hai": "Huo Hai (mishaps)",
    "pos_wu_gui": "Wu Gui (five ghosts)",
    "pos_liu_sha": "Liu Sha (six killings)",
    "pos_jue_ming": "Jue Ming (total loss)",
    "dir_N": "North",
    "dir_NE": "Northeast",
    "dir_E": "East",
    "dir_SE": "Southeast",
    "dir_S": "South",
    "dir_SW": "Southwest",
    "dir_W": "West",
    "dir_NW": "Northwest",
    "tradition_note": "These directions come from the Eight Mansions (Ba Zhai) school of feng shui, a Chinese tradition. It is a symbolic system: no scientific study shows that a direction affects health, money or relationships.",
    "cycle_title": "Check: the 9-year cycle",
    "cycle_note": "The Kua number drops by 1 each year for males and rises by 1 for females; 5 becomes 2 (males) or 8 (females). The \"after 2000\" formulas continue the same cycle.",
    "copy_text": "Kua number {{kua}} ({{group}}). Favourable directions: {{good}}. Unfavourable: {{bad}}."
  },
  "maya-kin-calculator": {
    "heading": "Mayan kin, seal and nawal by date of birth",
    "subheading": "The 13 Moon Synchronometer (Dreamspell) and the traditional tzolk'in count side by side, with the gap between them.",
    "inputs_title": "Date of birth",
    "birth_date": "Date of birth",
    "two_systems_note": "Two 260-day counts go by the name of Mayan calendar: José Argüelles' Synchronometer, which gives the kin and galactic signature, and the tzolk'in still kept in Guatemala, which gives the nawal. They do not fall on the same day.",
    "invalid_date": "Enter a date between 1900 and 2100.",
    "ds_title": "13 Moon calendar (Dreamspell, J. Argüelles)",
    "copy_label": "Copy",
    "kin_n": "Kin {{n}}",
    "seal_label": "Solar seal",
    "tone_label": "Galactic tone",
    "wavespell_label": "Wavespell",
    "hunab_ku_note": "February 29 has no kin in the Synchronometer: it is the \"0.0 Hunab Ku\" day, outside the count. The tool shows the kin of February 28 and says so.",
    "oracle_title": "Destiny oracle",
    "oracle_analog": "Analog",
    "oracle_antipode": "Antipode",
    "oracle_occult": "Occult",
    "guide_note": "The guide is not shown: its rule depends on the tone and no published source we checked confirms it for every tone.",
    "trad_title": "Traditional count (tzolk'in, GMT correlation 584283)",
    "nawal_label": "Nawal (K'iche')",
    "number_label": "Number",
    "position_label": "Day in the cycle",
    "trad_note": "In large type, the Yucatec day name; next to it, the K'iche' name used by spiritual guides (ajq'ij) in Guatemala, where this count is still kept.",
    "diff_title": "Why the two results differ",
    "diff_value": "Kin {{ds}} in the Synchronometer, day {{trad}} in the tzolk'in: {{gap}} days apart in the 260-day cycle.",
    "diff_origin": "Different starting point: the Synchronometer follows the count set by José Argüelles (Dreamspell), the tzolk'in the unbroken count that the GMT correlation ties to the Gregorian calendar.",
    "diff_leap": "The Synchronometer skips February 29, the tzolk'in does not: the gap grows by one day every leap year.",
    "tradition_note": "These calendars belong to cultural and spiritual traditions. The kin and the nawal are symbols, not predictions.",
    "copy_text": "Synchronometer: kin {{kin}}, {{seal}}, tone {{tone}}. Traditional tzolk'in: {{trad}}.",
    "seal_1": "Red Dragon",
    "seal_2": "White Wind",
    "seal_3": "Blue Night",
    "seal_4": "Yellow Seed",
    "seal_5": "Red Serpent",
    "seal_6": "White World-Bridger",
    "seal_7": "Blue Hand",
    "seal_8": "Yellow Star",
    "seal_9": "Red Moon",
    "seal_10": "White Dog",
    "seal_11": "Blue Monkey",
    "seal_12": "Yellow Human",
    "seal_13": "Red Skywalker",
    "seal_14": "White Wizard",
    "seal_15": "Blue Eagle",
    "seal_16": "Yellow Warrior",
    "seal_17": "Red Earth",
    "seal_18": "White Mirror",
    "seal_19": "Blue Storm",
    "seal_20": "Yellow Sun",
    "tone_1": "Magnetic",
    "tone_2": "Lunar",
    "tone_3": "Electric",
    "tone_4": "Self-Existing",
    "tone_5": "Overtone",
    "tone_6": "Rhythmic",
    "tone_7": "Resonant",
    "tone_8": "Galactic",
    "tone_9": "Solar",
    "tone_10": "Planetary",
    "tone_11": "Spectral",
    "tone_12": "Crystal",
    "tone_13": "Cosmic"
  },
  "average-daily-gain-calculator": {
    "heading": "Average daily gain (ADG) calculator",
    "subheading": "Two weighings, two dates: ADG in g/day, the batch gain and the expected date for a target weight.",
    "weighings_title": "Weighings",
    "species": "Species",
    "species_cattle": "Cattle",
    "species_pig": "Pig",
    "species_sheep": "Sheep (lamb)",
    "species_poultry": "Poultry (broiler)",
    "species_other": "Other species",
    "date1": "Date of 1st weighing",
    "weight1": "Weight at 1st weighing",
    "date2": "Date of 2nd weighing",
    "weight2": "Weight at 2nd weighing",
    "count": "Number of animals in the batch",
    "count_hint": "Enter one animal's weight or the batch average: the batch gain is multiplied by this number. The birth weight works for the 1st weighing.",
    "target_title": "Expected date for a target weight",
    "target": "Target weight",
    "target_date": "At the same ADG, the animal will reach {{target}} kg around {{date}}, {{days}} days after the 2nd weighing.",
    "target_reached": "The target weight of {{target}} kg is already reached at the 2nd weighing.",
    "target_no_gain": "ADG is zero or negative: no date can be projected.",
    "result_title": "Average daily gain",
    "copy_label": "Copy the result",
    "answer": "ADG = {{gmq}} g/day ({{gain}} kg gained in {{days}} days)",
    "invalid_dates": "The 2nd weighing must come after the 1st: check the dates.",
    "gmq_label": "ADG (g/day)",
    "gmq_kg_label": "ADG (kg/day)",
    "days_label": "Days between weighings",
    "lot_gain_label": "Total batch gain",
    "unit_g_day": "g/day",
    "bench_title": "Published benchmarks",
    "bench_none": "No sourced benchmark for this species: compare the ADG with your previous batches.",
    "bench_note": "These benchmarks are published averages, not targets: expected ADG depends on breed, sex, age and feeding. Discuss an unusually low ADG with your adviser or veterinarian.",
    "bench_pig_postweaning": "Post-weaning, 8 to 30 kg",
    "bench_pig_fattening": "Fattening, 30 to 115 kg",
    "bench_pig_weaning_sale": "Weaning to sale, 8 to 115 kg",
    "bench_poultry_d35": "Ross 308 broiler, average ADG from 0 to 35 days",
    "bench_poultry_d42": "Ross 308 broiler, average ADG from 0 to 42 days",
    "src_ifip": "French average, IFIP, GTTT-GTE references 2024 (2025 edition), farrow-to-finish farms",
    "src_aviagen": "Breeder objective, Aviagen, Ross 308 Broiler Performance Objectives 2022 (as-hatched)"
  },
  "cattle-water-requirement-calculator": {
    "heading": "Cattle drinking water requirement",
    "subheading": "Litres per day per animal, then herd totals per day, month and year, from two published tables.",
    "method": "Reference used",
    "method_omafra": "OMAFRA 2023: by animal type (dairy and beef)",
    "method_nrc": "NRC 1996: beef cattle by weight and temperature",
    "type": "Animal type",
    "type_dairy_lactating": "Lactating dairy cow",
    "type_dairy_dry": "Dry dairy cow",
    "type_dairy_heifer": "Dairy heifer (5 to 24 months)",
    "type_dairy_calf": "Dairy calf (1 to 4 months)",
    "type_beef_backgrounding": "Backgrounding cattle, 181 to 364 kg",
    "type_beef_finishing": "Finishing cattle, 364 to 636 kg",
    "type_beef_cow_calf": "Lactating beef cow with calf",
    "type_beef_dry_bull": "Dry beef cow, bred heifer or bull",
    "milk": "Milk yield per cow per day",
    "source_omafra": "Source: OMAFRA (Ontario Ministry of Agriculture, Canada), factsheet 23-023 \"Water Requirements of Livestock\", February 2023, tables 1 and 2. Range = quantity required depending on environment and management.",
    "nrc_category": "Category and weight",
    "nrc_growing": "Growing heifer, steer or bull",
    "nrc_finishing": "Finishing cattle",
    "nrc_wintering": "Wintering beef cow (pregnant)",
    "nrc_lactating": "Lactating beef cow",
    "nrc_bull": "Mature bull",
    "nrc_row": "{{group}}, {{kg}} kg ({{lb}} lb)",
    "temperature": "Air temperature (table column)",
    "temp_first": "{{c}} °C ({{f}} °F) or below",
    "temp_col": "{{c}} °C ({{f}} °F)",
    "source_nrc": "Source: NRC, Nutrient Requirements of Beef Cattle, 7th ed. (1996), after Winchester and Morris (1956), table reprinted by the University of Nebraska-Lincoln (G2060, 2011). Values converted from US gallons to litres and °F to °C; no interpolation between columns.",
    "herd": "Number of animals",
    "answer_lactating": "A dairy cow giving {{milk}} kg of milk a day drinks {{lo}} to {{hi}} L of water a day",
    "answer_type": "{{type}}: {{lo}} to {{hi}} L of water per animal per day",
    "answer_nrc": "{{row}}, at {{temp}} °C: about {{l}} L of water a day",
    "nrc_no_value": "The NRC table gives no value for wintering cows above 21 °C (70 °F).",
    "result_title": "Drinking water",
    "copy_label": "Copy the result",
    "per_animal": "Per animal per day",
    "herd_day": "Herd, per day",
    "herd_month": "Herd, per month (30 days)",
    "herd_year": "Herd, per year",
    "interp_note": "The table gives 4 yield levels (13.6, 22.7, 36.3 and 45.5 kg/day): between two rows, the range is linearly interpolated.",
    "clamp_note": "Yield outside the table: the nearest row is used.",
    "cirad_line": "Another reference, CIRAD CASEF factsheet (2019 PDF): 30 to 40 L for maintenance plus 4 to 5 L per litre of milk for a 500 kg cow, i.e. {{lo}} to {{hi}} L/day (1 kg of milk counted as 1 L).",
    "avg_line": "Average intake recorded in Ontario for this category: {{avg}} L/day.",
    "nrc_note": "The table gives total water, including water in feed, and intake stays constant below 4.4 °C (40 °F).",
    "trough_title": "Trough flow rate",
    "trough_flow": "A cow drinks 10 to 20 L per minute: the trough should deliver about 20 L/min (Guide de l'abreuvement, Bourgogne-Franche-Comté regional chamber of agriculture, France, 2022).",
    "heat_title": "Hot weather",
    "heat_note": "The same guide states that a suckler cow with her calf needs 40 L/day, multiplied by 1.5 or even 2 in summer heat waves. To quantify the temperature effect, choose the NRC reference.",
    "range_note": "These values are published benchmarks: water must remain freely available, and actual intake varies with the ration, forage moisture and heat."
  },
  "energy-corrected-milk-calculator": {
    "heading": "Energy-corrected milk (ECM), FPCM and 4% fat-corrected milk",
    "subheading": "Convert a milk yield to a standard milk from its fat, protein and lactose contents.",
    "inputs_title": "Yield and composition",
    "milk": "Milk yield",
    "milk_hint": "Per day, per lactation or per year: the result covers the same period.",
    "fat": "Fat content",
    "protein": "Protein content",
    "lactose": "Lactose content",
    "lactose_hint": "Without lactose, ECM uses the Sjaunja variant that assumes 4.61% lactose. FPCM and FCM do not use lactose.",
    "result_title": "Corrected milk",
    "copy_label": "Copy the result",
    "answer": "{{milk}} kg of milk at {{fat}}% fat and {{protein}}% protein = {{ecm}} kg ECM",
    "ecm_label": "ECM, energy-corrected milk",
    "ecm_src": "Sjaunja et al. (1990): milk × (383 × fat + 242 × crude protein + 165.4 × lactose + 20.7) / 3,140",
    "fpcm_label": "FPCM, fat- and protein-corrected milk",
    "fcm_label": "4% fat-corrected milk (FCM)",
    "fcm_src": "Gaines and Davidson (1923): 0.4 × milk + 15 × kg of fat",
    "notes_title": "Good to know",
    "note_standard": "Each formula converts milk to a reference milk: 3,140 kJ per kg for ECM, 4.0% fat and 3.3% true protein for FPCM, 4% fat for FCM. Richer milk therefore gives more corrected kg than kg produced.",
    "basis": "The protein content entered is",
    "basis_crude": "crude protein (N × 6.38)",
    "basis_true": "true protein",
    "lactose_known": "I know the lactose content",
    "ecm_src_nolactose": "Sjaunja et al. (1990), without lactose: milk × (0.25 + 0.122 × fat + 0.077 × crude protein)",
    "fpcm_src_crude": "IDF 520/2022 as given in Fonterra's 2025 factsheet, crude protein form: milk × (0.1226 × fat + 0.0722 × protein + 0.2534)",
    "fpcm_src_true": "IDF 520/2022 as given in Fonterra's 2025 factsheet: milk × (0.1226 × fat + 0.0776 × true protein + 0.2534)",
    "note_protein_crude": "Sjaunja's ECM uses crude protein (N × 6.38). FPCM then uses the 0.0722 coefficient, the crude protein equivalent of the IDF formula.",
    "note_protein_true": "The IDF FPCM uses true protein (0.0776 coefficient). Sjaunja's ECM is defined with crude protein: with true protein it is slightly underestimated."
  },
  "feed-conversion-ratio-calculator": {
    "heading": "Feed conversion ratio (FCR) calculator",
    "subheading": "Feed eaten and weighings: the FCR, feed efficiency and feed cost per kg of gain.",
    "inputs_title": "Feed and weighings",
    "feed": "Feed eaten (refusals deducted)",
    "weight1": "Live weight at start",
    "weight2": "Live weight at end",
    "inputs_hint": "For one animal or the whole batch, with the same animals at start and end. Default example: a pig from 30 to 118 kg eating 229 kg of feed.",
    "price_title": "Feed price",
    "price": "Feed price per tonne",
    "price_reset": "Default value",
    "result_title": "Feed conversion ratio",
    "copy_label": "Copy the result",
    "answer": "FCR = {{ic}} kg of feed per kg of gain ({{feed}} kg of feed for {{gain}} kg of gain)",
    "invalid_gain": "The weight gain must be positive: the end weight must exceed the start weight.",
    "ic_label": "FCR (kg feed / kg gain)",
    "efficiency_label": "Feed efficiency (kg gain / kg feed)",
    "cost_label": "Feed cost per kg of gain",
    "cost_hint": "The cost is expressed in the currency of the price entered.",
    "gain_label": "Live weight gain",
    "dead": "Weight of dead or removed animals (optional)",
    "price_source": "Default: €326/t, IFIP price of pig fattening feed in France in April 2025 (Agreste, DRAAF Bretagne, June 2025 bulletin). Replace it with your own feed price, in any currency.",
    "ic_live": "Leaving out the weight of dead or removed animals, the FCR would be {{ic}}.",
    "bench_title": "Published benchmarks",
    "bench_pig_postweaning": "Pig, post-weaning 8 to 30 kg: FCR 1.71 (IFIP, GTE 2024, France)",
    "bench_pig_fattening": "Pig, fattening 30 to 115 kg: FCR 2.61 (IFIP, GTE 2024, France)",
    "bench_pig_global": "Pig, whole-farm FCR of farrow-to-finish farms: 2.74 (IFIP, GTE 2024, France)",
    "bench_poultry": "Ross 308 broiler: FCR 1.399 at 35 days (2.296 kg) and 1.531 at 42 days (2.998 kg), Aviagen 2022 objectives, not corrected for mortality",
    "bench_note": "Published averages and objectives, not standards: FCR depends on the feed, genetics, feed wastage and the weight range. Compare identical weight ranges."
  },
  "celtic-tree-horoscope-calculator": {
    "heading": "Celtic tree astrology: your birth tree",
    "subheading": "Pick your birth day and month, then the system.",
    "birth_day": "Birth day",
    "birth_month": "Birth month",
    "system": "System",
    "system_delsol": "Circle of 21 trees (Paula Delsol, 1971)",
    "system_graves": "13 lunar months (Robert Graves, 1948)",
    "origin_title": "A 20th-century invention",
    "origin_text": "No ancient or medieval source describes a Celtic tree horoscope. Robert Graves drew his 13 months from the Ogham alphabet in The White Goddess (1948); Paula Delsol created the circle of 21 trees for Marie Claire in 1971.",
    "headline": "{{date}}: {{tree}}",
    "genus": "Botanical genus",
    "ogham": "Ogham letter",
    "nameless_note": "Graves counts 13 months of 28 days, 364 days in all: 23 December stays outside the months.",
    "periods": "Periods of this tree",
    "range": "{{from}} to {{to}}",
    "copy": "Copy the result",
    "other_system": "In the other system, \"{{system}}\", the same date gives: {{tree}}.",
    "tree_apple": "Apple tree",
    "tree_fir": "Fir",
    "tree_elm": "Elm",
    "tree_cypress": "Cypress",
    "tree_poplar": "Poplar",
    "tree_celtis": "Hackberry (often \"cedar\")",
    "tree_pine": "Pine",
    "tree_willow": "Willow",
    "tree_lime": "Lime tree",
    "tree_oak": "Oak",
    "tree_hazel": "Hazel",
    "tree_rowan": "Rowan",
    "tree_maple": "Maple",
    "tree_walnut": "Walnut",
    "tree_chestnut": "Chestnut",
    "tree_ash": "Ash",
    "tree_hornbeam": "Hornbeam",
    "tree_fig": "Fig tree",
    "tree_birch": "Birch",
    "tree_olive": "Olive tree",
    "tree_beech": "Beech",
    "tree_alder": "Alder",
    "tree_hawthorn": "Hawthorn",
    "tree_holly": "Holly",
    "tree_vine": "Vine",
    "tree_ivy": "Ivy",
    "tree_reed": "Reed",
    "tree_elder": "Elder",
    "tree_nameless": "The nameless day"
  },
  "egyptian-horoscope-calculator": {
    "heading": "Egyptian zodiac: your deity",
    "subheading": "Pick your birth day and month, then the version of the table.",
    "birth_day": "Birth day",
    "birth_month": "Birth month",
    "version": "Version of the table",
    "version_scattered": "12 gods, scattered periods (EN, DE, FR)",
    "version_monthly": "12 gods, 16th to 15th (Spanish-language press)",
    "origin_title": "A modern invention",
    "origin_text": "No Egyptian text sorts births under 12 gods. These tables have circulated in magazines and online since the 20th century and differ from country to country. The only zodiac known from Egypt, the Dendera zodiac (1st century BC), uses the Greco-Babylonian signs.",
    "headline": "{{date}}: {{god}}",
    "periods": "Periods of this deity",
    "range": "{{from}} to {{to}}",
    "copy": "Copy the result",
    "other_version": "In the other version, \"{{version}}\", the same date gives: {{god}}.",
    "god_nile": "The Nile",
    "god_amun_ra": "Amun-Ra",
    "god_mut": "Mut",
    "god_geb": "Geb",
    "god_osiris": "Osiris",
    "god_isis": "Isis",
    "god_thoth": "Thoth",
    "god_horus": "Horus",
    "god_anubis": "Anubis",
    "god_seth": "Seth",
    "god_bastet": "Bastet",
    "god_sekhmet": "Sekhmet",
    "god_selket": "Serket",
    "god_apep": "Apep (Apophis)",
    "god_ptah": "Ptah",
    "god_atum": "Atum",
    "god_ra": "Ra",
    "god_maat": "Ma'at",
    "god_hathor": "Hathor",
    "role_nile": "The river, personified by the god Hapi, brings the yearly flood that makes the fields fertile.",
    "role_amun_ra": "Fusion of Amun, god of Thebes, and Ra, the sun: king of the gods in the New Kingdom.",
    "role_mut": "Mother goddess of Thebes, wife of Amun and mother of Khonsu.",
    "role_geb": "God of the earth, father of Osiris, Isis, Seth and Nephthys.",
    "role_osiris": "God of the dead and of rebirth, ruler and judge of the afterlife.",
    "role_isis": "Goddess of magic and protection, wife of Osiris and mother of Horus.",
    "role_thoth": "God of writing, knowledge and the moon, scribe of the gods.",
    "role_horus": "Falcon god of the sky and of kingship, son of Isis and Osiris.",
    "role_anubis": "Jackal-headed god of embalming, guardian of the necropolis.",
    "role_seth": "God of the desert, storms and disorder, the murderer of Osiris in the myth.",
    "role_bastet": "Cat-headed goddess of Bubastis, protector of the home.",
    "role_sekhmet": "Lioness goddess of war and epidemics, also invoked for healing.",
    "role_selket": "Scorpion goddess, protector against venomous stings and bites.",
    "role_apep": "Serpent of chaos, enemy of Ra; he was not worshipped but fought in rituals.",
    "role_ptah": "Creator god of Memphis, patron of craftsmen.",
    "role_atum": "Creator god of Heliopolis, linked to the setting sun. Some lists put Thoth in his place.",
    "role_ra": "Sun god, who crosses the sky in his boat.",
    "role_maat": "Goddess of truth, justice and cosmic order.",
    "role_hathor": "Goddess of love, music and joy, often shown with cow horns."
  },
  "tarot-birth-card-calculator": {
    "heading": "Find your tarot birth cards",
    "subheading": "Mary K. Greer's method: month + day + year, reduced to Major Arcana.",
    "birth_date": "Date of birth",
    "calculation": "Calculation",
    "method_title": "The method",
    "method_text": "Add the month, day and year, then add the digits of the total until you reach 22 or less: that is the personality card. Reduced to one digit, it gives the soul card. 22 is the Fool (0) and reduces to 4. Rider-Waite numbering: VIII Strength, XI Justice.",
    "disclaimer": "A symbolic system for self-reflection, not a prediction.",
    "invalid_date": "Enter a full date of birth.",
    "your_cards": "Your birth cards",
    "headline_single": "{{n}} – {{card}}, single card",
    "headline_pair": "{{n1}} – {{first}} and {{n2}} – {{last}}",
    "copy": "Copy the result",
    "role_single": "Personality and soul card",
    "role_personality": "Personality card",
    "role_soul": "Soul card",
    "role_middle": "Intermediate step",
    "marseille_note_8": "In the Tarot de Marseille, Strength is numbered XI.",
    "marseille_note_11": "In the Tarot de Marseille, Justice is numbered VIII.",
    "arcana_0": "The Fool",
    "arcana_1": "The Magician",
    "arcana_2": "The High Priestess",
    "arcana_3": "The Empress",
    "arcana_4": "The Emperor",
    "arcana_5": "The Hierophant",
    "arcana_6": "The Lovers",
    "arcana_7": "The Chariot",
    "arcana_8": "Strength",
    "arcana_9": "The Hermit",
    "arcana_10": "Wheel of Fortune",
    "arcana_11": "Justice",
    "arcana_12": "The Hanged Man",
    "arcana_13": "Death",
    "arcana_14": "Temperance",
    "arcana_15": "The Devil",
    "arcana_16": "The Tower",
    "arcana_17": "The Star",
    "arcana_18": "The Moon",
    "arcana_19": "The Sun",
    "arcana_20": "Judgement",
    "arcana_21": "The World",
    "kw_0": "freedom, beginnings, spontaneity",
    "kw_1": "initiative, skill, willpower",
    "kw_2": "intuition, study, discretion",
    "kw_3": "creativity, abundance, expression",
    "kw_4": "structure, authority, stability",
    "kw_5": "tradition, teaching, values",
    "kw_6": "choice, relationships, harmony",
    "kw_7": "drive, mastery, movement",
    "kw_8": "courage, inner strength, patience",
    "kw_9": "introspection, wisdom, solitude",
    "kw_10": "cycles, change, opportunity",
    "kw_11": "balance, truth, fairness",
    "kw_12": "letting go, new perspective, pause",
    "kw_13": "transformation, endings, renewal",
    "kw_14": "moderation, healing, blending",
    "kw_15": "desire, attachment, materiality",
    "kw_16": "upheaval, revelation, release",
    "kw_17": "hope, inspiration, serenity",
    "kw_18": "imagination, dreams, uncertainty",
    "kw_19": "joy, vitality, success",
    "kw_20": "awakening, calling, renewal",
    "kw_21": "fulfilment, completion, wholeness"
  },
  "tibetan-calendar-converter": {
    "heading": "Tibetan calendar converter (Phugpa)",
    "subheading": "Tibetan date of any Gregorian day, leap months, skipped or doubled days and Losar dates.",
    "gregorian_date": "Gregorian date",
    "today": "Today",
    "range_note": "Accepted dates: 1900 to 2100.",
    "method_title": "How it is calculated",
    "method_text": "Phugpa calculation after Svante Janson, \"Tibetan calendar mathematics\" (2007, revised 2014), with the almanac value of the lunar anomaly (1/28). A civil day takes the number of the lunar day that ends during it. Check your centre's almanac for practice dates.",
    "invalid_date": "Enter a date between 1900 and 2100.",
    "year_name": "{{gender}} {{element}} {{animal}}",
    "element_0": "Wood",
    "element_1": "Fire",
    "element_2": "Earth",
    "element_3": "Iron",
    "element_4": "Water",
    "animal_0": "Mouse",
    "animal_1": "Ox",
    "animal_2": "Tiger",
    "animal_3": "Hare",
    "animal_4": "Dragon",
    "animal_5": "Snake",
    "animal_6": "Horse",
    "animal_7": "Sheep",
    "animal_8": "Monkey",
    "animal_9": "Bird",
    "animal_10": "Dog",
    "animal_11": "Pig",
    "male": "Male",
    "female": "Female",
    "headline": "Day {{day}} of month {{month}}, year {{royal}} – {{year}}",
    "leap_month_badge": "Leap month (the first of the two months with this number)",
    "leap_day_badge": "Doubled day: first occurrence",
    "full_moon_badge": "15th day: full moon",
    "new_moon_badge": "30th day: new moon",
    "rabjung": "Rabjung (60-year cycle)",
    "rabjung_value": "Cycle {{cycle}}, year {{n}}",
    "royal_year": "Tibetan royal year",
    "month_start": "First day of the month",
    "month_end": "Last day of the month",
    "skipped_days": "Skipped day numbers this month",
    "doubled_days": "Doubled day numbers this month",
    "none": "none",
    "copy": "Copy the Tibetan date",
    "losar_title": "Losar dates (Tibetan New Year)",
    "col_year": "Tibetan year",
    "col_losar": "Losar",
    "col_name": "Year name"
  },
  "bushel-tonne-converter": {
    "heading": "Bushels to tonnes converter",
    "subheading": "By crop, with the USDA standard bushel weights, plus yield in bu/acre ↔ t/ha.",
    "tab_qty": "Quantity",
    "tab_yield": "Yield",
    "inputs_title": "Conversion",
    "crop_label": "Crop",
    "crop_wheat": "Wheat",
    "crop_soybeans": "Soybeans",
    "crop_corn": "Corn (shelled)",
    "crop_sorghum": "Grain sorghum",
    "crop_rye": "Rye",
    "crop_flaxseed": "Flaxseed",
    "crop_barley": "Barley",
    "crop_oats": "Oats",
    "crop_option": "{{crop}} ({{lb}} lb)",
    "lb_label": "Bushel weight",
    "lb_hint": "That is {{kg}} kg. USDA value (AH-697, 1992); change it if your contract sets another weight.",
    "dir_label": "Direction",
    "dir_bu_t": "Bushels → tonnes",
    "dir_t_bu": "Tonnes → bushels",
    "dir_buac_tha": "bu/acre → t/ha",
    "dir_tha_buac": "t/ha → bu/acre",
    "qty_label": "Quantity",
    "yield_label": "Yield",
    "answer_title": "Result",
    "copy_label": "Copy",
    "answer_bu_t": "{{crop}}: {{bu}} bu ({{lb}} lb) = {{t}} t",
    "answer_t_bu": "{{crop}}: {{t}} t = {{bu}} bu ({{lb}} lb)",
    "answer_buac_tha": "{{crop}}: {{buac}} bu/acre ({{lb}} lb) = {{tha}} t/ha",
    "answer_tha_buac": "{{crop}}: {{tha}} t/ha = {{buac}} bu/acre ({{lb}} lb)",
    "invalid": "Enter a positive value and a bushel weight above 0.",
    "row_bushels": "Bushels",
    "row_tonnes": "Metric tonnes",
    "row_kg": "Kilograms",
    "row_quintals": "Quintals (100 kg)",
    "row_short_tons": "US short tons (2,000 lb)",
    "row_pounds": "Pounds",
    "row_buac": "Bushels per acre",
    "row_tha": "Tonnes per hectare",
    "row_kgha": "Kilograms per hectare",
    "row_qha": "Quintals per hectare",
    "table_title": "Standard bushel weights (USDA)",
    "col_crop": "Crop",
    "col_bu_per_t": "bu per tonne",
    "col_kgha_per_buac": "kg/ha per 1 bu/acre",
    "source_note": "Bushel weights: USDA ERS, Agricultural Handbook 697 (1992), table 5. 1 lb = 0.45359237 kg and 1 acre = 0.40468564 ha (exact definitions).",
    "note_other_crops": "Rapeseed, canola and sunflower have no bushel weight in this table: enter the one in your contract in the “Bushel weight” field."
  },
  "grain-moisture-shrink-calculator": {
    "heading": "Grain moisture shrink calculator",
    "subheading": "Dry marketable weight, shrink in kg and %, handling loss and a table point by point.",
    "inputs_title": "Grain lot",
    "weight_label": "Harvested (wet) weight",
    "hi_label": "Initial moisture",
    "hf_label": "Final (base) moisture",
    "handling_label": "Handling loss",
    "handling_none": "None",
    "handling_purdue": "{{pct}}% (Purdue)",
    "handling_hint": "As % of the initial weight, added only when the grain is dried. Purdue (NCH-61, 1991) cites 0.5% in US drying tables; enter your buyer’s value.",
    "presets_title": "Base moisture in Argentina",
    "presets_hint": "Argentine grain trading standards (Cámara Arbitral de Cereales, Rosario). One click sets the final moisture.",
    "crop_soja": "Soybeans",
    "crop_maiz": "Corn",
    "crop_trigo": "Bread wheat",
    "crop_girasol": "Sunflower",
    "crop_cebada": "Malting barley",
    "preset_base": "{{crop}}: {{hf}}%",
    "preset_with_handling": "{{crop}}: {{hf}}% + {{handling}}% handling",
    "answer_title": "Weight after drying",
    "copy_label": "Copy",
    "answer": "{{weight}} kg at {{hi}}% → {{final}} kg at {{hf}}% ({{pct}}% shrink)",
    "answer_dry": "Grain at {{hi}}%: already at or below the {{hf}}% base, no drying shrink.",
    "invalid": "Enter a positive weight and moisture values between 0 and 99%.",
    "water_pct": "Water shrink",
    "handling_pct": "Handling loss",
    "loss_kg": "Total shrink",
    "per_point": "Shrink per moisture point",
    "table_title": "Shrink table down to {{hf}}%",
    "col_hi": "Initial moisture",
    "col_pct": "Shrink",
    "col_kg": "Final weight for {{weight}} kg",
    "table_note": "Table computed with the formula and the handling loss entered above; it is not an official elevator table.",
    "source_note": "Formula: shrink (%) = (Mi − Mf) × 100 ÷ (100 − Mf), as in the Argentine trading standards (Norma V, SENASA Res. 27/2013) and Purdue NCH-61 (1991).",
    "note_acopio": "For soybeans, corn, wheat and sunflower, the Argentine standards refer to agreed shrink tables and drying fees that are not published in the standards: an elevator settlement may differ."
  },
  "silo-bag-capacity-calculator": {
    "heading": "Grain bag (silo bag) capacity",
    "subheading": "Tonnes per bag and per metre by diameter, length and grain, and the number of bags for a harvest.",
    "bag_title": "Bag",
    "diameter_label": "Nominal diameter",
    "feet": "{{n}} ft",
    "diameter_m": "That is {{m}} m across.",
    "length_label": "Filled length",
    "grain_title": "Stored grain",
    "grain_label": "Grain",
    "grain_soja": "Soybeans",
    "grain_maiz": "Corn",
    "grain_trigo": "Wheat",
    "grain_girasol": "Sunflower",
    "g_soja": "soybeans",
    "g_maiz": "corn",
    "g_trigo": "wheat",
    "g_girasol": "sunflower",
    "kghl_label": "Test weight (estimate)",
    "kghl_source": "Default: {{lb}} lb standard bushel (USDA, AH-697, 1992) ÷ 35.24 L. Enter the test weight from your grain analysis.",
    "kghl_source_girasol": "Default: the {{lb}} lb per bushel minimum of U.S. grades No. 1 and 2 (7 CFR 810.1804, 2023). Heavier sunflower seed fills more tonnes.",
    "fill_label": "Fill factor (estimate)",
    "fill_source": "{{fill}} by default: set so that 9 ft × 60 m of soybeans ≈ 200 t (INTA Informa no. 1147, March 2023).",
    "harvest_label": "Harvest to store",
    "answer_title": "Estimated capacity",
    "copy_label": "Copy",
    "answer": "{{d}} ft × {{l}} m grain bag of {{grain}} ≈ {{t}} t ({{tm}} t/m)",
    "invalid": "Enter a positive length, test weight and fill factor (0 to 1).",
    "per_meter": "Tonnes per metre",
    "volume": "Grain volume",
    "bags_label": "Bags needed for {{harvest}} t",
    "table_title": "Capacity by diameter ({{grain}})",
    "col_diameter": "Diameter",
    "col_per_meter": "Per metre",
    "col_length": "{{l}} m bag",
    "method_note": "Tonnes = circle section of the nominal diameter × length × fill factor × test weight. A full bag flattens: the factor corrects for the gap with a perfect cylinder.",
    "limits_note": "An estimate, not a manufacturer table: actual load depends on the bagger, bag stretch and the metres lost at the closures. Other diameters are scaled with the square of the diameter."
  },
  "facebook-stars-money-calculator": {
    "header_title": "Facebook Stars to money",
    "header_subtitle": "What Stars earn the creator and what they cost the viewer, in US dollars, Mexican or Colombian pesos, Peruvian soles or euros.",
    "source_notice": "Meta's Stars page for creators (read on {{date}}) states that a creator earns 1 cent (0.01 USD) from Meta for every Star received from a fan. The price the viewer pays is not on that page: it is an estimate, to replace with the price shown in your app.",
    "stars_card": "Stars received",
    "stars_label": "Number of Stars",
    "usd_per_star": "Creator earnings per Star (USD)",
    "star_source": "Meta for Creators, Stars page, read on {{date}}: “1 cent for every Star”. Edit the value if Meta changes the amount.",
    "pack_card": "Price paid by the viewer (estimate)",
    "pack_stars": "Stars in the pack",
    "pack_price": "Pack price",
    "pack_currency": "Price currency",
    "pack_source": "Commonly quoted price: {{price}} for {{stars}} Stars (metricool, {{date}}). Meta does not publish it on its Stars page and it varies by country and store (web, iOS, Android): enter the one shown in your app.",
    "rates_card": "Currency and exchange rates",
    "display_currency": "Display currency",
    "rate_mxn": "Mexican pesos per 1 USD",
    "rate_cop": "Colombian pesos per 1 USD",
    "rate_pen": "Peruvian soles per 1 USD",
    "rate_eur": "US dollars per 1 EUR",
    "rate_mxn_source": "Banxico FIX rate of {{date}}",
    "rate_cop_source": "TRM of Colombia's Financial Superintendency, valid on {{date}}",
    "rate_pen_source": "BCRP banking system rate (sell) of {{date}}",
    "rate_eur_source": "ECB reference rate of {{date}}",
    "rates_note": "Rates entered by hand: the tool does not update them.",
    "result_label": "Creator earnings",
    "lead_creator_one": "{{stars}} Star = {{usd}}",
    "lead_creator_other": "{{stars}} Stars = {{usd}}",
    "lead_converted": "≈ {{money}}",
    "lead_buyer": "The viewer pays ≈ {{cost}} for these Stars (estimate from the pack entered)",
    "per_star_buyer": "Price of one Star for the viewer: {{value}}",
    "share": "Creator's share: {{pct}}% of the price paid",
    "payout_note": "The payout threshold is not given on Meta's Stars page: check it in your account's payout settings.",
    "copy_label": "Copy result",
    "table_title": "In each currency",
    "col_currency": "Currency",
    "col_creator": "Creator gets",
    "col_buyer": "Viewer pays"
  },
  "pokemon-catch-rate-calculator": {
    "header_title": "Pokémon catch rate: chance per Poké Ball",
    "header_subtitle": "The chance of catching a Pokémon by game (Gen III to IX), HP, status and ball, with the number of throws to plan for.",
    "game_card": "Game and Pokémon",
    "gen_label": "Generation and games",
    "gen_3": "Gen III: Ruby, Sapphire, Emerald, FireRed, LeafGreen",
    "gen_4": "Gen IV: Diamond, Pearl, Platinum, HeartGold, SoulSilver",
    "gen_5": "Gen V: Black, White, Black 2, White 2",
    "gen_6": "Gen VI: X, Y, Omega Ruby, Alpha Sapphire",
    "gen_7": "Gen VII: Sun, Moon, Ultra Sun, Ultra Moon (not Let's Go)",
    "gen_8": "Gen VIII: Sword, Shield, Brilliant Diamond, Shining Pearl",
    "gen_9": "Gen IX: Scarlet, Violet",
    "species_label": "Pokémon (name or Pokédex number)",
    "species_placeholder": "e.g. Mewtwo, Rayquaza, 150",
    "species_found": "No. {{dex}} {{name}} · catch rate {{rate}}",
    "rate_label": "Species catch rate (1 to 255)",
    "rate_source": "Prefilled with the species' current rate (PokéAPI, read on 27 October 2026). If your game uses another value, type it in.",
    "battle_card": "Battle",
    "hp_label": "HP left",
    "status_label": "Pokémon status",
    "status_none": "None (×1)",
    "status_sleep_2": "Sleep or freeze (×2)",
    "status_sleep_25": "Sleep or freeze (×2.5)",
    "status_para": "Paralysis, poison or burn (×1.5)",
    "level_label": "Wild Pokémon level",
    "turn_label": "Turn of the throw",
    "battle_note": "HP as a % of the wild Pokémon's bar (1% ≈ after False Swipe). Turn: 1 = first turn of the battle (Quick Ball); the Timer Ball counts the turns passed. Level is used by the Nest Ball and by the low-level bonus in Gen VIII and IX.",
    "ball_card": "Poké Ball",
    "ball_label": "Ball thrown",
    "ball_custom": "Other ball (enter multiplier)",
    "custom_label": "Ball multiplier",
    "ball_bonus": "This ball's bonus here: ×{{value}}",
    "cond_net": "Water or Bug",
    "cond_dive": "underwater, surfing or fishing",
    "cond_nest": "depends on level",
    "cond_repeat": "species already caught",
    "cond_timer": "depends on turn",
    "cond_dusk": "night or cave",
    "cond_quick": "first turn",
    "result_label": "Catch chance per throw",
    "lead": "{{name}}: {{pct}} chance to catch per {{ball}}",
    "lead_sure": "{{name}}: guaranteed catch ({{ball}})",
    "lead_unavailable": "This ball does not exist in this generation.",
    "lead_zero": "No catch possible: the modified rate is zero (check the species rate).",
    "lead_throws": "Throws needed: {{n50}} for a 50% chance, {{n90}} for 90%, {{mean}} on average.",
    "details_34": "Detail: a = {{a}} (out of 255), b = {{b}} (out of 65,536), 4 shake checks.",
    "details_5": "Detail: a = {{a}} (out of 1,044,480), b = {{b}} (out of 65,536), {{checks}} shake checks.",
    "no_critical": "Critical captures not included: since Gen V, a critical capture (rare, more frequent with a fuller Pokédex) makes only one shake check and slightly raises the real chance.",
    "copy_label": "Copy result",
    "table_title": "Every ball in the same situation",
    "col_ball": "Ball",
    "col_bonus": "Bonus",
    "col_chance": "Chance per throw",
    "col_90": "Throws for 90%",
    "source_note": "Formulas and ball multipliers by generation: Bulbapedia, \"Catch rate\" page, read on 27 October 2026. Not included: critical captures, terrain and temporary boosts (Gen V to VII), the Gen VIII difficulty factor, the Gen IX badge penalty, Let's Go, Legends: Arceus and Legends: Z-A."
  },
  "pokemon-iv-calculator": {
    "header_title": "Pokémon IV calculator (Generation 3 to 9)",
    "header_subtitle": "Find your Pokémon's IVs from its shown stats, level, nature and EVs.",
    "scope_notice": "Main-series games from Generation 3 (FireRed, Emerald) to Generation 9 (Scarlet, Violet). Only each species' default form is loaded: for an Alolan or Galarian form, or a Mega Evolution, correct the base stats. Pokémon GO, Let's Go and Legends: Arceus use other formulas.",
    "pokemon_card": "Pokémon and game",
    "search_label": "Pokémon (name or Pokédex number)",
    "search_placeholder": "Garchomp, Pikachu, 445…",
    "selected": "No. {{dex}} · {{name}}",
    "gen_label": "Game generation",
    "gen_3": "Gen 3: Ruby, Sapphire, Emerald, FireRed, LeafGreen",
    "gen_4": "Gen 4: Diamond, Pearl, Platinum, HeartGold, SoulSilver",
    "gen_5": "Gen 5: Black, White, Black 2, White 2",
    "gen_6": "Gen 6: X, Y, Omega Ruby, Alpha Sapphire",
    "gen_7": "Gen 7: Sun, Moon, Ultra Sun, Ultra Moon",
    "gen_8": "Gen 8: Sword, Shield, Brilliant Diamond, Shining Pearl",
    "gen_9": "Gen 9: Scarlet, Violet",
    "level_label": "Level",
    "nature_label": "Nature",
    "nature_neutral": "{{name}} (neutral)",
    "nature_option": "{{name}} (+{{up}}, −{{down}})",
    "stats_card": "Base stats, EVs and shown stats",
    "col_stat": "Stat",
    "col_base": "Base",
    "col_ev": "EV",
    "col_shown": "In game",
    "sr_base": "Base stat: {{stat}}",
    "sr_ev": "{{stat}} EVs",
    "sr_shown": "{{stat}} shown in game",
    "base_note": "Base stats prefilled from PokéAPI (read on {{date}}), with the old value when a stat has changed since the chosen generation (Pikachu: Defense 30 up to Generation 5, 40 after). Editable.",
    "ev_note": "EVs: 0 for a wild or freshly caught Pokémon. Cap per stat: 255 up to Generation 5, 252 after (510 in total).",
    "result_label": "Result (IVs from 0 to 31)",
    "lead": "Possible IVs: {{list}}",
    "lead_item": "{{stat}} {{value}}",
    "range": "{{min}}–{{max}}",
    "no_iv": "no IV",
    "no_iv_help": "No IV from 0 to 31 gives at least one of these stats: check the level, nature, EVs, generation and form (base stats).",
    "copy_label": "Copy result",
    "copy_text": "{{name}}, level {{level}}: {{lead}}",
    "table_title": "By stat (bar = IV from 0 to 31)",
    "possible_stats": "Possible stat at this level: {{lo}} (IV 0) to {{hi}} (IV 31)",
    "formula_note": "Formula from Generation 3 onward (Bulbapedia, \"Stat\"): HP = ⌊(2×Base + IV + ⌊EV/4⌋) × Level/100⌋ + Level + 10; other stats = ⌊(⌊(2×Base + IV + ⌊EV/4⌋) × Level/100⌋ + 5) × Nature⌋, with Nature = 0.9, 1 or 1.1. Shedinja always has 1 HP, so its HP IV stays unknown.",
    "stat_hp": "HP",
    "stat_atk": "Attack",
    "stat_def": "Defense",
    "stat_spa": "Sp. Atk",
    "stat_spd": "Sp. Def",
    "stat_spe": "Speed"
  },
  "fuel-injector-size-calculator": {
    "heading": "Fuel injector size from target power",
    "subheading": "Flow needed per injector in cc/min and lb/hr: gasoline or E85, naturally aspirated or boosted, pressure-corrected.",
    "inputs_title": "Engine and fuel",
    "power": "Target power (at the crank)",
    "power_unit": "Unit",
    "unit_ps": "PS (metric hp)",
    "unit_hp": "hp",
    "unit_ps_short": "PS",
    "injectors": "Number of injectors",
    "injectors_note": "With port injection, one injector per cylinder.",
    "fuel": "Fuel",
    "fuel_gasoline": "Gasoline",
    "aspiration": "Induction",
    "aspiration_na": "Naturally aspirated",
    "aspiration_boost": "Turbo or supercharger",
    "bsfc": "Brake specific fuel consumption (BSFC)",
    "bsfc_note": "Common rule of thumb for this choice: {{v}}. Use your dyno figure if you have one.",
    "duty": "Maximum injector duty cycle",
    "duty_note": "Common rule: 80% (DeatschWerks). Fuel Injector Clinic allows up to 90%.",
    "p_operating": "Operating pressure",
    "p_rated": "Rated-flow pressure",
    "pressure_note": "Pressure across the injector (rail minus manifold). With a 1:1 regulator this is the base pressure; do not add boost. Bosch quotes flow at 3 bar (43.5 psi).",
    "density": "Fuel density",
    "density_note_gasoline": "Gasoline: 0.744 g/cm³ (Bosch Motorsport, 2019).",
    "density_note_e85": "E85: 0.78 g/cm³, an approximation (85% ethanol at 0.789 and 15% gasoline at 0.744).",
    "result_title": "Injector you need",
    "answer": "Injectors of at least {{cc}} cc/min ({{lbh}} lb/hr) rated at {{p}}",
    "summary_inputs": "{{power}}, {{n}} injectors, BSFC {{bsfc}}, maximum duty cycle {{duty}}",
    "summary_operating": "At {{p}}: {{cc}} cc/min, or {{lbh}} lb/hr",
    "at_rated": "Rated flow at {{p}} (compare with catalogues)",
    "at_operating": "Flow at operating pressure ({{p}})",
    "total_fuel": "Fuel used at full power (all injectors)",
    "power_hp": "Power in hp (the BSFC unit)",
    "check_title": "Check an injector and convert its flow",
    "check_flow": "Datasheet flow (at {{p}})",
    "check_unit": "Flow unit",
    "check_equivalent": "Equivalents at {{p}}",
    "check_duty": "Duty cycle at {{power}}",
    "check_max": "Power supported at {{duty}} duty",
    "check_too_small": "This injector exceeds the chosen maximum duty cycle at the target power: choose a larger flow or raise the pressure.",
    "disclaimer": "Indicative tool: the real BSFC depends on the engine, target mixture and calibration. Dyno tuning with mixture monitoring always takes precedence over this estimate.",
    "sources_title": "Default values and sources",
    "source_bsfc": "Gasoline BSFC: top of the EFI University ranges (2017), 0.45-0.50 naturally aspirated and 0.55-0.60 boosted. E85: × 1.30, from DeatschWerks (2019: +30 to 35%).",
    "source_duty": "Duty cycle: 80% recommended by DeatschWerks (2019); 90% maximum at Fuel Injector Clinic (page checked October 2026).",
    "source_bosch": "Pressure: Q2 = Q1 × √(P2/P1), flows quoted at 3 bar, gasoline 0.744 g/cm³ (Bosch Motorsport, EV 14 sheet, 28 Nov 2019)."
  },
  "generator-power-sizing-calculator": {
    "heading": "Generator size from your appliances",
    "subheading": "List your appliances, add motor starting surges and convert kW to kVA.",
    "list_title": "Appliances running at the same time",
    "col_name": "Appliance",
    "col_watts": "Rated power (W)",
    "col_qty": "Qty",
    "col_start": "Starting (× rated)",
    "remove": "Remove {{name}}",
    "empty": "The list is empty: add an appliance.",
    "add": "Add an appliance",
    "add_placeholder": "Choose…",
    "reset": "Back to the sample list",
    "start_note": "Wattages are examples: use the figures on each nameplate. Starting, common rules: fridge and freezer × 2 (Maytag), pump, compressor or tool motors × 2 to × 4 (Robin), sometimes × 6; heaters, kettles, lighting and electronics × 1.",
    "cos_phi": "Power factor (cos φ)",
    "margin": "Reserve margin",
    "cos_phi_note": "Generator datasheets quote kVA at cos φ 0.8 (kW = kVA × 0.8, Robin catalogue); small inverter units are often rated at cos φ 1. The 25% margin is a common rule, not a standard.",
    "result_title": "Recommended generator",
    "answer": "You need at least {{cont}} of continuous output and {{peak}} of starting capacity",
    "summary_running": "Running load: {{w}}",
    "summary_row": "{{name}}: {{qty}} × {{w}}, starting × {{k}}",
    "running": "Running load (sum of appliances)",
    "continuous": "Continuous output with {{m}}% margin",
    "peak_staggered": "Starting peak, motors started one at a time",
    "peak_all": "Peak if everything starts at once (avoid)",
    "start_last": "Start last: {{name}} (+{{extra}} while starting).",
    "order_note": "Connect loads without motors first, then motors from smallest to largest, waiting until each one is running.",
    "safety_title": "Safety (BBK, Germany, January 2019)",
    "safety_exhaust": "Never indoors: exhaust gases can suffocate. Run the generator outside in a dry, well-ventilated spot.",
    "safety_house": "Feeding the house wiring requires an electrician and a manual or automatic changeover switch; in Germany, also inform the grid operator.",
    "safety_electronics": "Computers and boiler controls need a generator that keeps voltage and frequency stable.",
    "safety_fuel": "In Germany, at most 10 kg of petrol or 20 kg of diesel in a cellar, in suitable cans (TRGS 510).",
    "sources_title": "Default values and sources",
    "source_start": "Starting: Maytag, “Generator Usage with Appliances” (motors 2 to 3 times running amps, refrigeration × 2), checked October 2026; Robin general catalogue 2012 (motors 2 to 4 times, some 6 times).",
    "source_bbk": "Safety and outage use: BBK, “Stromausfall – Vorsorge und Selbsthilfe”, January 2019 edition (heating appliances 1,500 to 2,000 W).",
    "source_cos": "kW = kVA × cos φ; generator plates at cos φ 0.8 (Robin catalogue 2012: 3.25 kVA = 2.60 kW).",
    "item_fridge": "Refrigerator",
    "item_freezer": "Freezer",
    "item_pump": "Sump or well pump",
    "item_heating": "Boiler (controls and circulator)",
    "item_lighting": "LED bulb",
    "item_router": "Router and chargers",
    "item_kettle": "Kettle",
    "item_heater": "Space heater",
    "item_compressor": "Air compressor",
    "item_tool": "Power tool (saw, hammer drill)",
    "item_tv": "TV",
    "item_laptop": "Laptop",
    "item_custom": "Other appliance"
  },
  "minecraft-enchantment-order-calculator": {
    "heading": "Optimal enchanted book order at the anvil",
    "subheading": "Pick the item and your books: the calculator returns the cheapest sequence of merges in experience levels.",
    "settings": "Item and rules",
    "item": "Item to enchant",
    "edition": "Game edition",
    "edition_java": "Java Edition",
    "edition_bedrock": "Bedrock Edition",
    "prior_work": "Previous anvil uses of the item",
    "prior_work_hint": "0 for a new item. Each use adds a penalty of 2ⁿ − 1 levels.",
    "limit_label": "\"Too Expensive!\" limit: 39 levels at most per operation (Survival)",
    "objective": "Minimize first",
    "objective_levels": "Levels spent",
    "objective_xp": "Experience points",
    "enchantments": "Available enchanted books",
    "enchantments_hint": "One book per enchantment, at the chosen level. ×N: book multiplier used in the cost.",
    "level_of": "Level: {{name}}",
    "exclusive_with": "Incompatible with: {{list}}",
    "none_selected": "Tick at least one book to get the merge order.",
    "result_label": "Total anvil cost",
    "total_levels_one": "{{n}} experience level",
    "total_levels_other": "{{n}} experience levels",
    "stat_operations": "Operations",
    "stat_max_step": "Most expensive operation",
    "stat_xp": "Experience points (minimum)",
    "stat_penalty": "Final item penalty",
    "levels_one": "{{n}} level",
    "levels_other": "{{n}} levels",
    "xp_hint": "XP points: the minimum, reached when you are exactly at the required level for each operation (formulas from minecraft.wiki, \"Experience\" page). The final item penalty will be added to its next repair.",
    "steps_title": "Anvil operations in order",
    "steps_hint": "Always put the first element in the left anvil slot and the second in the right slot: swapping them changes the cost.",
    "step_n": "Step {{n}}",
    "book_label": "Book ({{list}})",
    "item_with": "{{item}} ({{list}})",
    "too_expensive": "Too Expensive!",
    "impossible_title": "Too Expensive! in Survival, whatever the order",
    "impossible_text": "No order keeps every operation under 40 levels. Remove a book or start from a new item. Without the limit (Creative mode), the best order costs {{n}} levels:",
    "source_note": "Java rules: game data 26.3 released by Mojang on {{javaDate}}. Bedrock: minecraft.wiki (\"Anvil mechanics\", \"Enchanting\"), checked on {{wikiDate}}.",
    "copy": "Copy the operation order",
    "copy_step": "{{n}}. {{target}} + {{sacrifice}}: {{cost}}",
    "copy_total": "Total: {{total}}",
    "ench_aqua_affinity": "Aqua Affinity",
    "ench_bane_of_arthropods": "Bane of Arthropods",
    "ench_binding_curse": "Curse of Binding",
    "ench_blast_protection": "Blast Protection",
    "ench_breach": "Breach",
    "ench_channeling": "Channeling",
    "ench_density": "Density",
    "ench_depth_strider": "Depth Strider",
    "ench_efficiency": "Efficiency",
    "ench_feather_falling": "Feather Falling",
    "ench_fire_aspect": "Fire Aspect",
    "ench_fire_protection": "Fire Protection",
    "ench_flame": "Flame",
    "ench_fortune": "Fortune",
    "ench_frost_walker": "Frost Walker",
    "ench_impaling": "Impaling",
    "ench_infinity": "Infinity",
    "ench_knockback": "Knockback",
    "ench_looting": "Looting",
    "ench_loyalty": "Loyalty",
    "ench_luck_of_the_sea": "Luck of the Sea",
    "ench_lunge": "Lunge",
    "ench_lure": "Lure",
    "ench_mending": "Mending",
    "ench_multishot": "Multishot",
    "ench_piercing": "Piercing",
    "ench_power": "Power",
    "ench_projectile_protection": "Projectile Protection",
    "ench_protection": "Protection",
    "ench_punch": "Punch",
    "ench_quick_charge": "Quick Charge",
    "ench_respiration": "Respiration",
    "ench_riptide": "Riptide",
    "ench_sharpness": "Sharpness",
    "ench_silk_touch": "Silk Touch",
    "ench_smite": "Smite",
    "ench_soul_speed": "Soul Speed",
    "ench_sweeping_edge": "Sweeping Edge",
    "ench_swift_sneak": "Swift Sneak",
    "ench_thorns": "Thorns",
    "ench_unbreaking": "Unbreaking",
    "ench_vanishing_curse": "Curse of Vanishing",
    "ench_wind_burst": "Wind Burst",
    "item_sword": "Sword",
    "item_pickaxe": "Pickaxe",
    "item_axe": "Axe",
    "item_shovel": "Shovel",
    "item_hoe": "Hoe",
    "item_bow": "Bow",
    "item_crossbow": "Crossbow",
    "item_trident": "Trident",
    "item_mace": "Mace",
    "item_spear": "Spear",
    "item_helmet": "Helmet",
    "item_chestplate": "Chestplate",
    "item_leggings": "Leggings",
    "item_boots": "Boots",
    "item_fishing_rod": "Fishing Rod",
    "item_elytra": "Elytra",
    "item_shears": "Shears",
    "item_shield": "Shield",
    "xp_title": "Minecraft XP calculator: levels and experience points",
    "xp_from_level": "Current level",
    "xp_to_level": "Target level",
    "xp_points_one": "{{n}} experience point",
    "xp_points_other": "{{n}} experience points",
    "xp_needed_hint": "between level {{a}} and level {{b}}",
    "xp_points_label": "Experience points",
    "xp_level_result": "Level {{n}}",
    "xp_level_rest_one": "plus {{rest}} of the {{next}} points needed for level {{up}}",
    "xp_level_rest_other": "plus {{rest}} of the {{next}} points needed for level {{up}}",
    "xp_formula": "Total points to reach level L (minecraft.wiki, \"Experience\"): L² + 6L up to level 16, 2.5L² − 40.5L + 360 from level 17 to 31, then 4.5L² − 162.5L + 2,220. Java Edition formula since 1.8."
  },
  "robux-money-calculator": {
    "header_title": "Robux to money and money to Robux",
    "header_subtitle": "Robux purchase price, DevEx cash-out and sales commission, in Mexican pesos, soles, euros or dollars.",
    "buy_card": "Buying Robux",
    "robux_to_buy": "Robux to buy",
    "channel_label": "Where you buy",
    "channel_web": "Website, desktop app or gift card (9.99 USD = 1,000 Robux)",
    "channel_mobile": "iOS or Android mobile app (9.99 USD = 800 Robux)",
    "channel_custom": "Other pack (enter it)",
    "pack_robux": "Robux in the pack",
    "pack_price": "Pack price",
    "pack_currency": "Pack currency",
    "pack_note": "US examples from Roblox's announcement of {{date}}; check them on roblox.com or in the app: the website, desktop app and gift cards give up to 25% more Robux than the mobile app. Prices depend on the country: enter the one you see, in your currency.",
    "budget_label": "Budget ({{currency}})",
    "sell_card": "Selling and cashing out (DevEx)",
    "sale_price": "Sale price of a pass or item (Robux)",
    "sale_type": "Type of sale",
    "sale_experience": "Sale in your game: pass, product (70% to you)",
    "sale_marketplace": "Avatar item on the Marketplace (30% base share to you)",
    "sale_custom": "Other share (enter it)",
    "share_label": "Share received (%)",
    "net_wanted": "Net Robux wanted",
    "share_note": "Roblox (\"Earn on Roblox\" page, read on {{date}}): creators generally earn 70% of what they sell for Robux in their game and 30% (base share) of what they sell on the Marketplace.",
    "earned_label": "Earned Robux to convert",
    "devex_rate_type": "DevEx rate",
    "devex_standard": "Standard: 0.0038 USD per Robux (since {{date}})",
    "devex_us18": "Purchases by verified US players aged 18+: 0.0054 USD (since {{date}})",
    "devex_legacy": "Robux earned before {{date}}: 0.0035 USD",
    "devex_custom": "Other rate (enter it)",
    "devex_rate": "DevEx rate (USD per Robux)",
    "devex_note": "Roblox Developer Exchange page, read on {{date}}: only Earned Robux can be exchanged, from {{min}}, at age 13 or older, with a verified email and a W-9 or W-8 tax form.",
    "rates_card": "Currency and exchange rates",
    "display_currency": "Show in",
    "rate_mxn": "Mexican pesos per 1 USD",
    "rate_pen": "Soles per 1 USD",
    "rate_eur": "US dollars per 1 EUR",
    "rate_mxn_source": "Banxico, FIX rate of {{date}}",
    "rate_pen_source": "BCRP, banking system rate (sell) of {{date}}",
    "rate_eur_source": "ECB, reference rate of {{date}}",
    "rates_note": "Rates typed in by hand: the tool does not update them.",
    "copy_label": "Copy the result",
    "table_title": "In all four currencies",
    "col_currency": "Currency",
    "buy_result_label": "Purchase price",
    "lead_buy": "{{robux}} Robux ≈ {{cost}}",
    "budget_result": "With {{budget}} you get ≈ {{robux}} Robux (pro rata of the pack entered).",
    "devex_result_label": "DevEx cash-out",
    "lead_devex": "{{robux}} earned Robux = {{usd}} ≈ {{money}}",
    "devex_below_min": "Under {{min}} earned Robux: DevEx does not allow a cash-out yet.",
    "sale_result": "Sold for {{price}} Robux, a pass or item brings you ≈ {{net}} Robux ({{fee}}% commission), about {{money}} through DevEx.",
    "price_for_net": "To receive {{net}} net Robux, set the price at {{price}} Robux.",
    "col_buy": "Buying {{robux}} Robux",
    "col_devex": "DevEx for {{robux}} Robux",
    "vbucks_card": "V-Bucks to money, at your pack price",
    "vbucks_amount": "V-Bucks to convert",
    "vbucks_pack": "V-Bucks in the pack",
    "vbucks_pack_price": "Pack price",
    "lead_vbucks": "{{vbucks}} V-Bucks ≈ {{cost}}",
    "vbucks_unit_price": "Price of one V-Buck: {{price}}",
    "vbucks_note": "Pre-filled example: 800 V-Bucks pack at 8.99 USD, the price announced by Epic Games (fortnite.com) from {{date}}. Enter the price in your store: it varies by country, platform and promotions. The conversion uses the exchange rates above."
  },
  "tiktok-coins-money-calculator": {
    "header_title": "TikTok coins and gifts to money",
    "header_subtitle": "What a gift costs the sender and what the creator gets from it, in Mexican pesos, soles, euros or dollars.",
    "estimate_notice": "TikTok publishes no coins → diamonds → dollars conversion rate. The purchase price comes from the pack you enter; the creator's share is an estimate based on commonly quoted values (streamer.guide, {{date}}).",
    "coins_card": "Coins to convert",
    "gift_label": "Gift",
    "gift_custom": "Any number of coins",
    "gift_rose": "Rose ({{coins}} coin)",
    "gift_lion": "Lion ({{coins}} coins)",
    "coins_label": "Number of coins",
    "gift_source": "Values reported by the Mexican press (SDP Noticias, 2023; tusbuenasnoticias, 2024) and streamer.guide ({{date}}); check them in the app. The Universe shows as 34,999 or 44,999 coins depending on country and date: enter the number your app shows.",
    "pack_card": "Coin pack price",
    "pack_coins": "Coins in the pack",
    "pack_price": "Price paid for the pack",
    "pack_currency": "Pack currency",
    "pack_example": "Example, check it in the app: {{coins}} coins for {{price}}, price quoted by tusbuenasnoticias.com on {{date}}. The price depends on the country and where you buy (website, iOS, Android): enter the one in your app, in your currency.",
    "creator_card": "Creator's share (estimate)",
    "diamonds_per_coin": "Diamonds per coin",
    "usd_per_diamond": "USD per diamond",
    "creator_source": "Estimate (streamer.guide, {{date}}): about 2 coins per diamond and 0.005 USD per diamond. TikTok sets these rates alone and can change them.",
    "rates_card": "Currency and exchange rates",
    "display_currency": "Show in",
    "rate_mxn": "Mexican pesos per 1 USD",
    "rate_pen": "Soles per 1 USD",
    "rate_eur": "US dollars per 1 EUR",
    "rate_mxn_source": "Banxico, FIX rate of {{date}}",
    "rate_pen_source": "BCRP, banking system rate (sell) of {{date}}",
    "rate_eur_source": "ECB, reference rate of {{date}}",
    "rates_note": "Rates typed in by hand: the tool does not update them.",
    "copy_label": "Copy the result",
    "table_title": "In all four currencies",
    "col_currency": "Currency",
    "buyer_label": "Price for the buyer",
    "lead_buyer_one": "{{coins}} TikTok coin ≈ {{cost}}",
    "lead_buyer_other": "{{coins}} TikTok coins ≈ {{cost}}",
    "lead_creator_one": "The creator gets ≈ {{diamonds}} diamond, about {{money}} (estimate)",
    "lead_creator_other": "The creator gets ≈ {{diamonds}} diamonds, about {{money}} (estimate)",
    "per_coin": "Price of one coin: ≈ {{value}}",
    "share": "Share passed on to the creator: ≈ {{pct}}% of the price paid (estimate)",
    "col_buyer": "Price for the buyer",
    "col_creator": "Creator (estimate)"
  },
  "pokemon-shiny-odds-calculator": {
    "heading": "Shiny odds by game and method",
    "subheading": "Base rate, Shiny Charm, Masuda method, chains and outbreaks, from Pokémon Gold and Silver to Pokémon Legends: Z-A.",
    "inputs_title": "Game and method",
    "game_label": "Game",
    "method_label": "Method",
    "charm_label": "Shiny Charm",
    "encounters_label": "Number of encounters (or eggs)",
    "custom_label": "Custom rate: 1 in…",
    "custom_help": "Leave empty to use the game's rate. Enter a rate for a Pokémon GO event, a Community Day or a value you measured yourself.",
    "custom_invalid": "Enter a number greater than or equal to 1.",
    "custom_active": "Calculated with your custom rate.",
    "source_line": "Default rates: game data published by Bulbapedia and Serebii (dataminers' research), checked on October 23, 2026. The Pokémon Company does not publish these rates.",
    "per_encounter_title": "Odds per encounter",
    "one_in": "1 in {{denom}}",
    "answer_line": "{{game}}, {{method}}: a 1 in {{denom}} chance per encounter ({{pct}}).",
    "chance_line": "Over {{n}} encounters: {{pct}} chance of at least one shiny.",
    "targets_line": "Encounters needed: {{n50}} for 50%, {{n90}} for 90%, {{n99}} for 99%.",
    "targets_title": "Encounters needed",
    "target_label": "{{pct}} chance",
    "encounters_unit": "encounters",
    "rolls_line": "Shiny rolls per encounter: {{rolls}}, each at 1 in {{base}}.",
    "flat_rate_line": "Flat rate published for this method, with no extra rolls.",
    "copy_label": "Copy the result",
    "table_title": "{{game}} shiny rates",
    "col_method": "Method",
    "col_rolls": "Rolls",
    "col_rolls_charm": "Rolls (without → with Charm)",
    "col_rate": "Rate",
    "col_without": "Without Shiny Charm",
    "col_with": "With Shiny Charm",
    "table_note": "Rates per encounter. The highlighted row is the selected method.",
    "table_bonus_note": "Rates per encounter, calculated with {{name}}: {{level}}. The highlighted row is the selected method.",
    "game_za": "Pokémon Legends: Z-A",
    "game_sv": "Pokémon Scarlet and Violet",
    "game_pla": "Pokémon Legends: Arceus",
    "game_bdsp": "Pokémon Brilliant Diamond and Shining Pearl",
    "game_swsh": "Pokémon Sword and Shield",
    "game_lgpe": "Pokémon: Let's Go, Pikachu! and Let's Go, Eevee!",
    "game_sm": "Pokémon Sun and Moon, Ultra Sun and Ultra Moon",
    "game_xy": "Pokémon X and Y, Omega Ruby and Alpha Sapphire",
    "game_b2w2": "Pokémon Black 2 and White 2",
    "game_bw": "Pokémon Black and White",
    "game_gen4": "Pokémon Diamond, Pearl, Platinum, HeartGold and SoulSilver",
    "game_gen3": "Pokémon Ruby, Sapphire, Emerald, FireRed and LeafGreen",
    "game_gsc": "Pokémon Gold, Silver and Crystal",
    "game_go": "Pokémon GO",
    "method_wild": "Wild encounter",
    "method_hyperspace": "Hyperspace (Mega Dimension DLC)",
    "method_outbreak_30": "Mass outbreak, 30–59 defeated",
    "method_outbreak_60": "Mass outbreak, 60+ defeated",
    "method_masuda": "Egg, Masuda method",
    "method_tera_raid": "Tera Raid Battle",
    "method_mass_outbreak": "Mass outbreak",
    "method_massive_outbreak": "Massive mass outbreak",
    "method_poke_radar_bdsp": "Poké Radar, chain of 40+",
    "method_aura_1": "Brilliant (aura) Pokémon, 1–49 battled",
    "method_aura_50": "Brilliant (aura) Pokémon, 50–99 battled",
    "method_aura_100": "Brilliant (aura) Pokémon, 100–199 battled",
    "method_aura_200": "Brilliant (aura) Pokémon, 200–299 battled",
    "method_aura_300": "Brilliant (aura) Pokémon, 300–499 battled",
    "method_aura_500": "Brilliant (aura) Pokémon, 500+ battled",
    "method_dynamax": "Dynamax Adventure (final Pokémon)",
    "method_combo_0": "Catch combo, 0–10",
    "method_combo_11": "Catch combo, 11–20",
    "method_combo_21": "Catch combo, 21–30",
    "method_combo_31": "Catch combo, 31+",
    "method_sos_11": "SOS chain, 11–20",
    "method_sos_21": "SOS chain, 21–30",
    "method_sos_31": "SOS chain, 31+",
    "method_friend_safari": "Friend Safari (X and Y)",
    "method_chain_fishing": "Chain fishing, 20+ in a row",
    "method_poke_radar": "Poké Radar, chain of 40+ (Diamond, Pearl, Platinum)",
    "method_breeding_shiny_parent": "Egg with a shiny parent",
    "method_go_wild": "Standard encounter (estimate)",
    "bonus_sparkling_za": "Sparkling Power (donut, Hyperspace)",
    "bonus_sparkling_sv": "Sparkling Power (sandwich)",
    "bonus_research": "Pokédex research level",
    "bonus_lure": "Lure",
    "sparkling_za_0": "None",
    "sparkling_za_1": "Level 1 (+1 roll)",
    "sparkling_za_2": "Level 2 (+2 rolls)",
    "sparkling_za_3": "Level 3 (+3 rolls)",
    "sparkling_sv_0": "None",
    "sparkling_sv_1": "Level 1 (+1 roll)",
    "sparkling_sv_2": "Level 2 (+2 rolls)",
    "sparkling_sv_3": "Level 3 (+3 rolls)",
    "research_0": "Below 10",
    "research_1": "Level 10 (+1 roll)",
    "research_2": "Perfect, all tasks (+3 rolls)",
    "lure_0": "None",
    "lure_1": "Active (+1 roll)",
    "note_hyperspace": "Sparkling Power: donuts from the Mega Dimension DLC, active only in Hyperspace and for the donut's type. At level 3 the first Pokémon of that type to spawn is guaranteed shiny; the rate shown applies to the next ones.",
    "note_sparkling_sv": "Sparkling Power: only for wild Pokémon of the sandwich's type, and the sandwich needs at least two Herba Mystica. No effect on Tera Raid Battles, wild Tera Pokémon or fixed encounters.",
    "note_masuda": "Masuda method: an egg from two parents from games in different languages. Since Generation VIII a bug skips the initial roll: 6 rolls in total (8 with the Shiny Charm).",
    "note_tera_raid": "Tera Raid Battles: 1 in 4,103.05 instead of 1 in 4,096, because of 32-bit seeds. Neither the Shiny Charm nor Sparkling Power applies.",
    "note_bdsp_charm": "In Brilliant Diamond and Shining Pearl the Shiny Charm only affects eggs, despite its description. The Poké Radar caps at 1 in 99 from a chain of 40.",
    "note_aura": "Rate for a wild Pokémon that appears with an aura, depending on how many of the species you have battled. Whether an aura appears is a separate check (1.5% at first), so this is not the rate of any random encounter.",
    "note_dynamax": "Dynamax Adventures: flat rate for the legendary Pokémon at the end of the run, 1 in 300, or 1 in 100 with the Shiny Charm.",
    "note_derived": "Sources state that this effect stacks with the Shiny Charm but print no combined rate: the with-Charm column adds its 2 rolls (calculated combination).",
    "note_go": "Community estimate: about 1 in 512 for most species (Bulbapedia). Niantic does not publish these rates. Community Days, raids and events: not documented in a stable way, so enter your own rate in the custom rate field."
  },
  "animal-gestation-due-date-calculator": {
    "heading": "Animal due date calculator",
    "subheading": "From the breeding or insemination date: cow, ewe, goat, sow, mare, jenny, dog, cat.",
    "inputs_title": "Breeding and gestation length",
    "species": "Species",
    "species_cow": "Cow",
    "species_ewe": "Ewe (sheep)",
    "species_goat": "Goat (doe)",
    "species_sow": "Sow (pig)",
    "species_mare": "Mare (horse)",
    "species_jenny": "Jenny (donkey)",
    "species_bitch": "Dog (bitch)",
    "species_queen": "Cat (queen)",
    "mating_date": "Breeding or insemination date",
    "mean": "Average gestation length",
    "min": "Usual shortest",
    "max": "Usual longest",
    "unit_days": "days",
    "dry_off_days": "Dry period length",
    "sources_title": "Default values and sources",
    "consulted": "Undated web pages accessed in October 2026.",
    "editable_hint": "Lengths are editable: adjust them to the breed or your herd's records.",
    "source_cow": "INRAE (PFIE platform): 280 days on average. Réussir (2020): from 277 days (Holstein) to 295 days (Blonde d'Aquitaine) depending on breed; Charolais and Limousin about 290 days.",
    "source_ewe": "Idele, French livestock institute (2019): 147 days, plus or minus 5 days.",
    "source_goat": "Merck Veterinary Manual, \"Pregnancy in Goats\": 145 to 155 days, 150 on average.",
    "source_sow": "IFIP, French pig institute, GTTT 2023 benchmarks (2024 edition): 114.8 to 115.0 days on average. 3tres3: 112 to 119 days.",
    "source_mare": "IFCE, French horse institute (équipédia): about 11 months (≈ 335 days), normally 320 to more than 365 days.",
    "source_jenny": "Merck Veterinary Manual: 365 days. IFCE (équipédia): 360 to 380 days.",
    "source_bitch": "Merck Veterinary Manual (2025): 58 to 72 days after the first breeding; 62 to 64 days after ovulation (63 days used).",
    "source_queen": "Merck Veterinary Manual: 65 days. Musters et al., Theriogenology (2011): 65.3 days on average, 57 to 72 days.",
    "due_cow": "Expected calving date: {{date}}",
    "due_ewe": "Expected lambing date: {{date}}",
    "due_goat": "Expected kidding date: {{date}}",
    "due_sow": "Expected farrowing date: {{date}}",
    "due_mare": "Expected foaling date: {{date}}",
    "due_jenny": "Expected foaling date: {{date}}",
    "due_bitch": "Expected whelping date: {{date}}",
    "due_queen": "Expected kittening date: {{date}}",
    "answer_detail": "{{species}}: {{days}} days after breeding on {{date}}",
    "earliest": "Earliest",
    "latest": "Latest",
    "remaining": "Days remaining",
    "overdue": "Days past due date",
    "gestation_day": "Gestation day today",
    "invalid_date": "Enter a valid breeding date.",
    "milestones_title": "Key dates",
    "milestone_dry_off": "Dry off around {{date}}, {{days}} days before the expected calving.",
    "milestone_dry_off_source": "Two-month dry period: the average Idele observed across nearly 3 million dry-offs from 2015 to 2017, in line with recommendations (reported by Réussir).",
    "milestone_goat_scan": "Ultrasound possible from {{from}} (day 30), most accurate from {{reliable}} (day 45).",
    "milestone_goat_source": "Merck Veterinary Manual, \"Pregnancy in Goats\".",
    "note_equine": "IFCE points out that gestation varies widely in equids: the expected date mainly tells you when to start close monitoring.",
    "note_bitch": "Counted from breeding, gestation ranges from 58 to 72 days; the ovulation date (progesterone testing) narrows it to 62-64 days.",
    "vet_note": "These dates are averages. To confirm pregnancy, if birth is late or at any abnormal sign, consult a veterinarian."
  },
  "horizontal-tank-volume-calculator": {
    "heading": "Horizontal cylindrical tank volume",
    "subheading": "Liquid volume from the dipstick level: heating oil, diesel, water, slurry.",
    "inputs_title": "Tank dimensions",
    "units": "Units",
    "units_metric": "Metric (cm, litres)",
    "units_imperial": "US (inches, US gallons)",
    "unit_in": "in",
    "unit_gal": "US gal",
    "diameter": "Inside diameter",
    "length": "Straight shell length (excluding heads)",
    "heads": "Tank heads (ends)",
    "heads_flat": "Flat",
    "heads_ellipsoidal": "2:1 elliptical (depth D/4)",
    "heads_hemispherical": "Hemispherical (depth D/2)",
    "heads_depth_note": "Depth of each head: {{a}}, added to the straight length.",
    "level": "Liquid height (dipstick)",
    "level_over": "The height exceeds the diameter, so the tank is counted as full.",
    "result_title": "Contents at this level",
    "answer": "{{h}} of liquid in a {{d}} diameter tank: {{v}}, or {{pct}} full",
    "liquid": "Liquid in tank",
    "free": "Free space (to order)",
    "total": "Total capacity",
    "fill": "Fill level",
    "total_m3": "Total capacity: {{m3}} m³.",
    "total_litres": "In litres: {{l}} L of liquid out of {{lt}} L capacity.",
    "manufacturer_note": "Geometric calculation for a perfectly cylindrical, level tank. The manufacturer's gauge chart takes precedence: wall thickness, stiffeners, dents or a sloped installation change the real volume.",
    "table_title": "Gauge chart ({{step}} steps)",
    "table_show": "Show chart",
    "table_hide": "Hide chart",
    "table_copy": "Copy",
    "table_print": "Print",
    "col_height": "Height",
    "col_volume": "Volume",
    "col_fill": "Fill"
  },
  "livestock-unit-stocking-rate-calculator": {
    "heading": "Herd livestock units and stocking rate",
    "subheading": "France's CAP grid (ICHN notice) or the European Union Eurostat grid, with editable coefficients.",
    "grid_label": "Coefficient grid",
    "grid_fr": "France: CAP, ICHN notice 2026",
    "grid_eu": "European Union: Eurostat (LSU)",
    "source_fr": "Source: French Ministry of Agriculture, notice \"Indemnités compensatoires de handicaps naturels (ICHN)\", CAP application 2026, on telepac. Calves under 6 months have no coefficient in this grid.",
    "source_eu": "Source: Eurostat, glossary \"Livestock unit (LSU)\", coefficients for the 2020, 2023 and 2026 surveys (page edited on {{date}}). No equidae coefficient since 2020: the tool uses 0.8, the value of the 2005 to 2016 surveys.",
    "herd_title": "Herd",
    "col_category": "Category",
    "col_count": "Head",
    "col_coef": "LSU/head",
    "coef_for": "LSU coefficient: {{cat}}",
    "row_lsu": "= {{ugb}} LSU",
    "reset_coefs": "Restore coefficients",
    "note_edit": "Coefficients are editable: enter the ones from your scheme's specifications if it sets different values.",
    "surface_label": "Forage area",
    "surface_hint": "For the French ICHN: grassland, forage crops and home-fed cereals that are not sold, plus your share of common grazing.",
    "result_title": "Result",
    "answer": "{{ugb}} LSU on {{ha}} ha of forage area = {{rate}} LSU/ha",
    "invalid_surface": "Enter a forage area above zero to get the stocking rate.",
    "copy_label": "Copy result",
    "total_label": "Total LSU",
    "rate_label": "Stocking rate (LSU/ha)",
    "grid_used": "Grid used: {{grid}}",
    "benchmarks_title": "Official benchmarks",
    "ichn_min": "ICHN in France: a livestock farmer must keep at least {{lsu}} LSU of herbivores or pigs and {{ha}} ha of eligible forage area (ICHN notice 2026). Cattle are counted over 12 months from the BDNI register, equines only if they are active breeders or aged 6 months to 3 years and not in training, and pigs count although this grid has no pig coefficient.",
    "ichn_ok": "Threshold met with this herd (subject to the rules above).",
    "ichn_ko": "Threshold not met with this herd.",
    "ichn_range": "The ICHN minimum stocking rate, ceiling and optimal range are set by prefectoral order for each disadvantaged zone: ask your DDT(M) or DAAF.",
    "eu_none": "This grid is used for Eurostat statistics: no regulatory stocking threshold is attached to it.",
    "fr_dairy": "Dairy cows (cattle over 2 years)",
    "fr_suckler": "Suckler cows (cattle over 2 years)",
    "fr_other_2y": "Other cattle over 2 years (bulls, steers, heifers)",
    "fr_6m_2y": "Cattle from 6 months to 2 years",
    "fr_sheep": "Sheep over 1 year or that have lambed",
    "fr_goats": "Goats over 1 year or that have kidded",
    "fr_equines": "Equines over 6 months",
    "fr_llamas": "Llamas over 2 years",
    "fr_alpacas": "Alpacas over 2 years",
    "fr_deer": "Red deer over 2 years",
    "fr_fallow": "Fallow deer over 2 years",
    "eu_dairy": "Dairy cows",
    "eu_other_cows": "Other cows aged 2 years and over (suckler)",
    "eu_male_2y": "Male cattle aged 2 years and over",
    "eu_heifers_2y": "Heifers aged 2 years and over",
    "eu_1_2y": "Cattle from 1 to under 2 years",
    "eu_under_1y": "Cattle under 1 year",
    "eu_sheep": "Sheep",
    "eu_goats": "Goats",
    "eu_equidae": "Equidae (2005-2016 coefficient)",
    "eu_sows": "Breeding sows of 50 kg and over",
    "eu_piglets": "Piglets under 20 kg",
    "eu_other_pigs": "Other pigs",
    "eu_broilers": "Broilers",
    "eu_hens": "Laying hens",
    "eu_rabbits": "Breeding female rabbits"
  },
  "soil-analysis-unit-converter": {
    "heading": "Soil test unit converter",
    "subheading": "meq/100 g, cmol(+)/kg, mg/kg, kg/ha and lb/ac for K, Ca, Mg and Na, as element or oxide.",
    "inputs_title": "Lab report value",
    "element_label": "Element",
    "el_K": "Potassium (K)",
    "el_Ca": "Calcium (Ca)",
    "el_Mg": "Magnesium (Mg)",
    "el_Na": "Sodium (Na)",
    "value_label": "Measured value",
    "unit_label": "Unit on the report",
    "basis_label": "Expressed as",
    "basis_element": "Element ({{el}})",
    "basis_oxide": "Oxide ({{ox}})",
    "basis_hint": "Charge units (meq/100 g, cmol(+)/kg) count charges, so they make no element or oxide distinction.",
    "layer_title": "Soil layer (for kg/ha and lb/ac)",
    "depth_label": "Depth",
    "density_label": "Bulk density",
    "preset_plough": "Plough layer: {{depth}} cm × {{density}} t/m³",
    "preset_us": "2 million lb/acre: {{depth}} cm × {{density}} t/m³ (factor {{factor}})",
    "soil_mass": "Soil mass: {{mass}} t/ha. In this layer, 1 mg/kg = {{factor}} kg/ha.",
    "answer_title": "Result",
    "answer_charge": "{{value}} {{unit}} of {{el}} = {{ppm}} mg/kg of {{el}} ({{ppmOx}} mg/kg of {{ox}}) = {{kghaEl}} kg/ha of {{el}}, or {{kghaOx}} kg/ha of {{ox}}, over {{depth}} cm at {{density}} t/m³",
    "answer_mass": "{{value}} {{unit}} of {{species}} = {{meq}} meq/100 g of {{el}} = {{ppm}} mg/kg of {{el}} = {{kghaOx}} kg/ha of {{ox}} over {{depth}} cm at {{density}} t/m³",
    "invalid": "Enter a positive value and a depth and bulk density above zero.",
    "copy_label": "Copy result",
    "table_title": "All units",
    "col_unit": "Unit",
    "source_note": "Atomic weights from CIAAW (IUPAC), abridged table 2024: K {{K}}, Ca {{Ca}}, Mg {{Mg}}, Na {{Na}}, O {{O}}. Oxide/element factors: K₂O/K {{fK}}, CaO/Ca {{fCa}}, MgO/Mg {{fMg}}, Na₂O/Na {{fNa}}.",
    "note_layer": "The kg/ha and lb/ac values depend on the layer you choose: use your sampling depth and, if you can, the measured bulk density of your field."
  },
  "eu-customs-allowance-calculator": {
    "title": "EU customs allowances for travellers",
    "subtitle": "Traveller arriving from outside the EU: value allowance (€430 or €300), tobacco and alcohol, under Directive 2007/74/EC.",
    "trip_title": "Your arrival",
    "transport_label": "Means of transport",
    "transport_airsea": "Plane or ship (sea)",
    "transport_other": "Car, train, coach or inland waterway",
    "age_label": "Traveller's age",
    "age_adult": "{{n}} or older",
    "age_teen": "{{a}} to {{b}}",
    "age_child": "Under {{n}}",
    "threshold_label": "Value threshold (€)",
    "threshold_hint": "Leave empty for the EU threshold; a country may set less for under-15s.",
    "goods_title": "Goods bought outside the EU (value in €)",
    "goods_hint": "One item per line, at purchase price. Leave out tobacco, alcohol and fuel: they have their own allowances.",
    "item_name_aria": "Name of item {{n}}",
    "item_placeholder": "Item {{n}}",
    "item_value_aria": "Value of item {{n}} in euros",
    "remove": "Remove this item",
    "add_item": "Add an item",
    "value_result_title": "Value allowance",
    "covered": "Covered by the allowance",
    "to_declare": "To declare and pay tax on",
    "threshold_used": "Threshold applied: {{amount}} for {{total}} of purchases. The tool keeps the combination of items that exempts the most.",
    "value_ok": "All your purchases fit within the allowance: nothing to declare for these items.",
    "value_over": "These items exceed the allowance: declare them; customs duty and VAT are due on their full value.",
    "item_above": "Above the threshold on its own: taxed on its full value, with no deduction.",
    "no_split": "An item's value cannot be split or shared between travellers: a family of four cannot pool 4 × €430 for a €1,720 device.",
    "tobacco_title": "Tobacco",
    "reduced_label": "Reduced limits: arriving by land or sea in Bulgaria, Croatia, Greece, Hungary, Latvia, Lithuania, Poland or Slovakia, or arriving in Estonia or Romania",
    "tob_cigarettes": "Cigarettes (max. {{max}})",
    "tob_cigarillos": "Cigarillos (max. {{max}})",
    "tob_cigars": "Cigars (max. {{max}})",
    "tob_tobacco": "Smoking tobacco in g (max. {{max}})",
    "nothing": "Nothing entered in this category.",
    "minor_no": "Under {{n}}, there is no allowance for tobacco or alcohol: everything must be declared.",
    "share_ok": "Tobacco allowance used at {{pct}}%: nothing to declare.",
    "share_over": "Tobacco allowance used at {{pct}}%: the excess must be declared (duty, excise and VAT).",
    "tobacco_rule": "A single tobacco allowance that can be split: 100 cigarettes (50%) leave room for, say, 50 cigarillos or 25 cigars.",
    "alcohol_title": "Alcohol",
    "alc_spirits": "Over 22% vol., in L (max. {{max}})",
    "alc_intermediate": "22% vol. or less (sparkling, fortified wine), in L (max. {{max}})",
    "alc_wine": "Still wine, in L (max. {{max}})",
    "alc_beer": "Beer, in L (max. {{max}})",
    "spirits_ok": "Spirits and drinks ≤ 22% share: {{pct}}% of the allowance, nothing to declare.",
    "spirits_over": "Spirits and drinks ≤ 22% share: {{pct}}% of the allowance; the excess must be declared.",
    "wine_ok": "Still wine within the allowance.",
    "wine_over": "Still wine: {{excess}} L above the allowance, to declare.",
    "beer_ok": "Beer within the allowance.",
    "beer_over": "Beer: {{excess}} L above the allowance, to declare.",
    "alcohol_rule": "1 L over 22% or 2 L at 22% or less can be shared (0.5 L whisky + 1 L sparkling = 100%); the 4 L of wine and 16 L of beer come on top.",
    "note": "European Union rule, with the same ceilings in all 27 countries; some countries apply lower limits (tobacco, under-15s) and special rules for border residents and transport staff, not calculated here. Duty and VAT due above the allowance are not estimated. Check with the customs of the country of arrival."
  },
  "motorway-vignette-cost-calculator": {
    "title": "Motorway vignettes for Switzerland, Austria and Slovenia: cheapest option",
    "subtitle": "Enter your motorway driving days in Switzerland, Austria and Slovenia: the tool picks the cheapest combination of 2026 vignettes for a car up to 3.5 t.",
    "trips_title": "Motorway driving days",
    "trips_hint": "One line per trip: every day of the period counts as a driving day in the ticked countries. For the outward and return legs of a stay, enter two one-day lines.",
    "start_label": "From",
    "end_label": "To (inclusive)",
    "countries_legend": "Countries driven through on motorways",
    "country_CH": "Switzerland",
    "country_AT": "Austria",
    "country_SI": "Slovenia",
    "remove_trip": "Remove this trip",
    "add_trip": "Add a trip",
    "total_label": "Total vignette cost",
    "total_both": "{{chf}} + {{eur}}",
    "no_conversion": "The Swiss vignette is paid in Swiss francs, the Austrian and Slovenian ones in euros: amounts are not converted.",
    "late_warning": "Some days fall on or after 1 December 2026, in the 2027 vignette year whose prices were not published on 15/10/2026: 2026 prices are applied, edit them if needed.",
    "no_days": "No driving days in this country: no vignette needed.",
    "days_count": "Driving days: {{n}}",
    "p_ch_year": "Annual vignette",
    "p_at_day": "1-day vignette (digital)",
    "p_at_10days": "10-day vignette",
    "p_at_2months": "2-month vignette",
    "p_at_year": "Annual vignette",
    "p_si_week": "7-day e-vignette",
    "p_si_month": "1-month e-vignette",
    "p_si_year": "1-year e-vignette",
    "valid_range": "Valid from {{from}} to {{to}}",
    "subtotal": "Subtotal",
    "prices_title": "2026 prices checked on {{date}} (editable)",
    "price_label": "{{country}}, {{product}} ({{cur}})",
    "reset_prices": "Reset to 2026 prices",
    "note_18days": "Austria: a digital 2-month or annual vignette bought online is only valid from the 18th day after purchase (cooling-off right); buy it early enough or at a sales outlet. Slovenia: the e-vignette is linked to the number plate and bought with its start date.",
    "note_scope": "Cars up to 3.5 t (in Slovenia, class 2A: height up to 1.3 m above the front axle, otherwise the dearer class 2B); motorcycles, trailers and heavy vehicles (distance-based toll) are out of scope. Tunnels and special toll roads (Great St Bernard, Karawanken, Brenner…) are charged on top."
  },
  "recherche-livre-isbn": {
    "heading": "Book lookup by ISBN",
    "subheading": "Check the check digit of an ISBN-10 or ISBN-13, convert it and find the title, author, publisher and cover in Open Library.",
    "input_label": "ISBN (10 or 13 digits, hyphens optional)",
    "placeholder": "e.g. 978-0-14-032872-1",
    "search": "Search",
    "valid_check": "Valid check digit",
    "isbn13_label": "ISBN-13",
    "isbn10_label": "ISBN-10",
    "no_isbn10": "none (979 prefix)",
    "invalid_check": "Wrong check digit: with these digits, the last character should be {{expected}}. Please check your entry.",
    "invalid_format": "An ISBN has 10 characters (the last one may be X) or 13 digits.",
    "invalid_prefix": "An ISBN-13 starts with 978 or 979. This looks like another kind of barcode (EAN).",
    "not_found_hint": "Open Library does not list every book, especially recent or small-run editions outside the US and UK. Try the other ISBN form or another edition.",
    "cover_alt": "Cover of “{{title}}”",
    "authors": "Author(s)",
    "publisher": "Publisher",
    "published": "Publication date (as listed)",
    "pages": "Number of pages",
    "subjects": "Subjects listed by Open Library",
    "open_link": "View the record on Open Library",
    "check_note": "The check digit is verified in your browser before any request: for ISBN-10, the sum of the digits weighted 10 down to 1 must be divisible by 11 (X stands for 10); for ISBN-13, the sum weighted 1, 3, 1, 3… must be divisible by 10. Only a valid ISBN is sent to Open Library."
  },
  "fiche-wikipedia-resume": {
    "heading": "Wikipedia article summary",
    "subheading": "An article's introduction, short description and image, to read or print, from {{domain}}.",
    "input_label": "Topic or article title",
    "placeholder": "e.g. Ada Lovelace",
    "search": "Show",
    "not_found_hint": "No article has exactly this title. Pick one of the suggestions shown as you type: the title must match the article's.",
    "disambiguation": "This title is a disambiguation page listing several topics. Refine your search (for example with the field or a date).",
    "image_alt": "Illustration for the article “{{title}}”",
    "read_article": "Read the full article on Wikipedia",
    "print": "Print this summary",
    "attribution": "Text taken from the Wikipedia article “{{title}}”, published under the Creative Commons Attribution-ShareAlike 4.0 licence (CC BY-SA 4.0). Its authors are listed in the article's history.",
    "authors_link": "History and authors",
    "license_link": "CC BY-SA 4.0 licence text",
    "source_name": "Wikipedia"
  },
  "pokedex-stats-faiblesses": {
    "heading": "Pokédex: Pokémon stats and weaknesses",
    "subheading": "Base stats, types, height, weight and damage multipliers taken from each attack type.",
    "input_label": "Pokémon (name or number)",
    "placeholder": "e.g. charizard or 6",
    "search": "Show",
    "input_hint": "PokéAPI expects the English name or the National Pokédex number. Forms: charizard-mega-x, raichu-alola…",
    "not_found_hint": "PokéAPI does not know this name. Try the number instead (1 to 1025 for the National Pokédex).",
    "number": "No. {{n}}",
    "height": "Height",
    "weight": "Weight",
    "stats_title": "Base stats",
    "stat_hp": "HP",
    "stat_attack": "Attack",
    "stat_defense": "Defense",
    "stat_special_attack": "Sp. Atk",
    "stat_special_defense": "Sp. Def",
    "stat_speed": "Speed",
    "stat_total": "Total",
    "matchup_title": "Damage taken by attack type",
    "group_4": "Very weak (×4)",
    "group_2": "Weak (×2)",
    "group_0_5": "Resists (×½)",
    "group_0_25": "Strongly resists (×¼)",
    "group_0": "Immune (×0)",
    "abilities_note": "Multipliers are calculated from types only (Generation 6 onward chart): an ability such as Levitate (Ground immunity) or Water Absorb is not taken into account.",
    "trademark": "Pokémon and Pokémon character names are trademarks of Nintendo; data from PokéAPI, an unofficial community project.",
    "matchup_link": "Compare any type combination in the weakness calculator"
  },
  "prochains-jours-feries": {
    "heading": "Upcoming public holidays and long weekends",
    "subheading": "Countdown to the next public holiday, the full list for the year and possible bridge days",
    "country": "Country",
    "uk_scope": "United Kingdom (England and Wales)",
    "year": "Year",
    "next": "Next public holiday",
    "is_today": "It's today",
    "bridge_monday": "Bridge day: take the Monday off",
    "bridge_friday": "Bridge day: take the Friday off",
    "calendar_hint": "To see holidays month by month:",
    "calendar_link": "open the calendar",
    "list_title": "Public holidays {{year}}",
    "stat_total": "Holidays",
    "stat_weekday": "On weekdays",
    "stat_bridges": "Bridge days",
    "weekend": "Falls on a weekend",
    "past": "Past",
    "scope_FR": "The 11 French national public holidays. Alsace and Moselle also observe Good Friday and 26 December, not shown. In the private sector only 1 May must be a day off; Whit Monday is often the unpaid 'solidarity day'.",
    "scope_US": "The 11 US federal holidays. When one falls on a Saturday or Sunday, the day off moves to the Friday or Monday: that observed day is not shown. States and private employers set their own days off.",
    "scope_UK": "Bank holidays in England and Wales. Scotland and Northern Ireland have different ones. The substitute day given when a bank holiday falls on a weekend is not shown.",
    "scope_DE": "The 9 public holidays common to all of Germany. Each federal state adds others (Epiphany, Corpus Christi, All Saints' Day, Reformation Day…), not shown.",
    "scope_ES": "The Spanish national holidays used by the tool. Each autonomous community adds or replaces some of them, not shown; a holiday falling on a Sunday may move to the Monday depending on the region.",
    "scope_BR": "Brazil's 10 national holidays, set each year by the Ministry of Management (MGI portaria). Carnival, Ash Wednesday and Corpus Christi are only optional days (pontos facultativos), not shown; each state and municipality adds its own holidays.",
    "scope_IT": "Italy's 12 national public holidays (Law 260/1949). 4 October, the feast of St Francis of Assisi, is a public holiday again from 2026. Easter Sunday and each town's patron saint day are not shown."
  },
  "seismes-temps-reel": {
    "heading": "Live earthquakes around the world",
    "subheading": "Map and list of earthquakes published by the USGS: magnitude, depth, time and distance from your address.",
    "feed_label": "Period and threshold",
    "feed_day": "Past 24 hours, all earthquakes",
    "feed_week": "Past 7 days, magnitude 2.5 and above",
    "feed_month": "Past 30 days, significant earthquakes",
    "sort_label": "Sort the list by",
    "sort_time": "Most recent",
    "sort_mag": "Highest magnitude",
    "sort_dist": "Closest to the address",
    "address_label": "Address in France (optional)",
    "address_note": "Address search covers France only, and the location button works in France only. It is used to compute the straight-line distance.",
    "clear_address": "Remove address",
    "count": "Earthquakes in this feed",
    "max_mag": "Strongest magnitude",
    "nearest": "Nearest earthquake",
    "nearest_detail": "Magnitude {{mag}} · {{place}}",
    "nearest_empty": "Choose an address to see the distance.",
    "map_title": "Epicentre map",
    "map_alt": "Simplified world map with {{n}} epicentres, coloured by magnitude",
    "legend_small": "Below 4.5",
    "legend_mid": "4.5 to 5.9",
    "legend_big": "6 and above",
    "legend_place": "Your address",
    "list_title": "List (first {{n}} of {{total}})",
    "no_quakes": "No earthquakes in this feed right now.",
    "depth": "depth {{km}} km",
    "distance": "{{km}} km from the address",
    "event_link": "Details",
    "event_link_aria": "Earthquake details on the USGS website: {{place}}",
    "time_note": "Times are shown in your device's time zone. Places are as published by the USGS, as distance and direction from the nearest town.",
    "richter_note": "The original Richter scale is no longer used as such: the USGS publishes moment magnitude (Mw, shown as mww, mwr…) for moderate and large earthquakes, and a local (ml) or duration (md) magnitude for small ones. The type is shown under each magnitude. One whole step means about 32 times more energy released.",
    "source_name": "USGS Earthquake Hazards Program",
    "license": "public domain"
  },
  "stats-joueur-chess-com": {
    "heading": "Chess player stats",
    "subheading": "Rating per time control on Chess.com or Lichess, wins, draws and losses, and the trend over 12 months.",
    "input_label": "Chess.com username",
    "placeholder": "e.g. magnuscarlsen",
    "search": "Show",
    "invalid_user": "A Chess.com username only contains letters, digits, “_” or “-”.",
    "not_found_hint": "No Chess.com account has this username. Check the spelling: the display name on a profile can differ from the username.",
    "avatar_alt": "Avatar of {{user}}",
    "country": "Country",
    "league": "League",
    "followers": "Followers",
    "joined": "Joined",
    "last_online": "Last online",
    "profile_link": "View profile on Chess.com",
    "mode_bullet": "Bullet",
    "mode_blitz": "Blitz",
    "mode_rapid": "Rapid",
    "mode_daily": "Daily",
    "rd": "Rating deviation (RD): ±{{rd}}",
    "best_rating": "Best",
    "record": "W / D / L",
    "win_rate": "Win rate",
    "no_games": "No rated games in this time control.",
    "other_title": "Puzzles and FIDE rating",
    "tactics_best": "Highest puzzle rating",
    "puzzle_rush_best": "Puzzle Rush best score",
    "fide_declared": "FIDE rating shown on the profile",
    "source_name": "Chess.com Published-Data API",
    "glicko_note": "Chess.com computes its ratings with the Glicko system, not with FIDE Elo, so numbers are not comparable across sites. RD measures uncertainty (the lower, the more reliable the rating). Public data served through the Chess.com cache: a very recent game may not appear yet.",
    "elo_link": "Work out a win probability and an Elo rating change",
    "site_label": "Chess site",
    "lichess_input_label": "Lichess username",
    "lichess_placeholder": "e.g. DrNykterstein",
    "lichess_invalid_user": "A Lichess username only contains letters, digits, \"_\" or \"-\".",
    "lichess_not_found_hint": "No Lichess account has this username. Check the spelling.",
    "lichess_disabled": "This Lichess account is closed: Lichess no longer publishes its stats.",
    "lichess_profile_link": "View profile on Lichess",
    "lichess_games": "Games played",
    "lichess_rated_games": "Rated games",
    "lichess_provisional": "Provisional rating (\"?\" on Lichess): its RD is above 110.",
    "lichess_record_title": "Lichess record, all games",
    "lichess_record_note": "Lichess publishes a single record for all of the account's games, casual games and variants included, with no breakdown by time control.",
    "lichess_history_uncached": "Without a login, Lichess only returns the rating history when it holds a cached copy, and there is none for this account right now.",
    "lichess_source_name": "Lichess public API",
    "lichess_glicko_note": "Lichess computes its ratings with the Glicko-2 system, not with FIDE Elo, so the same number does not mean the same thing on Lichess, on Chess.com and at FIDE. RD measures uncertainty (the lower, the more reliable the rating).",
    "mode_classical": "Classical",
    "mode_correspondence": "Correspondence",
    "history_title": "Rating trend over 12 months",
    "history_hint": "The chart and the opening stats are built from the Chess.com monthly game archives, read one after the other (12 months at most). For a very active player one month can exceed 2 MB, so loading can take up to a minute.",
    "history_load": "Show the chart and openings",
    "history_progress": "Reading archives: {{done}} of {{total}} months…",
    "history_empty": "No rated games in the last 12 months.",
    "history_col_mode": "Time control",
    "history_col_first": "Start",
    "history_col_last": "Latest",
    "history_col_change": "Change",
    "history_col_min": "Min",
    "history_col_max": "Max",
    "openings_title": "Stats by opening (12 months)",
    "openings_note": "Rated standard games analyzed: {{n}}. They are grouped by opening family, under the name Chess.com gives them.",
    "openings_white": "As White",
    "openings_black": "As Black",
    "openings_col_name": "Opening",
    "openings_col_games": "Games",
    "openings_more": "Show all {{n}} families",
    "openings_less": "Show fewer",
    "openings_none": "No games with this color."
  },
  "velib-disponibilite-stations": {
    "heading": "Vélib': bikes and free docks near you",
    "subheading": "Mechanical bikes, e-bikes and free docks at Vélib' Métropole stations, in real time",
    "default_place": "Hôtel de Ville, Paris",
    "radius": "Search radius",
    "zone_note": "Vélib' Métropole covers Paris and around sixty neighbouring towns. Elsewhere, no station will appear.",
    "outside_zone": "This address is outside the Vélib' area: the service only covers Paris and towns in the Greater Paris metropolis. Pick an address in the Île-de-France region.",
    "summary": "Stations within {{radius}}: {{n}}",
    "mechanical": "Mechanical bikes",
    "ebike": "E-bikes",
    "docks": "Free docks",
    "mechanical_short": "mechanical",
    "ebike_short": "electric",
    "docks_short": "docks",
    "no_station": "No Vélib' station within this radius. Widen the radius; if nothing shows up at 1 km, the address is probably outside the service area (Paris and around sixty neighbouring towns).",
    "distance": "{{m}} m away",
    "capacity": "{{n}} docks in total",
    "reported": "status sent {{when}}",
    "closed": "Station closed for rentals and returns",
    "no_renting": "Rentals unavailable for now",
    "no_returning": "Returns unavailable for now",
    "freshness_note": "Data refreshed about every minute by Vélib' Métropole; the tool reloads them at most every 60 seconds. A bike shown may be taken in the meantime, and a broken bike may be counted as available.",
    "source_name": "Paris Data, Vélib' Métropole",
    "truncated": "Only the {{n}} nearest stations are listed and added up; reduce the radius for an exact count."
  },
  "coordonnees-gps-adresse": {
    "title": "GPS coordinates of an address, and address of a GPS point",
    "subtitle": "Decimal degrees and degrees-minutes-seconds, both ways, for addresses in France.",
    "address_to_gps": "Address → GPS coordinates",
    "gps_to_address": "GPS coordinates → address",
    "coords_label": "Latitude, longitude",
    "convert": "Convert",
    "coords_hint": "Accepted formats: 48.8584, 2.2945 · 48°51'30\"N 2°17'40\"E · N 48 51.5 E 2 17.7 · W for west, minus sign also accepted.",
    "error_format": "Format not recognised: enter a latitude then a longitude (minutes and seconds below 60).",
    "error_range": "Out of range: latitude runs from −90 to 90 and longitude from −180 to 180.",
    "decimal_degrees": "Decimal degrees (latitude, longitude)",
    "dms": "Degrees, minutes, seconds",
    "nearest_address": "Address",
    "distance_m": "about {{value}} m from the point",
    "no_address": "No address found near this point. The Géoplateforme only covers France (mainland and overseas): the coordinates above are still valid.",
    "source_name": "IGN Géoplateforme geocoding service (France)",
    "license": "Etalab Open Licence 2.0",
    "france_only": "Address search and reverse lookup use the French national address database through IGN's Géoplateforme, so they only work in France. The conversion between formats works anywhere in the world (WGS 84, the GPS system)."
  },
  "qualite-eau-robinet-commune": {
    "heading": "Tap water quality in a French municipality",
    "subheading": "Latest results of the regional health agencies' (ARS) official testing: compliance, nitrates, pesticides, E. coli, pH and hardness.",
    "no_data": "No sample published for this municipality in Hub'Eau.",
    "last_sample": "Latest published sample: {{date}}, {{city}}",
    "status_conform": "Compliant with quality limits",
    "status_not_conform": "Not compliant with at least one quality limit",
    "status_unknown": "Compliance not stated",
    "ars_conclusion": "ARS conclusion (published in French):",
    "distributor": "Water supplier: {{name}}",
    "param_NO3": "Nitrates",
    "param_PESTOT": "Total pesticides",
    "param_ECOLI": "Escherichia coli",
    "param_PH": "pH",
    "param_TH": "Hardness (TH)",
    "unit_french_degree": "°fH (French degrees)",
    "limit_NO3": "Quality limit: 50 mg/L maximum.",
    "limit_PESTOT": "Quality limit: 0.5 µg/L maximum for the total (0.1 µg/L per substance).",
    "limit_ECOLI": "Quality limit: 0 per 100 mL.",
    "limit_PH": "Quality reference: between 6.5 and 9 (a benchmark, not a limit).",
    "limit_TH": "No regulatory limit or reference for hardness.",
    "within": "Within the limit",
    "outside": "Outside the limit",
    "th_conversion": "That is {{mmol}} mmol/L or {{dh}} °dH (German degrees).",
    "not_measured": "No published result for this parameter.",
    "networks_title": "Distribution networks (UDI) serving the municipality in {{year}}: {{n}}",
    "udi_note": "A sample is attached to a distribution unit (UDI) that may serve several municipalities, and a municipality may be supplied by several UDIs: the value shown describes the network, not necessarily a tap in your neighbourhood. Each parameter comes from the latest sample in which it was measured.",
    "source_name": "Hub'Eau, drinking water quality (OFB, French Ministry of Health)",
    "license": "Etalab Open Licence",
    "ph_within": "Within the reference range",
    "ph_outside": "Outside the reference range"
  },
  "resultats-lycees-bac": {
    "heading": "French high school baccalauréat results: pass rate, honours and value added",
    "subheading": "Official indicators (IVAL) for general and technological lycées, published by the French Ministry of Education (DEPP).",
    "search_label": "School, town or UAI code",
    "search_placeholder": "E.g. Henri IV, Annecy or 0750654D",
    "search_button": "Search",
    "search_hint": "Searches the school name or the town; press Enter to search.",
    "no_result": "No general or technological lycée found.",
    "truncated": "List limited: refine your search to see other schools.",
    "not_published": "not published",
    "va_points": "{{value}} pts",
    "va_label": "Value added:",
    "sector_public": "state school",
    "sector_private": "private (state-contracted)",
    "session": "{{year}} baccalauréat session",
    "academy": "académie of {{name}}",
    "candidates": "candidates: {{n}}",
    "kpi_success": "Pass rate",
    "kpi_mentions": "Honours rate",
    "kpi_access": "From year 10 (seconde) to the bac",
    "va_explained": "Value added: gap, in points, between the actual rate and the rate expected given the pupils' profile (age, results at the brevet, social background). Positive means the school did better than expected.",
    "by_series": "Results by track",
    "col_series": "Track",
    "col_candidates": "Candidates",
    "col_success": "Pass rate",
    "col_va": "Value added",
    "col_mentions": "Honours",
    "series_gnle": "General bac",
    "series_sti2d": "STI2D",
    "series_stmg": "STMG",
    "series_std2a": "STD2A",
    "series_stl": "STL",
    "series_st2s": "ST2S",
    "series_s2tmd": "S2TMD",
    "series_sthr": "STHR",
    "series_l": "L track",
    "series_es": "ES track",
    "series_s": "S track",
    "mentions_title": "Number of honours",
    "col_mention": "Honour",
    "col_general": "General bac",
    "col_techno": "Technological bac",
    "mention_tb_avecf": "Très bien with the jury's congratulations",
    "mention_tb_sansf": "Très bien (highest honours)",
    "mention_b": "Bien (high honours)",
    "mention_ab": "Assez bien (honours)",
    "thresholds": "Publication thresholds: no rate below 20 candidates, and no value added or honours count below 40 candidates.",
    "history": "Trend by session",
    "col_session": "Session",
    "source_name": "DEPP, value-added indicators of French lycées",
    "license": "Etalab Open Licence 2.0"
  },
  "vacances-scolaires-zone": {
    "heading": "French school holidays by zone: next dates and countdown",
    "subheading": "Official calendar of the French Ministry of Education: zones A, B, C, Corsica and overseas territories.",
    "zone_label": "Zone or territory",
    "zone_a": "Zone A",
    "zone_b": "Zone B",
    "zone_c": "Zone C",
    "zone_corse": "Corsica",
    "zone_guadeloupe": "Guadeloupe",
    "zone_martinique": "Martinique",
    "zone_guyane": "French Guiana",
    "zone_reunion": "Réunion",
    "zone_mayotte": "Mayotte",
    "zone_polynesie": "French Polynesia",
    "zone_spm": "Saint Pierre and Miquelon",
    "zone_nc": "New Caledonia",
    "zone_wf": "Wallis and Futuna",
    "academies": "Education authorities (académies):",
    "convention": "Dataset convention: pupils leave after classes on the first date shown and return on the morning of the second. For the Ascension long weekend, the published start date is the public holiday Thursday or the single Friday off. Dates in Paris time.",
    "empty": "No upcoming holiday is published for this territory.",
    "next_holiday": "Next holiday",
    "last_class": "Holiday starts after classes on",
    "back_to_school": "Classes resume on the morning of",
    "days_off": "Days off (weekends included)",
    "upcoming": "Upcoming calendar",
    "range": "From {{start}} to {{end}}",
    "school_year": "school year {{year}}",
    "applies_to": "Applies to: {{list}}",
    "starts_in_one": "In {{count}} day",
    "starts_in_other": "In {{count}} days",
    "today": "Today",
    "starts_tonight": "Starts tonight after classes",
    "ongoing_one": "Under way, school resumes in {{count}} day",
    "ongoing_other": "Under way, school resumes in {{count}} days",
    "h_toussaint": "Autumn (All Saints') holidays",
    "h_noel": "Christmas holidays",
    "h_hiver": "Winter holidays",
    "h_printemps": "Spring holidays",
    "h_ete": "Summer holidays",
    "h_ascension": "Ascension long weekend",
    "source_name": "French Ministry of Education, school calendar",
    "license": "Etalab Open Licence 2.0",
    "starts_in": "Starts {{when}}",
    "ongoing": "Under way, school resumes {{when}}"
  },
  "bornes-recharge-irve": {
    "heading": "EV charging points near a French address: power, plugs, access",
    "subheading": "French national register of EV charging infrastructure (IRVE), consolidated by Etalab.",
    "radius": "Radius",
    "min_power": "Minimum power",
    "any": "Any",
    "plug": "Plug type",
    "prise_type_2": "Type 2",
    "prise_type_combo_ccs": "CCS Combo",
    "prise_type_chademo": "CHAdeMO",
    "prise_type_ef": "Domestic socket E/F",
    "prise_type_autre": "Other plug",
    "free_only": "Only stations reported as free",
    "no_realtime": "This dataset describes installed charging points: it does not tell whether a point is free or working right now.",
    "summary": "Within {{radius}} km of {{place}}",
    "stations_found": "Stations",
    "nearest": "Nearest",
    "fast_count": "Fast (≥ 50 kW)",
    "truncated": "Dense area: the list reached the query limit and may be incomplete. Reduce the radius.",
    "no_result": "No station matches these filters within this radius.",
    "power_suspect": "Power shown as published by the operator; this value looks wrong.",
    "free": "Free",
    "paid": "Paid",
    "access_free": "Open access",
    "access_restricted": "Restricted access",
    "impl_street": "On-street",
    "impl_public": "Public car park",
    "impl_private_public": "Private car park open to the public",
    "impl_customers": "Customer-only car park",
    "impl_fast": "Dedicated fast-charging station",
    "distance": "{{km}} km",
    "points": "Charging points reported",
    "operator": "Operator",
    "hours": "Published hours",
    "updated": "Reported update",
    "more": "Only the {{n}} nearest stations are shown.",
    "source_name": "ODRÉ, electric vehicle charging points (IRVE)",
    "license": "Etalab Open Licence 2.0",
    "default_place": "Lyon"
  },
  "composition-croquettes-animaux": {
    "title": "Pet food analysis from the barcode",
    "subtitle": "Analytical constituents published by Open Pet Food Facts and carbohydrates estimated by difference.",
    "analytical_constituents": "Analytical constituents (% of the product as fed)",
    "c_protein": "Crude protein",
    "c_fat": "Crude fat",
    "c_ash": "Crude ash",
    "c_fibre": "Crude fibre",
    "c_moisture": "Moisture",
    "not_published": "not published",
    "type_from_bag": "Value missing from the product page: you can copy it from the bag (\"analytical constituents\" section) to complete the estimate.",
    "carbs_estimate": "Estimated carbohydrates (by difference)",
    "carbs_impossible": "Estimate not possible: missing value ({{value}}).",
    "carbs_negative": "The constituents add up to more than 100% (result {{value}}%): the values on the page are inconsistent, check them on the bag.",
    "carbs_dry_matter": "i.e. ≈ {{value}}% of dry matter",
    "includes_typed": "Includes one or more values you typed.",
    "carbs_formula": "Estimate: 100 − protein − fat − ash − fibre − moisture. Manufacturers do not have to declare carbohydrates; this remainder (nitrogen-free extract) is a rough figure, not a published value.",
    "portion_link": "Work out your dog's or cat's daily portion in grams",
    "data_note": "Collaborative entry: the values are those entered from the packaging by Open Pet Food Facts contributors. The bag in your hands is the reference.",
    "vet_disclaimer": "General information: it does not replace a vet's advice, especially for an animal that is ill, diabetic or overweight."
  },
  "niveau-nappe-phreatique": {
    "heading": "Groundwater level near a French address",
    "subheading": "Latest reading from the nearest monitoring well, compared with the same time in past years.",
    "station_label": "Monitoring well",
    "station_option": "{{name}}, {{city}} ({{km}} km)",
    "no_station": "No monitoring well with readings in the last 90 days within about 25 km.",
    "no_data": "This monitoring well has published no usable reading.",
    "last_level": "Latest reading: {{date}}",
    "ngf": "water level altitude (metres NGF, French datum)",
    "depth": "i.e. about {{m}} m below the measuring point",
    "rank_label": "Rank against past years",
    "rank_value": "Higher than {{pct}}% of years",
    "rank_sentence": "The mean level of the last 30 days exceeds that of {{below}} out of {{n}} years measured over the same period between {{from}} and {{to}}.",
    "lowest": "Lowest",
    "median": "Median",
    "highest": "Highest",
    "current_mean": "Mean of the last 30 days: {{m}} m NGF",
    "too_short": "Not enough history: {{n}} year(s) measured at this time of year, at least {{min}} are needed to compare.",
    "chart_title": "Mean level over the same {{days}} days, year by year",
    "chart_alt": "Mean groundwater level at the same time of each year, from {{from}} to {{to}}",
    "chart_legend": "green dot: this year; dashed line: median",
    "point_title": "{{year}}: {{m}} m",
    "method": "Method: the tool averages readings over the {{days}} days before the latest reading, then computes the same average, on the same dates, for each past year (one value per year, whatever the number of readings). The rank shows how many past years were lower. This is not BRGM's official indicator and implies no drought threshold: water restrictions are set by prefectural orders.",
    "truncated": "History limited to the {{n}} most recent readings returned by the API.",
    "source_name": "Hub'Eau, piezometry (OFB, BRGM, ADES portal)",
    "license": "Etalab Open Licence"
  },
  "niveau-riviere-temps-reel": {
    "heading": "Live river level in France",
    "subheading": "Water height and flow measured by the nearest gauging station, with the curve of the last 48 hours.",
    "station_label": "Gauging station",
    "station_option": "{{name}} ({{km}} km)",
    "no_station": "No gauging station in service within {{km}} km.",
    "no_recent": "This station has published no water height in the last 48 hours. Pick another station from the list.",
    "height_m": "i.e. {{m}} m on the station gauge",
    "measured_at": "Reading of {{date}}",
    "change_24h": "Change over 24 h",
    "range_48h": "Min – max over 48 h",
    "flow": "Site flow",
    "no_flow": "No flow published for this site",
    "chart_title": "Water height over 48 hours",
    "chart_alt": "Water height curve, from {{min}} to {{max}} cm over 48 hours",
    "disclaimer": "Raw, unvalidated data, transmitted every 5 to 60 minutes. The height is read on each station's own gauge: it is not the river depth, and two stations cannot be compared. This page gives no warning level: for floods, check vigicrues.gouv.fr.",
    "source_name": "Hub'Eau, hydrometry (OFB, SCHAPI PHyC platform)",
    "license": "Etalab Open Licence"
  },
  "prix-carburants-stations": {
    "heading": "Fuel prices near you in France: cheapest petrol stations",
    "subheading": "Prices reported by stations to the official French site prix-carburants.gouv.fr, with the date of each price.",
    "fuel": "Fuel",
    "fuel_gazole": "Diesel (B7)",
    "fuel_e10": "Unleaded 95 E10",
    "fuel_sp98": "Super unleaded 98 (E5)",
    "fuel_sp95": "Unleaded 95 (E5)",
    "fuel_e85": "E85 bioethanol",
    "fuel_gplc": "LPG (autogas)",
    "radius": "Radius",
    "sort": "Sort by",
    "sort_price": "Lowest price",
    "sort_distance": "Distance",
    "fresh_only": "Exclude prices older than {{days}} days",
    "trip_hint": "To estimate the cost of a trip at this price:",
    "trip_link": "trip cost calculator",
    "summary": "{{fuel}} within {{radius}} km of {{place}}",
    "cheapest": "Cheapest",
    "average": "Average price",
    "stations": "Stations",
    "no_result": "No station reports this fuel within this radius: widen the area or include older prices.",
    "truncated": "Only the {{n}} cheapest stations are listed; the average covers them only.",
    "per_litre": "€{{price}}/L",
    "stale": "Old price, may be out of date",
    "distance": "{{km}} km as the crow flies",
    "automat_24": "24/7 card pump",
    "shortage": "Temporarily out of: {{list}}",
    "time_note": "Times are shown as published (station local time). The price displayed at the pump prevails.",
    "source_name": "French Ministry of the Economy, fuel prices (live feed)",
    "license": "Etalab Open Licence 2.0",
    "default_place": "Lyon"
  },
  "accessible-color-palette-generator": {
    "accent_action": "Accent Action",
    "accessible_design_system": "Accessible Design System",
    "accessible_wcag_color_palette_generator_aaa": "Accessible WCAG Color Palette Generator (AAA/AA Contrast)",
    "analogous": "Analogous",
    "base_color": "Base Color",
    "complementary": "Complementary",
    "copied": "Copied!",
    "copy": "Copy",
    "generate_harmonic_ui_color_palettes_with": "Generate harmonic UI color palettes with automated WCAG 2.1 AAA/AA contrast validation and instant Tailwind CSS export.",
    "harmony": "Harmony",
    "live_ui_component_preview": "Live UI Component Preview",
    "monochromatic": "Monochromatic",
    "on_dark": "On Dark",
    "on_white": "On White",
    "primary_action": "Primary Action",
    "random": "Random",
    "role_names": "Surface / tint,Primary brand,Accent action,Dark neutral,Support accent",
    "sample_typography_hierarchy_using_the_generated": "Sample typography hierarchy using the generated palette ensuring high readability and seamless visual weight balance.",
    "tailwind_css_config": "Tailwind CSS Config",
    "triadic": "Triadic",
    "warm_cool": "Warm & Cool",
    "wcag_fail": "Fail",
    "copy_hex_title": "Copy HEX code",
    "version_pro": "Version 2.4 Pro",
    "aa_large": "AA Large"
  },
  "air-conditioner-btu-calculator": {
    "air_conditioner_btu_room_size_hvac": "Air Conditioner BTU & Room Size HVAC Sizing Calculator",
    "calculate_the_required_cooling_capacity_in": "Calculate the required cooling capacity in BTU/hr and HVAC tons based on square footage, ceiling height, sunlight, and occupants.",
    "ceiling_height": "Ceiling Height",
    "compensates_for_ambient_stove_and_oven": "Compensates for ambient stove and oven heat.",
    "copied": "Copied!",
    "copy_ac_btu_sizing_summary": "Copy AC BTU Sizing Summary",
    "hvac_tonnage": "HVAC Tonnage",
    "moderate": "Moderate",
    "number_of_occupants": "Number of Occupants",
    "recommended_ac_cooling_capacity": "Recommended AC Cooling Capacity",
    "recommended_unit_form_factor": "Recommended Unit Form Factor",
    "room_dimensions_layout": "Room Dimensions & Layout",
    "room_is_a_kitchen_4_000": "Room is a Kitchen (+4,000 BTU)",
    "room_length": "Room Length",
    "room_width": "Room Width",
    "shaded_10": "Shaded (-10%)",
    "sunlight_exposure": "Sunlight Exposure",
    "sunny_10": "Sunny (+10%)",
    "target_unit_size": "Target Unit Size",
    "total_room_area": "Total Room Area:",
    "meters_unit": "Meters (m)",
    "window_ac_title": "Window or Portable AC Unit",
    "split_ac_desc": "Very high energy efficiency (SEER 20+), ideal for living rooms and large spaces.",
    "multi_split_title": "Multi-Split or Central Ducted System (Central HVAC)",
    "multi_split_desc": "Recommended for large apartments or full floorplans.",
    "feet_unit": "Feet (ft)",
    "window_ac_desc": "Perfect for a small bedroom or office (standard 110V, quiet).",
    "split_ac_title": "Wall-Mounted Split AC (Ductless Mini-Split)",
    "btu_per_hour": "BTU / hr",
    "area_value": "{{ft}} sq ft ({{m}} m²)",
    "tonnage_value": "{{value}} Ton(s)",
    "sun_shaded": "Shaded",
    "sun_normal": "Normal",
    "sun_sunny": "Sunny",
    "climate_mild": "Mild",
    "climate_moderate": "Moderate",
    "climate_hot": "Hot",
    "yes_label": "Yes",
    "no_label": "No",
    "copy_text": "Air Conditioner BTU Sizing:\n- Room Area: {{areaFt}} sq ft ({{areaM}} m²)\n- Recommended Cooling Capacity: {{btu}} BTU/hr\n- HVAC Tonnage Equivalent: {{tons}} Tons\n- Suggested AC Unit Range: {{min}} - {{max}} BTU\n- Environment Factors: Sun ({{sun}}), Climate ({{climate}}), Occupants ({{occupants}}), Kitchen ({{kitchen}})"
  },
  "airline-baggage-weight-dimensions-calculator": {
    "1_luggage_measurements": "1. Luggage Measurements",
    "2_packing_weight_estimator": "2. Packing Weight Estimator",
    "airline_baggage_weight_dimensions_calculator": "Airline Baggage Weight & Dimensions Calculator",
    "airlines_charge_40_80_at_the": "Airlines charge a fee at the gate for oversized cabin bags. Remove {{v0}} kg or wear heavy jackets on yourself.",
    "airport_gate_surcharge_risk": "Airport Gate Surcharge Risk",
    "baggage_cabin": "Cabin",
    "baggage_hold": "Checked",
    "baggage_type": "Baggage Type",
    "baggage_underseat": "Under seat",
    "cabin_bag": "Cabin Bag",
    "checked_23kg": "Checked (23kg)",
    "copy_summary": "✈️ Luggage check {{v0}} ({{v1}})\n📏 Size: {{v2}}×{{v3}}×{{v4}} cm ({{v5}})\n⚖️ Total weight: {{v6}} kg / {{v7}} kg max ({{v8}})",
    "depth_cm": "Depth (cm)",
    "dimensions_fit_sizer": "Dimensions fit sizer",
    "empty_suitcase_tare_weight_kg": "Empty Suitcase Tare Weight (kg)",
    "exceeds_overhead_cabin_sizer_cm": "Exceeds overhead cabin sizer ({{v0}}×{{v1}}×{{v2}} cm)",
    "exceeds_under_seat_sizer_cm": "Exceeds under-seat sizer ({{v0}}×{{v1}}×{{v2}} cm)",
    "heavy_jackets_1_2kg": "Heavy Jackets (×{{v0}} kg)",
    "laptop_tech_kg": "Laptop / Tech (kg)",
    "length_cm": "Length (cm)",
    "linear_total_cm_cm_max": "Linear total ({{v0}} cm) > {{v1}} cm max",
    "overweight_by_kg": "Overweight by +{{v0}} kg!",
    "pants_jeans_0_5kg": "Pants/Jeans (×{{v0}} kg)",
    "personal_item": "Personal Item",
    "select_airline": "Select Airline",
    "shirts_tops_0_2kg": "Shirts / Tops (×{{v0}} kg)",
    "shoes_pairs_0_9kg": "Shoes pairs (×{{v0}} kg)",
    "status_compliant": "✅ Compliant",
    "status_excess_weight": "❌ Overweight by {{v0}} kg",
    "status_not_compliant": "❌ Exceeds limit",
    "toiletry_bag_kg": "Toiletry Bag (kg)",
    "verify_cabin_and_checked_bag_sizer": "Verify cabin and checked bag sizer limits, estimate packing weight, and avoid hefty airport gate fees.",
    "weight_within_baggage_limit": "Weight within baggage limit",
    "width_cm": "Width (cm)",
    "checked_kg": "Checked ({{v0}} kg)"
  },
  "aspect-ratio-calculator": {
    "aspect_ratio": "Aspect Ratio:",
    "aspect_ratio_resolution_dimension_scaler_calculator": "Aspect Ratio & Resolution Dimension Scaler Calculator",
    "aspect_ratio_settings": "Aspect Ratio Settings",
    "calculate_target_width_and_height_in": "Calculate target width and height in pixels while preserving exact aspect ratio for video editing, social media, and web layouts.",
    "copied": "Copied!",
    "copy_resolution_data": "Copy Resolution Data",
    "height_px": "Height (px)",
    "megapixels": "Megapixels",
    "ratio_height_h": "Ratio Height (H)",
    "ratio_width_w": "Ratio Width (W)",
    "scaled_resolution_output": "Scaled Resolution Output",
    "standard_ratio_presets": "Standard Ratio Presets",
    "target_dimensions_pixels": "Target Dimensions (Pixels)",
    "total_pixel_count": "Total Pixel Count",
    "visual_proportion_preview": "Visual Proportion Preview",
    "width_px": "Width (px)",
    "copy_text": "Aspect Ratio & Resolution:\n- Aspect Ratio: {{ratio}} (Decimal: {{decimal}})\n- Calculated Resolution: {{width}} × {{height}} px\n- Total Pixels: {{pixels}} px ({{mp}} MP)",
    "quick_square": "1080x1080 (Square)"
  },
  "astrology-ascendant-calculator": {
    "1_birth_details": "1. Birth Details",
    "1_your_rising_sign_in": "1. Your Rising Sign in {{v0}}:",
    "2_your_sun_in": "2. Your Sun in {{v0}}:",
    "3_your_moon_in": "3. Your Moon in {{v0}}:",
    "air_intellect_social": "Air (Intellect & Social)",
    "astrological_synthesis": "Astrological Synthesis",
    "birth_date": "Birth Date",
    "calculate_your_true_rising_sign_ascendant": "Estimate your Rising Sign (Ascendant), Sun & Moon signs with elemental distribution and astrological profile.",
    "core_identity_soul_purpose": "Core Identity & Soul Purpose",
    "earth_grounded_pragmatic": "Earth (Grounded & Pragmatic)",
    "elemental_balance": "Elemental Balance",
    "emotional_nature_intuition": "Emotional Nature & Intuition",
    "exact_time_of_birth_crucial_for": "Exact Time of Birth (Required for the Rising Sign)",
    "fire_drive_action": "Fire (Drive & Action)",
    "location_time_zone": "Location / Time Zone",
    "moon_sign": "Moon Sign",
    "natal_chart_quick_calculator_sun_sign": "Natal Chart Quick Calculator: Sun Sign, Ascendant (Rising) & Moon Sign",
    "outer_mask_life_approach": "Outer Mask & Life Approach",
    "rising_sign": "Rising Sign",
    "ruled_by_your_rising_sign_colors": "Ruled by {{v0}}, your rising sign colors your first impression, your instinctive reaction to new environments and your spontaneous vitality.",
    "sun_sign": "Sun Sign",
    "the_moon_dictates_your_emotional_sanctuary": "The Moon dictates your emotional sanctuary, childhood instincts and psychological safety needs.",
    "this_is_your_core_self_your": "This is your core self, your source of conscious energy, pride and creative expression.",
    "water_empathy_emotion": "Water (Empathy & Emotion)",
    "tz_france": "France / Belgium / Switzerland / Germany / Spain (UTC+1 / UTC+2)",
    "tz_uk": "United Kingdom / Portugal / Canary Islands (UTC+0)",
    "tz_na_east": "Canada / US East (UTC-5 / UTC-4)",
    "tz_na_west": "US West (UTC-8 / UTC-7)",
    "tz_other": "Other / International (standard UTC)",
    "unknown_time": "I don't know my birth time",
    "asc_unknown": "Cannot be calculated",
    "asc_unknown_hint": "Requires the birth time",
    "moon_change_at": "Changes sign at about {{v0}} (± 15 min)",
    "no_time_summary": "Without a birth time: Sun in {{v0}}, Moon in {{v1}} all day. The rising sign cannot be calculated.",
    "no_time_summary_change": "Without a birth time: Sun in {{v0}}, Moon in {{v1}} until about {{v3}}, then in {{v2}} (time in the selected zone, to within 15 minutes). The rising sign cannot be calculated.",
    "asc_why_title": "1. Rising sign: the birth time is required",
    "asc_why": "The rising sign is the sign rising on the eastern horizon at the moment of birth. All twelve signs rise within 24 hours, so it changes about every two hours on average (in Paris, from under an hour for Aries and Pisces to 2 h 45 min from Leo to Scorpio): without the time, it cannot be determined. It also counts for 40% of the elemental balance, which is therefore not shown.",
    "moon_before": "Born before {{v0}}",
    "moon_after": "Born after {{v0}}",
    "venus_sign": "Venus sign",
    "venus_hint": "Love, taste, how you relate",
    "venus_change": "Venus changes sign that day: the birth time decides.",
    "saturn_return": "Saturn return",
    "saturn_orb_label": "Orb",
    "saturn_natal": "Natal Saturn at {{v0}}",
    "saturn_first": "First return, at age {{v0}}",
    "saturn_second": "Second return, at age {{v0}}",
    "saturn_passes": "Exact pass over natal Saturn: {{v0}}",
    "saturn_orb_periods": "Within {{v0}}°: {{v1}}",
    "saturn_range": "{{v0}} to {{v1}}",
    "saturn_note": "Dates in Universal Time, accurate to a day or two: the computed position of Saturn stays within 0.05° of the JPL Horizons ephemeris (1930-2100). Depending on its retrograde loops, Saturn crosses its natal position once or three times."
  },
  "battery-power-bank-charge-time-calculator": {
    "65_budget_older": "65% (Budget / Older)",
    "75_real_world_standard": "75% (Real-world standard)",
    "85_premium_gan_power_bank": "85% (Premium GaN Power Bank)",
    "battery_charge_time_power_bank_capacity": "Battery Charge Time & Power Bank Capacity Calculator",
    "calculate_real_charging_duration_with_li": "Calculate real charging duration with Li-ion slow-down curve and actual full recharges delivered by any portable power bank.",
    "capacity_mah": "Capacity (mAh)",
    "charger_power_bank": "Charger & Power Bank",
    "charger_wattage_w": "Charger Wattage (W)",
    "charging_analysis": "Charging Analysis",
    "charging_method": "Charging Method",
    "conversion_efficiency": "Conversion Efficiency",
    "current": "Current (%)",
    "device_battery": "Device & Battery",
    "device_preset": "Device Preset",
    "e_g_10_000_or_20": "e.g. 10,000 or 20,000 mAh",
    "e_g_20w_30w_65w": "e.g. 20W, 30W, 65W",
    "estimated_charge_time": "Estimated Charge Time",
    "full_0_100_charges": "full 0-100% charges",
    "internal_cells_operate_at_3_7v": "Internal cells operate at 3.7V. Voltage conversion to 5V/9V USB creates 20-30% heat loss. A {{v0}} mAh bank delivers ~{{v1}} real usable mAh.",
    "power_bank_charges": "Power Bank Charges",
    "power_bank_size_mah": "Power Bank Size (mAh)",
    "qi_wireless_slower": "Qi Wireless (Slower)",
    "target": "Target (%)",
    "to_charge": "to charge",
    "why_a_10_000_mah_power": "Why a 10,000 mAh power bank doesn't give two 5,000 mAh charges?",
    "copy_summary": "Charging Time & Battery Summary:\n- Device: {{deviceCapacity}} mAh ({{current}}% to {{target}}%)\n- Charger: {{wattage}}W ({{type}})\n- Estimated time: {{duration}}\n- Power Bank Efficiency ({{pbCapacity}} mAh): ~{{effectivePb}} usable mAh ({{fullCharges}} full charges)",
    "usb_c_power_delivery_rapide": "USB-C Power Delivery (Fast)",
    "usb_a_classique_5v_2a": "USB-A Standard (5V/2A)"
  },
  "best-posting-time-heatmap": {
    "base_sur_l_analyse_de_millions": "Based on the analysis of millions of interactions, to maximise retention and initial engagement.",
    "carte_thermique_d_engagement_hebdomadaire": "Weekly engagement heatmap (24h / 7 days)",
    "copier_le_planning": "Copy the schedule",
    "copy_astuce_publiez_15_a_30": "💡 Tip: publish 15 to 30 minutes before the peak so the algorithm can distribute your content from the very first wave.",
    "copy_creneaux_d_or_recommandes": "⏰ Recommended golden slots:",
    "copy_jours_les_plus_performants": "📅 Best-performing days: {{days}}",
    "copy_ligne_creneau": "{{n}}. {{day}} @ {{hour}} ({{boost}}) -> {{reason}}",
    "copy_titre_meilleurs_creneaux": "🎯 BEST POSTING TIMES ({{platform}})",
    "creneau_d_or_n": "Golden slot #{{n}}",
    "day_fri": "Friday",
    "day_fri_short": "Fri",
    "day_mon": "Monday",
    "day_mon_short": "Mon",
    "day_sat": "Saturday",
    "day_sat_short": "Sat",
    "day_sun": "Sunday",
    "day_sun_short": "Sun",
    "day_thu": "Thursday",
    "day_thu_short": "Thu",
    "day_tue": "Tuesday",
    "day_tue_short": "Tue",
    "day_wed": "Wednesday",
    "day_wed_short": "Wed",
    "faible": "Low",
    "gen_z_etudiants_15_24_ans": "Gen Z / students (15-24)",
    "grand_public_b2c_18_45_ans": "General B2C public (18-45)",
    "heure_courte": "{{h}}h",
    "heures_affichees_en_heure_locale": "Times shown in your target audience's local time.",
    "instagram_reels_carrousels_stories": "📸 Instagram (Reels, carousels, Stories)",
    "jour": "Day",
    "jour_a_h_score_d_engagement": "{{day}} at {{hour}}:00 - engagement score {{score}}/100",
    "linkedin_b2b_personal_branding": "💼 LinkedIn (B2B & personal branding)",
    "matrice_thermique_des_meilleurs_heures": "Heatmap of the best posting times",
    "ne_publiez_pas_exactement_a_l_heure": "Do not publish exactly on the hour of the peak (e.g. 6:00 p.m. sharp): millions of users and automated schedulers saturate the servers at that precise moment. Aim for <b>5:40 or 5:45 p.m.</b> so the algorithm can test your content on the first active users before the biggest wave.",
    "parents_familles": "Parents & families",
    "pic_viral": "Viral peak",
    "planning_copie": "Schedule copied!",
    "plateforme_reseau_social": "Social platform",
    "platform_instagram_best_hours": "7-9 a.m. (waking up/commute), 12-2 p.m. (lunch break), 6-9 p.m. (winding down)",
    "platform_instagram_name": "Instagram (Reels, posts, Stories)",
    "platform_instagram_slot_1_boost": "+48% reach",
    "platform_instagram_slot_1_reason": "Global mid-week engagement peak on Reels and Stories.",
    "platform_instagram_slot_2_boost": "+55% reach",
    "platform_instagram_slot_2_reason": "Weekend transition: high leisure screen time and plenty of interaction.",
    "platform_instagram_slot_3_boost": "+42% shares",
    "platform_instagram_slot_3_reason": "Sunday-evening cocooning: long viewing sessions on long videos and carousels.",
    "platform_linkedin_best_hours": "7:30-8:30 a.m. (morning coffee), 11:45 a.m.-1:30 p.m. (work break), 5:30-6:30 p.m. (end of day)",
    "platform_linkedin_name": "LinkedIn (B2B & personal branding)",
    "platform_linkedin_slot_1_boost": "+65% network visibility",
    "platform_linkedin_slot_1_reason": "The first thing decision-makers and managers check at the start of the day.",
    "platform_linkedin_slot_2_boost": "+58% engagement / carousels",
    "platform_linkedin_slot_2_reason": "The most productive day for conversations and qualified B2B leads.",
    "platform_linkedin_slot_3_boost": "+45% link/profile clicks",
    "platform_linkedin_slot_3_reason": "Active browsing during lunches and work breaks.",
    "platform_tiktok_best_hours": "6-10 a.m., 3-6 p.m. (end of school/work), 8-11 p.m. (strong late-night retention)",
    "platform_tiktok_name": "TikTok (For You algorithm)",
    "platform_tiktok_slot_1_boost": "+60% FYP distribution",
    "platform_tiktok_slot_1_reason": "Matches the TikTok algorithm cycle, which keeps pushing the video all day long.",
    "platform_tiktok_slot_2_boost": "+52% video completion",
    "platform_tiktok_slot_2_reason": "Peak of simultaneously active users in continuous scrolling.",
    "platform_tiktok_slot_3_boost": "+45% saves/shares",
    "platform_tiktok_slot_3_reason": "Peak recreational usage among 15-35 year-olds.",
    "platform_twitter_best_hours": "8-10 a.m. (morning news scan), 12-1 p.m., 5-7 p.m. (debates & live feeds)",
    "platform_twitter_name": "X / Twitter (news & threads)",
    "platform_twitter_slot_1_boost": "+40% retweets / reposts",
    "platform_twitter_slot_1_reason": "Peak readership for threads and industry news.",
    "platform_twitter_slot_2_boost": "+44% impressions",
    "platform_twitter_slot_2_reason": "News monitoring over the lunch break.",
    "platform_twitter_slot_3_boost": "+38% engagement",
    "platform_twitter_slot_3_reason": "Weekly takes and round-ups.",
    "platform_youtube_best_hours": "2-4 p.m. on weekdays (indexing time before the 6-10 p.m. peak), 9-11 a.m. at the weekend",
    "platform_youtube_name": "YouTube (long-form videos & Shorts)",
    "platform_youtube_slot_1_boost": "+50% weekend views",
    "platform_youtube_slot_1_reason": "Gives the algorithm time to process the video in HD/4K and recommend it on Friday evening.",
    "platform_youtube_slot_2_boost": "+55% total watch time",
    "platform_youtube_slot_2_reason": "Ideal for long videos (>15 min) watched at the weekend.",
    "platform_youtube_slot_3_boost": "+48% CTR",
    "platform_youtube_slot_3_reason": "Continuous viewing before the Monday restart.",
    "professionnels_dirigeants_salaries_b2b": "B2B professionals, executives & employees",
    "regle_de_synchronisation_algorithmique": "Algorithm timing rule:",
    "tiktok_algorithme_for_you": "🎵 TikTok (For You algorithm)",
    "type_d_audience_cible": "Target audience type",
    "x_twitter_threads_actu": "𝕏 X / Twitter (threads & news)",
    "youtube_videos_longues_shorts": "▶️ YouTube (long-form videos & Shorts)"
  },
  "biorhythm-cycle-calculator": {
    "biorhythm_cycles_calculator_physical_23d_emotional": "Biorhythm Cycles Calculator (Physical 23d, Emotional 28d & Intellectual 33d)",
    "date_of_birth": "Date of Birth",
    "dates": "Dates",
    "days_lived": "{{v0}} days lived",
    "emotional": "Emotional",
    "intellectual": "Intellectual",
    "physical": "Physical",
    "target_analysis_date": "Target Analysis Date",
    "track_your_biological_emotional_and_cognitive": "Calculate where your physical (23-day), emotional (28-day) and intellectual (33-day) cycles stand on a chosen date, based on Wilhelm Fliess’s biorhythm theory.",
    "copy_summary": "Biorhythms: Physical {{physical}}% | Emotional {{emotional}}% | Intellectual {{intellectual}}%",
    "desc_physical": "Vitality & endurance",
    "desc_emotional": "Mood & sensitivity",
    "desc_intellectual": "Clarity & Logic"
  },
  "blackjack-strategy-trainer": {
    "1_your_hand_type_total": "1. Your Hand Type & Total",
    "2_dealer_upcard": "2. Dealer Upcard",
    "action_double_down": "DOUBLE DOWN",
    "action_double_or_stand": "DOUBLE if allowed, otherwise STAND",
    "action_hit": "HIT",
    "action_split": "SPLIT",
    "action_split_or_hit": "SPLIT if favourable, otherwise HIT",
    "action_stand": "STAND",
    "blackjack_basic_strategy_table_decision_trainer": "Blackjack Basic Strategy Table & Decision Trainer (Hit, Stand, Double, Split)",
    "copy_summary": "Blackjack action: {{v0}} (hand {{v1}} vs dealer {{v2}})",
    "dealer_upcard": "Dealer Upcard",
    "determine_the_statistically_optimal_play_for": "Determine the statistically optimal play for any player hand vs dealer upcard, minimizing house edge down to 0.5%.",
    "hard_total": "Hard Total",
    "mathematically_optimal_play": "Mathematically Optimal Play",
    "pairs_split": "Pairs (Split)",
    "soft_with_ace": "Soft (with Ace)",
    "tip_always_split_aces": "ALWAYS split a pair of Aces to create two hands of 11.",
    "tip_always_split_eights": "ALWAYS split a pair of 8s to avoid a stuck 16.",
    "tip_dealer_busts_456": "The dealer busts often with a 4, 5 or 6.",
    "tip_dealer_strong_improve": "The dealer shows a strong card (7+), so you need to improve your total.",
    "tip_dealer_weak_let_draw": "The dealer shows a weak card (likely bust), so let them draw.",
    "tip_double_3456_else_stand": "Double against 3, 4, 5, 6; otherwise stand.",
    "tip_double_max_odds": "Double your bet! The odds of landing 21 or 20 are at their highest.",
    "tip_double_no_bust_ace": "Double: with the Ace you cannot bust.",
    "tip_double_under_10": "Double against a dealer card lower than 10.",
    "tip_double_weak_zone": "Double against the dealer's weak range (3 to 6).",
    "tip_hit_9_10_ace": "Hit against a 9, 10 or Ace.",
    "tip_hit_dealer_10_ace": "Hit, because the dealer shows a 10 or an Ace.",
    "tip_hit_no_bust_risk": "Hit: there is no bust risk.",
    "tip_hit_plain": "Hit.",
    "tip_hit_strengthen": "Hit to strengthen your hand.",
    "tip_hit_to_reach_17": "Hit to try to reach 17 or more.",
    "tip_hit_under_9": "Hand below 9: always hit.",
    "tip_never_split_tens": "NEVER split a pair of 10s: you already hold 20!",
    "tip_soft_19_20_stand": "A soft 19 or 20 is an excellent hand: stand.",
    "tip_split_nines": "Split 9s against 2 through 6, 8 or 9.",
    "tip_split_vs_weak": "Split against the dealer's weak cards.",
    "tip_stand_7_10_ace": "Stand against a 7, 10 or Ace.",
    "tip_stand_vs_7": "Stand against the 7.",
    "tip_strong_hand_no_bust": "You hold a strong hand, so do not risk busting.",
    "your_hand": "Your Hand",
    "your_hand_total": "Your Hand Total",
    "hand_soft_label": "Ace + {{extra}} (Soft {{total}})",
    "hand_pair_label": "Pair ({{half}} + {{half}})"
  },
  "book-reading-time-goal-calculator": {
    "1_book_details": "1. Book Details",
    "2_goal_planning_mode": "2. Goal Planning Mode",
    "accelerated_speed_1_25x": "Accelerated Speed (1.25x):",
    "at_this_steady_pace_of_minutes": "At this steady pace of {{v0}} minutes per day, you will complete approx {{v1}} similar books every year!",
    "audiobook_equivalent_duration": "Audiobook Equivalent Duration",
    "average_adult": "Average Adult",
    "book_reading_time_wpm_speed_daily": "Book Reading Time, WPM Speed & Daily Goal Planner",
    "built_in_1_minute_reading_speed": "Built-in 1-Minute Reading Speed Test",
    "by_reading_pages_min_daily": "By reading {{v0}} pages ({{v1}} min) daily.",
    "calculate_total_reading_hours_test_your": "Calculate total reading hours, test your real words-per-minute (WPM) speed, set daily page goals and compare against audiobook lengths.",
    "custom_speed_wpm": "Custom Speed (WPM)",
    "daily_reading_time_minutes_day": "Daily Reading Time (minutes / day)",
    "en_us": "en-US",
    "fast_reader": "Fast Reader",
    "fast_speed_1_5x": "Fast Speed (1.5x):",
    "finish_in_x_days": "Finish in X days",
    "finished_on": "Finished on:",
    "finished_reading": "Finished reading!",
    "i_read_x_minutes_day": "I read X minutes / day",
    "page": "page",
    "reading_speed_words_per_minute_wpm": "Reading Speed (Words Per Minute - WPM):",
    "retest": "Retest",
    "sample_test_text": "Regular reading stimulates imagination, reinforces neural connections and greatly expands vocabulary. Reading for twenty minutes each evening before sleep gets you through about a chapter a day and an average novel within a few weeks. Avid readers develop stronger empathy and enhanced sustained attention in an era saturated with digital notifications and constant micro-distractions. Every page turned offers an opportunity to explore new concepts and learn condensed wisdom distilled by thinkers over decades. Take your time to read each sentence smoothly and attentively.",
    "slow_study": "Slow / Study",
    "speed_reader": "Speed Reader",
    "standard_speed_1_0x": "Standard Speed (1.0x):",
    "start_reading_test": "Start Reading Test",
    "target_days_to_finish": "Target Days to Finish",
    "total_book_reading_time": "Total Book Reading Time",
    "total_hours": "total hours",
    "total_pages": "Total Pages",
    "words_per_page_250_300_standard": "Words per Page (~250-300 standard)",
    "yearly_reading_challenge": "Yearly Reading Challenge:",
    "your_measured_speed": "Your measured speed:",
    "approx_minutes": "≈ {{min}} minutes ({{minPerPage}} min / {{page}})",
    "copy_plan": "Reading Plan for {{pages}}-page book:\n- Total estimated time: {{hours}}h ({{minutes}} min)\n- Reading speed: {{wpm}} words/min\n- Daily goal: {{dailyMin}} min ({{pagesPerDay}} pages/day)\n- Estimated completion: {{finishDate}}\n- 1.0x Audiobook equivalent: {{audioHours}}h",
    "words_per_min_value": "{{value}} words/min"
  },
  "chakra-balance-diagnostic": {
    "7_chakras_balance_test_energy_alignment": "7 Chakras Balance Test & Energy Alignment (Solfeggio Frequencies Hz)",
    "assess_the_alignment_of_your_7": "Assess your 7 chakras as described by tradition: self-rating from 1 to 5 per chakra, harmony score in % and the associated Solfeggio tones.",
    "chakra_to_harmonize": "Chakra to Harmonize",
    "copy_summary": "Chakra harmony: {{v0}}% | To rebalance: {{v1}} ({{v2}} Hz)",
    "energy_rebalancing_advised": "Energy rebalancing advised",
    "optimal_energy_flow": "High harmony score (≥ 75%)",
    "overall_energetic_harmony": "Overall Energetic Harmony",
    "self_assessment_of_7_chakras_1": "Self-Assessment of 7 Chakras (1-5)",
    "strongest_energy_center": "Strongest Energy Center",
    "frequence_hz": "Frequency: {{hz}} Hz",
    "mantra_valeur": "Mantra: {{mantra}}",
    "mantra_silence": "SILENCE",
    "ecouter_hz": "Listen: {{hz}} Hz"
  },
  "chinese-zodiac-element-calculator": {
    "1_birth_year_hour": "1. Birth Year & Hour",
    "birth_hour_0_23h": "Birth Hour (0-23h)",
    "birth_year": "Birth Year",
    "chinese_zodiac_animal_5_elements_calculator": "Chinese Zodiac Animal & 5 Elements Calculator (12 Signs, Yin/Yang & Secret Animal)",
    "copy_summary": "Chinese zodiac sign: {{v0}} {{v1}}",
    "core_personality_traits": "Core Personality Traits",
    "find_your_authentic_chinese_zodiac_sign": "Find your authentic Chinese zodiac sign, elemental pillar, Yin/Yang polarity, and companion hour animal.",
    "secret_animal_hint": "(Reveals your inner self and deepest motivations)",
    "secret_hour_animal": "Secret Hour Animal",
    "sign_with_element": "{{v1}} {{v0}}",
    "yang": "Yang",
    "yin": "Yin"
  },
  "coffee-brew-ratio-calculator": {
    "for_water": "for {{ml}} ml of water",
    "1_calculation_mode": "1. Calculation Mode",
    "balanced_1_16": "Balanced (1:16)",
    "bold_strong_1_14": "Bold / Strong (1:14)",
    "brew_ratio_1_x": "Brew Ratio (1 : X)",
    "brew_time": "Brew Time",
    "by_coffee_dose": "By Coffee Dose",
    "by_cups": "By Cups",
    "by_water_volume": "By Water Volume",
    "calculate_exact_coffee_dose_g_water": "Calculate exact coffee dose (g), water volume (ml), grind size and step-by-step pouring schedule.",
    "coffee_beans_dose_on_scale_g": "Coffee beans dose on scale (g)",
    "coffee_brew_ratio_barista_recipe_calculator": "Coffee Brew Ratio & Barista Recipe Calculator",
    "copy_bloom_line": "🌸 Bloom: {{v0}} g for {{v1}} s",
    "copy_recipe": "☕ Brew recipe {{v0}} (ratio 1:{{v1}})\n⚖️ Ground coffee: {{v2}} g ({{v3}})\n💧 Total water: {{v4}} g/ml ({{v5}} °C)\n{{v6}}⏱️ Total time: {{v7}}",
    "cup_size_ml": "Cup size (ml)",
    "grind_size": "Grind Size",
    "light_delicate_1_18": "Light / Delicate (1:18)",
    "number_of_cups": "Number of cups",
    "pour_in_circles_to_saturate_coffee": "Pour in circles to saturate coffee grounds and degas CO₂.",
    "pour_smoothly_in_gentle_spirals_from": "Pour smoothly in gentle spirals from center outward without hitting the filter walls.",
    "step_by_step_pouring_schedule": "Step-by-Step Pouring Schedule:",
    "target_water_volume_ml_g": "Target water volume (ml / g)",
    "water_temp": "Water Temp",
    "method_v60": "V60 / Pour-Over",
    "method_french_press": "French Press (plunger)",
    "method_espresso": "Espresso",
    "method_aeropress": "AeroPress",
    "method_cold_brew": "Cold Brew (cold infusion)",
    "method_chemex": "Chemex",
    "method_moka": "Moka pot (stovetop espresso maker)",
    "bloom_step": "🌸 1. Pre-infusion (Bloom): 0:00 ➔ 0:{{value}}",
    "water_grams": "{{value}} g of water",
    "main_pour_step": "2. Main pour",
    "first_pour_step": "1. Pour",
    "up_to_grams": "Up to {{value}} g"
  },
  "college-gpa-calculator": {
    "add_course": "Add Course",
    "calculate_semester_unweighted_weighted_gpa_honors": "Calculate semester unweighted & weighted GPA (Honors / AP), cumulative grade point average, and honors honors standing.",
    "copied": "Copied!",
    "copy_gpa_summary": "Copy GPA Summary",
    "course_name": "Course name",
    "credits": "Credits",
    "credits_2": "Credits",
    "good_standing": "Good Standing",
    "honors_standing": "Honors Standing",
    "include_prior_cumulative_gpa_credit_hours": "Include prior cumulative GPA & credit hours",
    "new_overall_cumulative_gpa": "New Overall Cumulative GPA",
    "prior_cumulative_gpa": "Prior Cumulative GPA",
    "prior_total_credits": "Prior Total Credits",
    "regular": "Regular",
    "semester_courses": "Semester Courses",
    "semester_unweighted_gpa": "Semester Unweighted GPA",
    "us_college_high_school_gpa_calculator": "US College & High School GPA Calculator",
    "weighted_gpa": "Weighted GPA",
    "english_literature": "English Literature",
    "calculus_ii": "Calculus II",
    "organic_chemistry": "Organic Chemistry",
    "intro_to_psychology": "Intro to Psychology",
    "computer_science_lab": "Computer Science Lab",
    "course_n": "Course {{value}}",
    "summa_cum_laude": "Summa Cum Laude (Highest Honors)",
    "magna_cum_laude": "Magna Cum Laude (High Honors)",
    "cum_laude": "Cum Laude",
    "copy_report": "US College GPA Report:\n- Semester Unweighted GPA: {{unweighted}} / 4.0\n- Semester Weighted GPA: {{weighted}} / 5.0\n- Semester Credits: {{credits}}\n- Combined Cumulative GPA: {{combined}}\n- Academic Standing: {{standing}}",
    "x_total_credits": "({{value}} total credits)"
  },
  "crop-water-requirement-irrigation-calculator": {
    "1_crop_growth_stage": "1. Crop & Growth Stage",
    "2_weather_soil": "2. Weather & Soil",
    "3_irrigation_system_pump": "3. Irrigation System & Pump",
    "awc_mm_m": "{{v0}} (AWC: {{v1}} mm/m)",
    "calculate_crop_evapotranspiration_etc_soil_water": "Calculate crop evapotranspiration (ETc), soil water reserve (RAW), irrigation scheduling, and pumping volumes.",
    "copy_summary": "Irrigation {{v0}}: ETc = {{v1}} mm/day – recommended dose: {{v2}} mm ({{v3}} m³/ha) – watering cycle every {{v4}} days ({{v5}} h of pumping for {{v6}} ha)",
    "crop_selection": "Crop Selection",
    "crop_water_requirement_irrigation_sizing_calculator": "Crop Water Requirement & Irrigation Sizing Calculator",
    "crop_water_use_etc": "Crop Water Use (ETc)",
    "daily_reference_etp_mm_day": "Daily Reference ETP (mm/day)",
    "days": "days",
    "efficiency": "Efficiency (%)",
    "fao_56_standard_method": "FAO-56 Standard Method:",
    "field_area_ha": "Field Area (ha)",
    "gross_water_dose": "Gross Water Dose",
    "growth_stage_crop_coefficient_kc": "Growth Stage (Crop Coefficient Kc)",
    "initial": "Initial",
    "irrigation_interval": "Irrigation Interval",
    "irrigation_scheduling_balance": "Irrigation Scheduling & Balance",
    "late_season": "Late-Season",
    "mid_season": "Mid-Season",
    "pump_flow_m_h": "Pump Flow (m³/h)",
    "pumping_time_for_whole_field": "Pumping time for whole field",
    "raw_soil_mm": "RAW soil = {{v0}} mm",
    "recent_effective_rain_mm": "Effective Rain, Last 7 Days (mm)",
    "soil_texture_awc": "Soil Texture (AWC)",
    "total_field_volume": "Total Field Volume",
    "mm_j": "mm/day",
    "mm_jour": "mm/day",
    "kc_x_etp_x_mm": "Kc = {{kc}} (ETo {{etp}} mm)",
    "x_heures": "{{value}} hours",
    "etc_mm_etp_kc_rfu_profondeur": "ETc (mm) = ETo × Kc | RAW = Root depth × Soil AWC × 60%"
  },
  "crop-yield-seeding-rate-calculator": {
    "agricultural_seeding_rate_crop_yield_calculator": "Plant density, seeding rate and yield forecast",
    "bag_dose": "Bag / Dose",
    "calculate_exact_seeding_rate_kg_ha": "Work out plant density (seeds/m²) and the seeding rate in kg/ha or seed units from thousand-grain weight and germination, in-row spacing for precision drills, cover crop mix rates and the expected harvest.",
    "crop_market_price_tonne": "Estimated Sale Price (€/t)",
    "equal_to_bags_doses": "Equal to {{v0}} bags / doses",
    "expected_yield_qx_ha": "Expected Yield (q/ha, 1 q = 100 kg)",
    "field_area_ha": "Field Area (ha)",
    "field_emergence_loss": "Field Emergence Loss (%)",
    "field_seed_parameters": "Field & Seed Parameters",
    "forecast_harvest": "Forecast Harvest",
    "germination_rate": "Germination Rate (%)",
    "gross_revenue": "Gross Revenue",
    "harvest_revenue_forecast": "Harvest & Revenue Forecast",
    "margin_over_seed": "Margin Over Seed",
    "official_agronomic_formula": "Agronomic Formula:",
    "packaging_unit": "Packaging Unit",
    "recommended_seeding_rate": "Recommended Seeding Rate",
    "seed_cost": "Seed Cost",
    "seed_price_unit": "Seed Price (€/dose or €/100 kg)",
    "seeding_rate_per_hectare": "Seeding Rate per Hectare",
    "seeds_sown_m": "seeds sown/m²",
    "target_density_plants_m": "Target Density (plants/m²)",
    "tgw_thousand_grain_wt_g": "TGW - Thousand Grain Wt (g)",
    "total_seeds_required": "Total Seeds Required",
    "weight_100kg": "Weight (100kg)",
    "copy_summary": "{{crop}} seeding: {{rate}} kg/ha ({{seeds}} seeds/m²) - Total: {{kg}} kg / {{doses}} doses for {{area}} ha",
    "x_tonnes": "{{value}} tonnes",
    "dose_kg_ha_densite_visee_germination": "Rate (kg/ha) = (Target density / (Germination × (1 - Losses))) × TGW ÷ 100",
    "precision_title": "Precision drilling: spacing and seeds/ha",
    "precision_intro": "Seeds/ha = 100,000,000 ÷ (row spacing in cm × in-row spacing in cm). For maize, sunflower or sugar beet.",
    "row_spacing_cm": "Row spacing (cm)",
    "in_row_spacing_cm": "In-row seed spacing (cm)",
    "precision_seeds_ha": "Seeds sown per hectare",
    "precision_seeds_detail": "That is {{m2}} seeds/m² and {{m}} seeds per metre of row",
    "precision_spacing_for_calc": "To sow the {{seeds}} seeds/ha calculated above at {{row}} cm row spacing, set one seed every {{spacing}} cm along the row.",
    "mix_title": "Cover crop mix: rate of each species",
    "mix_intro": "Species rate in the mix = rate sown alone × its share of the mix. Each share is the ratio of the mix rate to the pure-stand rate, and the shares add up to 100%. Pre-filled example: Terres Inovia 2024 factsheet (faba bean, hairy vetch, Chinese radish and phacelia at 25% each).",
    "mix_pure_rate": "Species {{n}}: rate sown alone (kg/ha)",
    "mix_share": "Share",
    "mix_remove_species": "Remove species {{n}}",
    "mix_add_species": "Add a species",
    "mix_total": "Mix seeding rate",
    "mix_total_field": "That is {{kg}} kg of mix for {{area}} ha",
    "mix_share_sum": "Sum of shares (density ratios): {{v}}%.",
    "mix_share_sum_low": "Below 100%, the cover will be thinner than each species sown alone.",
    "mix_share_sum_high": "Above 100%, the mix is sown above the pure-stand rates.",
    "yield_unit": "q/ha (100 kg)",
    "seeds_per_ha": "{{v}} seeds/ha",
    "doses_per_ha": "{{v}} doses/ha",
    "enter_seed_price": "Enter your seed price.",
    "enter_sale_price": "Enter your sale price to show revenue and margin.",
    "sale_price_source": "Indicative French price: September 2026 port delivery quote (La Dépêche, via Agreste). Replace it with your own price.",
    "pmg_table_title": "Reference TGW by crop: seed lots tested in Germany (2011-2018)",
    "pmg_col_crop": "Crop",
    "pmg_col_range": "TGW, 5th to 95th percentile (g)",
    "pmg_col_mean": "Mean TGW (g)",
    "pmg_table_note": "Range covering 90% of the lots tested. Durum wheat: winter and spring lots together. Barley: 2-row and 6-row barley combined, so the row says nothing specific about a 6-row winter barley. Pea: the source only gives a forage pea, with no row for field pea. Enter the TGW printed on your seed lot's label.",
    "pmg_table_source": "Source: Heimbach, Journal für Kulturpflanzen 70(8), 2018, table 1 (Julius Kühn-Institut), checked on 28/10/2026."
  },
  "dice-odds-rpg-calculator": {
    "1_d20_check_d_d_5e": "1. D20 Check (D&D 5e / DC / AC)",
    "2_damage_dice_pool_nd6_nd8": "2. Damage Dice Pool (Nd6, Nd8, Nd10, Nd12)",
    "advantage_provides_an_average_statistical_bonus": "Advantage provides an average statistical bonus of +3.32 to a d20 roll (raising expected average from 10.5 to 13.82) while plummeting critical failure chances from 5% to 0.25%.",
    "advantage_type": "Advantage Type",
    "calculate_exact_hit_rates_against_dc": "Calculate exact hit rates against DC / AC, Advantage vs Disadvantage math, and dice pool damage expectations.",
    "crit_rate": "Crit Rate",
    "d20_check_settings": "D20 Check Settings",
    "dice_count_n": "Dice Count (N)",
    "dice_pool_settings": "Dice Pool Settings",
    "die_type": "Die Type",
    "expected_average_value": "Expected Average Value",
    "failed": "❌ FAILED",
    "flat_bonus": "Flat Bonus",
    "fumble_rate": "Fumble Rate",
    "min_die_on_d20": "Min Die on d20",
    "official_ttrpg_mechanics": "Official TTRPG Mechanics",
    "roll_live_dice_physical_test": "Roll Live Dice (Physical Test)",
    "success": "✅ SUCCESS",
    "target_dc_or_armor_class_ac": "Target DC or Armor Class (AC)",
    "target_threshold": "Target Threshold",
    "total_attack_skill_modifier_or": "Total Attack / Skill Modifier (+ or -)",
    "total_fail": "Total Fail",
    "total_success_probability": "Total Success Probability",
    "ttrpg_dice_odds_probability_calculator_d": "TTRPG Dice Odds & Probability Calculator (D&D 5e, Advantage & Dice Pools)",
    "d8": "d8 (Octahedron)",
    "d12": "d12 (Dodecahedron)",
    "d20": "d20 (Icosahedron)",
    "d4": "d4 (Pyramid)",
    "d6": "d6 (Standard)",
    "d10": "d10 (Tens)",
    "d100": "d100 (Percentile)",
    "coup_critique_nat_20": "⭐ CRITICAL HIT (NAT 20)!",
    "echec_critique_nat_1": "💀 CRITICAL FAILURE (NAT 1)!",
    "total_valeur": "Total: {{value}}",
    "des_liste": "(Dice: [{{rolls}}])",
    "dc_vs_bonus": "(DC {{dc}} vs Bonus {{bonus}})",
    "min_possible": "Minimum possible",
    "moyenne": "Average",
    "max_possible": "Maximum possible"
  },
  "discount-sales-tax-calculator": {
    "1st_discount": "1st Discount (%)",
    "calculate_your_exact_out_of_pocket": "Calculate your exact out-of-pocket price with stacked promo codes, clearance markdowns, sales tax, and total dollar savings.",
    "copied": "Copied!",
    "copy_receipt_summary": "Copy Receipt Summary",
    "double_discount_markdown_sales_tax_calculator": "Double Discount, Markdown & Sales Tax Calculator",
    "extra_coupon": "Extra Coupon (%)",
    "final_total_with_tax": "Final Total (With Tax)",
    "itemized_receipt_breakdown": "Itemized Receipt Breakdown",
    "original_price": "Original Price ($)",
    "original_price_2": "Original Price",
    "price_discounts": "Price & Discounts",
    "primary_markdown": "Primary Markdown",
    "sales_tax": "Sales Tax",
    "sales_tax_2": "Sales Tax",
    "stacked_coupon": "Stacked Coupon",
    "state_local_sales_tax": "State & Local Sales Tax (%)",
    "subtotal_pre_tax": "Subtotal (Pre-Tax)",
    "total_savings": "Total Savings:",
    "copy_summary": "Discount & Sales Tax Calculation:\n- Original Price: ${{original}}\n- First Discount ({{discount1Pct}}% off): -${{discount1}}\n- Extra Coupon ({{couponPct}}% off): -${{coupon}}\n- Subtotal: ${{subtotal}} (Total {{totalPct}}% OFF, saved ${{saved}})\n- Sales Tax ({{taxPct}}%): +${{tax}}\n=> FINAL OUT-OF-POCKET PRICE: ${{final}}"
  },
  "elo-rating-rank-calculator": {
    "1_player_ratings": "1. Player Ratings",
    "bronze_novice": "Bronze / Novice",
    "compute_official_elo_point_shifts_for": "Compute Elo point shifts for wins, draws, and losses using the standard Elo expected-score formula.",
    "elo_rating_mmr_match_probability_calculator": "Elo Rating & MMR Match Probability Calculator (Chess & Competitive Gaming)",
    "gold_advanced": "Gold / Advanced",
    "grandmaster_top_0_1": "International Master level (2400+)",
    "k_factor_scale": "K-Factor Scale",
    "master_grandmaster": "Master (FIDE Master from 2300)",
    "on_defeat": "On Defeat",
    "on_draw": "On Draw",
    "on_victory": "On Victory",
    "opponent": "Opponent",
    "opponent_elo_mmr": "Opponent Elo / MMR",
    "platinum_diamond_expert": "Platinum / Diamond / Expert",
    "silver_intermediate": "Silver / Intermediate",
    "your_elo_mmr": "Your Elo / MMR",
    "your_expected_win": "Your expected score",
    "copy_summary": "Win: +{{winPoints}} Elo ({{newWin}}) | Draw: {{drawPoints}} Elo ({{newDraw}}) | Loss: {{lossPoints}} Elo ({{newLoss}}) | K = {{k}}",
    "k32_fide_echecs": "K=32 (generic)",
    "k20_esport_master": "K=20 (FIDE: under 2400)",
    "k40_placements": "K=40 (FIDE: first 30 games, juniors under 2300)",
    "k10_fide": "K=10 (FIDE: 2400 reached)",
    "k_custom": "Custom K-factor (1 to 100)",
    "new_rating": "Elo: {{value}}"
  },
  "enneagram-personality-quiz": {
    "center_label": "Centre: {{v0}}",
    "copy_summary": "Enneagram type {{v0}}: {{v1}} (wings: {{v2}} or {{v3}})",
    "core_fear": "Core Fear",
    "core_motivation": "Core Motivation",
    "discover_your_core_enneagram_personality_type": "Discover your core Enneagram personality type, instinctual center, deepest fear, and neighboring wings.",
    "enneagram_9_personality_types_wings_explorer": "Enneagram 9 Personality Types & Wings Explorer",
    "select_type": "Select Type",
    "type_n": "Type {{value}}",
    "ailes_possibles": "Possible wings: <0>Type {{type}}w{{left}}</0> or <0>Type {{type}}w{{right}}</0>"
  },
  "ev-tco-savings-calculator": {
    "1_annual_mileage_duration": "1. Annual Mileage & Duration",
    "2_electric_vehicle_ev": "2. Electric Vehicle (EV)",
    "3_gas_diesel_baseline": "3. Gas / Diesel Baseline",
    "all_in_cost_per_km_ev": "All-in Cost per km (EV):",
    "all_in_cost_per_km_gas": "All-in Cost per km (Gas):",
    "annual_fuel_savings": "Annual Fuel Savings",
    "annual_mileage": "Annual Mileage",
    "average_consumption": "Average Consumption",
    "calculate_true_total_cost_of_ownership": "Calculate true Total Cost of Ownership (TCO): cost per 100 km, home charging vs superchargers, 40% maintenance savings, and net ROI over 3 to 8 years.",
    "carbon_reduction": "Carbon Reduction",
    "driving_electric_prevents_approximately_tons_of": "Driving electric prevents approximately {{v0}} tons of direct CO₂ emissions annually.",
    "eco_bonus_subsidies": "EV Incentives / Subsidies",
    "electric_ev": "Electric (EV)",
    "ev_purchase_price": "EV Purchase Price",
    "ev_vs_gas_total_cost_of": "EV vs Gas Total Cost of Ownership (TCO) Simulator",
    "ev_wins": "⚡ EV Wins",
    "fast_charger_rate": "Fast Charger Rate",
    "fuel_consumption": "Fuel Consumption",
    "fuel_cost_per_100_km_comparison": "Fuel Cost per 100 km Comparison",
    "fuel_price_liter": "Fuel Price / Liter",
    "gas_car_purchase_price": "Gas Car Purchase Price",
    "gas_wins": "Gas Wins",
    "gasoline_diesel": "Gasoline/Diesel",
    "home_charging_share": "Home charging share (off-peak)",
    "home_elec_rate": "Home rate (off-peak)",
    "immediate": "Immediate",
    "initial_payback_time": "Initial Payback Time",
    "over_yrs": "over {{v0}} yrs",
    "ownership_horizon": "Ownership Horizon",
    "registration_co2_tax": "Registration & CO2 Tax",
    "year_total_tco_net_savings": "{{v0}}-Year Total TCO Net Savings",
    "years": "years",
    "years_2": "years",
    "km_par_an": "km/year",
    "montant_par_an": "{{amount}} / year",
    "car_presets": "Car presets:",
    "preset_compact": "City car (e-208 / R5)",
    "preset_sedan": "Sedan (Model 3 / i4)",
    "preset_suv": "SUV (Model Y / Scénic)",
    "home_peak_share": "Home charging share (peak)",
    "fast_charging_share": "Fast charging share",
    "home_peak_rate": "Home rate (peak)",
    "weighted_kwh_price": "Average charging price: {{v0}}/kWh (shares are scaled to their sum)",
    "diesel_consumption": "Diesel consumption",
    "diesel_price_liter": "Diesel price / liter",
    "diesel": "Diesel",
    "annual_savings_vs_diesel": "Energy savings vs diesel:",
    "cumulative_energy_savings": "Cumulative energy savings vs the combustion car"
  },
  "flight-compensation-eu261": {
    "aeroport_d_arrivee": "Arrival airport",
    "aeroport_de_depart": "Departure airport",
    "airport_ams": "Amsterdam (AMS)",
    "airport_ath": "Athens (ATH)",
    "airport_bru": "Brussels (BRU)",
    "airport_cmn": "Casablanca (CMN)",
    "airport_dxb": "Dubai (DXB)",
    "airport_fco": "Rome (FCO)",
    "airport_fra": "Frankfurt (FRA)",
    "airport_jfk": "New York (JFK)",
    "airport_lis": "Lisbon (LIS)",
    "airport_lon": "London (LHR/LGW)",
    "airport_mad": "Madrid (MAD)",
    "airport_par": "Paris (CDG/ORY)",
    "airport_tyo": "Tokyo (HND/NRT)",
    "airport_yul": "Montreal (YUL)",
    "aucune_indemnite_legale_exigible": "No statutory compensation is due in this configuration",
    "bareme_applicable_x_x_km": "Applicable band: <b>{{tier}}</b> ({{km}} km).",
    "calculez_jusqu_a_600_e_d_indemnisation": "Work out up to €600 of fixed-rate compensation per passenger for a delayed (3 h+), cancelled or overbooked flight, plus your out-of-pocket expenses.",
    "cause_declaree": "Reason given",
    "details_de_la_perturbation": "Disruption details",
    "distance_orthodromique_calculee": "Calculated great-circle distance:",
    "frais_engages_hotel_repas": "Out-of-pocket hotel / meal costs (€)",
    "greve_du_controle_aerien_atc": "Air traffic control (ATC) strike",
    "greve_du_personnel_de_la_compagnie": "Airline staff strike",
    "indemnite_totale_estimee_reglement": "Estimated total compensation (Regulation (EC) No 261/2004)",
    "itineraire_vol": "Route & flight",
    "la_compagnie_aerienne_est_europeenne": "The airline is an EU carrier (e.g. Air France, Lufthansa, Ryanair, easyJet)",
    "la_panne_technique_ou_greve_interne": "Under CJEU case law, a technical fault or an internal strike does not amount to an extraordinary circumstance.",
    "le_retard_est_inferieur_a_3_heures": "The delay is under 3 hours, or the cancellation was notified more than 14 days before departure.",
    "le_vol_part_hors_ue_et_la": "The flight departs from outside the EU and the carrier is not an EU airline: Regulation (EC) No 261/2004 does not apply.",
    "meteo_exceptionnelle_tempete": "Exceptional weather / storm",
    "meteo_extreme_ou_greve_du_controle": "Extreme weather and air traffic control strikes count as extraordinary circumstances that release the airline from liability.",
    "nombre_de_passagers": "Number of passengers",
    "non_eligible_a_l_indemnisation_forfaitaire": "Not eligible for fixed-rate compensation",
    "obligation_delai_de_prescription": "<b>Limitation period</b>: up to 5 years in France (2 years in the UK / Belgium).",
    "obligation_hebergement": "<b>Accommodation</b>: hotel night plus airport transfer if departure is pushed to the next day.",
    "obligation_prise_en_charge": "<b>Care</b>: meals, refreshments and 2 free phone calls / e-mails.",
    "obligation_remboursement": "<b>Reimbursement</b>: you can demand a full refund of the ticket if the delay exceeds 5 h.",
    "obligations_d_assistance_de_la_compagnie": "The airline's duty-of-care obligations:",
    "panne_technique_materiel": "Technical / aircraft fault",
    "preavis_d_annulation_recu_avant_le_depart": "Cancellation notice received before departure (days)",
    "refus_d_embarquement_surbooking": "Denied boarding (overbooking)",
    "retard_a_l_arrivee_finale_heures": "Delay at final destination (hours): {{hours}} h",
    "simulateur_d_indemnite_vol_reglement": "Flight Compensation Simulator (Regulation (EC) No 261/2004)",
    "tier_vol_court_courrier": "Short-haul flight (≤ 1,500 km)",
    "tier_vol_intra_ue": "Intra-EU flight of more than 1,500 km",
    "tier_vol_long_courrier": "Extra-EU long-haul flight (> 3,500 km)",
    "tier_vol_long_courrier_reduit": "Long-haul flight (> 3,500 km, delay of 3-4 h: 50% band)",
    "tier_vol_moyen_courrier": "Medium-haul flight (1,500 to 3,500 km)",
    "type_d_incident": "Type of incident",
    "vol_annule": "Flight cancelled",
    "vol_eligible_a_l_indemnisation": "Flight eligible for compensation",
    "vol_retarde_a_destination": "Flight delayed on arrival",
    "x_e_par_passager_x_n_passagers": "<b>€{{amount}}</b> per passenger × {{passengers}} passenger(s) + €{{expenses}} in expenses"
  },
  "flooring-tile-paint-renovation-calculator": {
    "1_coat": "1 coat",
    "1_perimeter_roll_specs": "1. Perimeter & Roll Specs",
    "1_room_tile_dimensions": "1. Room & Tile Dimensions",
    "1_room_wall_specs": "1. Room & Wall Specs",
    "2_coats_recommended": "2 coats (Recommended)",
    "3_coats": "3 coats",
    "accurately_estimate_tile_boxes_with_cut": "Accurately estimate tile boxes with cut waste, paint liters with coats, and wallpaper rolls.",
    "box_size_m_box": "Box Size (m²/box)",
    "boxes": "boxes",
    "ceiling_height_m": "Ceiling Height (m)",
    "coverage_m_l": "Coverage (m²/L)",
    "cutting_details": "Cutting details:",
    "diagonal_15": "Diagonal (+15%)",
    "doors_subtracted": "Doors (subtracted)",
    "each_roll_covers_linear_meters": "Each roll covers {{v0}} linear meters.",
    "estimated_paint_budget": "Estimated Paint Budget:",
    "estimated_tile_flooring_budget": "Estimated Tile/Flooring Budget:",
    "estimated_wallpaper_budget": "Estimated Wallpaper Budget:",
    "final_order_quantity": "Final Order Quantity",
    "flooring_tile_paint_wallpaper_renovation_calculator": "Flooring, Tile, Paint & Wallpaper Renovation Calculator",
    "gross_with_waste": "Gross with Waste",
    "grout_mortar": "Grout Mortar",
    "height_m": "Height (m)",
    "include_ceiling_in_paint_area": "Include ceiling in paint area",
    "laying_pattern_cut_waste": "Laying Pattern (Cut Waste)",
    "length_m": "Length (m)",
    "net_room_area": "Net Room Area",
    "number_of_coats": "Number of Coats",
    "offset_12": "Offset (+12%)",
    "paint_volume_to_buy": "Paint Volume to Buy",
    "paint_walls_ceilings": "Paint (Walls & Ceilings)",
    "pattern_match_margin": "Pattern Match Margin (%)",
    "price_per_m": "Price per m² (€)",
    "recommended_pot_sizes": "Recommended Pot Sizes:",
    "roll_length_m": "Roll Length (m)",
    "roll_width_m": "Roll Width (m)",
    "rolls": "rolls",
    "room_length_m": "Room Length (m)",
    "room_width_m": "Room Width (m)",
    "single_coat_area": "Single Coat Area",
    "straight_10": "Straight (+10%)",
    "strips_per_roll": "strips per roll",
    "tile_adhesive_glue": "Tile Adhesive Glue",
    "tile_length_cm": "Tile Length (cm)",
    "tile_width_cm": "Tile Width (cm)",
    "tiles_flooring": "Tiles & Flooring",
    "total_area_coats": "Total Area ({{v0}} coats)",
    "wall_perimeter_to_cover_m": "Wall Perimeter to cover (m)",
    "wallpaper": "Wallpaper",
    "wallpaper_rolls_to_order": "Wallpaper Rolls to Order",
    "width_m": "Width (m)",
    "windows_subtracted": "Windows (subtracted)",
    "summary_flooring": "📐 Tiles/Flooring: {{net}} m² (with cut waste +{{waste}}%: {{gross}} m²)\n📦 To buy: {{boxes}} boxes ({{purchased}} m² / {{tiles}} tiles)\n🧪 Adhesive: ~{{glue}} kg | Grout: ~{{grout}} kg\n💰 Estimated budget: €{{cost}}",
    "summary_paint": "🎨 Paint: Area to paint: {{area}} m² ({{coats}} coats)\n🪣 Volume needed: {{liters}} L ({{pots10}} cans of 10L + {{pots25}} cans of {{small}}L)\n💰 Estimated budget: €{{cost}}",
    "summary_wallpaper": "📜 Wallpaper: Perimeter {{perimeter}}m (H={{height}}m)\n📦 Rolls to order: {{rolls}} rolls ({{strips}} strips per roll)\n💰 Estimated budget: €{{cost}}",
    "plus_x_de_marge": "+{{value}}% margin",
    "soit_x_sacs_de_25kg": "about {{value}} bags of 25kg",
    "soit_x_sacs_de_5kg": "about {{value}} bags of 5kg",
    "plus_10_marge": "(+10% margin)",
    "x_pot_de_10_litres": "{{value}} × 10-liter can",
    "x_pot_de_2_5_litres": "{{value}} × {{size}}-liter can",
    "standard_0_53_m": "Standard: {{v0}} m",
    "standard_10_05_m": "Standard: {{v0}} m",
    "wall_porosity": "Wall surface",
    "porosity_normal": "Normal (already painted)",
    "porosity_smooth": "Smooth or satin (−5%)",
    "porosity_porous": "Raw porous plaster (+20%)",
    "paint_pot_size": "Can size",
    "pot_mix_10_2_5": "10 L + 2.5 L cans",
    "pot_size_liters": "{{value}} L cans",
    "x_pots_of_size": "{{value}} × {{size}}-liter can",
    "summary_paint_single": "🎨 Paint: Area to paint: {{area}} m² ({{coats}} coats)\n🪣 Volume needed: {{liters}} L ({{pots}} cans of {{size}} L)\n💰 Estimated budget: €{{cost}}",
    "pattern_repeat_cm": "Pattern repeat (cm)",
    "pattern_repeat_hint": "Added to each strip; 0 for plain paper",
    "total_strips_needed": "{{value}} strips to hang in total"
  },
  "food-expiry-freezer-storage-guide": {
    "copy_summary": "Food storage guide:\n- Food: {{v0}}\n- Refrigerator: {{v1}}-{{v2}} days ({{v3}})\n- Freezer: {{v4}}-{{v5}} months\n- Tip: {{v6}}",
    "days": "days",
    "days_2": "days",
    "exact_safe_shelf_life_in_refrigerator": "Indicative safe shelf life in refrigerator, maximum freezing duration, thawing rules, and temperature guidelines.",
    "food_expiry_freezer_storage_guide": "Food Expiry & Freezer Storage Guide",
    "food_safety": "Food Safety",
    "golden_thawing_rule": "Golden Thawing Rule:",
    "in_freezer_0_f_18_c": "In Freezer (0°F / -18°C)",
    "in_refrigerator_32_39_f": "In Refrigerator (32-39°F)",
    "months": "months",
    "months_2": "months",
    "never_refreeze_thawed_raw_food_unless": "NEVER refreeze thawed raw food unless it has been fully cooked thoroughly first. Always thaw inside the fridge, never on the countertop.",
    "not_recommended": "Not recommended",
    "optimal_texture_flavor": "Optimal texture & flavor",
    "select_food_item": "Select Food Item",
    "storage_guidelines_thawing_tips": "Storage Guidelines & Thawing Tips",
    "range_min_max": "{{min}} to {{max}} {{unit}}"
  },
  "fps-monitor-refresh-rate-calculator": {
    "1_monitor_refresh_rate_hz": "1. Monitor Refresh Rate (Hz)",
    "2_in_game_fps_generated": "2. In-Game FPS Generated",
    "average_in_game_fps": "Average In-Game FPS",
    "calculate_milliseconds_per_frame_visual_input": "Calculate milliseconds per frame, visual input lag reduction, and framerate synchronization across 60Hz, 144Hz, 240Hz, 360Hz, and 540Hz.",
    "frame_time_display_latency": "Frame Time Display Latency",
    "gpu_rendered_frame_time": "GPU Rendered Frame Time",
    "latency_reduced_vs_60hz": "Latency Reduced vs 60Hz",
    "monitor_refresh_rate_frame_time_calculator": "Monitor Refresh Rate & Frame Time Calculator (Hz vs FPS, Frame Latency)",
    "refresh_rate_hz": "Refresh Rate (Hz)",
    "refresh_window_duration_at_hz": "refresh window duration at {{v0}}Hz",
    "standard_refresh_rates": "Standard Refresh Rates:",
    "at_fps": "at {{fps}} FPS",
    "copy_summary": "Screen {{hz}}Hz: {{monitorMs}} ms per frame | GPU {{fps}} FPS: {{gpuMs}} ms"
  },
  "fps-sensitivity-calculator": {
    "1_source_game_current_setup": "1. Source Game (Current Setup)",
    "2_target_game_exact_conversion": "2. Target Game (Exact Conversion)",
    "360_distance_cm": "360° Distance (cm)",
    "360_distance_in": "360° Distance (in)",
    "accurately_convert_mouse_sensitivity_between_games": "Accurately convert mouse sensitivity between games and preserve true muscle memory across all competitive FPS.",
    "aim_profile": "Aim Profile:",
    "converted_target_sensitivity": "Converted Target Sensitivity",
    "extreme_consistency_for_long_range_clicks": "Extreme consistency for long-range clicks, but requires vigorous physical reset sweeps for 180s.",
    "fps_mouse_sensitivity_edpi_converter_cm": "FPS Mouse Sensitivity & eDPI Converter (cm/360° Distance)",
    "game": "Game",
    "ideal_for_tactical_shooters_like_valorant": "Ideal for tactical shooters like Valorant and CS2. Requires a large mousepad (≥45x40 cm).",
    "in_game_sensitivity": "In-Game Sensitivity",
    "low_sens_arm_aiming_tactical": "Low Sens (Arm Aiming / Tactical)",
    "match_source_dpi": "Match Source DPI",
    "medium_balanced_hybrid_arm_wrist": "Medium / Balanced (Hybrid Arm & Wrist)",
    "mouse_dpi": "Mouse DPI",
    "multi_game_equivalencies_exact_360_match": "Multi-Game Equivalencies (Exact 360° Match)",
    "pro_esports_player_presets": "Pro Esports Player Presets",
    "quick_dpi": "Quick DPI:",
    "sens": "Sens",
    "source_game": "Source Game",
    "suited_for_fast_movement_games_requires": "Suited for fast movement games. Requires high fine-motor control and can cause wrist fatigue.",
    "sync_dpi": "Sync ({{v0}} DPI)",
    "target_edpi": "Target eDPI",
    "target_game": "Target Game",
    "target_mouse_dpi": "Target Mouse DPI",
    "the_universal_sweet_spot_used_by": "The universal sweet spot used by most pro players. Great balance of 180° speed and surgical micro-correction.",
    "ultra_low_sens_full_arm": "Ultra Low Sens (Full Arm)",
    "very_high_sens_pure_wrist": "Very High Sens (Pure Wrist)"
  },
  "gacha-probability-calculator": {
    "1_game_pity_rules": "1. Game & Pity Rules",
    "calculate_your_exact_chances_of_pulling": "Estimate your chances of pulling 5-star characters, factoring soft pity ramp-up, 50/50 guarantee, and currency reserves.",
    "chance_for_any_5_star": "Chance for Any 5-Star",
    "current_pity_count": "Current Pity Count",
    "direct_pulls_tickets": "Direct Pulls / Tickets",
    "featured_character_drop_chance": "Featured Character Drop Chance",
    "gacha_game": "Gacha Game",
    "gacha_pull_odds_pity_system_calculator": "Genshin Pull Calculator: Pity, 50/50 and Constellations (also Star Rail, WuWa)",
    "gacha_resource_optimization": "Gacha Resource Optimization",
    "hard_guarantee_requirement": "Hard Guarantee Requirement",
    "next_5_star_is_100_guaranteed": "Next 5-Star is 100% Guaranteed",
    "no_50_50_risk_for_next": "No 50/50 risk for next 5-star",
    "pulls": "pulls",
    "pulls_2": "pulls",
    "pulls_3": "pulls",
    "pulls_4": "pulls",
    "pulls_required_for_5_star_drop": "Pulls Required for 5-Star Drop",
    "safe_reserve_recommendation": "Safe Reserve Recommendation:",
    "saved_currency": "Saved Currency ({{v0}})",
    "soft_pity_activates_at_pull_heavily": "Soft pity activates at pull {{v0}}, heavily ramping up drop rates until guaranteed hard pity at {{v1}}.",
    "to_guarantee_your_character_even_with": "To guarantee your character even with a lost 50/50, maintain a safety reserve of {{v0}} {{v1}} ({{v2}} pulls).",
    "total_pulls_available": "total pulls available",
    "prob_80_label": "80% Chance",
    "prob_99_label": "99% Guarantee",
    "monnaie_genshin": "Primogems / Stellar Jades",
    "monnaie_wuwa": "Astrite",
    "monnaie_fgo": "Saint Quartz",
    "monnaie_bluearchive": "Pyroxene",
    "monnaie_nikke": "Gems",
    "chance_50": "50% Chance",
    "monnaie_primogems": "Primogems",
    "monnaie_stellar_jade": "Stellar Jade",
    "genshin_banner": "Banner",
    "banner_character": "Character Event Wish",
    "banner_weapon": "Weapon Event Wish (Epitomized Path)",
    "goal_constellation": "Constellation goal",
    "goal_refinement": "Refinement goal",
    "copy_single": "1 copy",
    "copies": "{{v0}} copies",
    "intertwined_fates": "Intertwined Fates",
    "starglitter": "Masterless Starglitter (5 = 1 wish)",
    "banner_end_date": "Banner end date (income projection)",
    "welkin_per_day": "Welkin Moon (Primogems/day)",
    "welkin_hint": "90 per day while active, otherwise 0",
    "commissions_per_day": "Daily Commissions (Primogems/day)",
    "commissions_hint": "4 × 10 + 20 bonus = 60",
    "wish_breakdown": "{{v0}} wishes: {{v1}} Intertwined Fates + {{v2}} from Primogems (including {{v4}} projected over {{v5}} days) + {{v3}} from Starglitter.",
    "fate_point_active": "Fate Point 1/1 (Epitomized Path)",
    "fate_point_note": "The next 5★ weapon will be the one you charted",
    "radiance_option": "Capturing Radiance: 55% average (HoYoverse)",
    "radiance_note": "Off: strict 50/50. On: 55% on every 50/50, the consolidated rate HoYoverse published on 10/02/2025. This is an approximation, as the exact rules are not published.",
    "goal_chance": "Chance of reaching {{v0}}",
    "to_guarantee_goal": "To be certain of reaching {{v3}} even in the worst case, keep {{v0}} {{v1}} ({{v2}} wishes).",
    "strict_5050_option": "Strict 50/50, without Capturing Radiance",
    "strict_5050_note": "Unticked (default): 55% on every 50/50, the consolidated probability HoYoverse published on 10/02/2025. This is an approximation, as the exact counter rules are not published. Ticked: 50%, as before version 5.0.",
    "model_radiance": "Model: with Capturing Radiance, 55% per 50/50",
    "model_strict": "Model: strict 50/50",
    "no_soft_pity": "No soft pity in this game: the rate stays at {{v0}}% for a 5★ and {{v2}}% for the featured unit until pull {{v1}}, which secures it (guarantee or point exchange).",
    "to_guarantee_featured": "To be sure of getting the featured unit, keep {{v0}} {{v1}} ({{v2}} pulls)."
  },
  "game-storage-time-calculator": {
    "1_game_or_patch_size": "1. Game or Patch Size",
    "2_download_speed": "2. Download Speed",
    "calculate_exact_game_download_duration_across": "Calculate exact game download duration across Steam, PlayStation, Xbox, and PC based on true network throughput (Mbps/MBps).",
    "connection_types": "Connection Types:",
    "estimated_download_time": "Estimated Download Time",
    "game_download_time_storage_calculator_steam": "Game Download Time & Storage Calculator (Steam, PS5, Xbox, Fibre)",
    "game_size_gb": "Game Size (GB)",
    "network_speed_mbps": "Network Speed (Mbps)",
    "popular_games": "Popular Games:",
    "real_time_transfer_rate": "Real-time Transfer Rate",
    "total_data_payload": "Total Data Payload",
    "copy_summary": "Download time ({{size}} GB at {{speed}} Mbps): {{duration}}",
    "gta_estimated": "GTA V / GTA 6 (estimated)",
    "standard_patch": "Standard update / patch",
    "duration_seconds": "{{value}} seconds",
    "unit_gb": "GB",
    "unit_mb": "MB",
    "unit_mb_per_s": "MB/s",
    "megabits_div_8": "({{speed}} megabits/s ÷ 8)"
  },
  "gas-trip-cost-calculator": {
    "copied": "Copied!",
    "copy_trip_cost_split": "Copy Trip Cost Split",
    "cost_per_distance": "Cost Per Distance",
    "currency": "Currency :",
    "estimate_total_fuel_expenses_gallons_needed": "Estimate total fuel expenses, gallons needed, toll fees, and calculate exact fair split per passenger for your road trip.",
    "estimated_carbon_footprint": "Estimated Carbon Footprint",
    "fair_split_per_passenger": "Fair Split Per Passenger",
    "fuel_expense": "Fuel Expense",
    "fuel_needed": "Fuel Needed",
    "itemized_travel_expenses": "Itemized Travel Expenses",
    "one_way_trip_distance": "One-Way Trip Distance",
    "passengers_splitting": "Passengers Splitting",
    "person": "person",
    "road_trip_gas_cost_mileage_split": "Road Trip Gas Cost & Mileage Split Calculator",
    "round_trip_2x": "Round-trip (2x)",
    "total_trip_budget": "Total Trip Budget:",
    "trip_vehicle_details": "Trip & Vehicle Details",
    "metric_kml": "Metric (Km/L)",
    "miles": "miles",
    "gallons": "gallons",
    "litres": "liters",
    "gallons_cap": "Gallons",
    "litres_cap": "Litres",
    "mile": "Mile",
    "round_trip": "Round-trip",
    "one_way": "One-way",
    "us_miles_mpg": "US (Miles/MPG)",
    "consommation_mpg": "Fuel economy (MPG)",
    "conso_l_100km": "Consumption (L/100km)",
    "prix_essence_x_gal": "Gas price ({{value}}/gal)",
    "prix_carburant_x_l": "Fuel price ({{value}}/L)",
    "tolls_one_way": "Highway tolls, one way",
    "tolls_round_trip_hint": "Doubled for the round trip: {{v0}}",
    "parking": "Parking",
    "tolls": "Tolls",
    "driver_rides_free": "Driver rides free (only passengers share the cost)",
    "split_driver_free": "Paying passengers: {{v0}} (driver exempt)",
    "include_wear": "Add vehicle wear and tear (tires, brakes, maintenance)",
    "wear_rate": "Wear rate",
    "wear": "Vehicle wear and tear",
    "trip_name": "Trip name (optional)",
    "share_preview": "Summary to share",
    "share_title": "Road trip cost",
    "share_title_named": "Trip cost: {{v0}}",
    "share_distance": "- Total distance: {{v0}} {{v1}} ({{v2}})",
    "share_fuel": "- Fuel: {{v0}} {{v1}} ({{v2}})",
    "share_tolls": "- Tolls: {{v0}}",
    "share_parking": "- Parking: {{v0}}",
    "share_wear": "- Wear and tear: {{v0}}",
    "share_total": "- Total cost: {{v0}} ({{v1}})",
    "share_split": "- People paying: {{v0}}, driver included\n- Share per person: {{v1}}",
    "share_split_driver_free": "- Paying passengers: {{v0}}, driver rides free\n- Share per passenger: {{v1}}",
    "tolls_manual_hint": "Type in the amount from the operator's toll rates: the tool does not calculate a route."
  },
  "golden-ratio-calculator": {
    "1_calculation_dimension": "1. Calculation Dimension",
    "2_modular_typography_scale": "2. Modular Typography Scale",
    "base_body_font_size": "Base Body Font Size",
    "calculate_major_61_8_and_minor": "Calculate major (61.8%) and minor (38.2%) harmonious sections, generate modular typography scales and perfect UI canvas dimensions.",
    "css_grid_flexbox_snippet": "CSS Grid & Flexbox Snippet",
    "golden_ratio": "Golden Ratio",
    "golden_ratio_1_618_fibonacci_design": "Golden Ratio (φ = 1.618) & Fibonacci Design Scale",
    "golden_ratio_breakdown": "Golden Ratio Breakdown",
    "major_a_61_8": "Major A (61.8%)",
    "major_part_a": "Major Part (A)",
    "major_section_a": "Major Section (A)",
    "minor_b_38_2": "Minor B (38.2%)",
    "minor_part_b": "Minor Part (B)",
    "minor_section_b": "Minor Section (B)",
    "the_ratio_of_the_whole_to": "The ratio of the whole to the larger part equals the ratio of the larger part to the smaller part.",
    "total_a_b": "Total (A+B)",
    "total_dimension": "Total Dimension",
    "total_size_a_b": "Total Size (A+B)",
    "unit": "Unit",
    "part_a_x": "Part A ({{value}}%)",
    "part_b_x": "Part B ({{value}}%)",
    "level_display": "Display heading (H1)",
    "level_h1": "Heading H1",
    "level_h2": "Heading H2",
    "level_h3": "Heading H3",
    "level_lead": "Subhead / lead",
    "level_body": "Body text (p)",
    "level_caption": "Small text / caption"
  },
  "grocery-unit-price-compare-promo-calculator": {
    "2nd_item_at_discount": "2nd item at discount %",
    "a_2nd_at_50_promotion_equals": "A '2nd at -50%' promotion equals an overall 25% discount across both items. A 'Buy 2 Get 1 Free' equals a 33.3% total discount.",
    "add_product": "Add product",
    "best_value_winner": "Best Value Winner:",
    "beware_of_big_family_packs": "Beware of Big Family Packs",
    "bulk_or_family_packs_are_not": "Bulk or family packs are not always cheaper. Always double-check normalized cost per kg or liter before buying large packages.",
    "buy_2_get_1_free": "Buy 2 Get 1 Free",
    "centiliters_cl": "Centiliters (cl)",
    "compare_actual_cost_per_kg_liter": "Compare actual cost per kg, liter or unit across various sizes, detect misleading grocery promotions (bulk packs, multi-buys) and save on every trip.",
    "direct_discount": "Direct discount %",
    "discount": "% discount",
    "effective_cost": "Effective cost:",
    "family_bulk_pack_1_2_kg": "Family Bulk Pack (1.2 kg)",
    "grams_g": "Grams (g)",
    "grocery_unit_price_promo_savings_comparator": "Grocery Unit Price & Promo Savings Comparator",
    "items_to_compare": "Items to Compare",
    "kilograms_kg": "Kilograms (kg)",
    "liters_l": "Liters (L)",
    "max_savings": "Max Savings",
    "milliliters_ml": "Milliliters (ml)",
    "more_expensive": "more expensive",
    "multi_buy_promo_math": "Multi-Buy Promo Math",
    "no_promotion": "No promotion",
    "off_2nd_item": "% off 2nd item",
    "pack_price": "Pack Price ({{currency}})",
    "packs_count": "Packs Count",
    "per_100g_cl": "per 100g/cl",
    "pieces_doses": "Pieces / Doses",
    "price_per": "Price per",
    "product": "Product",
    "promo_buy_2_get_1_free": "Promo Buy 2 Get 1 Free",
    "quantity": "Quantity",
    "remove": "Remove",
    "smart_shopping_shrinkflation_tips": "Smart Shopping & Shrinkflation Tips",
    "standard_pack_brand_a": "Standard Pack (Brand A)",
    "store_promotion": "Store Promotion",
    "total_paid": "Total paid:",
    "unit": "unit",
    "unit_2": "Unit",
    "winner": "Winner",
    "copy_summary_title": "Grocery & Unit Price Comparison:",
    "winner_label": "Best value winner:",
    "ounces_oz": "Ounces (oz)",
    "pounds_lbs": "Pounds (lbs)",
    "copy_line": "- {{name}}: {{unitPrice}}/{{base}} (Total: {{total}} for {{quantity}}{{unit}})",
    "copy_winner": "Best value winner: {{name}} ({{unitPrice}}/{{base}})",
    "not_compared_other_unit": "Not compared: different unit from item 1"
  },
  "heat-pump-savings-calculator": {
    "10_year_net_gain": "10-Year Net Gain",
    "1_current_heating_setup": "1. Current Heating Setup",
    "20_year_net_gain": "20-Year Net Gain",
    "2_heat_pump_specifications": "2. Heat Pump Specifications",
    "annual_heating_bill": "Annual Heating Bill",
    "annual_heating_cost_comparison": "Annual Heating Cost Comparison",
    "annual_maintenance_contract": "Annual Maintenance Contract",
    "calculate_annual_heating_energy_savings_government": "Calculate annual heating energy savings, government subsidies, payback timeline (ROI), and carbon footprint reduction by upgrading to a heat pump.",
    "carbon_reduction_ecological_impact": "Carbon Reduction & Ecological Impact",
    "co2_avoided_year": "CO2 Avoided / Year",
    "current_heating_source": "Current Heating Source",
    "current_system": "Current system:",
    "electric_baseboard": "Electric Baseboard",
    "electricity_cost_kwh": "Electricity Cost / kWh",
    "equivalent_trees_planted": "Equivalent Trees Planted",
    "estimated_annual_savings": "Estimated Annual Savings",
    "gross_installation_cost": "Gross Installation Cost",
    "heat_pump_vs_boiler_savings_simulator": "Heat Pump vs Boiler Savings Simulator",
    "heating_oil": "Heating Oil",
    "home_living_area": "Home Living Area",
    "natural_gas": "Natural Gas",
    "net_initial_investment": "Net Initial Investment",
    "payback_timeline": "Payback Timeline",
    "seasonal_performance_scop": "Seasonal Performance (SCOP)",
    "subsidies_grants_grants_rebates": "Subsidies & Grants (Grants/Rebates)",
    "trees_yr": "trees/yr",
    "with_heat_pump_elec_maint": "With Heat Pump (Elec + Maint):",
    "wood_pellets": "Wood Pellets",
    "year": "/ year",
    "years": "years"
  },
  "home-energy-appliance-cost-calculator": {
    "add_a_custom_appliance": "Add a Custom Appliance",
    "add_to_my_estimate": "Add to My Estimate",
    "appliance_name": "Appliance Name",
    "average_monthly_cost": "Average Monthly Cost",
    "calculate_the_true_electricity_bill_cost": "Calculate the true electricity bill cost ($/year, $/month) and kWh energy consumption of your household devices.",
    "co_emitted_year": "CO₂ emitted / year",
    "co_footprint": "CO₂ Footprint",
    "daily_average": "Daily Average",
    "days_year": "Days / year",
    "delete": "Delete",
    "e_g_portable_ac": "e.g. Portable AC",
    "electricity_price_kwh": "Electricity Price ($/kWh)",
    "energy_yr": "Energy/yr",
    "france_55_g_kwh_us_avg": "France: ~55 g/kWh | US Avg: ~380 g/kWh",
    "frequent_appliance_presets_click_to_add": "Frequent Appliance Presets (Click to add)",
    "grid_carbon_intensity_g_co_kwh": "Grid Carbon Intensity (g CO₂/kWh)",
    "home_appliance_energy_bill_electricity_cost": "Home Appliance Energy Bill & Electricity Cost Calculator",
    "hours_day": "Hours / day",
    "monthly": "Monthly",
    "over_12_months": "over 12 months",
    "power_watts": "Power (Watts)",
    "standard_kwh_formula": "Standard kWh formula",
    "total_annual_cost": "Total Annual Cost",
    "your_appliances": "Your Appliances ({{v0}})",
    "summary_text": "Total electricity consumption: {{kwh}} kWh/year ({{annual}} €/year, i.e. {{monthly}} €/month for {{count}} appliances). Rate: {{rate}}€/kWh.",
    "base_edf_0_2516": "EDF Base (€0.2001)",
    "heures_creuses_0_2064": "Off-peak hours (€0.1589)",
    "formula_kwh": "kWh = (Power W × Hours/day × Days/year) ÷ 1000",
    "kwh_per_year": "{{value}} kWh / year",
    "kwh_per_day": "{{value}} kWh / day",
    "item_specs": "{{watts}} Watts • {{hours}}h/day • {{days}} days/year",
    "eur_per_month_short": "{{value}} €/mo",
    "per_year_co2": "/ year ({{value}} kg CO₂)",
    "standby_watts": "Standby (Watts)",
    "standby_hint": "Counted over the rest of the year's 8,760 hours",
    "standby_cost_total": "including standby: {{value}} € / year",
    "item_standby": "standby {{watts}} W ({{value}} €/year)"
  },
  "houseplant-watering-light-scheduler": {
    "1_select_your_houseplant": "1. Select Your Houseplant",
    "2_pot_material_environment": "2. Pot Material & Environment",
    "air_humidity": "Air Humidity",
    "autumn_winter": "Autumn / Winter",
    "bright_indirect_light": "Bright indirect light",
    "calculate_customized_watering_intervals_and_light": "Calculate customized watering intervals and light placement based on plant species, pot material, room climate and season.",
    "copy_summary": "Care schedule for {{v0}}:\n- Watering frequency: every {{v1}} days\n- Next watering: {{v2}}\n- Pot type: {{v3}} ({{v4}})\n- Watering method: {{v5}}\n- Note: {{v6}}",
    "current_season": "Current Season",
    "direct_sunlight": "Direct sunlight",
    "does_the_pot_have_drainage_holes": "Does the pot have drainage holes at the bottom?",
    "dry_40_winter_heating": "Dry (<40% - Winter Heating)",
    "en_us": "en-US",
    "estimated_next_watering_on": "Estimated next watering on:",
    "every_days": "Every {{v0}} days",
    "expert_care_tip": "Expert care tip:",
    "glazed_ceramic_non_porous": "Glazed Ceramic (Non-porous)",
    "houseplant_watering_sunlight_care_scheduler": "Houseplant Watering & Sunlight Care Scheduler",
    "humid_60_bathroom": "Humid (>60% - Bathroom)",
    "ideal_light_exposure_for_this_plant": "Ideal light exposure for this plant.",
    "large": "Large",
    "light_diagnostics": "Light Diagnostics",
    "low_light_shaded_room": "Low light / Shaded room",
    "medium": "Medium",
    "medium_light": "Medium light",
    "no_root_rot_risk": "No (Root Rot Risk)",
    "normal_40_60": "Normal (40-60%)",
    "personalized_plant_care_card": "Personalized Plant Care Card",
    "plastic_pot_retains_moisture": "Plastic Pot (Retains moisture)",
    "pot_material": "Pot Material",
    "pot_size": "Pot Size",
    "recommended_watering_frequency": "Recommended Watering Frequency",
    "room_temperature_c": "Room Temperature (°C)",
    "small": "Small",
    "spring_summer": "Spring / Summer",
    "sunlight_exposure": "Sunlight Exposure",
    "terracotta_clay_breathable_dries_fast": "Terracotta Clay (Breathable, dries fast)",
    "too_dark_growth_will_stall_and": "Too dark: growth will stall and leaf variegation may be lost.",
    "warning_direct_sunlight_will_scorch_leaves": "Warning: direct sunlight will scorch leaves. Filter with a sheer curtain.",
    "warning_this_plant_requires_direct_sunlight": "Warning: this plant requires direct sunlight to avoid etiolation.",
    "watering_technique": "Watering technique:",
    "yes_recommended": "Yes (Recommended)"
  },
  "intermittent-fasting-window-calculator": {
    "2_to_2_5l_day": "(2 to 2.5L / day)",
    "black_coffee": "Black coffee",
    "boosts_autophagy": "(no sugar or milk)",
    "calculate_schedule_from": "Calculate schedule from:",
    "calculate_your_exact_eating_and_fasting": "Calculate your exact eating and fasting windows (16:8, 18:6, OMAD) and follow your metabolic timeline.",
    "copy_summary": "⏰ Intermittent fasting schedule {{v0}}\n🍽️ Eating window: {{v1}} to {{v2}} ({{v3}} h)\n🛑 Fasting period: {{v4}} to {{v5}} ({{v6}} h)\n💧 Allowed drinks: water, green tea, black coffee (no sugar), herbal teas, water with a pinch of salt.",
    "eat": "eat",
    "eating_window": "Eating Window",
    "eating_window_2": "eating window",
    "electrolytes_sea_salt": "Electrolytes & Sea salt",
    "fast": "fast",
    "fasting_window": "Fasting Window",
    "first_meal_time": "First Meal Time",
    "green_tea_herbal_infusions": "Green tea & herbal infusions",
    "hydration_during_fasting": "Hydration During Fasting",
    "intermittent_fasting_eating_window_calculator": "Intermittent Fasting & Eating Window Calculator",
    "last_meal_end_time": "Last Meal End Time",
    "metabolic_milestones_timeline": "Metabolic Milestones Timeline",
    "mineral_or_sparkling_water": "Mineral or sparkling water",
    "no_sugar_milk_or_creamer": "(no sugar, milk or creamer)",
    "pinch_of_pink_salt_prevents_fatigue": "(pinch of pink salt prevents fatigue)",
    "pure_fast": "pure fast",
    "reference_meal_time": "Reference Meal Time",
    "time_you_finish_eating_tonight": "Time you finish eating tonight:",
    "time_you_want_to_break_fast": "Time you want to break fast tomorrow:",
    "your_daily_fasting_schedule": "Your Daily Fasting Schedule",
    "protocol_18_6_name": "18/6 (intermediate+)",
    "protocol_14_10_name": "14/10 (circadian beginner)",
    "difficulty_easy": "Easy",
    "difficulty_intermediate": "Intermediate",
    "difficulty_advanced": "Advanced",
    "difficulty_expert": "Expert",
    "weekly_protocols": "Weekly protocols",
    "weekly_adf_name": "Alternate-day",
    "weekly_5_2_short": "2 restricted / 5 normal days",
    "weekly_adf_short": "1 fast day / 1 normal day",
    "weekly_planning_title": "Your weekly schedule",
    "weekly_first_day": "First fast day",
    "weekly_week_n": "Week {{v0}}",
    "weekly_day_restricted": "Restricted",
    "weekly_day_fast": "Fast",
    "weekly_day_normal": "Normal",
    "weekly_5_2_desc": "5:2: two days a week on a very low intake (about 2,710 kJ, or 650 kcal a day, in the trial by Harvie et al., 2011, run in women) and five days of usual eating. The tool puts the second day three days after the first; pick the first day in the list.",
    "weekly_adf_desc": "Alternate-day: a fast day (0 to 500 kcal in the protocols studied, according to the review by Varady et al., 2022) alternates with a day of usual eating. A week has 7 days, so the schedule covers 14 days and the second week starts with a normal day.",
    "answer_table_title": "When to eat the next day, by dinner time",
    "answer_table_lead": "Time of the first meal the next day for a dinner finished at the time shown. On 16:8, a dinner finished at 20:00 means a first meal at {{v0}}; on 18:6, at {{v1}}.",
    "answer_table_protocol": "Protocol",
    "answer_table_dinner": "Dinner done at {{v0}}",
    "contra_title": "Who should not fast without medical advice",
    "contra_lead": "Intermittent fasting does not suit everyone. Do not start without talking to your doctor in the following cases:",
    "contra_pregnancy": "Pregnancy or breastfeeding.",
    "contra_diabetes": "Diabetes treated with insulin or with a glucose-lowering drug: in a trial in people with type 2 diabetes, fasting doubled the rate of hypoglycaemia despite lower doses (Corley et al., 2018).",
    "contra_eating_disorders": "Current or past eating disorders (anorexia, bulimia, binge eating).",
    "contra_minors": "Under 18: growing children and teenagers.",
    "contra_medication": "Medicines to be taken with a meal or at a set time: ask your doctor or pharmacist how to adjust the doses.",
    "contra_sources": "Sources: ANSES, opinion of 6 March 2024; Corley et al., Diabetic Medicine, 2018; Vasim et al., Nutrients, 2022. Details and links in the tool's documentation."
  },
  "international-shoe-clothing-size-converter": {
    "bust": "Bust",
    "chest_cm": "Chest (cm)",
    "chest_in": "Chest (in)",
    "consider_0_5_to_1_size": "Consider 0.5 to 1 size up for running.",
    "convert_instantly_between_eu_us_uk": "Convert instantly between EU, US, UK and Japanese sizes for shoes, men's & women's apparel, and jeans inseams.",
    "converted_equivalents_for_eu": "Converted Equivalents for EU",
    "foot_length": "Foot Length",
    "french_pant_equivalent": "French Pant Equivalent:",
    "international_shoe_clothing_size_converter_eu": "International Shoe & Clothing Size Converter (EU, US, UK, JP, CM)",
    "jeans_pants_w_l": "Jeans & Pants (W/L)",
    "jeans_us_waist_w_to_fr": "Jeans US Waist (W) to FR Pant Size Converter",
    "men_s_tops_shirts_suits_sizing": "Men's Tops, Shirts & Suits Sizing Chart",
    "men_s_tops_suits": "Men's Tops & Suits",
    "men_unisex": "Men / Unisex",
    "select_your_eu_shoe_size": "Select Your EU Shoe Size",
    "shoe_sizes": "Shoe Sizes",
    "size": "Size",
    "sneaker_brand_fit_advice": "Sneaker Brand Fit Advice",
    "standard_rule_fr_size_us_waist": "Standard rule: FR size = US Waist + 10.",
    "tends_to_run_0_5_size": "Often reported to run 0.5 size small.",
    "true_to_size": "Reported as true to size.",
    "us_waist_size_e_g_w30": "US Waist Size (e.g. W30, W32, W34)",
    "waist": "Waist",
    "women": "Women",
    "women_s_dresses_outerwear_sizing_chart": "Women's Dresses & Outerwear Sizing Chart",
    "women_s_dresses_tops": "Women's Dresses & Tops",
    "us_men": "US Men",
    "us_women": "US Women",
    "copy_shoe": "EU shoe size {{eu}}:\n- {{usLabel}}: {{us}}\n- UK: {{uk}}\n- JP / Length cm: {{cm}} cm ({{inches}} inches)",
    "alpha": "Alpha",
    "france_eu": "France / EU",
    "italie_it": "Italy (IT)"
  },
  "json-diff-compare-tool": {
    "added": "Added",
    "all": "All",
    "changes": "Changes :",
    "compare_two_json_objects_side_by": "Compare two JSON objects side-by-side in real time with automatic validation and deep recursive structural diff.",
    "detailed_structural_diff": "Detailed Structural Diff",
    "empty_json": "Empty JSON",
    "empty_json_2": "Empty JSON",
    "format_json": "Format JSON",
    "left_value": "Left Value :",
    "modified": "Modified",
    "modified_json_right_b": "Modified JSON (Right / B)",
    "no_differences_found_both_json_objects": "No differences found! Both JSON objects are identical.",
    "original_json_left_a": "Original JSON (Left / A)",
    "paste_left_json_here": "Paste left JSON here...",
    "paste_right_json_here": "Paste right JSON here...",
    "please_fix_syntax_errors_to_view": "Please fix syntax errors to view comparison.",
    "removed": "Removed",
    "right_value": "Right Value :",
    "smart_json_diff_comparison_tool": "Smart JSON Diff & Comparison Tool",
    "swap_sides": "Swap Sides",
    "valid": "Valid",
    "valid_2": "Valid"
  },
  "kitchen-cooking-measurement-converter": {
    "1_select_ingredient_amount": "1. Select Ingredient & Amount",
    "200g_flour_g_3_eggs_eggs": "• 200g flour ➔ {{v0}}g\n• 3 eggs ➔ {{v1}} eggs\n• 100g sugar ➔ {{v2}}g",
    "amount": "Amount",
    "cake_pan_resizer": "Cake Pan Resizer",
    "convert_cups_to_grams_with_exact": "Convert cups to grams with exact ingredient densities and scale recipes for any cake pan shape.",
    "copy_ingredient": "🥣 Cooking conversion: {{v0}}\n👉 {{v1}} {{v2}} = {{v3}} g | {{v4}} cups | {{v5}} tbsp | {{v6}} oz",
    "copy_oven": "🔥 Oven temperature: {{v0}} °C = {{v1}} °F = gas mark {{v3}}",
    "copy_pan_scaler": "🍰 Cake pan resizer: multiply every recipe ingredient by ×{{v0}} ({{v1}})",
    "culinary_ingredient": "Culinary Ingredient",
    "cups_to_grams_converter": "Cups to Grams Converter",
    "cups_us": "Cups (US)",
    "cups_us_2": "Cups (US)",
    "density_1_cup_grams": "Density: 1 cup = {{v0}} grams.",
    "diameter_cm": "Diameter (cm)",
    "diameter_cm_2": "Diameter (cm)",
    "grams_g": "Grams (g)",
    "kitchen_cooking_measurement_recipe_scaler": "Kitchen Cooking Measurement & Recipe Scaler",
    "length_cm": "Length (cm)",
    "length_cm_2": "Length (cm)",
    "milliliters_ml": "Milliliters (ml)",
    "original_pan_area": "Original Pan Area",
    "original_recipe_pan": "Original Recipe Pan",
    "ounces_oz": "Ounces (oz)",
    "ounces_oz_2": "Ounces (oz)",
    "oven_temperature_converter": "Oven Temperature Converter",
    "oven_temperature_converter_2": "Oven Temperature Converter",
    "recipe_scaling_factor": "Recipe Scaling Factor",
    "rectangular": "Rectangular",
    "rectangular_2": "Rectangular",
    "round": "Round",
    "round_2": "Round",
    "scaling_example": "Scaling Example:",
    "side_length_cm": "Side Length (cm)",
    "side_length_cm_2": "Side Length (cm)",
    "source_unit": "Source Unit",
    "square": "Square",
    "square_2": "Square",
    "tablespoons": "Tablespoons",
    "tablespoons_tbsp": "Tablespoons (tbsp)",
    "target_pan_area": "Target Pan Area",
    "teaspoons": "Teaspoons",
    "teaspoons_tsp": "Teaspoons (tsp)",
    "temperature_in_celsius_c": "Temperature in Celsius (°C)",
    "volume_ml": "Volume (ml)",
    "width_cm": "Width (cm)",
    "width_cm_2": "Width (cm)",
    "your_target_cake_pan": "Your Target Cake Pan",
    "egal_x_cups": "(= {{value}} cups)",
    "thermostat_france_gas_mark": "Thermostat (France / Gas Mark)",
    "unit_fl_oz": "Fluid ounces (fl oz)",
    "unit_sticks": "Sticks of butter",
    "tile_fl_oz": "Fluid ounces",
    "x_sticks": "{{value}} sticks",
    "baking_description": "Baking Description:",
    "very_low_slow_cook": "Very Low / Slow Cook",
    "low_custards_slow_bake": "Low (Custards, Slow Bake)",
    "moderate_standard_baking": "Moderate (Standard Baking)",
    "hot_roasting_bread": "Hot (Roasting, Bread)",
    "very_hot_pizza_searing": "Very Hot (Pizza, Searing)",
    "tile_butter_sticks": "Butter (sticks)",
    "temperature_in_fahrenheit_f": "Temperature in Fahrenheit (°F)",
    "fan_oven": "Fan oven (−20 °C)"
  },
  "lighting-lumens-kelvin-lux-calculator": {
    "bathroom_400_lux": "Bathroom (400 Lux)",
    "bedroom_150_lux": "Bedroom (150 Lux)",
    "bulb_technology": "Bulb Technology",
    "calculate_required_room_lumens_lux_standards": "Calculate required room lumens, lux standards, bulb wattage, and ideal color temperature (Kelvin) for any living space.",
    "ceiling_height_m": "Ceiling Height (m)",
    "cfl_compact_55_lm_w": "CFL Compact (~55 lm/W)",
    "dark_wood_35_lumens": "Dark / Wood (+35% lumens)",
    "fixture": "fixture",
    "hallway_corridor_100_lux": "Hallway / Corridor (100 Lux)",
    "halogen_15_lm_w": "Halogen (~15 lm/W)",
    "home_office_desk_500_lux": "Home Office / Desk (500 Lux)",
    "ideal_color_temperature": "Ideal Color Temperature",
    "incandescent_equivalent": "Incandescent equivalent:",
    "kelvin_desc_bathroom": "Neutral white (3500 K - 4000 K) with CRI > 90 for the mirror",
    "kelvin_desc_bedroom": "Soft warm white (2400 K - 2700 K), ideal for falling asleep",
    "kelvin_desc_default": "Warm white (cozy & relaxing)",
    "kelvin_desc_hallway": "Warm white (2700 K - 3000 K)",
    "kelvin_desc_kitchen": "Neutral white (3500 K - 4000 K) for food prep clarity",
    "kelvin_desc_living": "Warm white (2700 K - 3000 K) for a cozy ambiance",
    "kelvin_desc_office": "Cool neutral white (4000 K - 5000 K) boosting focus",
    "kitchen_350_lux": "Kitchen (350 Lux)",
    "led_90_lm_w_energy_saver": "LED (~90 lm/W - Energy Saver)",
    "light_white_reflective": "Light / White (Reflective)",
    "lighting_plan": "Lighting Plan",
    "living_room_200_lux": "Living Room (200 Lux)",
    "medium_pastel_15_lumens": "Medium / Pastel (+15% lumens)",
    "number_of_fixtures_spots": "Number of Fixtures / Spots",
    "room_area_sqm": "Room Area (sqm)",
    "room_lighting_calculator_lumens_lux_kelvin": "Room Lighting Calculator: Lumens, Lux & Kelvin",
    "room_setup": "Room Setup",
    "room_type_purpose": "Room Type & Purpose",
    "spot": "spot",
    "to_calculate_lumens_per_bulb": "To calculate lumens per bulb",
    "total_electrical_power": "Total Electrical Power",
    "total_lumens_needed": "Total Lumens Needed",
    "wall_color": "Wall Color",
    "copy_summary": "Room Lighting Plan ({{area}} m²):\n- Total luminous flux: {{lumens}} Lumens\n- Distribution ({{fixtures}} fixtures): {{perFixture}} Lumens per point\n- Total LED power: {{watts}} Watts\n- Recommended color temperature: {{kelvin}} ({{desc}})",
    "norme_lux": "Guideline: {{value}} lux",
    "watts_equivalents": "~{{value}} Watts"
  },
  "lithotherapy-stone-finder": {
    "choose_a_crystal": "Choose a Crystal",
    "copy_summary": "Stone: {{v0}} | Cleansing: {{v1}} | Recharging: {{v2}}",
    "discover_the_ideal_healing_crystal_for": "Choose a crystal and see its traditional properties, chakra associations and cleansing rituals.",
    "lithotherapy_crystal_finder_guide_chakras_cleansing": "Lithotherapy Crystal Finder & Guide (Chakras, Cleansing & Sun/Moon Charging)",
    "purification": "Purification",
    "recharging": "Recharging"
  },
  "livestock-feed-ration-calculator": {
    "animal_production_parameters": "Animal & Production Parameters",
    "basal_forage": "Basal Forage",
    "concentrate": "Concentrate: {{v0}}%",
    "concentrate_feed": "Concentrate Feed",
    "concentrate_price_tonne": "Concentrate Price (€/tonne)",
    "copy_summary": "Ration {{v0}}: {{v1}} kg DM ({{v2}} UFL, {{v3}} g PDI) – concentrate: {{v4}} kg as-fed/day – herd of {{v5}} head = {{v6}} t DM/month",
    "daily_animal_nutritional_needs": "Daily Animal Nutritional Needs",
    "daily_animal_ration_breakdown": "Daily Animal Ration Breakdown",
    "determine_daily_feed_requirements_in_dry": "Determine daily feed requirements in Dry Matter (DM), Net Energy (UFL), and Digestible Protein (PDI) according to INRAE livestock standards.",
    "digestible_protein": "Digestible Protein",
    "dry_matter_day": "Dry Matter / day",
    "forage": "Forage: {{v0}}%",
    "herd_size_heads": "Herd Size (heads)",
    "live_body_weight_kg": "Live Body Weight (kg)",
    "livestock_feeding_ration_nutritive_value_calculator": "Livestock Feeding Ration & Nutritive Value Calculator (INRAE)",
    "monthly_concentrate_budget": "Monthly concentrate budget",
    "monthly_herd_needs_hd": "Monthly herd needs ({{v0}} hd)",
    "net_energy_unit": "Net Energy Unit",
    "ration_composition_costs": "Ration Composition & Costs",
    "silage_hay_pasture": "Silage, hay, pasture",
    "net_energy": "NET ENERGY",
    "proteins": "PROTEINS",
    "unit_g_per_day": "g/day",
    "unit_kg_per_day": "kg/day",
    "ingestion": "INTAKE",
    "unit_kg_ms": "kg DM",
    "kg_ms_value": "{{value}} kg DM",
    "kg_brut_value": "{{value}} kg as fed",
    "tonnes_ms_value": "{{value}} tonnes DM"
  },
  "luggage-packing-list-travel-generator": {
    "1_trip_parameters": "1. Trip Parameters",
    "add": "Add",
    "airport_security_carry_on_rules": "Airport Security Carry-On Rules",
    "beach_holiday_relax": "Beach Holiday / Relax",
    "business_trip": "Business Trip",
    "city_break_sightseeing": "City Break / Sightseeing",
    "cold_winter": "Cold / Winter",
    "copy_custom_section": "Custom items",
    "copy_title": "Travel checklist ({{v0}} days, {{v1}}):",
    "custom_added_items": "Custom Added Items",
    "destination_climate": "Destination Climate",
    "e_g_favorite_pillow_baby_toy": "e.g. Favorite pillow, baby toy...",
    "generate_tailored_packing_lists_with_exact": "Generate tailored packing lists with exact clothing counts calculated for trip length, climate, laundry availability and activities.",
    "hiking_outdoor": "Hiking / Outdoor",
    "hot_sunny": "Hot / Sunny",
    "liquids_in_cabin_baggage_must_be": "Liquids in cabin baggage must be in containers of 100ml max, fit in a single 1L transparent ziplock bag.",
    "mild_15_22_c": "Mild (15-22°C)",
    "packed": "packed",
    "packing_progress": "Packing Progress",
    "smart_luggage_packing_list_travel_checklist": "Smart Luggage Packing List & Travel Checklist Generator",
    "travel_style": "Travel Style",
    "traveling_as_a_couple_2_people": "Traveling as a couple (2 people)?",
    "trip_duration_days": "Trip Duration (Days)",
    "tropical_rainy": "Tropical / Rainy",
    "washing_machine_available": "Washing machine available?"
  },
  "manure-slurry-storage-capacity-calculator": {
    "1_herd_inventory_head_count": "1. Herd Inventory (Head count)",
    "2_environmental_regulations": "2. Environmental Regulations",
    "annual_produced_fertilizer_value": "Annual Produced Fertilizer Value",
    "annual_rainfall_mm": "Annual Rainfall (mm)",
    "dairy_cows": "Dairy Cows",
    "fattening_pigs": "Fattening Pigs",
    "heifers": "Heifers",
    "incl_m_rain": "Incl. {{v0}} m³ rain",
    "manure_slurry_pit_storage_capacity_calculator": "Manure & Slurry Pit Storage Capacity Calculator",
    "mo": "mo",
    "required_autonomy_months": "Required Autonomy (months)",
    "required_manure_pad_area": "Required Manure Pad Area",
    "required_slurry_pit_volume": "Required Slurry Pit Volume",
    "size_slurry_pits_m_and_solid": "Size slurry pits (m³) and solid manure pads (m²) based on herd inventory, winter storage requirements, and calculate total NPK organic value.",
    "slurry_share": "Slurry Share (%)",
    "solid_manure": "solid manure",
    "storage_capacity_sizing": "Storage Capacity Sizing",
    "suckler_cows": "Suckler Cows",
    "uncovered_pit_area_m": "Uncovered Pit Area (m²)",
    "copy_text": "Manure Storage ({{months}} months): Required slurry pit = {{pit}} m³ - Manure pad = {{area}} m² - Annual fertilizer produced: N={{n}}kg, P={{p}}kg, K={{k}}kg",
    "azote_n": "NITROGEN (N)",
    "phosphore_p": "PHOSPHATE (P₂O₅)",
    "potasse_k": "POTASH (K₂O)",
    "sows": "Sows (with piglets)",
    "sheep_goats": "Ewes and goats"
  },
  "minecraft-portal-coordinates-calculator": {
    "1_conversion_direction": "1. Conversion Direction",
    "2_source_coordinates": "2. Source Coordinates",
    "accurately_convert_x_y_z_coordinates": "Accurately convert X, Y, Z coordinates between Overworld and Nether to link portals seamlessly without cross-linking issues.",
    "minecraft_nether_portal_overworld_coordinate_calculator": "Minecraft Nether Portal & Overworld Coordinate Calculator (1:8 Ratio & Fast Travel Hub)",
    "nether_overworld_8": "Nether ➔ Overworld (× 8)",
    "overworld_nether_8": "Overworld ➔ Nether (÷ 8)",
    "target_nether_coordinates": "Target Nether Coordinates",
    "target_overworld_coordinates": "Target Overworld Coordinates",
    "coord_x_label": "X Coordinate (East / West)",
    "coord_y_label": "Y Coordinate (Height / Altitude)",
    "coord_z_label": "Z Coordinate (North / South)",
    "teleport_cmd_title": "Teleport Command:",
    "axis_label": "Axis {{axis}}"
  },
  "mirror-hours-angel-numbers-calculator": {
    "angel_triplets": "Angel Triplets",
    "copy_summary": "Hour {{v0}}: {{v1}}",
    "current_time": "Current Time",
    "guardian_angel": "Guardian Angel:",
    "key_mirror_hours": "Key Mirror Hours",
    "mirror_hours_angel_numbers_synchronicity_decrypter": "Mirror Hours & Angel Numbers Synchronicity Decrypter",
    "observed_mirror_time": "Observed Mirror Time",
    "select_time_angel_code": "Select Time / Angel Code",
    "spiritual_synchronicity_message": "Spiritual Synchronicity Message",
    "suggested_alignment_action": "Suggested Alignment Action:",
    "tarot_arcana_association": "Tarot Arcana Association:",
    "uncover_the_hidden_guidance_of_mirror": "Uncover the hidden guidance of mirror hours, angel numbers (111, 777, 888), guardian angels, and tarology arcana."
  },
  "moon-phase-ritual-calculator": {
    "calendar_date": "Calendar Date",
    "copy_summary": "Moon on {{v0}}: {{v1}} (illumination {{v2}}%)",
    "day_of_29_5_synodic_cycle": "Day {{v0}} of 29.5 synodic cycle",
    "determine_the_exact_lunar_phase_illumination": "Determine the approximate lunar phase, illumination percentage, and optimal manifestation rituals for any calendar date.",
    "moon_phase_illumination_esoteric_ritual_calculator": "Moon Phase, Illumination & Esoteric Ritual Calculator",
    "phase_first_quarter": "First Quarter 🌓",
    "phase_full": "Full Moon 🌕",
    "phase_last_quarter": "Last Quarter 🌗",
    "phase_new": "New Moon 🌑",
    "phase_waning_crescent": "Waning Crescent 🌘",
    "phase_waning_gibbous": "Waning Gibbous 🌖",
    "phase_waxing_crescent": "Waxing Crescent 🌒",
    "phase_waxing_gibbous": "Waxing Gibbous 🌔",
    "ritual_first_quarter": "Overcoming obstacles, decision-making, perseverance and grounding.",
    "ritual_full": "Gratitude, recharging crystals in moon water, illumination and release of stagnant energy.",
    "ritual_last_quarter": "Forgiveness, letting go, decluttering and cleansing your living space.",
    "ritual_new": "Set intentions, start afresh, write down your wishes and perform abundance rituals.",
    "ritual_waning_crescent": "Deep rest, meditation, introspection and spiritual regeneration.",
    "ritual_waning_gibbous": "Sharing what you have learned, a gratitude review, kindness towards yourself.",
    "ritual_waxing_crescent": "Action, courage, first steps towards your goals and positive visualisation.",
    "ritual_waxing_gibbous": "Fine adjustments, patience, trust in the slow ripening of your projects.",
    "select_date": "Select Date",
    "spiritual_ritual_guidance": "Spiritual Ritual Guidance"
  },
  "npk-fertilizer-calculator": {
    "1_crop_nutrient_needs_kg_ha": "1. Nitrogen Need and P₂O₅, K₂O Removal (kg/ha)",
    "2_soil_residuals_organic_manure": "2. Soil Residuals & Organic Manure",
    "3_mineral_fertilizer_price": "3. Mineral Fertilizer & Price",
    "application_rate": "Application Rate",
    "applied_quantity_t_or_m_ha": "Applied Quantity (t or m³/ha)",
    "calculate_optimal_nitrogen_n_phosphorus_p2o5": "Calculate optimal Nitrogen (N), Phosphorus (P2O5) and Potassium (K2O) rates, accounting for soil residuals and manure.",
    "cattle_manure_t_ha": "Cattle Manure (t/ha)",
    "cost_per_hectare": "Cost per Hectare",
    "crop_npk_fertilizer_soil_nutrient_balance": "Crop NPK Fertilizer & Soil Nutrient Balance Calculator",
    "fertilizer_price_tonne": "Fertilizer Price (€/tonne)",
    "fertilizer_type": "Fertilizer Type",
    "field_surface_ha": "Field Surface (ha)",
    "k_o_required": "K₂O required",
    "net_fertilizer_requirements": "Net Fertilizer Requirements",
    "net_need": "Net need",
    "nitrogen_n": "Nitrogen N",
    "organic_manure_type": "Organic Manure Type",
    "p_o_required": "P₂O₅ required",
    "phosphorus_p_o": "P₂O₅ removed",
    "pig_slurry_m_ha": "Pig Slurry (m³/ha)",
    "potassium_k_o": "K₂O removed",
    "poultry_manure_t_ha": "Poultry Manure (t/ha)",
    "soil_residual_n": "Soil Residual N",
    "soil_supply_k_o": "Soil Supply K₂O",
    "soil_supply_p_o": "Soil Supply P₂O₅",
    "splitting_strategy": "💡 Splitting Strategy:",
    "total_field_cost": "Total Field Cost",
    "total_field_weight": "Total Field Weight",
    "split_1": "1 application",
    "split_2": "2 applications, at the crop's key growth stages",
    "split_3": "3 applications, at the crop's key growth stages",
    "fert_ammonitrate_33_5": "Ammonium nitrate 33.5% (N)",
    "fert_urea_46": "Urea 46% (N)",
    "fert_liquid_nitrogen_30": "Liquid nitrogen solution N30",
    "fert_dap_18_46": "DAP 18-46-0 (Diammonium phosphate)",
    "fert_tsp_45": "Triple superphosphate 45% (P2O5)",
    "fert_potassium_chloride_60": "Potassium chloride 60% (K2O)",
    "fert_npk_15_15_15": "NPK 15-15-15 compound fertilizer",
    "fert_npk_17_17_17": "NPK 17-17-17 compound fertilizer",
    "copy_summary": "NPK fertilization: net N={{n}} kg/ha, P₂O₅={{p}} kg/ha, K₂O={{k}} kg/ha - {{fertilizer}} rate: {{rate}} kg/ha (total: {{tons}} t for {{area}} ha)",
    "azote_n": "NITROGEN (N)",
    "phosphore_p": "PHOSPHATE (P₂O₅)",
    "potasse_k": "POTASH (K₂O)",
    "tonnes": "tonnes",
    "compound_limiting": "Rate set on the most limiting nutrient, so none is applied beyond the need. Still to supply with straight fertilisers: {{n}} kg/ha N, {{p}} kg/ha P₂O₅ and {{k}} kg/ha K₂O.",
    "unit_per_ha": "kg/ha",
    "pk_hint": "Default P₂O₅ and K₂O: nutrients removed by the harvest (COMIFER, France). The soil test decides the rate (skip, maintenance or build-up): adjust these values or the soil supply.",
    "price_hint": "Indicative French prices in euros: replace them with your own. The Insee index of fertiliser prices rose 15% over one year (August 2026).",
    "fert_custom": "Other fertiliser (enter its grade)",
    "custom_name": "Other fertiliser {{grade}}",
    "custom_n": "N content (%)",
    "custom_p": "P₂O₅ content (%)",
    "custom_k": "K₂O content (%)",
    "enter_price": "Enter a price: without it, this product is left out of the budget.",
    "nitrogen_product": "Nitrogen top-up fertiliser",
    "complement_price": "{{name}}: price per tonne",
    "program_title": "Full programme: chosen fertiliser, then straight fertilisers",
    "program_product": "Product",
    "program_tons": "Tonnes (field)",
    "program_cost_field": "Field cost",
    "program_total": "Programme total",
    "price_missing": "A product in the programme has no price, so the budget leaves it out. Enter its price per tonne."
  },
  "numerology-calculator": {
    "9_year_cycle_energy": "9-Year cycle energy",
    "birth_information": "Birth Information",
    "calculate_your_true_life_path_number": "Calculate your true Life Path Number with Master Numbers (11, 22, 33), Expression Number, Soul Urge, and current 9-year cycle.",
    "complete_numerology_calculator_life_path_soul": "Complete Numerology Calculator (Life Path, Soul Urge & Personal Year)",
    "copy_life_path": "Life path {{v0}} – {{v1}}",
    "core_strengths": "Core Strengths:",
    "date_of_birth": "Date of Birth",
    "evolutionary_challenges": "Evolutionary Challenges:",
    "expression_no": "Expression No.",
    "full_legal_name_at_birth": "Full Legal Name at Birth",
    "how_others_see_you": "How others see you",
    "personal_year_desc_1": "Year 1: A new 9-year cycle begins! The perfect moment to launch projects, take bold initiative and sow the seeds of your future.",
    "personal_year_desc_2": "Year 2: A year of patience, cooperation and partnership. Let what you have sown ripen without forcing anything.",
    "personal_year_desc_3": "Year 3: A year of expansion, creativity and social visibility. Express your talents, communicate and enjoy life to the full.",
    "personal_year_desc_4": "Year 4: A year of work, organisation and grounding. Build solid foundations for your finances and your professional life.",
    "personal_year_desc_5": "Year 5: A year of freedom, travel and major unexpected change. Stay flexible and ready to pivot.",
    "personal_year_desc_6": "Year 6: A year of home, family and heartfelt responsibility. Relational harmony and beautifying your living space.",
    "personal_year_desc_7": "Year 7: A year of introspection, quiet and spiritual growth. Take time for yourself, for study and for meditation.",
    "personal_year_desc_8": "Year 8: A year of material harvest, financial success and authority. The efforts of previous years are rewarded.",
    "personal_year_desc_9": "Year 9: A year of reckoning and closure. Sort through your life and release what no longer serves you to prepare the next 9-year cycle.",
    "personal_year_forecast": "Personal Year {{v0}} Forecast ({{v1}})",
    "personality_no": "Personality No.",
    "soul_urge_no": "Soul Urge No.",
    "target_year_for_personal_year": "Target Year for Personal Year",
    "year": "Year {{v0}}",
    "your_deepest_longing": "Your deepest longing",
    "your_natural_talents": "Your natural talents",
    "your_primary_life_path_number": "Your Primary Life Path Number",
    "placeholder_full_name": "E.g. John Paul Smith",
    "personal_year_in": "Personal year {{v0}}: {{v1}}"
  },
  "pc-gaming-bottleneck-calculator": {
    "1_select_processor_cpu": "1. Select Processor (CPU)",
    "2_select_graphics_card_gpu": "2. Select Graphics Card (GPU)",
    "3_resolution_ram": "3. Resolution & RAM",
    "aaa_ultra_graphics_fps": "AAA Ultra Graphics FPS",
    "bottleneck_desc_balanced": "Your CPU and GPU work in complete harmony. You extract the full potential of both components with no hardware throttling.",
    "bottleneck_desc_cpu": "Your GPU ({{v0}}) outpaces your CPU ({{v1}}) at {{v2}}. The graphics card cannot run at full power in competitive games.",
    "bottleneck_desc_gpu": "Your CPU has headroom: the GPU runs close to full usage, which is the standard and desirable behaviour in AAA single-player gaming.",
    "bottleneck_title_balanced": "Perfectly balanced configuration",
    "bottleneck_title_cpu": "CPU bottleneck detected ({{v0}}%)",
    "bottleneck_title_gpu": "GPU bound at {{v1}} ({{v0}}%)",
    "competitive_esports_fps": "Competitive Esports FPS",
    "determine_if_your_cpu_throttles_your": "Determine if your CPU throttles your GPU in 1080p, 1440p, or 4K with projected gaming FPS estimates.",
    "hardware_delta_at": "Hardware Delta at {{v0}}",
    "optimization_advice": "Optimization Advice",
    "optimization_advice_1080p": "At {{v0}}, the CPU works hard to feed the GPU with fast frames. A high-IPC CPU (such as the 7800X3D) unlocks major gains.",
    "optimization_advice_1440p": "At {{v0}} you hit the sweet spot between visual fidelity and optimal use of modern components.",
    "optimization_advice_4k": "At {{v0}}, the workload falls almost entirely on the graphics card (VRAM and ROPs). A mid-range CPU is more than enough.",
    "pc_gaming_bottleneck_hardware_balance_calculator": "PC Gaming Bottleneck & Hardware Balance Calculator",
    "ram_capacity": "RAM Capacity",
    "target_gaming_resolution": "Target Gaming Resolution",
    "copy_bottleneck": "Bottleneck {{value}}%"
  },
  "personal-water-footprint-calculator": {
    "100_plant_based_vegan": "🌱 100% Plant-Based Vegan",
    "1_direct_domestic_water": "1. Direct Domestic Water",
    "2_food_beverages": "2. Food & Beverages",
    "3_textiles_electronics_annual": "3. Textiles & Electronics (Annual)",
    "audit_your_true_personal_water_footprint": "Audit your true personal water footprint combining domestic tap use and invisible virtual water from food and manufactured goods.",
    "baths_week": "Baths/week",
    "coffees_day": "Coffees / day",
    "daily_shower_duration": "Daily shower duration",
    "diet_drinks": "Diet & Drinks",
    "dietary_pattern": "Dietary Pattern",
    "domestic_tap_water": "Domestic Tap Water",
    "eco_shower_head_7l_min": "Eco shower head (7L/min)",
    "flexitarian_occasional_meat": "🥗 Flexitarian (Occasional meat)",
    "footprint_breakdown": "Footprint Breakdown:",
    "jeans_yr": "Jeans / yr",
    "laundry_week": "Laundry/week",
    "liters_day": "Liters / day",
    "meat_heavy_daily_beef_pork": "🥩 Meat Heavy (Daily beef/pork)",
    "of_fresh_water_per_year": "of fresh water per year",
    "personal_water_footprint_calculator_direct_virtual": "Personal Water Footprint Calculator (Direct & Virtual Water)",
    "phone_renew": "Phone renew",
    "standard_meat_3_5x_week": "🍗 Standard (Meat 3-5x/week)",
    "t_shirts_yr": "T-shirts / yr",
    "teas_day": "Teas / day",
    "textiles_devices": "Textiles & Devices",
    "total_estimated_consumption": "Total Estimated Consumption",
    "total_water_footprint_summary": "Total Water Footprint Summary",
    "vegetarian_dairy_eggs": "🧀 Vegetarian (Dairy & eggs)",
    "vs_western_average_4_200_l": "Vs Western average (~4,200 L/d):",
    "water_footprint_network_assessment": "Ecology & Water Resource Assessment"
  },
  "pet-food-calorie-portion-calculator": {
    "100_kibbles": "100% Kibbles",
    "100_wet_food": "100% Wet Food",
    "1_pet_profile": "1. Pet Profile",
    "2_food_type_energy_density": "2. Food Type & Energy Density",
    "activity_level": "Activity Level",
    "adult_1_to_7_yrs": "Adult (1 to 7 yrs)",
    "bag_duration": "Bag duration (",
    "calculate_accurate_daily_food_portions_in": "Calculate estimated daily food portions in grams (kibbles or wet food) based on weight, age, sterilization status and energy requirements (RER × activity factor).",
    "caloric_requirement": "Caloric requirement:",
    "cat": "Cat",
    "current_weight_kg": "Current Weight (kg)",
    "daily_food_portion": "Daily Food Portion",
    "day": "day",
    "days": "days",
    "dog": "Dog",
    "estimated_monthly_cost": "Estimated monthly cost:",
    "high_active_agility": "High / Active / Agility",
    "intact": "Intact",
    "kibble_kcal_100g": "Kibble kcal (/100g)",
    "kibbles": "kibbles",
    "kibbles_day": "kibbles / day",
    "kibbles_per_bowl": "Kibbles per bowl:",
    "kitten_12m": "Kitten (<12m)",
    "life_stage": "Life Stage",
    "low_couch_potato": "Low / Couch Potato",
    "maintenance": "Maintenance",
    "meals_per_day": "Meals per Day",
    "mixed_kibble_wet": "Mixed (Kibble + Wet)",
    "moderate_1_1_5h_daily_walk": "Moderate (1-1.5h daily walk)",
    "month": "month",
    "neutered": "Neutered",
    "pet_food_calorie_daily_portion_sizer": "Pet Food Calorie & Daily Portion Sizer (Dog & Cat)",
    "portion_per_meal_meals_day": "Portion per Meal ({{v0}} meals/day)",
    "puppy_12m": "Puppy (<12m)",
    "senior_7_8_yrs": "Senior (>7-8 yrs)",
    "spayed_neutered": "Spayed / Neutered",
    "weight_gain_15": "Weight Gain (+15%)",
    "weight_loss_15": "Weight Loss (-15%)",
    "weight_management_goal": "Weight Management Goal",
    "wet_food": "wet food",
    "wet_food_day": "wet food / day",
    "wet_food_kcal_100g": "Wet Food kcal (/100g)",
    "wet_food_per_bowl": "Wet food per bowl:",
    "copy_daily_ration": "Daily Ration ({{type}} {{weight}}kg):\n- Target calories: {{calories}} kcal/day\n- Kibble quantity: {{kibbles}} g/day ({{perMeal}} g per meal in {{meals}} meals)\n{{wetSection}}- {{bagKg}}kg bag duration: ~{{bagDays}} days",
    "wet_line": "- Wet food quantity: {{wet}} g/day\n",
    "kcal_par_jour": "{{value}} kcal / day",
    "bag_duration_line": "Bag duration ({{kg}} kg):",
    "bag_days_value": "~{{value}} days",
    "cost_per_month_value": "~{{value}} € / month"
  },
  "pokemon-type-matchup-calculator": {
    "calculate_4x_weaknesses_2x_damages_resistances": "Type a Pokémon's name or pick its types: ×4 and ×2 weaknesses, ×0.5 and ×0.25 resistances, immunities. Offense mode, coverage for a team of 6 and type charts for Generations 1 to 9.",
    "copy_summary": "Types: {{v0}} / {{v1}}",
    "critical_weaknesses_damage_4": "Critical Weaknesses (Damage × 4)",
    "monotype": "Single type",
    "none_single_type": "None (Single Type)",
    "pokemon_type_weakness_resistance_matchup_calculator": "Pokémon weaknesses and resistances by name, type or team",
    "primary_type_type_1": "Primary Type (Type 1)",
    "resistances_damage_0_5": "Resistances (Damage × 0.5)",
    "secondary_type_optional": "Secondary Type (Optional)",
    "total_immunities_damage_0": "Total Immunities (Damage × 0)",
    "weaknesses_damage_2": "Weaknesses (Damage × 2)",
    "resistances_damage_0_25": "Double resistances (damage × 0.25)",
    "mode_label": "Calculation mode",
    "mode_defense": "Defense",
    "mode_offense": "Offense",
    "mode_team": "Team",
    "gen_label": "Type chart",
    "gen_6": "Gen 6 onward",
    "gen_2_5": "Gen 2 to 5",
    "gen_1": "Gen 1",
    "search_label": "Find a Pokémon",
    "search_placeholder": "Swampert, Charizard, Hisuian Growlithe…",
    "search_button": "Search",
    "search_hint": "French, English, Spanish or German names, including Alolan, Galarian, Hisuian and Paldean forms. The Pokémon's types fill in the selection below.",
    "search_found": "{{v0}} is {{v1}} type.",
    "search_not_found": "No Pokémon found for “{{v0}}”.",
    "search_not_in_gen": "{{v0}} has the {{v1}} type, which this chart does not have yet: pick a later generation.",
    "offense_attack_type": "Move type",
    "offense_super": "Super effective (×2) against",
    "offense_not_very": "Not very effective (×0.5) against",
    "offense_no_effect": "No effect (×0) against",
    "offense_neutral": "Normal damage (×1) against",
    "team_title": "Your team (up to 6 Pokémon)",
    "team_slot": "Pokémon {{v0}}",
    "team_unknown": "No Pokémon found",
    "team_absent": "(type not in this chart, not counted)",
    "team_attack": "Move type",
    "team_weak": "Weak",
    "team_resist": "Resist",
    "team_note": "Weak: ×2 or ×4. Resist: ×0.5, ×0.25 or immune. Highlighted rows have more weak members than resisting ones.",
    "team_empty": "Enter at least one Pokémon to see the team's combined weaknesses and resistances."
  },
  "poker-odds-calculator": {
    "1_pot_bet_sizing": "1. Pot & Bet Sizing",
    "2_outs_winning_cards": "2. Outs (Winning Cards)",
    "at_flop_turn_river": "At Flop (Turn + River)",
    "at_turn_river_only": "At Turn (River only)",
    "bet_to_call": "Bet to Call",
    "chance_to_hit_at_least_one": "chance to hit at least one of your {{v0}} outs",
    "current_pot_size": "Current Pot Size",
    "current_street": "Current Street",
    "expected_value": "Expected Value",
    "fold_recommended_ev": "❌ FOLD RECOMMENDED (-EV)",
    "instantly_calculate_your_winning_equity_required": "Instantly calculate your winning equity, required pot odds, outs conversion (Rule of 2 and 4), and expected value (+EV call decision).",
    "poker_math_rules_rule_of_2": "Poker Math Rules (Rule of 2 & 4)",
    "poker_odds_pot_equity_calculator_texas": "Poker Odds & Pot Equity Calculator (Texas Hold’em, Outs & EV)",
    "pot_odds_ratio": "Pot Odds Ratio",
    "profitable_call_ev": "✅ PROFITABLE CALL (+EV)",
    "quick_presets": "Quick Presets:",
    "required_pot_equity": "Required Pot Equity",
    "required_win": "Required Win%",
    "rule_of_4_and_2": "On the flop, multiply your outs by 4 to estimate your equity through the river (~{{v0}} × 4 = {{v1}}%). On the turn, multiply your outs by 2 for the last card (~{{v0}} × 2 = {{v2}}%). If your equity exceeds the pot share required ({{v3}}%), calling is profitable over the long run.",
    "total_outs": "Total Outs",
    "your_actual_equity": "Your Actual Equity",
    "copy_summary": "Equity: {{winProb}}% | Pot Odds: {{reqEquity}}%"
  },
  "regex-tester-explainer": {
    "0_or_1_occurrence_optional": "0 or 1 occurrence (optional)",
    "0_or_more_occurrences": "0 or more occurrences",
    "1_or_more_occurrences": "1 or more occurrences",
    "any_digit_0_9": "Any digit (0-9)",
    "any_whitespace_character_space_tab_newline": "Any whitespace character (space, tab, newline)",
    "any_word_character_a_za_z0": "Any word character [a-zA-Z0-9_]",
    "capture_groups": "Capture groups:",
    "capture_groups_breakdown": "Capture Groups Breakdown",
    "capturing_group_1_2": "Capturing group ($1, $2...)",
    "case_insensitive": "Case insensitive",
    "character_set_class": "Character set / class",
    "chars": "chars",
    "copied": "Copied!",
    "copy_js_snippet": "Copy JS Snippet",
    "dot_matches_newline": "Dot matches newline",
    "end_of_string_line": "End of string/line",
    "flags": "Flags :",
    "found": "found",
    "french_phone_number": "French Phone Number",
    "hex_color_code": "Hex Color Code",
    "interactive_regex_tester_explainer": "Interactive Regex Tester & Explainer",
    "invalid_regex_syntax": "Invalid regex syntax",
    "ipv4_address": "IPv4 Address",
    "iso_date_yyyy_mm_dd": "ISO Date (YYYY-MM-DD)",
    "live_match_highlights": "Live Match Highlights :",
    "match": "match",
    "match_all_instances": "Match all instances",
    "matches": "matches",
    "matches_3_or_6_digit_hex": "Matches 3 or 6 digit hex color codes",
    "matches_french_mobile_and_landline_numbers": "Matches French mobile and landline numbers",
    "matches_http_https_web_links_with": "Matches HTTP/HTTPS web links with query parameters",
    "matches_standard_email_addresses_with_tld": "Matches standard email addresses with TLD",
    "matches_valid_ipv4_addresses_from_0": "Matches valid IPv4 addresses from 0.0.0.0 to 255.255.255.255",
    "multiline_mode": "Multiline mode",
    "no_match_found_for_this_pattern": "No match found for this pattern.",
    "non_capturing_group": "Non-capturing group",
    "paste_your_test_string_here": "Paste your test string here...",
    "pattern_cannot_be_empty": "Pattern cannot be empty",
    "pattern_token_analysis": "Pattern Token Analysis",
    "quick_regex_presets": "Quick Regex Presets",
    "regular_expression_pattern": "Regular Expression Pattern",
    "replacement_pattern_1_2_supported": "Replacement pattern ($1, $2, $& supported)",
    "resulting_string": "Resulting String :",
    "standard_iso_8601_date_with_capture": "Standard ISO 8601 date with capture groups for year, month, day",
    "start_of_string_line": "Start of string/line",
    "substitution_replace_tool": "Substitution / Replace Tool",
    "test_regular_expressions_in_real_time": "Test regular expressions in real-time with highlighted matches, capture groups breakdown, string replace tester, and common presets.",
    "test_string": "Test String",
    "unicode_support": "Unicode support",
    "valid_email": "Valid Email",
    "web_url_http_https": "Web URL (HTTP/HTTPS)",
    "word_boundary": "Word boundary",
    "default_test_text": "Contact support@kristools.com or dev.team@example.org for any technical question.\nAlso visit https://kristools.app or contact@startup.io!",
    "sample_email": "Contact info: test@kristools.com, admin@domain.co.uk, invalid@email",
    "sample_url": "Check out https://kristools.app and http://example.org/page?query=1#section",
    "sample_phone": "Call 06 12 34 56 78 or +33 1 42 68 55 00 to confirm.",
    "sample_date": "Appointment from 2026-08-25 to 2026-12-31, invalid date: 2026-13-40.",
    "sample_ip": "Servers: 192.168.1.1, 10.0.0.254, 127.0.0.1 (invalid: 999.300.1.1)",
    "sample_hex": "Palette: #FFF, #3B82F6, #10B981, #6366F1, invalid: #GG123",
    "replacement_error": "Replacement error: {{message}}",
    "match_tooltip": "Match #{{n}} ({{length}} chars, index {{index}})",
    "pattern_placeholder": "e.g. [a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}",
    "replacement_placeholder": "e.g. <span>$1</span>",
    "match_number": "Match #{{n}}",
    "position_line": "pos: [{{start}}, {{end}}] ({{length}} chars)",
    "uuid_v4": "UUID v4",
    "html_tag": "HTML tag",
    "copy_result": "Copy output",
    "sample_uuid": "Identifier: 95ed6328-7bf5-4baa-82b0-2471c40a847d",
    "sample_html": "<p class=\"intro\">Welcome to the site</p>\n<a href=\"/contact\">Write to us</a>\n<img src=\"logo.png\">"
  },
  "rpg-damage-scaling-calculator": {
    "1_offensive_stats": "1. Offensive Stats",
    "2_enemy_defense_penetration": "2. Enemy Defense & Penetration",
    "armor_penetration": "Armor Penetration (%)",
    "average_damage_per_skill_cast": "average damage per skill cast",
    "base_attack_atk": "Base Attack (ATK)",
    "crit_damage": "Crit Damage (%)",
    "crit_rate": "Crit Rate (%)",
    "critical_hit_damage": "Critical Hit Damage",
    "expected_average_damage": "Expected Average Damage",
    "normal_hit_damage": "Normal Hit Damage",
    "rpg_mmo_damage_scaling_effective_hp": "RPG & MMO Damage Scaling & Effective HP Calculator (Armor Pen & Crit Multiplier)",
    "simulate_hit_damage_critical_hit_amplification": "Simulate hit damage, critical hit amplification, enemy armor mitigation, and average DPS scaling.",
    "skill_damage_multiplier": "Skill Damage Multiplier (%)",
    "target_armor_resistance": "Target Armor / Resistance",
    "copy_summary": "Critical Damage: {{crit}} | Average: {{avg}} | Armor Reduction: {{armor}}%"
  },
  "screen-size-ppi-viewing-distance-calculator": {
    "1_screen_specifications": "1. Screen Specifications",
    "4k_eye_acuity_limit": "4K Eye Acuity Limit",
    "aspect_ratio": "Aspect Ratio",
    "beyond_this_distance_a_20_20": "Beyond this distance, a 20/20 human eye cannot distinguish individual 4K pixels from 1080p.",
    "calculate_optimal_viewing_distance_thx_and": "Calculate optimal viewing distance (THX and SMPTE guidelines), physical dimensions in cm/inches, and pixel density (PPI) for any TV or gaming monitor.",
    "cinema_immersion_thx_40": "Cinema Immersion (THX 40°)",
    "custom_diagonal_inches": "Custom Diagonal (inches)",
    "display_resolution": "Display Resolution",
    "dot_pitch": "Dot Pitch",
    "for_ergonomic_neck_comfort_ensure_the": "For ergonomic neck comfort, ensure the top third of the screen is level with your natural eye height when comfortably seated.",
    "for_m_distance_recommended_size": "For {{v0}}m distance, recommended size:",
    "for_your_4k_screen_place_your": "For your {{v0}}\" 4K screen, place your seating between {{v1}}m (cinema immersion) and {{v2}}m (casual TV comfort).",
    "height": "Height",
    "maximum_immersion_recommended_for_movies_hdr": "Maximum immersion recommended for movies, HDR series and immersive gaming.",
    "official_standards_visual_acuity": "THX/SMPTE Guidelines & Visual Acuity",
    "optimal_4k_viewing_distance": "Optimal 4K Viewing Distance",
    "physical_scale_dimensions": "Physical Scale & Dimensions",
    "pixel_density": "Pixel Density",
    "placement_tip": "Placement Tip",
    "popular_diagonals_inches": "Popular Diagonals (Inches):",
    "reverse_sizing_sofa_to_wall_distance": "Reverse Sizing (Sofa-to-Wall Distance)",
    "screen_size_optimal_viewing_distance_ppi": "Screen Size, Optimal Viewing Distance & PPI Calculator",
    "sofa_distance_meters": "Sofa Distance (meters)",
    "standard_from_the_society_of_motion": "Standard from the Society of Motion Picture and Television Engineers for relaxed daily TV.",
    "standard_tv_viewing_smpte": "Standard TV Viewing (SMPTE)",
    "width": "Width",
    "aspect_16_9": "16:9 (Standard TV / Monitor)",
    "aspect_21_9": "21:9 (Ultrawide Cinema / Gaming)",
    "aspect_32_9": "32:9 (Super Ultrawide Dual)",
    "aspect_16_10": "16:10 (Laptop / Pro)",
    "aspect_4_3": "4:3 (Retro / vintage)",
    "a_x_m": "to {{value}} m",
    "thx_cinema_champ_40": "THX Cinema (40° field)",
    "smpte_standard_champ_30": "SMPTE Standard (30° field)",
    "fiche_ecran": "Screen Sheet {{size}}\" ({{resolution}}):\n- Physical dimensions: {{width}} cm (W) × {{height}} cm (H)\n- Display area: {{area}} m²\n- Pixel density: {{ppi}} PPI (dot pitch: {{pitch}} mm)\n- Recommended THX Cinema viewing distance (40°): {{thx}} m\n- Recommended SMPTE TV viewing distance (30°): {{smpte}} m\n- 4K visual acuity limit: {{acuity}} m"
  },
  "silage-forage-storage-volume-calculator": {
    "approx_months_supply": "Approx {{v0}} months supply",
    "average_dm": "Average DM %",
    "bale_count": "Bale Count",
    "bale_count_2": "Bale Count",
    "bunker_silo_corn_grass": "Bunker Silo (Corn / Grass)",
    "calculate_bunker_silo_volume_round_square": "Calculate bunker silo volume, round/square bale tonnage in Dry Matter (DM), and estimate livestock feeding autonomy.",
    "corn_silage": "Corn Silage",
    "daily_herd_dm_intake_kg_dm": "Daily Herd DM Intake (kg DM/day)",
    "days": "days",
    "diameter_m": "Diameter (m)",
    "dm": "DM %",
    "dm_2": "DM %",
    "dry_matter": "Dry Matter %",
    "dry_matter_tonnage": "Dry Matter Tonnage",
    "feeding_autonomy": "Feeding Autonomy",
    "forage_inventory_balance": "Forage Inventory Balance",
    "forage_silage_hay_storage_volume_tonnage": "Forage, Silage & Hay Storage Volume & Tonnage Calculator",
    "grass_silage": "Grass Silage",
    "height_m": "Height (m)",
    "length_m": "Length (m)",
    "livestock_feed_intake_autonomy": "Livestock Feed Intake & Autonomy",
    "round_bales_hay_baleage": "Round Bales (Hay / Baleage)",
    "silage_type": "Silage Type",
    "square_bales_high_density": "Square Bales (High Density)",
    "storage_dimensions_properties": "Storage Dimensions & Properties",
    "total_fresh_tonnes": "total fresh tonnes",
    "total_storage_volume": "Total Storage Volume",
    "weight_per_bale": "Weight per bale",
    "width_m": "Width (m)",
    "kg_ms_j": "kg DM/day",
    "t_ms": "t DM",
    "copy_stock": "Forage stock: {{dm}} tonnes DM ({{fresh}} t fresh, volume {{volume}} m³) - Herd autonomy: {{days}} days ({{months}} months)",
    "vorschub_title": "Feed-out face advance",
    "vorschub_week": "{{v0}} m per week",
    "vorschub_detail": "That is {{day}} m a day: {{dm}} kg DM taken from this silo each day ({{fresh}} t fresh), across a {{area}} m² face packed at {{density}} kg DM/m³.",
    "vorschub_ok": "At least 2 m per week: this meets the planning value of the Lower Saxony Chamber of Agriculture (2024).",
    "vorschub_low": "Under 2 m per week, the planning value of the Lower Saxony Chamber of Agriculture (2024): the face stays exposed to air for longer, which favours heating. At this height, the face should be at most {{width}} m wide."
  },
  "social-hook-virality-analyzer": {
    "analyseur_de_hook_score_de_retention": "Hook analyser & video retention score (TikTok / Reels / Shorts)",
    "arretez_de_faire_cette_erreur_bete": "Stop making this silly mistake when you post on Instagram if you want to break through in 2026...",
    "aucun_mot_declencheur_detecte": "No trigger word detected (try adding: mistake, secret, stop, reveal, hack...).",
    "conseil_visez_8_a_14_mots": "Tip: aim for 7 to 16 words",
    "copie": "Copied!",
    "copier": "Copy",
    "copier_l_exemple": "Copy the example",
    "elements_visuels_sonores_d_accroche": "Visual & sound hook elements:",
    "hook_score_virilite": "Hook virality score",
    "longueur_ideale_7_16_mots": "✓ ideal length (7-16 words)",
    "modeles_formules_virales_cle_en_main": "Ready-to-use viral templates & formulas",
    "mots_d_impact_liste": "stop,mistake,secret,truth,illegal,free,attention,never,worst,best,hack,tip,why,discover,here is,nobody,avoid,danger,2026",
    "mots_d_impact_psychologique_detectes": "Psychological power words detected:",
    "pattern_interrupt_visuel": "Visual pattern interrupt (fast zoom, cut in under 1.5 s, physical prop)",
    "retention_3_secondes_algorithme_short_form": "3-second retention & short-form algorithm",
    "retention_3s_estimee": "Estimated 3s retention: ~{{value}}%",
    "sound_design_effet_sonore_d_impact": "Sound design / impact sound effect (whoosh, pop, click, glitch)",
    "sous_titres_dynamiques_gros_et_colores": "Large, colourful dynamic subtitles centred on screen (word by word / banners)",
    "tapez_ou_collez_votre_hook": "Type or paste your hook...",
    "template_1_category": "Curiosity & secret",
    "template_1_example": "Nobody tells you this about online banks, but here is why you are losing money...",
    "template_1_formula": "Nobody tells you this about [topic], but here is the truth...",
    "template_2_category": "Contrarian / stop-scroll",
    "template_2_example": "Stop posting at 6 p.m. on Instagram right now! Do this instead:",
    "template_2_formula": "Stop doing [common action] right now! Do this instead:",
    "template_3_category": "Time-saver / hack",
    "template_3_example": "How to go from 0 to 10,000 TikTok followers in under 30 days without showing your face:",
    "template_3_formula": "How to go from [situation A] to [situation B] in less than [short time]:",
    "template_4_category": "Fatal-mistake alert",
    "template_4_example": "The 3 worst mistakes destroying your Google SEO without you knowing:",
    "template_4_formula": "The 3 worst mistakes destroying your [goal] without you knowing:",
    "template_5_category": "Tool / AI reveal",
    "template_5_example": "These 3 free AI tools replace an entire marketing team in 2026:",
    "template_5_formula": "This free website feels so illegal that you should not even know about it:",
    "template_6_category": "Story / behind the scenes",
    "template_6_example": "I posted 3 Shorts a day for 30 days, and here are my exact stats...",
    "template_6_formula": "I tried [extreme experiment] for 30 days, and here is what happened...",
    "testez_l_accroche_de_votre_video": "Test your video's hook, spot the power words and optimise your stop-scroll rate.",
    "texte_de_l_accroche_vocale_ou_sous_titre": "Voice-over hook or subtitle text",
    "votre_phrase_d_accroche_3_premieres_secondes": "Your hook line (the first 3 seconds)",
    "x_mots_y_caracteres": "{{words}} words ({{chars}} characters)"
  },
  "soil-ph-liming-calculator": {
    "1_soil_test_target_ph": "1. Soil Test & Target pH",
    "2_liming_material": "2. Liming Material",
    "application_advice": "Application Advice:",
    "application_rate": "Application Rate",
    "apply_preferably_in_late_summer_or": "Apply preferably in late summer or early autumn onto dry soil, followed by light tillage to incorporate evenly in topsoil.",
    "calculate_required_neutralizing_value_nv_and": "Calculate required Neutralizing Value (NV) and commercial liming materials (Lime, CaCO3) to correct soil acidity and optimize cation exchange.",
    "cost_per_hectare": "Cost per Hectare",
    "current_soil_ph_test": "Current Soil pH (Test)",
    "delivered_price_tonne": "Delivered Price (€/tonne)",
    "field_surface_area_ha": "Field Surface Area (ha)",
    "liming_product": "Liming Product",
    "liming_recommendation": "Liming Recommendation",
    "net_nv_t_nv_ha": "Net NV: {{v0}} t NV/ha",
    "soil_ph_liming_calcium_amendment_calculator": "Soil pH Liming & Calcium Amendment Calculator",
    "soil_texture_buffering": "Soil Texture & Buffering",
    "split_over_pass_es": "Split over {{v0}} pass(es)",
    "target_soil_ph": "Target Soil pH",
    "total_field_budget": "Total Field Budget",
    "total_field_weight": "Total Field Weight",
    "prod_quicklime": "Ground quicklime (CaO)",
    "speed_quicklime": "Very fast acting",
    "prod_carbonate": "Ground calcium carbonate (CaCO3)",
    "speed_carbonate": "Gradual / steady action",
    "prod_dolomite": "Dolomite / magnesian lime (CaCO3 + MgCO3)",
    "speed_dolomite": "Medium action + magnesium supply (Mg)",
    "prod_beet_foam": "Dried sugar-beet factory lime",
    "speed_beet_foam": "Gentle action + trace elements & P",
    "tonnes": "tonnes",
    "copy_summary": "Liming: pH gap={{gap}} - NV requirement: {{vn}} t/ha - Product {{product}}: {{perHa}} t/ha (Total {{total}} t over {{area}} ha in {{passes}} passes)"
  },
  "solar-inverter-battery-sizing": {
    "backup_autonomy": "Backup Autonomy",
    "battery_chemistry": "Battery Chemistry",
    "calculate_off_grid_and_backup_battery": "Calculate off-grid and backup battery bank capacity (kWh / Ah), continuous & surge inverter sizing, and PV solar array wattage.",
    "capacity_copied": "Capacity copied!",
    "daily_energy_consumption": "Daily Energy Consumption",
    "daily_peak_sun_hours": "Daily Peak Sun Hours",
    "days": "days",
    "days_2": "days",
    "days_of_autonomy_backup": "Days of Autonomy (Backup)",
    "depth_of_discharge_dod": "Depth of Discharge (DoD)",
    "electrical_loads_sizing_criteria": "Electrical Loads & Sizing Criteria",
    "inverter_continuous_rating": "Inverter Continuous Rating",
    "inverter_efficiency": "Inverter Efficiency (%)",
    "inverter_minimum_rating": "Inverter Minimum Rating",
    "lead_acid_agm_gel_50_dod": "Lead-Acid AGM / Gel (50% DoD)",
    "lithium_lifepo4_90_dod": "Lithium LiFePO4 (90% DoD)",
    "net_usable_energy_needed": "Net Usable Energy Needed",
    "peak_continuous_load": "Peak Continuous Load",
    "recommended_battery_bank": "Recommended Battery Bank",
    "recommended_pv_solar_array": "Recommended PV Solar Array",
    "required_solar_pv_array": "Required Solar PV Array",
    "solar_inverter_battery_storage_sizing_calculator": "Solar Inverter & Battery Storage Sizing Calculator",
    "surge_inverter_capability": "Surge Inverter Capability",
    "surge_peak_capacity_kw": "Surge peak capacity: {{v0}} kW",
    "system_dc_voltage": "System DC Voltage",
    "system_sizing_blueprint": "System Sizing Blueprint",
    "total_battery_bank_size": "Total Battery Bank Size",
    "usable_capacity": "usable capacity",
    "x_400w_solar_panels": "x 400W solar panels",
    "unit_kwh_per_day": "kWh / day",
    "unit_watts": "Watts (W)",
    "unit_hrs_per_day": "hrs / day",
    "opt_12v": "12V (Small Cabin / RV)",
    "opt_24v": "24V (Medium Home)",
    "opt_48v": "48V (Standard Residential)"
  },
  "solar-panel-payback-calculator": {
    "1_system_specifications": "1. System Specifications",
    "25_year_cumulative_savings": "25-Year Cumulative Savings",
    "25_years": "> 25 years",
    "2_energy_tariffs_habits": "2. Energy Tariffs & Habits",
    "annual_gain": "Annual Gain",
    "annual_production": "Annual Production",
    "auto_grant": "Auto Grant",
    "avoided_co_output": "Avoided CO₂ Output",
    "central_west": "Central / West",
    "consumed": "consumed",
    "cumul_gains": "Cumul Gains",
    "current_grid_price_kwh": "Current Grid Price (€/kWh)",
    "direct_self_consumption_share": "Direct Self-Consumption Share",
    "elec_price": "Elec Price",
    "estimate_your_annual_kwh_output_electricity": "Estimate your annual kWh output, electricity bill savings, surplus feed-in earnings, and 25-year ROI payback period.",
    "estimated_annual_grid_price_inflation": "Estimated Annual Grid Price Inflation",
    "export": "export",
    "installed_capacity_kwp": "Installed Capacity (kWp)",
    "long_term_financial_trajectory": "Long-Term Financial Trajectory",
    "net_balance": "Net Balance",
    "net_initial_investment": "Net Initial Investment",
    "net_profit_25_years": "Net Profit (25 Years)",
    "net_roi": "Net ROI",
    "no_grant": "No Grant",
    "north": "North",
    "payback_period_roi": "Payback Period & ROI",
    "saved": "saved",
    "share_of_generated_power_consumed_instantly": "Share of generated power consumed instantly on-site rather than exported to the grid.",
    "solar_irradiation_region": "Solar Irradiation (Region)",
    "solar_panel_payback_self_consumption_calculator": "Solar Panel Payback & Self-Consumption Calculator",
    "sold": "sold",
    "south_sunbelt": "South / Sunbelt",
    "state_solar_grant": "State Solar Grant",
    "surplus_feed_in_tariff_kwh": "Surplus Feed-in Tariff (€/kWh)",
    "to_break_even": "to break even",
    "tons_over_25_yrs": "tons over 25 yrs",
    "total_turnkey_cost_incl_tax": "Total Turnkey Cost (€ incl. tax)",
    "year": "Year",
    "year_1_total_savings": "Year 1 Total Savings",
    "year_2": "Year {{v0}}",
    "years": "years",
    "x_kwc_wc": "{{kwp}} kWp ({{wp}} Wp)",
    "x_kwc": "{{value}} kWp",
    "x_kwh_kwc_an": "{{value}} kWh / kWp / year",
    "x_kwh_kwc": "{{value}} kWh/kWp",
    "kwh_an": "kWh/year",
    "eur_an": "€/year",
    "kg_an": "kg/year",
    "plus_x_par_an": "+{{value}}% / year",
    "x_eur_kwh": "{{value}} €/kWh"
  },
  "solar-roi-savings-calculator": {
    "25_yr_net_profit": "25-Yr Net Profit",
    "30_federal_itc_tax_credit": "Federal 25D credit (repealed since January 1, 2026)",
    "average_monthly_electric_bill": "Average Monthly Electric Bill ($)",
    "bill_offset": "Bill Offset:",
    "calculate_solar_system_payback_period_30": "Calculate solar system payback period, annual kWh generation, and 25-year net savings (the 30% federal 25D credit was repealed on January 1, 2026).",
    "co2_offset": "CO2 Offset",
    "copied": "Copied!",
    "copy_solar_roi_summary": "Copy Solar ROI Summary",
    "cost_watt": "Cost ($/Watt)",
    "electricity_price_escalator_yr": "Electricity Price Escalator (%/yr)",
    "estimated_payback_period": "Estimated Payback Period",
    "gross_solar_cost": "Gross Solar Cost",
    "location_system_specs": "Location & System Specs",
    "net_system_cost": "Net System Cost",
    "residential_solar_panel_roi_electric_bill": "Residential Solar Panel ROI & Electric Bill Savings Calculator",
    "solar_financial_tax_credit_summary": "Solar Financial & Tax Credit Summary",
    "system_size_kw": "System Size (kW)",
    "tons_year": "tons/year",
    "us_state_location": "US State Location",
    "year_1_savings": "Year 1 Savings",
    "years": "years",
    "us_national_average": "US National Average",
    "state_option": "{{name}} ({{hours}} sun hrs/day, ${{rate}}/kWh)",
    "per_year": "${{value}}/yr",
    "copy_summary": "Residential Solar ROI & Savings Estimate ({{size}} kW System in {{state}}):\n- Gross System Cost: ${{gross}}\n- Federal 25D credit (repealed since January 1, 2026): -${{credit}}\n- Net Out-of-Pocket Cost: ${{net}}\n- Year 1 Estimated Savings: ${{year1}}/yr (${{monthly}}/mo)\n- Electric Bill Offset: {{offset}}%\n=> ESTIMATED PAYBACK PERIOD: {{payback}} YEARS\n=> 25-YEAR NET PROFIT: ${{profit}}"
  },
  "sprayer-calibration-flow-rate-calculator": {
    "1_liter_beaker_calibration_test": "1-Liter Beaker Calibration Test",
    "agricultural_sprayer_calibration_nozzle_flow_rate": "Agricultural Sprayer Calibration & Nozzle Flow Rate Calculator",
    "application_speed_settings": "Application & Speed Settings",
    "boom_width_m": "Boom Width (m)",
    "calibration_result": "Calibration Result",
    "compute_nozzle_flow_rate_l_min": "Compute nozzle flow rate (L/min), optimal operating pressure, ISO nozzle color, and beaker calibration time.",
    "copy_summary": "Sprayer calibration: flow {{v0}} L/min per nozzle ({{v1}} nozzles) – recommended nozzle: {{v2}} at {{v3}} bar – fill 1 L in {{v4}} s",
    "each_nozzle_should_collect_exactly_1": "Each nozzle should collect exactly 1 liter within this duration.",
    "field_area_ha": "Field Area (ha)",
    "flow_rate_per_nozzle": "Flow Rate per Nozzle",
    "forward_speed_km_h": "Forward Speed (km/h)",
    "iso_nozzle_pressure": "ISO Nozzle & Pressure",
    "iso_standard_nozzle_color_guide": "ISO Standard Nozzle Color Guide",
    "nozzle_spacing_cm": "Nozzle Spacing (cm)",
    "nozzles_on_boom": "nozzles on boom",
    "official_calibration_formula": "Official Calibration Formula:",
    "seconds": "seconds",
    "tank_autonomy": "Tank Autonomy",
    "tank_capacity_litres": "Tank Capacity (Litres)",
    "target_volume_l_ha": "Target Volume (L/ha)",
    "total_tanks": "Total Tanks",
    "work_output": "Work Output",
    "formule_de_calibrage": "q (L/min) = (Volume L/ha × Speed km/h × Spacing m) ÷ 600"
  },
  "tarot-reading-simulator": {
    "advice": "Advice:",
    "divinatory_verdict": "Divinatory Verdict:",
    "draw_cards": "Draw Cards",
    "draw_from_the_22_major_arcana": "Draw from the 22 Major Arcana: 3-Card spread (Past/Present/Future), 5-Card Celtic Cross, and Instant Yes/No guidance.",
    "ex_what_energy_surrounds_my_career": "Ex: What energy surrounds my career / love life right now?",
    "global_energy": "Global Energy",
    "no_wait_obstacle_or_blocked_energy": "⚡ NO / WAIT — Obstacle or Blocked Energy",
    "numerological_synthesis_arcana": "Numerological Synthesis Arcana",
    "question_asked": "Question asked:",
    "reversed": "Reversed",
    "shuffling_deck": "Shuffling deck...",
    "spread_3_cards": "3 Cards",
    "spread_cross_5": "Cross (5)",
    "spread_type": "Spread Type",
    "spread_yes_no": "Yes / No",
    "tarot_of_marseilles_interactive_card_reading": "Tarot of Marseilles Interactive Card Reading Simulator",
    "yes_favorable_aligned": "✨ YES — Favorable & Aligned",
    "your_question_or_intention_optional": "Your Question or Intention (Optional)"
  },
  "tibetan-astrology-mewa-calculator": {
    "birth_year": "Birth Year",
    "birth_year_2": "Birth Year",
    "copy_summary": "Tibetan Mewa: {{v0}} ({{v1}}) – element {{v2}}",
    "discover_your_authentic_tibetan_mewa_incarnation": "Discover your authentic Tibetan Mewa incarnation number and karmic profile based on traditional Tibetan astrology.",
    "karmic_blueprint": "Karmic Blueprint",
    "karmic_element": "Karmic element: {{v0}}",
    "mewa": "Mewa {{v0}}",
    "tibetan_mewa_sacred_astrology_calculator_9": "Tibetan Mewa & Sacred Astrology Calculator (9 Magic Squares & Karma)"
  },
  "tire-size-speedometer-equivalence-calculator": {
    "actual_gps_speed": "Actual GPS Speed",
    "aspect_ratio": "Aspect Ratio (%)",
    "aspect_ratio_2": "Aspect Ratio (%)",
    "circumference": "Circumference:",
    "circumference_2": "Circumference:",
    "compare_two_tire_sizes_verify_legal": "Compare two tire sizes (metric or inches), check the usual tolerance (trade rule of thumb), calculate the speedometer error and find alternative sizes within ±3%.",
    "diameter_variation_detail": "Outer diameter variation: {{v0}}% ({{v1}} mm). Trade rule of thumb: -2.0% to +1.5%.",
    "difference": "Difference",
    "etrto_legal_tolerance_passed": "✅ Within usual tolerance (trade rule of thumb)",
    "faster_than_indicated": "⚠️ Faster than indicated",
    "ground_clearance": "Ground Clearance",
    "new_target_tire": "New Target Tire",
    "original_tire_stock": "Original Tire (Stock)",
    "out_of_legal_tolerance_range": "❌ Outside usual tolerance (trade rule of thumb)",
    "popular_presets": "Popular Presets:",
    "radar_impact": "Radar Impact",
    "revs_km": "Revs/km:",
    "revs_km_2": "Revs/km:",
    "rim_inches": "Rim (inches)",
    "rim_inches_2": "Rim (inches)",
    "safe_actual_speed_is_slower": "Safe (actual speed is slower)",
    "sidewall": "Sidewall:",
    "sidewall_2": "Sidewall:",
    "speedometer_discrepancy_table": "Speedometer Discrepancy Table",
    "speedometer_displayed": "Speedometer Displayed",
    "tire_size_equivalence_speedometer_error_calculator": "Tire Size Equivalence & Speedometer Error Calculator",
    "total_diameter": "Total Diameter:",
    "total_diameter_2": "Total Diameter:",
    "width_mm": "Width (mm)",
    "width_mm_2": "Width (mm)",
    "copy_summary": "Tire Equivalence {{orig}} ➔ {{newTire}}:\n- Diameter difference: {{diamDiff}} mm ({{diamPercent}}%)\n- Usual tolerance: {{compliant}}\n- Ground clearance variation: {{clearanceDiff}} mm\n- Speed at 130 km/h speedometer: {{realSpeed}} km/h actual",
    "compliant": "COMPLIANT",
    "non_compliant": "NON-COMPLIANT",
    "preset_standard_upgrade": "Standard Upgrade",
    "preset_confort_dynamique": "Comfort ➔ Dynamic",
    "preset_sport": "Sport",
    "preset_suv_crossover": "SUV / Crossover",
    "size_input_label": "Tire size (225/45 R17 or 31x10.50R15)",
    "size_input_hint": "Metric or inches: an inch size (diameter x width R rim) is converted to millimetres.",
    "size_input_error": "Size not recognised or out of range: type for example 225/45 R17 or 31x10.50R15.",
    "in_inches": "In inches:",
    "nearest_metric": "Nearest metric size: {{size}} ({{diameter}} mm, {{diff}}%)",
    "alt_title": "Alternative tire sizes within ±3% diameter",
    "alt_intro": "Widths from 155 to 335 mm, aspect ratios from 25 to 85 and rims from 13 to 22 inches whose diameter stays within ±3% of {{orig}}, sorted by difference. Only the diameter is checked: verify the load index, speed rating, rim and that the size is actually made.",
    "alt_rule_note": "±3% is the ITV diameter tolerance in Spain (with load index and speed rating at least equal). France and Germany set no percentage: there it is a common rule of thumb, and a size not listed in the vehicle papers may require approval.",
    "alt_rim_filter": "Rim diameter",
    "alt_all_rims": "All rims (13 to 22)",
    "alt_width_filter": "Width",
    "alt_width_near": "Original width ±{{mm}} mm",
    "alt_width_all": "All widths (155 to 335 mm)",
    "alt_col_size": "Size",
    "alt_col_diameter": "Diameter",
    "alt_col_diff": "Difference",
    "alt_col_speed": "Actual at 130 km/h shown",
    "alt_col_trade": "−2/+1.5% rule",
    "alt_yes": "yes",
    "alt_no": "no",
    "alt_compare": "Compare",
    "alt_count": "{{shown}} of {{count}} sizes shown.",
    "alt_none": "No size in the grid stays within ±3% with these filters."
  },
  "tractor-fuel-field-work-cost-calculator": {
    "consumption_l_ha": "Consumption (L/ha)",
    "copy_summary": "Field work cost {{v0}}: total {{v1}} €/ha ({{v2}} € fuel + {{v3}} € labour + {{v4}} € machine) – field total {{v5}} ha = {{v6}} € ({{v7}} L of diesel, {{v8}} h of work)",
    "cost_breakdown_per_hectare": "Cost Breakdown per Hectare",
    "diesel_gnr_price_l": "Diesel (GNR) Price (€/L)",
    "estimate_off_road_diesel_gnr_and": "Estimate off-road diesel (GNR) and AdBlue consumption, hourly output, machinery depreciation, and full operational costs per hectare.",
    "field_work_cost_summary": "Field Work Cost Summary",
    "fuel": "Fuel",
    "fuel_only_ha": "Fuel only: {{v0}} €/ha",
    "labor": "Labor",
    "labor_hourly_rate_h": "Labor Hourly Rate (€/h)",
    "litres_gnr_needed": "Litres GNR needed",
    "machinery": "Machinery",
    "machinery_labor_rates": "Machinery & Labor Rates",
    "machinery_speed_parameters": "Machinery & Speed Parameters",
    "total_field_area_ha": "Total Field Area (ha)",
    "total_field_budget": "Total Field Budget",
    "total_full_cost": "Total Full Cost",
    "total_work_duration_ha": "Total work duration ({{v0}} ha)",
    "tractor_fuel_consumption_gnr_field_work": "Tractor Fuel Consumption (GNR) & Field Work Cost Calculator",
    "tractor_implement_cost_h": "Tractor & Implement Cost (€/h)",
    "work_output_ha_hour": "Work Output (ha/hour)",
    "usure_amort": "Wear / Depreciation"
  },
  "tree-vineyard-planting-density-calculator": {
    "1_spacing_field_area": "1. Spacing & Field Area",
    "2_trellising_plant_cost": "2. Trellising & Plant Cost",
    "calculate_plants_per_hectare_total_rootstocks": "Calculate plants per hectare, total rootstocks required, row linear meters, and trellising wire lengths for vineyards and fruit orchards.",
    "cost_per_hectare": "Cost per Hectare",
    "cost_per_rootstock_plant": "Cost per rootstock / plant",
    "for_area_with_net_density": "For {{v0}} ha (net: {{v1}} plants/ha)",
    "headlands_roads": "Headlands & Roads (%)",
    "in_row_plant_spacing_m": "In-Row Plant Spacing (m)",
    "inter_row_distance_m": "Inter-Row Distance (m)",
    "line_posts": "Line Posts",
    "orchard_vineyard_planting_density_trellising_calculator": "Orchard & Vineyard Planting Density & Trellising Calculator",
    "plant_density_per_ha": "Plant Density per Ha",
    "planting_summary": "Planting Summary",
    "plants_ha": "plants/ha",
    "surface_per_plant": "surface per plant",
    "total_field_area_ha": "Total Field Area (ha)",
    "total_plants_needed": "Total Plants Needed",
    "total_rootstocks_cost": "Total Rootstocks Cost",
    "total_row_length": "Total Row Length",
    "trellis_wire": "Trellis Wire",
    "trellis_wire_levels": "Trellis Wire Levels",
    "units": "units",
    "copy_results": "Planting: {{density}} vines/ha ({{totalPlants}} plants total for {{area}}ha) - Row: {{linearMeters}}m linear - Trellis wire: {{wireMeters}}m - Budget: €{{cost}}"
  },
  "tv-viewing-distance-size-calculator": {
    "based_on_sofa_distance": "🛋️ Based on Sofa Distance",
    "based_on_tv_screen_size": "📺 Based on TV Screen Size",
    "calculate_the_perfect_tv_diagonal_screen": "Calculate the perfect TV diagonal screen size (inches/cm) for your living room viewing distance based on THX & SMPTE cinema guidelines.",
    "cinema_immersion_thx_40": "🎬 Cinema Immersion (THX 40°)",
    "cinema_thx": "Cinema THX",
    "daily_mixed_use_smpte_30": "📺 Daily Mixed Use (SMPTE 30°)",
    "e_g_55_65_75_85": "e.g. 55\", 65\", 75\", 85\"",
    "for_best_ergonomic_comfort_the_center": "For best ergonomic comfort, the center of the screen should align with eye level when seated (approx. 95 cm to 110 cm from the floor).",
    "furniture_width_required": "Furniture Width Required",
    "ideal_range_to": "Ideal range: {{v0}}\" to {{v1}}\"",
    "ideal_viewing_distance_for_tv": "Ideal viewing distance for {{v0}}\" TV:",
    "measured_from_head_to_tv_screen": "Measured from head to TV screen",
    "metric_diagonal": "Metric Diagonal",
    "optimal_recommendation": "Optimal Recommendation",
    "recommended_screen_size_for": "Recommended screen size for",
    "screen_height": "Screen Height",
    "screen_resolution": "Screen Resolution",
    "screen_width_16_9": "Screen Width (16:9)",
    "sofa_to_screen_distance_meters": "Sofa to Screen Distance (meters)",
    "standard_daily_distance_meters": "Standard daily distance: ~{{v0}} meters",
    "tv_screen_size_inches": "TV Screen Size (inches)",
    "tv_size_optimal_viewing_distance_calculator": "TV Size & Optimal Viewing Distance Calculator",
    "viewing_experience": "Viewing Experience",
    "viewing_parameters": "Viewing Parameters",
    "wall_mount_installation_height": "Wall Mount Installation Height",
    "copy_summary": "TV & Viewing Distance:\n- Recommended diagonal: {{diagInch}}\" ({{diagCm}} cm)\n- Screen dimensions: {{widthCm}} cm x {{heightCm}} cm\n- Ideal viewing distance: {{dist}}",
    "ideal_range": "{{cinema}} m (Cinema) to {{standard}} m (Standard)",
    "norme_thx_smpte": "THX & SMPTE guidelines",
    "recommended_screen_size_for_x": "Recommended screen size for {{distance}} m:"
  },
  "ugc-creator-rate-calculator": {
    "autorisation_spark_ads_tiktok": "TikTok Spark Ads authorization / creator account whitelisting (+€50/video)",
    "calculateur_de_tarifs_ugc_devis": "UGC rate calculator & ad quote (rights & variations)",
    "calculez_la_valeur_juste_de": "Calculate the fair value of your UGC videos by factoring in production cost, hook variations for A/B testing and paid amplification rights.",
    "copier_la_proposition_commerciale": "Copy the commercial proposal",
    "ctas_supplementaires_par_video": "Extra CTAs per video (+€25/unit)",
    "devis_copie_presse_papier": "Quote copied to clipboard!",
    "devis_recommande_ht": "Recommended quote (excl. VAT)",
    "droits_dutilisation_publicitaire_paid_ads": "Paid ad usage rights",
    "fourniture_de_tous_les": "Delivery of all unedited raw footage (+40%)",
    "hooks_supplementaires_par_video": "Extra hooks per video (+€35/unit)",
    "livraison_express_sous_48h": "Express delivery within 48 business hours (+25%)",
    "nombre_de_videos_ugc_principales": "Number of core UGC videos",
    "option_0_accroche_unique": "0 (Single hook)",
    "option_0_cta_unique": "0 (Single CTA)",
    "option_10_videos_campagne_complete": "10 videos (full campaign)",
    "option_1_accroche_alternative": "+1 alternative hook",
    "option_1_an_paid_ads": "1 year Paid Ads (+90%)",
    "option_1_appel_a_laction": "+1 alternative call-to-action",
    "option_1_video_unique_test": "1 single video (test)",
    "option_2_accroches_ab_testing": "+2 hooks for A/B testing (recommended)",
    "option_2_appels_a_laction": "+2 alternative calls-to-action",
    "option_30_jours_paid_ads": "30 days Paid Ads (+30%)",
    "option_3_accroches_ab_testing": "+3 hooks for A/B testing",
    "option_3_videos_pack_recommande": "3 videos (recommended pack)",
    "option_5_videos_pack_mensuel": "5 videos (monthly pack)",
    "option_90_jours_paid_ads": "90 days Paid Ads (+50% – Standard)",
    "option_cession_perpetuelle_buyout": "Perpetual assignment / buyout (+150%)",
    "option_usage_organique_uniquement": "Organic use only (€0)",
    "parametres_du_package_video_ugc": "UGC video package settings",
    "pour_x_videos_options": "For {{count}} video(s) + options",
    "proposal_closing": "We remain at your disposal to start the project as soon as it is approved.",
    "proposal_greeting": "Hello,",
    "proposal_intro": "Here are the details of the commercial proposal for the creation of your UGC content ({{count}} video(s)):",
    "proposal_line_base_videos": "Creation of {{count}} full, edited 9:16 UGC video(s) (script, voiceover, subtitles): €{{amount}}",
    "proposal_line_ctas": "{{count}} call-to-action variations (final CTAs): €{{amount}}",
    "proposal_line_hooks": "{{count}} hook variations (for paid A/B testing): €{{amount}}",
    "proposal_line_raw_footage": "Assignment of unedited raw footage: €{{amount}}",
    "proposal_line_rush": "48h express delivery option: €{{amount}}",
    "proposal_line_usage_rights": "Paid ad usage rights ({{usage}}): €{{amount}}",
    "proposal_line_whitelisting": "Whitelisting authorization / TikTok Spark Ads & Meta Ads: €{{amount}}",
    "proposal_total": "TOTAL QUOTE (excl. VAT): €{{amount}}",
    "proposition_commerciale_prete_a_envoyer": "Ready-to-send commercial proposal",
    "tarif_creation_de_base_par": "Base creation rate per video (€)",
    "tarification_createur_ugc_droits_ads": "UGC creator pricing & ad rights",
    "usage_label_ninety_days": "90 days",
    "usage_label_one_year": "1 year",
    "usage_label_organic_only": "Organic use only",
    "usage_label_perpetual": "Perpetual assignment",
    "usage_label_thirty_days": "30 days"
  },
  "unit-converter": {
    "all_conversions_subtitle": "Equivalents for {{v0}} {{v1}} across every unit in this section",
    "all_conversions_title": "All {{v0}} conversions in real time",
    "conversion_equation": "Conversion equation:",
    "conversion_sentence": "Converting {{v0}} {{v1}} ({{v2}}) into {{v3}} ({{v4}}), computed instantly against standardized reference units.",
    "converted_result": "Converted result",
    "copied": "Copied!",
    "copy": "Copy",
    "copy_value": "Copy value",
    "export_category": "Category",
    "export_col_symbol": "Symbol",
    "export_col_unit": "Unit",
    "export_col_value": "Converted value",
    "export_start_value": "Starting value",
    "export_title": "Conversion table – {{v0}}",
    "export_units_count": "Number of converted units",
    "filter_units": "Filter units…",
    "formula_card_title": "Formula & ratio details",
    "high_precision": "High precision",
    "hub_subtitle": "{{v0}} categories • instant real-time calculations & export",
    "hub_title": "Unit conversion hub",
    "input_value": "From (value & unit)",
    "popular_only": "Popular units only",
    "search_placeholder": "Search unit or category…",
    "swap_units": "Swap units",
    "units_available": "units available",
    "popular_badge": "★ Popular",
    "standard_badge": "Standard",
    "direct_answer_detail": "Precise value: {{v0}} {{v1}}. 1 {{v2}} = {{v3}} {{v1}}.",
    "km_mi_table_title": "Common km ↔ miles conversions",
    "half_marathon": "half marathon",
    "marathon": "marathon"
  },
  "unix-timestamp-epoch-converter": {
    "1_timestamp_to_human_date": "1. Timestamp to Human Date",
    "2_human_date_to_timestamp": "2. Human Date to Timestamp",
    "batch_timestamp_converter": "Batch Timestamp Converter",
    "copied": "Copied!",
    "copied_2": "Copied!",
    "copied_3": "Copied!",
    "copy": "Copy",
    "copy_2": "Copy",
    "copy_epoch": "Copy Epoch",
    "current_unix_timestamp_realtime": "Current Unix Timestamp (Realtime)",
    "date": "Date",
    "developer_epoch_timestamp_tool": "Developer Epoch & Timestamp Tool",
    "en": "en",
    "en_us": "en-US",
    "enter_timestamp_sec_ms_s_ns": "Enter Timestamp (sec, ms, µs, ns)",
    "invalid_timestamp": "Invalid timestamp",
    "local_browser_timezone": "Local Browser Timezone",
    "local_time": "Local Time",
    "milliseconds_13_digits": "Milliseconds (13 digits)",
    "paste_one_timestamp_per_line": "Paste one timestamp per line...",
    "pause": "Pause",
    "relative_time": "Relative Time",
    "resume_live": "Resume Live",
    "seamlessly_convert_between_unix_epoch_timestamps": "Seamlessly convert between Unix epoch timestamps and human dates with automated precision detection and batch processing.",
    "seconds_10_digits": "Seconds (10 digits)",
    "set_to_now": "Set to Now",
    "time_hh_mm_ss": "Time (HH:MM:SS)",
    "timezone": "Timezone",
    "unix_timestamp_epoch_converter_iso_8601": "Unix Timestamp & Epoch Converter (ISO 8601, UTC & Timezones)",
    "placeholder_exemple_timestamp": "e.g. 1740474000"
  },
  "ups-battery-runtime-calculator": {
    "27_4k_monitor": "27\" 4K Monitor",
    "battery_wh_capacity": "Battery Wh Capacity",
    "calculate_actual_backup_runtime_in_minutes": "Calculate actual backup runtime in minutes based on total connected load, battery capacity (Wh), and power factor headroom.",
    "compact_650_va_84wh": "⚡ Compact (650 VA / 84Wh)",
    "connected_protected_equipment": "Connected Protected Equipment",
    "each": "each",
    "estimated_backup_runtime": "Estimated Backup Runtime",
    "estimated_runtime_load": "Estimated Runtime & Load",
    "extra_additional_load_watts": "Extra additional load (Watts)",
    "fiber_gateway_wi_fi_router": "Fiber Gateway & Wi-Fi Router",
    "nas_storage_server": "NAS Storage Server",
    "office_pc_laptop": "Office PC / Laptop",
    "office_pro_1500_va_216wh": "🛡️ Office Pro (1500 VA / 216Wh)",
    "on_battery_power": "on battery power",
    "overload_detail": "The requested load ({{v0}} W) exceeds the UPS rated maximum ({{v1}} W).",
    "overload_detected": "⚠️ OVERLOAD DETECTED",
    "power_station_lifepo4_512wh": "🔋 Power Station LiFePO4 (512Wh)",
    "recommended_minimum_ups_size": "Recommended minimum UPS size:",
    "standard_ups_presets": "Standard UPS presets:",
    "ups_battery_runtime_va_sizing_calculator": "UPS Battery Runtime & VA Sizing Calculator",
    "ups_load_percentage": "UPS Load Percentage:",
    "ups_power_backup_battery_runtime": "UPS Power Backup & Battery Runtime",
    "ups_rating_va": "UPS Rating (VA)",
    "x_watts": "{{value}} watts"
  },
  "wifi-internet-speed-bandwidth-sizer": {
    "1080p_hd_video_streams": "1080p HD Video Streams",
    "1_peak_simultaneous_activities": "1. Peak Simultaneous Activities",
    "2_home_layout_wi_fi_coverage": "2. Home Layout & Wi-Fi Coverage",
    "4k_uhd_video_streams": "4K UHD Video Streams",
    "ample_for_your_moderate_usage_without": "Ample for your moderate usage without hiccups.",
    "at_your_target_speed": "At your target speed (",
    "cloud_gaming_esports": "Cloud Gaming & Esports",
    "continuous_cloud_video_recording_3_5": "Continuous cloud video recording (~3.5 Mbps upload each)",
    "coverage_mesh_system": "Coverage & Mesh System:",
    "download": "Download",
    "download_time_for": "Download time for (",
    "entry_fiber_300_500_mbps_or": "Entry Fiber 300-500 Mbps (or 5G Home Box)",
    "estimate_the_required_download_upload_speeds": "Estimate the required download/upload speeds (Mbps/Gbps) and Wi-Fi router setup based on your simultaneous 4K streams, remote work, and smart devices.",
    "hardware_wi_fi_router_guidance": "Hardware & Wi-Fi Router Guidance",
    "home_surface_sq_meters": "Home Surface (sq meters)",
    "ideal_for_power_users_massive_simultaneous": "Ideal for power users, massive simultaneous gaming and big downloads.",
    "internet_bandwidth_home_wi_fi_speed": "Internet Bandwidth & Home Wi-Fi Speed Sizer",
    "levels_floors": "Levels / Floors",
    "mesh_wi_fi_system_recommended_to": "✅ Mesh Wi-Fi system recommended to cover multiple floors without dead spots.",
    "multi_floor_duplex": "Multi-Floor / Duplex",
    "people": "people",
    "power_user_fiber_2_to_8": "Power-User Fiber 2 to 8 Gbps (XGS-PON)",
    "recommended_household_speeds": "Recommended Household Speeds",
    "recommended_plan": "Recommended Plan:",
    "recommended_wi_fi_standard": "Recommended Wi-Fi standard:",
    "remote_work_hd_calls_zoom_teams": "Remote Work HD Calls (Zoom, Teams)",
    "requires_symmetrical_upload_download_4_mbps": "Requires symmetrical upload & download (~4 Mbps Up/Down)",
    "screen": "screen",
    "seamless_comfort_for_simultaneous_4k_streams": "Seamless comfort for simultaneous 4K streams and remote video calls.",
    "single_floor": "Single Floor",
    "single_router_is_sufficient_for_this": "Single router is sufficient for this compact space.",
    "smart_security_cameras_uploading": "Smart Security Cameras Uploading",
    "standard_1_gbps_fiber": "Standard 1 Gbps Fiber",
    "upload": "Upload",
    "with_1_gbps_fiber": "With 1 Gbps Fiber:",
    "copy_summary": "Internet Bandwidth Summary:\n- Recommended Download: {{down}} Mbps\n- Recommended Upload: {{up}} Mbps\n- Recommended Plan: {{plan}}\n- Recommended Wi-Fi: {{wifi}}\n- {{fileSize}} GB file download: ~{{mins}} min",
    "desc_4k_streams": "Netflix 4K, Disney+, YouTube 4K (~25 Mbps / screen)",
    "desc_hd_streams": "Standard TV, Twitch 1080p, tablets (~5 Mbps)",
    "desc_cloud_gaming": "GeForce Now, Xbox Cloud, PS Plus (~40 Mbps + low latency)",
    "download_time_for_size": "Download time for a game/movie ({{size}} GB):",
    "at_target_speed_value": "At your recommended speed ({{speed}} Mbps):"
  },
  "zodiac-compatibility-calculator": {
    "aspect_conjunction": "Conjunction (same sign – twin flame)",
    "aspect_inconjunct": "Inconjunct (fascinating difference requiring adjustment)",
    "aspect_opposition": "Opposition (opposite poles – magnetic attraction)",
    "aspect_sextile": "Sextile (complementary elements – mutual growth)",
    "aspect_square": "Square (dynamic friction and stimulating passion)",
    "aspect_trine": "Trine (same element – effortless harmony)",
    "calculate_romance_communication_and_emotional_chemistry": "Calculate romance, communication, and emotional chemistry between any two zodiac signs with elemental analysis.",
    "chemistry_air_air": "Air + Air: brilliant intellectual connection, witty banter and mutual freedom.",
    "chemistry_earth_air": "Earth + Air: airy vision paired with grounded pragmatic execution.",
    "chemistry_earth_earth": "Earth + Earth: rock-solid stability, shared values and unwavering loyalty.",
    "chemistry_earth_water": "Earth + Water: water nourishes earth, earth anchors water. Deeply fertile and nurturing.",
    "chemistry_fire_air": "Fire + Air: air fuels fire! Stimulating energy, mutual admiration and lively adventures.",
    "chemistry_fire_earth": "Fire + Earth: bold creative drive supported by solid protective foundations.",
    "chemistry_fire_fire": "Fire + Fire: explosive passion, boundless enthusiasm and grand shared adventures.",
    "chemistry_fire_water": "Fire + Water: steamy magnetic chemistry blending raw passion with emotional depth.",
    "chemistry_water_water": "Water + Water: telepathic emotional fusion, endless tenderness and deep empathy.",
    "communication_intellect": "Communication & Intellect",
    "copy_summary": "Compatibility {{v0}} + {{v1}}: {{v2}}%",
    "cultivate_active_transparency_to_turn_your": "Cultivate active transparency to turn your natural differences into enriching complementary strengths.",
    "emotional_bond": "Emotional Bond",
    "long_term_longevity": "Long-Term Longevity",
    "overall_love_synergy_score": "Overall Love Synergy Score",
    "partner_1_sign": "Partner 1 Sign",
    "partner_2_sign": "Partner 2 Sign",
    "passion_attraction": "Passion & Attraction",
    "relationship_harmony_advice": "Relationship Harmony Advice",
    "relationship_key": "Relationship Key:",
    "select_zodiac_signs": "Select Zodiac Signs",
    "the_4_core_pillars": "The 4 Core Pillars",
    "the_bond_between_and_flourishes_when": "The bond between {{v0}} and {{v1}} flourishes when both partners honor each other's emotional rhythms.",
    "zodiac_love_compatibility_astrological_synastry_calculator": "Zodiac Love Compatibility & Astrological Synastry Calculator",
    "chemistry_air_water": "Air + Water: air brings lightness and words, water brings emotional depth. A pair that learns to balance head and heart.",
    "aspect_semisextile": "Semi-sextile (neighbouring signs – a difference to get used to)"
  },
  "eu-car-import-tax-calculator": {
    "simulateur_taxe_importation_vehicule_malus": "Vehicle Import Duty & CO2 Emissions Surtax Calculator (EU)",
    "france_malus_ecologique_poids": "France (CO2 Malus & Weight Tax)",
    "allemagne_kfz_steuer": "Germany (Kfz-Steuer)",
    "espagne_impuesto_de_matriculacion": "Spain (Impuesto de Matriculación)",
    "italie_ipt_superbollo": "Italy (IPT & Superbollo)",
    "union_europeenne_pas_de_douane": "European Union (No customs duty or VAT on used vehicles)",
    "hors_union_europeenne_usa_suisse": "Non-EU Import (USA, Switzerland, UK, Japan: 10% duty + 20% VAT)",
    "essence_sans_plomb": "Unleaded Petrol",
    "diesel": "Diesel",
    "hybride_rechargeable_phev": "Plug-in Hybrid (PHEV)",
    "100_electrique_exoneration_malus_co2": "100% Electric (CO2 surtax exemption)",
    "cout_fiscal_total_d_immatriculation": "Total Vehicle Registration Tax Cost",
    "taxe_co2_malus_ecologique_avec": "CO2 tax / ecological malus (with age rebate):",
    "malus_sur_la_masse_taxe": "Curb weight penalty / mass surcharge:",
    "frais_d_immatriculation_carte_grise": "Administrative registration fee / title fee:",
    "droits_de_douane_ue_10": "EU Customs Tariff (10% TARIC code):",
    "tva_a_l_importation_20": "Import VAT (20% on CIF value + customs):",
    "note_reglementaire": "Regulatory Compliance Checklist:",
    "certificat_de_conformite_europeen_coc": "European Certificate of Conformity (COC)",
    "constructeur": "from manufacturer.",
    "quitus_fiscal_formulaire_n_1993": "Fiscal Certificate / Quitus Fiscal (Form 1993-REC)",
    "delivre_par_le_centre_des": "issued by the tax authorities.",
    "controle_technique": "Roadworthiness Inspection / MOT",
    "de_moins_de_6_mois": "under 6 months old from an EU member state.",
    "certificat_d_immatriculation_etranger_original": "Original Foreign Vehicle Registration Document",
    "parties_1_et_2": "(Parts 1 & 2).",
    "note_fr": "Age depreciation applied: {{rate}}% ({{months}} months). Electric vehicles are exempt.",
    "note_de": "Annual Kfz-Steuer road tax (95 g CO2 baseline). Fully electric vehicles exempt until 2030.",
    "note_es": "Applicable rate by CO2 bracket: {{rate}}% on a base reduced by {{base}}%.",
    "note_it": "Includes the provincial IPT transcription tax and the Superbollo, if any, for high-powered engines.",
    "normes_wltp_decote": "WLTP standards & age depreciation",
    "estimez_le_cout_total": "Estimate the total registration cost when buying or importing a car in Europe: CO2 eco-malus, weight tax, non-EU customs duties and the statutory age depreciation.",
    "pays_immatriculation_origine": "Country of registration & origin",
    "pays_de_destination": "Destination country (registration)",
    "provenance_du_vehicule": "Vehicle origin",
    "caracteristiques_techniques": "Vehicle technical specifications",
    "motorisation_energie": "Engine / fuel type",
    "prix_d_achat_valeur_venale": "Purchase price or market value (€)",
    "emissions_co2_wltp": "WLTP CO2 emissions (g/km)",
    "masse_en_ordre_de_marche": "Kerb weight (kg)",
    "age_du_vehicule": "Vehicle age since first registration: {{months}} months ({{years}} years)",
    "decote_anciennete": "Age depreciation: {{value}}%",
    "pays_fr": "France",
    "pays_de": "Germany",
    "pays_es": "Spain",
    "pays_it": "Italy",
    "total_taxes_frais_carte_grise": "Total taxes + registration certificate fees",
    "surcout_fiscal": "Tax overhead: {{value}}% of the purchase price",
    "documents_requis_intra_ue": "Documents required for intra-EU import",
    "vat_import_rate": "Import VAT ({{rate}}% on price + customs duty):",
    "vat_new_vehicle_rate": "New vehicle VAT ({{rate}}%, due in the destination country):",
    "non_eu_option_destination_vat": "Non-EU Import (USA, Switzerland, UK, Japan: 10% duty + local VAT)"
  },
  "deep-work-focus-time-audit": {
    "perte_re_focalisation_cognitive": "Cognitive Context-Switching Overhead",
    "temps_reunions_shallow_work": "Meeting & Shallow Work Load",
    "cout_annuel_de_la_distraction": "Annual Productive Cost of Distraction",
    "isolez_chaque_matin_2_blocs": "Schedule two uninterrupted 90-minute focus blocks every morning.",
    "ne_consultez_votre_boite_mail": "Batch process email and chat notifications only 2 to 3 times per day.",
    "reduisez_les_reunions_de_30": "Shorten standard 30-minute meetings down to 20 focused minutes.",
    "deep_work_2": "Deep Work (High-Value Flow)",
    "reunions_admin_2": "Meetings & Administrative Tasks",
    "fragmentation_pertes": "Fragmentation & Context-Switching Deficit",
    "deep_work": "Deep Work",
    "reunions_admin": "Meetings & Admin",
    "fragmentation_re_focalisation": "Context-Switching Drag",
    "workday_duration": "Workday Duration (h)",
    "meeting_hours": "Hours Spent in Meetings (h/day)",
    "real_deep_work_time": "Actual Deep Work time (Flow)",
    "hours_per_day": "{{value}} h / day",
    "share_of_workday": "That is <0>{{value}}%</0> of your workday",
    "approx_hours_per_day": "~{{value}} h / day",
    "interruptions_refocus": "{{value}} interruptions × 23 min to regain focus",
    "emails_slack_meetings": "Emails, Slack, meetings ({{value}}% of the time)",
    "lost_time_value": "Value of time lost over 225 working days",
    "interruptions_and_pollution": "1. Interruptions & daily distractions",
    "label_interruptions": "Interruptions per day",
    "label_email_admin": "Hours on emails & admin (h/day)",
    "label_hourly_value": "Hourly value of your time ({{currency}}/hour)",
    "protocol_title": "2. Protocol to unlock +3h of Deep Work / day",
    "timeblocking": "Protected time slots (Timeblocking)",
    "email_batching": "Batch email processing (Batching)",
    "meeting_rule": "25/50-minute meeting rule",
    "typical_day_breakdown": "Visual breakdown of a typical {{value}}-hour day",
    "bar_deep_work": "Deep Work ({{value}}h)",
    "bar_meetings_admin": "Meetings & Admin ({{value}}h)",
    "bar_interruptions": "Interruptions ({{value}}h)",
    "interruptions_lost_12min_one": "{{count}} interruption × 12 min of lost deep work",
    "interruptions_lost_12min_other": "{{count}} interruptions × 12 min of lost deep work"
  },
  "eu-cbam-carbon-tax-calculator": {
    "simulateur_taxe_carbone_aux_frontieres": "EU Carbon Border Adjustment Mechanism (CBAM) Simulator",
    "marche_du_carbone_deductions": "EU ETS Carbon Market & Origin Deductions",
    "cout_certificats_macf_cbam_estime": "Estimated CBAM Certificate Cost",
    "empreinte_carbone_totale": "Total Embedded Carbon Footprint",
    "ecart_prix_carbone_net": "Net Carbon Price Differential",
    "projection_a_100_horizon_2034": "Full 100% Phase-In (2034 Horizon)",
    "sector_steel_primary": "Primary steel (blast furnace BF-BOF)",
    "sector_steel_eaf": "Recycled electric steel (EAF)",
    "sector_aluminum_unwrought": "Unwrought aluminium (electrolysis)",
    "sector_aluminum_processed": "Processed aluminium & profiles",
    "sector_cement_clinker": "Grey cement clinker",
    "sector_fertilizer_ammonia": "Nitrogen fertilisers (ammonia)",
    "sector_hydrogen_grey": "Grey hydrogen (SMR steam reforming)",
    "sector_hydrogen_green": "Green hydrogen (renewable electrolysis)",
    "cat_steel": "Steel & iron",
    "cat_aluminum": "Aluminium",
    "cat_cement": "Cement",
    "cat_fertilizer": "Fertilisers",
    "cat_hydrogen": "Hydrogen",
    "estimez_le_cout_des_certificats": "Estimate the cost of CBAM carbon emission certificates for industrial imports into the European Union (steel, aluminium, cement, fertilisers, hydrogen).",
    "marchandises_intensite_carbone": "Goods & carbon intensity",
    "secteur_type_de_produit_eligible": "Sector & CBAM-eligible product type",
    "volume_importe_tonnes": "Imported volume (tonnes)",
    "intensite_carbone_t_co2e_tonne": "Carbon intensity (t CO₂e / tonne)",
    "prix_quota_carbone_eu_ets": "EU ETS carbon allowance price (€ / t CO₂)",
    "prix_carbone_deja_paye_au_pays": "Carbon price already paid in the country of origin (€)",
    "phase_d_extinction_des_quotas_gratuits": "EU free allowance phase-out ({{value}}%):",
    "periode_transitoire_2026_2028": "Transitional period 2026-2028",
    "pleine_application": "Full application",
    "soit_un_surcout_frontalier_de": "That is a border surcharge of <0>+{{value}} € / tonne</0> of imported product.",
    "impact_plein_regime": "Impact at full phase-in: +{{value}} € / tonne of imported product.",
    "obligations_declaratives": "Reporting obligations:",
    "depuis_octobre_2023_la_declaration": "Since 1 January 2026, the annual declaration of direct and indirect emissions (Scope 1 & 2) is mandatory in the European CBAM registry."
  },
  "eu-energy-unit-converter": {
    "convertisseur_d_energie_cout_electricite": "EU Energy Unit Converter & Power/Gas Cost Calculator",
    "quantite_d_energie": "Energy Quantity",
    "unite_d_origine": "Source Energy Unit",
    "parametres_tarifaires_facture": "Billing & Tariff Parameters",
    "prix_ttc_kwh": "All-inclusive Price (€/kWh)",
    "abonnement_annuel": "Annual Grid Standing Charge (€)",
    "kilowattheures": "Kilowatt-hours (kWh)",
    "megawattheures": "Megawatt-hours (MWh)",
    "gaz_naturel_m": "Natural Gas (m³ GCV)",
    "gigajoules": "Gigajoules (GJ)",
    "budget_energie_estime": "Estimated Annual Energy Bill",
    "fourniture_de_la_molecule_electron": "Wholesale Energy Supply: 55%",
    "acheminement_transport_reseau_25": "Grid Transmission & Distribution: 25%",
    "taxes_d_accise_contributions_20": "Excise Duties, Levies & VAT: 20%",
    "app_subtitle": "Instantly convert kWh, MWh, natural gas m³ (GCV), therms and joules with European bill standards.",
    "source_val_units": "Source value & units",
    "unit_mwh": "Megawatt-hour (MWh)",
    "unit_m3_gas": "Cubic meter of gas (m³ GCV)",
    "equiv_table_title": "Energy equivalence table:",
    "unit_kwh": "Kilowatt-hour (kWh)",
    "unit_gwh": "Gigawatt-hour (GWh)",
    "unit_thermie": "Thermie (th)",
    "unit_gj": "Gigajoule (GJ)",
    "coefficient_gaz_pcs": "Gas GCV conversion factor (kWh / m³)",
    "eur_par_an": "{{value}} € / year",
    "soit_environ_par_mois": "That is about <0>{{value}} € / month</0>"
  },
  "eu-roaming-fair-use-calculator": {
    "calculateur_roaming_ue_formule_officielle": "EU Roaming Data Allowance & Fair Use Policy (FUP) Calculator",
    "simulation_de_votre_sejour_en": "EU Roaming Trip Consumption Simulation",
    "quota_minimum_garanti_en_europe": "Guaranteed Minimum Roaming Data Volume in the EU",
    "attention_suisse_andorre_et_royaume": "Important Note: Switzerland, Andorra & UK (Excluded from EU Regulated Caps)",
    "calculez_votre_quota_legal_minimum": "Calculate your guaranteed minimum legal mobile data allowance with no extra charge when travelling in the European Union (\"Roam Like at Home\" Regulation), using the European formula.",
    "votre_forfait_mobile_national": "Your Domestic Mobile Plan",
    "prix_mensuel_forfait_ttc": "Monthly Plan Price incl. VAT (€)",
    "volume_data_national_go": "Domestic Data Volume (GB)",
    "taux_de_tva": "VAT Rate (%)",
    "plafond_prix_de_gros_ue": "EU Wholesale Price Cap (€/GB)",
    "cap_130": "1.30 € / GB (legal scale 2025)",
    "cap_110": "1.10 € / GB (legal scale 2026)",
    "cap_100": "1.00 € / GB (legal scale 2027-2032)",
    "duree_du_voyage_jours": "Trip duration (days)",
    "conso_estimee_go_jour": "Estimated Usage (GB / day)",
    "go_mois": "{{value}} GB / month",
    "calcule_selon_la_formule_europeenne": "Calculated using the European formula: <0>2 × (Price excl. VAT {{price}} € ÷ {{cap}} €)</0>",
    "consommation_prevue_jours": "Expected Usage ({{days}} days):",
    "go_value": "{{value}} GB",
    "depassement_de_forfait_go_hors": "Plan exceeded: +{{value}} GB outside the plan",
    "surfacturation_maximale_plafonnee": "Maximum capped surcharge: <0>+{{extra}} €</0> ({{rate}} € / GB incl. VAT).",
    "100_inclus_dans_votre_enveloppe_europeenne": "100% included in your European allowance at no extra cost!",
    "zone_geographique_eligible": "Eligible geographic area:",
    "valable_dans_les_27_pays": "Valid in the 27 countries of the European Union + Norway, Iceland and Liechtenstein (EEA)."
  },
  "golden-hour-sun-calculator": {
    "4_elevdeg": "4° (Golden Hour Peak)",
    "6_elevdeg": "-6° (Civil Dawn)",
    "planificateur_golden_hour_trajectoire_solaire": "Golden Hour & Solar Elevation Ephemeris Calculator (Photo/Video)",
    "ville_us": "Location / City",
    "date": "Shoot Date",
    "hauteur_sujet_ft_pieds": "Subject Height (meters / ft)",
    "golden_hour_matin": "Morning Golden Hour",
    "golden_hour_soir": "Evening Golden Hour",
    "blue_hour_heure_bleue": "Blue Hour (Twilight)",
    "lumiere_froide_ciel_bleu_profond": "Cool ambient tone & saturated deep blue sky contrast",
    "ephemeride_ombres": "Solar Ephemeris & Projected Cast Shadows",
    "elevation_solaire_max": "Peak Solar Elevation",
    "angle_a_midi_solaire": "Solar Noon Altitude Angle",
    "longueur_d_ombre_golden_hour": "Golden Hour Shadow Length Multiplier",
    "subtitle_desc": "Calculate golden hour, blue hour, solar elevation and shadow length for photography, film shoots and real estate visits.",
    "loc_date_title": "Location & Shoot Date",
    "ideal_golden_slots": "Ideal Golden Hour Windows",
    "sunrise_label": "Sunrise: {{val}}",
    "sunset_label": "Sunset: {{val}}",
    "solar_noon_label": "Solar Noon: {{val}}",
    "multiplier_shadow": "Multiplier: {{ratio}}x object height",
    "elevation_chart_title": "24h Solar Elevation Curve (degrees °)",
    "elevation_tooltip": "Elevation",
    "hour_tooltip": "Time: {{val}}"
  },
  "hashtag-reach-shadowban-auditor": {
    "score_de_sante_seo": "SEO Health & Discovery Reach Score",
    "votre_liste_de_hashtags_ou": "Your hashtag list (separated by spaces or commas)",
    "instagram_recommande_5_a_8": "Instagram advises 5 to 8 hyper-relevant tags (avoid spam stuffing)",
    "tiktok_recommande_3_a_5": "TikTok algorithm favors 3 to 5 targeted keywords",
    "linkedin_recommande_3_a_5": "LinkedIn recommends 3 to 5 professional domain hashtags",
    "youtube_recommande_3_tags_principaux": "YouTube highlights top 3 tags above the video title",
    "hashtag1_hashtag2": "#growth, #marketing, #saas...",
    "hashtags_nettoyes_strategie_seo": "Cleaned Tags & Tiered Distribution Strategy",
    "3_hashtags_de_niche_precise": "3 Ultra-Niche Focus Tags (< 50k total posts)",
    "ex_startupfrance_growthb2b": "e.g. #b2bgrowth, #solofounder",
    "3_hashtags_de_thematique_large": "3 Broad Category Tags (100k - 1M total posts)",
    "ex_marketingdigital_entrepreneuriat": "e.g. #digitalmarketing, #entrepreneurship",
    "2_hashtags_de_communaute_cible": "2 Target Audience Community Tags",
    "ex_freelancefrance": "e.g. #remoteworker, #freelancelife",
    "hashtags_exemple": "#entrepreneurship #digitalmarketing #growthhacking #socialmediamarketing #contentcreator #ai #businessadvice #onlinebusiness #startups",
    "seo_reseaux_sociaux_spam": "Social media SEO & spam detection",
    "auditeur_hashtags_seo_shadowban": "Hashtag Auditor, SEO & Shadowban Risk Detector",
    "analysez_selection_hashtags": "Analyse your hashtag selection, detect tags that are banned or flooded by bots, and optimise your semantic SEO on Instagram, TikTok and LinkedIn.",
    "aucun_tag_a_risque": "✓ no risky tags",
    "tags_dangereux": "⚠️ {{value}} risky tag(s)",
    "plateforme": "Platform",
    "collez_vos_hashtags": "Paste your hashtags",
    "hashtags_uniques_detectes": "{{value}} unique hashtag(s) detected",
    "densite_optimale": "✓ optimal density",
    "conseil_4_a_8_hashtags": "Tip: 4 to 8 hashtags max",
    "hashtags_bannis_detectes": "Banned or flagged hashtags detected:",
    "hashtags_restreints": "These hashtags are restricted by the platforms because of recurring spam. Using them blocks the distribution of your post.",
    "hashtags_recommandes_nettoyes": "Recommended cleaned hashtags:",
    "hashtags_nettoyes_copies": "Cleaned hashtags copied!",
    "copier_hashtags_optimises": "Copy the optimised hashtags",
    "formule_seo_gagnante": "The winning SEO formula (3-3-2):"
  },
  "instagram-engagement-pricing": {
    "taux_d_engagement_reel": "True Calculated Engagement Rate",
    "metriques_de_votre_compte": "Instagram Account Performance Metrics",
    "grille_tarifaire_recommandee_pour_marques": "Recommended Brand Sponsorship Rate Card",
    "top_choix": "Top Pick",
    "conseil_negociation": "Sponsorship Negotiation Tip",
    "n_hesitez_pas_a_facturer": "Always charge additional usage licensing and whitelisting fees",
    "pour_les_droits_d_amplification": "for paid social ad amplification rights (Dark Ads)",
    "niche_finance_crypto": "Finance / Business / Crypto",
    "niche_tech_saas": "Tech / AI / IT",
    "niche_health_fitness": "Health / Fitness / Nutrition",
    "niche_beauty_fashion": "Fashion / Beauty / Skincare",
    "niche_food_cooking": "Food / Cooking / Restaurants",
    "niche_travel_lifestyle": "Travel / Lifestyle / Home decor",
    "niche_gaming_humor": "Gaming / Humor / Memes",
    "faible": "Low",
    "exceptionnel_top_5": "Exceptional (5% or more)",
    "tres_bon_au_dessus_de": "Very good (above average)",
    "moyen_standard": "Average / Standard",
    "tarif_recommande_pour_1_format": "Recommended rate for 1 {{format}}: €{{price}} (Based on {{followers}} followers - Engagement rate {{rate}}%)",
    "algorithme_instagram_sponsored_rates": "Instagram Algorithm & Sponsored Rates",
    "calculateur_taux_d_engagement_tarifs": "Instagram Engagement Rate & Sponsorship Pricing Calculator",
    "analysez_votre_taux_d_engagement_reel": "Analyze your true engagement rate (saves and shares included) and get your recommended rate card for brands and agencies.",
    "nombre_d_abonnes_followers": "Number of followers",
    "likes_moyens": "Average likes",
    "commentaires_moyens": "Average comments",
    "enregistrements": "Saves",
    "partages_dms_stories": "Shares (DMs/Stories)",
    "thematique_niche_du_compte": "Account topic / niche",
    "video_reel_30_60s": "Reel video (30-60s)",
    "format_le_plus_remunerateur_viral": "Most lucrative and viral format",
    "post_carrousel_multi_slides": "Carousel post (multi-slide)",
    "fort_taux_de_sauvegarde_valeur": "High save rate and educational value",
    "post_photo_unique_feed": "Single photo feed post",
    "visuel_unique_texte_captivant": "Single visual + compelling copy",
    "sequence_3_stories_avec_lien": "3-story sequence with link",
    "parfait_pour_conversions_trafic_direct": "Perfect for conversions and direct traffic",
    "pack_complet_360_reel_carrousel": "Full 360° Pack (Reel + Carousel + Stories)",
    "offre_cle_en_main_recommandee": "Recommended turnkey offer (-15% bundle)",
    "copier_le_devis": "Copy the quote",
    "n_hesitez_pas_a_facturer_droits": "Do not hesitate to charge image assignment and media amplification rights <0>+30% - +50%</0> for paid advertising rights (Dark Ads)"
  },
  "schengen90180-calculator": {
    "calculateur_espace_schengen_regle_des": "Schengen Short-Stay Calculator - 90/180-Day Rule",
    "date_d_entree": "Entry Date",
    "date_de_sortie": "Exit Date",
    "vous_pouvez_rester_au_maximum": "Maximum permitted duration of stay:",
    "jusqu_au": "until",
    "le_jour_d_entree_et": "Both date of entry and date of exit are legally counted as full days spent within the Schengen Area.",
    "la_fenetre_de_180_jours": "The 180-day reference window is",
    "glissante": "rolling",
    "elle_recule_d_un_jour": ": on each day of stay, it evaluates the exact 180 calendar days immediately preceding it.",
    "valable_dans_les_29_pays": "Applies across all 29 Schengen member states (EU except Ireland and Cyprus, plus Norway, Switzerland, Iceland, and Liechtenstein).",
    "sejour_espagne_france": "Stay in Spain / France",
    "vacances_italie": "Holiday in Italy",
    "projet_portugal": "Planned trip to Portugal",
    "sejour_n": "Stay #{{value}}",
    "outil_officiel_voyageurs": "Tool for non-EU travellers (UK, US, Canada, nomads): calculate your remaining days and your latest exit date over any rolling 180-day window.",
    "historique_et_projets_de_sejours": "Stay history and planned stays",
    "ajouter_un_sejour": "Add a stay",
    "x_jours": "{{value}} days",
    "zero_j": "0 d",
    "supprimer": "Delete",
    "date_de_reference_evaluation": "Reference date for the assessment",
    "fenetre_analysee": "180-day window analysed: {{start}} ➔ {{end}}",
    "jours_restants_autorises": "Remaining Permitted Days",
    "x_sur_90_jours": "{{value}} / 90 days",
    "jours_deja_consommes": "{{value}} days already used in this window",
    "depassement_illegal_overstay": "Illegal Overstay!",
    "depassement_limite_legale": "You exceed the legal limit of 90 permitted days by {{value}} day(s). Risk of a fine and a ban from the Schengen Area.",
    "sejour_conforme": "Stay Compliant with Schengen Rules",
    "si_vous_entrez_le": "If you enter on <0>{{date}}</0>, you can stay for a maximum of <0>{{days}} consecutive days</0> (until <0>{{exit}}</0>).",
    "principes_cles_regle_90_180": "Key principles of the 90/180 rule:",
    "fenetre_glissante": "The 180-day reference window is <0>rolling</0>: on each day of stay, it evaluates the exact 180 calendar days immediately preceding it."
  },
  "social-video-specs-bitrate": {
    "bitrate_recommande": "Recommended Target Bitrate",
    "mbps": "Mbps",
    "parametres_du_projet_video": "Video Project Settings",
    "24_fps_cinema_standard": "24 fps (Cinematic standard)",
    "30_fps_standard_reseaux": "30 fps (Standard social & mobile)",
    "60_fps_ultra_fluide_gaming": "60 fps (High frame rate / Gaming & Sports)",
    "ratio_resolution": "Aspect Ratio & Resolution",
    "codec_conteneur": "Video Codec & Container",
    "audio_recommande": "Recommended Audio Specifications",
    "guide_des_safe_zones_elements": "UI Safe Zone Guidelines",
    "preset_export_ideal_capcut_premiere": "Recommended Render Preset (CapCut, Premiere, DaVinci)",
    "format_mp4_h_264": "Format: MP4 (H.264 / AVC)",
    "profil_high_vbr_2_passes": "High Profile, 2-Pass VBR or target bitrate matching above",
    "audio_aac_stereo_320_kbps": "Audio: AAC-LC, Stereo, 320 kbps, 48 kHz",
    "aspect_9_16": "9:16 (Vertical)",
    "aspect_16_9": "16:9 (Horizontal)",
    "aspect_twitter": "16:9 or 1:1 or 9:16",
    "aspect_linkedin": "1:1 (square) or 9:16 or 16:9",
    "res_yt_4k": "3840 x 2160 px (or 1920x1080)",
    "res_twitter": "1080 x 1920 px or 1920 x 1080 px",
    "res_linkedin": "1080 x 1080 px (recommended)",
    "codec_reels": "H.264 / AAC (MP4 or MOV)",
    "codec_shorts": "H.264 or VP9",
    "safe_reels": "Keep text 220px from the bottom (caption & audio area) and 110px from the right (like/share icons).",
    "safe_tiktok": "Avoid the top-left corner (Following/For You tabs) and the bottom 250px.",
    "safe_shorts": "The Remix button and description take up the bottom 200px.",
    "safe_yt_4k": "Standard cinema 16:9 format, no permanent obstruction.",
    "safe_twitter": "Aggressive Twitter compression: export with a constant bitrate (CBR).",
    "safe_linkedin": "Many users watch without sound: burned-in subtitles are essential.",
    "export_video_encodage_reseaux": "Video export & social media encoding",
    "calculateur_de_bitrate_video_formats": "Video bitrate calculator & social media formats",
    "obtenez_le_bitrate_ideal": "Get the ideal bitrate (Mbps) to avoid destructive algorithmic compression, calculate your file size and respect the safe zones.",
    "poids_estime": "Estimated size: ~{{size}} MB",
    "plateforme_cible": "Target platform",
    "duree_de_la_video_secondes": "Video duration (seconds)",
    "frequence_d_images_fps": "Frame rate (FPS)",
    "audio_bitrate_aac": "{{bitrate}} kbps AAC (48 kHz)",
    "zone_de_securite_graphique": "Graphic safe zone:",
    "debit_cible_max": "Target bitrate: {{target}} Mbps (max bitrate: {{max}} Mbps)",
    "name_tiktok": "TikTok video",
    "name_yt_long": "YouTube long-form 4K / 1080p",
    "name_twitter": "X (Twitter) video",
    "name_linkedin": "LinkedIn video"
  },
  "solar-battery-storage-roi": {
    "10_a_15_ans": "10 to 15 years",
    "economie_nette_annuelle_an_1": "Net Annual Savings (Year 1)",
    "an": "yr",
    "taux_d_auto_consommation": "Self-Consumption Rate",
    "independance_energetique": "Grid Independence (Autonomy Ratio)",
    "production_solaire_annuelle_estimee": "Estimated Annual Solar Generation",
    "auto_consommation": "Self-Consumed Power",
    "revente_surplus": "Surplus Export Feed-In",
    "energie_gratuite_auto_consommee": "Free Solar Energy Consumed Onsite",
    "surplus_reinjecte_au_reseau": "Surplus Electricity Exported to Grid",
    "label_power": "Installed Solar Power (kWp)",
    "label_battery_cap": "Usable Battery Capacity (kWh)",
    "label_battery_cost": "Total Battery + Inverter Cost (€)",
    "label_grid_price": "Grid Electricity Rate (€/kWh)",
    "label_inflation": "Projected Annual Electricity Price Inflation (%)",
    "retour_sur_investissement_amortissement": "Return on investment (payback)",
    "x_ans": "{{value}} years",
    "plus_de_20_ans": "> 20 years",
    "duree_de_vie_garantie_batterie": "Guaranteed battery lifespan: <0>10 to 15 years</0> (6,000 cycles)",
    "grace_aux_x_kwh_stockes": "Thanks to the <0>{{value}} kWh</0> stored and self-consumed",
    "contre_seulement_35_sans_batterie": "Versus only <0>35%</0> without a storage battery",
    "de_vos_besoins_couverts_par_le": "Of your needs covered by solar",
    "1_dimensionnement_batterie_panneaux": "1. Battery & panel sizing",
    "consommation_annuelle_de_la_maison_kwh": "Annual household consumption (kWh)",
    "production_solaire_annuelle_estimee_x": "Estimated annual solar production: <0>{{value}} kWh / year</0>",
    "2_tarifs_reseau_revente_du_surplus": "2. Grid tariffs & surplus resale (€/kWh)",
    "tarif_revente_surplus_obligation_d_achat": "Surplus feed-in tariff, purchase obligation (€/kWh)",
    "repartition_de_la_production_solaire_annuelle": "Breakdown of annual solar production ({{value}} kWh)",
    "auto_consommation_directe_batterie_x_kwh": "Direct self-consumption + battery ({{value}} kWh)",
    "revente_reseau_x_kwh": "Grid resale ({{value}} kWh)",
    "energie_gratuite_auto_consommee_x": "Free self-consumed energy: <0>{{value}}%</0>",
    "surplus_reinjecte_au_reseau_x": "Surplus fed back into the grid: <0>{{value}}%</0>",
    "market_label": "Tariff framework",
    "market_fr": "France: regulated tariff and S21 feed-in rate",
    "market_de": "Germany: EEG feed-in tariff and BDEW average price",
    "label_commissioning": "PV system commissioning date (Germany)",
    "label_feed_in_eeg": "EEG feed-in tariff, surplus export (€/kWh)",
    "eeg_rates": "EEG rates (surplus export) for commissioning from {{from}} to {{to}}: {{r10}} ct/kWh up to 10 kWp, {{r40}} ct/kWh from 10 to 40 kWp, {{r100}} ct/kWh from 40 to 100 kWp. For {{kwp}} kWp, pro rata across the bands: {{rate}} ct/kWh, fixed for 20 years.",
    "eeg_no_rate": "The tool has no EEG rate for this date: its table covers commissioning from 01/01/2023 to 31/12/2026, and the Bundesnetzagentur has not yet published rates for 2027. Enter the rate shown on your grid operator's statement.",
    "eeg_over_100": "Above 100 kWp there is no fixed feed-in tariff in Germany (direct marketing is mandatory). Enter the revenue you expect per kWh.",
    "de_price_hint": "Electricity price: €0.37/kWh by default, the 2026 average for German households (3,500 kWh a year) in the BDEW-Strompreisanalyse of August 2026. It includes a share of the standing charge; only your contract's price per kWh counts for the saving.",
    "de_vat_hint": "VAT: 0% on the battery and its installation for systems up to 30 kWp on or near a home (§ 12(3) UStG, since 2023), so the price you enter is the same with or without VAT.",
    "de_rules_hint": "Solarspitzengesetz (since 25/02/2025), for new German systems: below 100 kW, export is capped at 60% of capacity until a smart meter and control box are fitted (§ 9(2) EEG). From the year after the smart meter is installed, periods with negative wholesale prices are not paid (§ 51 EEG); they are added to the end of the support period (§ 51a EEG). A battery soaks up these midday peaks, but the tool does not count that gain.",
    "static_payback_title": "Battery payback (simple method)",
    "static_payback_line": "Payback time = cost ÷ year-one saving = {{cost}} ÷ {{saving}} = {{years}} years (no price rise; see above for the figure with it).",
    "static_payback_none": "No payback: the year-one saving is zero or negative.",
    "saving_per_kwh_line": "{{kwh}} kWh move from grid export to self-consumption; each one earns {{price}} − {{feed}} = {{diff}}."
  },
  "streamer-revenue-sub-split": {
    "net_estime_twitch_mois": "Estimated Twitch Net Payout / Month",
    "abonnements_communaute": "Channel Subscriptions & Community",
    "affilie_standard_split_50_50": "Standard Affiliate (50/50 Revenue Split)",
    "partner_plus_split_70_30": "Partner Plus Program (70/30 Revenue Split)",
    "comparatif_twitch_vs_kick": "Direct Earnings Comparison: Twitch vs Kick (95/5)",
    "gross_amount": "{{value}} gross",
    "economy_heading": "Streaming Economics & Sub Split",
    "simulator_title": "Streamer Revenue Simulator (Twitch 50/50 & 70/30 vs Kick 95/5)",
    "simulator_intro": "Calculate your net streaming earnings based on your subscriptions (Tier 1/2/3, Prime), Bits and ads, after deducting social contributions.",
    "subs_tier1": "Tier 1 subs ($4.99)",
    "subs_tier2": "Tier 2 subs ($9.99)",
    "subs_tier3": "Tier 3 subs ($24.99)",
    "subs_prime": "Prime subs (free)",
    "twitch_program": "Twitch program",
    "monthly_bits": "Monthly Bits / Cheers",
    "social_charges_pct": "Social contributions (%)",
    "avg_viewers_ccv": "Average concurrent viewers (CCV)",
    "stream_hours_month": "Stream hours / month",
    "kick_split": "Kick (95/5 split)",
    "per_live_hour": "That is ${{value}} / live hour",
    "twitch_split": "Twitch ({{split}})",
    "net_after_charges": "Net after contributions ({{rate}}%):",
    "sub_gap_kick": "Subscription revenue gap: <0>+${{amount}} / month</0> in favour of Kick on the same base of paying subscribers (excluding Prime).",
    "bits_converter_title": "Twitch bits to dollars",
    "bits_answer": "{{bits}} bits = {{amount}}",
    "bits_count": "Number of bits",
    "usd_per_bit": "Paid per bit (US$)",
    "bits_note": "Twitch pays Affiliates and Partners 1 cent for each bit cheered in their channel (official Twitch blog, 21 April 2017). For euros or pounds, apply the day’s exchange rate."
  },
  "substack-newsletter-revenue-forecaster": {
    "abonnes_payants_actuels": "Current Paid Subscribers",
    "revenu_mensuel_net_mrr": "Net Monthly Recurring Revenue (MRR)",
    "revenu_annuel_net_arr": "Net Annual Recurring Revenue (ARR)",
    "mrr_net_projete_a_m": "Projected Net MRR at Month 12",
    "taux_de_conversion_gratuit_payant": "Free-to-Paid Conversion Rate (%)",
    "abonnes_mensuels": "Monthly Plan Subscribers",
    "abonnes_annuels": "Annual Plan Subscribers",
    "part_d_abonnes_choisissant_l": "Share of Annual Plan Subscribers (%)",
    "mois": "Month",
    "abonnes_gratuits": "Free Subscribers",
    "abonnes_payants": "Paid Subscribers",
    "mrr_brut": "Gross MRR",
    "mrr_net_dans_votre_poche": "Net MRR (Take-Home Earnings)",
    "taux_de_conversion_pct_de_la_liste": "Conversion rate: <0>{{value}}%</0> of the list",
    "apres_commission_substack_10_stripe": "After Substack (10%) & Stripe (2.9%) fees",
    "projection_annuelle_recurrente_stabilisee": "Stabilized annual recurring projection",
    "avec_de_croissance_mensuelle": "With +{{value}}% monthly growth",
    "1_audience_gratuite_taux_de_conversion": "1. Free Audience & conversion rate",
    "nombre_d_abonnes_gratuits": "Number of free subscribers",
    "croissance_mensuelle_de_la_liste": "Monthly list growth (%)",
    "2_tarification_des_abonnements_frais": "2. Subscription pricing & fees",
    "prix_mensuel_mois": "Monthly Price (€ / month)",
    "prix_annuel_an": "Annual Price (€ / year)",
    "frais_plateforme_substack_plateforme": "Substack / Platform fee (%)",
    "frais_bancaires_stripe": "Stripe payment fees (%)",
    "trajectoire_previsionnelle_sur_12_mois": "12-Month Forecast Trajectory",
    "mois_n": "Month {{value}}",
    "eur_par_mois": "{{value}} € / month",
    "ratio_annuel_ideal": "Ideal annual ratio",
    "offrez_2_mois_gratuits_sur": "Offer 2 free months on the annual subscription (e.g. 80€ instead of 96€) to maximize immediate cash flow and drastically reduce churn.",
    "seuil_de_rentabilite_mor": "MoR break-even point",
    "des_1_500_de_mrr_migrer": "From €1,500 MRR, moving from Substack (10% cut) to Ghost or Beehiiv (flat fee) can save you more than €2,000/year in fees.",
    "contenu_premium_exclusif": "Exclusive Premium Content",
    "la_cle_pour_depasser_4": "The key to exceeding 4% conversion is to reserve actionable analyses, templates or Discord/Telegram community access for paying subscribers.",
    "churn_mensuel_pct": "Monthly paid churn (%)"
  },
  "tiktok-creator-rewards-rpm": {
    "gains_estimes_mois": "Estimated Monthly Earnings",
    "parametres_d_audience_et_de": "Audience Demographics & Content Format",
    "60_75_secondes_standard": "60 to 75 seconds (Standard format)",
    "75_110_secondes_8_rpm": "75 to 110 seconds (+8% RPM boost)",
    "2_a_3_minutes_15": "2 to 3 minutes (+15% RPM boost)",
    "synthese_des_gains_metriques": "Earnings Breakdown & Key Metrics",
    "vues_qualifiees": "Total Qualified Views",
    "moyenne_par_video": "Average per Video",
    "reset_country_std": "Reset to country standard",
    "country_us": "United States / US (Tier 1)",
    "country_uk": "United Kingdom / UK (Tier 1)",
    "country_fr": "France (Tier 1)",
    "country_de": "Germany (Tier 1)",
    "country_ca": "Canada / Australia (Tier 1)",
    "country_es_it": "Spain / Italy (Tier 2)",
    "country_latam": "Latin America / Brazil (Tier 3)",
    "country_asia_africa": "Asia / Africa / rest of the world",
    "programme_tiktok_creator_rewards_1": "TikTok Creator Rewards Program (1 min+)",
    "simulateur_de_revenus_tiktok_rpm": "TikTok Earnings & RPM Simulator",
    "estimez_vos_gains_mensuels_selon": "Estimate your monthly earnings based on your qualified views, your geographic RPM, your video length and your audience retention.",
    "rpm_effectif": "Effective RPM: {{value}} / 1k views",
    "vues_totales_mensuelles": "Total Monthly Views",
    "taux_de_vues_qualifiees_5s": "Qualified view rate (> 5s and For You)",
    "moyenne_tiktok_50_a_70": "Indicative benchmark: 50% to 70% for engaging videos longer than one minute.",
    "pays_tier_d_audience_majoritaire": "Main Audience Country / Tier",
    "rpm_personnalise_1k_vues": "Custom RPM ({{currency}} / 1k views)",
    "defaut": "Default",
    "duree_moyenne_video_secondes": "Average video length (seconds)",
    "frequence_de_publication_mois": "Posting frequency (/ month)",
    "taux_de_retention_eleve_50": "High retention rate (> 50% full views / high share rate)",
    "projection_annuelle": "Annual Projection",
    "soit_jour_moyen": "That is {{value}} / day on average",
    "sur_x": "out of {{value}}",
    "vues_par_video": "~{{value}} views/video",
    "criteres_d_eligibilite_creator_rewards": "Creator Rewards Eligibility Criteria",
    "minimum_10_000_abonnes_100": "At least 10,000 followers & 100,000 views over 30 days",
    "contenu_100_original_d_au": "100% original content of at least 1 minute (60s+)",
    "vues_issues_du_fil_pour": "Views from the \"For You\" feed (FYP) watched for > 5 seconds"
  },
  "us-energy-tax-credit-calculator": {
    "estimateur_credit_d_impot_energie": "US Clean Energy Tax Credit Estimator (Inflation Reduction Act - 25C & 25D)",
    "panneaux_solaires": "Rooftop Solar Photovoltaic Panels",
    "batterie_de_stockage": "Home Battery Storage (≥ 3 kWh)",
    "geothermie": "Geothermal Heat Pumps",
    "pompe_a_chaleur_hvac": "Heat Pump HVAC Systems",
    "chauffe_eau_pac": "Heat Pump Water Heaters",
    "isolation_calfeutrage": "Insulation & Air Sealing Materials",
    "fenetres_baies": "Energy Efficient Windows & Skylights",
    "portes_d_entree": "Energy Efficient Exterior Doors",
    "tableau_electrique": "Electric Panel Upgrades",
    "synthese_du_credit_d_impot": "Federal Tax Credit Summary",
    "credit_federal_total": "Total Federal Tax Credit",
    "cout_net_reel_out_of": "Net Out-of-Pocket Cost",
    "credit_solaire_batteries_section_25d": "Solar & Battery Credit (Section 25D)",
    "credit_pompes_a_chaleur_hvac": "Heat Pump HVAC & Water Heater Credit",
    "credit_isolation_fenetres_tableau": "Envelope & Electrical Panel Credit",
    "bandeau_description": "Calculate your federal IRS tax credits (Form 5695) for solar panels, heat pumps and insulation: the 25D and 25C credits ended on January 1, 2026 (30% through 2025).",
    "section_25d_titre": "Section 25D: Solar & batteries (ended on January 1, 2026)",
    "credit_30": "Ended on January 1, 2026",
    "section_25c_titre": "Section 25C: Heat pumps & renovation",
    "max_3200_par_an": "Ended on January 1, 2026",
    "economies_mensuelles_estimees": "Estimated monthly savings on your energy bills ($/month)",
    "deduction_directe_irs": "Direct deduction on your IRS return",
    "brut": "Gross: ${{amount}}",
    "credit_avec_plafond_2000": "+${{amount}} (ended on January 1, 2026)",
    "credit_avec_plafond_1200": "+${{amount}} (ended on January 1, 2026)",
    "retour_sur_investissement_rentabilite": "Return on investment & profitability",
    "avec_economies_amortis": "With ${{amount}}/year in energy savings, your work pays for itself in <0>{{years}} years</0>."
  },
  "us-tip-bill-splitter": {
    "calculateur_de_pourboire_addition_usa": "US Restaurant Tip & Bill Splitter",
    "article_ex_burger": "Item (e.g., Burger)",
    "prix": "Price ($)",
    "alice": "Alice",
    "bob": "Bob",
    "charlie": "Charlie",
    "partage_tous": "Shared (Everyone)",
    "pourboire_personnalise": "Custom Tip (%)",
    "calculer_le_pourboire_sur_le": "Calculate tip on tax-inclusive subtotal",
    "avant_taxes": "Pre-tax",
    "standard_us": "US Standard",
    "arrondir_le_total_au_dollar": "Round each person's total up to nearest dollar",
    "sous_total_plats_boissons": "Food & Drinks Subtotal",
    "total_global": "Grand Total",
    "app_subtitle": "Calculate US tips according to American standards (pre-tax vs post-tax), manage Sales Tax and split bills equitably.",
    "equal_split_tab": "Equal Split",
    "itemized_bill_tab": "Itemized Breakdown",
    "detailed_breakdown_title": "Detailed Guest Breakdown",
    "bill_amount_title": "Bill amount",
    "pre_tax_subtotal": "Pre-tax subtotal ($)",
    "sales_tax_label": "Sales Tax (%) (e.g. NY: 8.875%, CA: 7.25%)",
    "number_of_people": "Number of people",
    "add_dishes_drinks": "Add dishes & drinks",
    "service_level_tip": "Service level & tip",
    "total_per_person": "Total per person ({{value}} ppl)",
    "per_person_breakdown": "(Food: {{food}} + Tax: {{tax}} + Tip: {{tip}})",
    "sales_tax_line": "Sales Tax ({{percent}}%):",
    "tip_line": "Tip ({{percent}}%):",
    "person_food_tip": "Food: {{food}} | Tip: {{tip}}",
    "tip_on_pre_tax": "Calculate the tip on the <0>pre-tax amount</0> (US standard)",
    "rounding_option": "Rounding",
    "rounding_exact": "Exact (to the cent)",
    "rounding_tip": "Round the tip up to the next dollar",
    "rounding_total": "Round the total up to the next dollar",
    "copy_split_details": "Copy split details",
    "copy_summary": "Restaurant Tip & Bill Split:\n- Subtotal: ${{subtotal}}\n- Sales Tax ({{taxPct}}%): ${{tax}}\n- Tip ({{tipPct}}%): ${{tip}}\n- Grand Total: ${{total}}\n- Split between {{people}} people:\n=> EACH PERSON PAYS: ${{perPerson}} (incl. ${{perPersonTip}} tip)"
  },
  "website-carbon-co2-estimator": {
    "poids_moyen_de_la_page": "Average Loaded Webpage Weight (MB)",
    "emissions_annuelles_totales": "Total Annual Carbon Emissions",
    "compensation_arbres": "Tree Offsets Required",
    "taux_de_visiteurs_reguliers_cache": "Returning Visitors with Browser Caching (%)",
    "hebergement_eco_responsable_energie_100": "Green Hosting (100% Renewable Energy Powered)",
    "datacenter_alimente_par_de_l": "Data center powered by certified hydro, solar, or wind electricity.",
    "trajet_en_voiture_thermique": "gas-powered car drive",
    "parcourus_chaque_annee": "driven every single year",
    "recharges_de_smartphone": "smartphone full charges",
    "completes_de_batterie": "battery replenishment cycles",
    "arbres_pour_neutraliser": "mature trees needed to offset",
    "pendant_1_an": "absorbed over 1 full year",
    "label_media_kb": "Images & Media (KB)",
    "label_other_api": "Other / API Requests (KB)",
    "note_eco_index_web": "Web Carbon Rating",
    "x_g_co2_visite": "<0>{{value}} g</0> CO2 / visit",
    "x_mo": "{{value}} MB",
    "total_x_ko_transferes": "Total: {{value}} KB transferred",
    "soit_x_tonnes_an_y_visites": "That is {{tonnes}} tonne(s) / year ({{visits}} visits)",
    "x_arbres": "{{value}} tree(s)",
    "pour_absorber_l_empreinte_carbone_annuelle": "To absorb the site's annual carbon footprint",
    "1_poids_des_ressources_de_la": "1. Page Resource Weight (KB)",
    "javascript_bundles_ko": "JavaScript Bundles (KB)",
    "styles_css_ko": "CSS Styles (KB)",
    "polices_web_fonts_ko": "Web Fonts (KB)",
    "document_html_ko": "HTML Document (KB)",
    "2_frequentation_energie_de_l_hebergeur": "2. Traffic & Hosting Provider Energy",
    "pages_vues_mensuelles_sur_le_site": "Monthly page views on the site",
    "equivalences_concretes_dans_la_vie_reelle": "Real-Life Equivalents",
    "x_km": "{{value}} km",
    "x_recharges": "{{value}} charges"
  },
  "youtube-adsense-shorts-rpm": {
    "total_estime_mois": "Total Estimated Monthly Earnings",
    "parametres_de_chaine_vues": "Channel Settings & View Volume",
    "usa_canada_cpm_eleve_40": "USA / Canada (Tier 1 High CPM +40%)",
    "france_uk_allemagne_standard_europe": "UK / France / Germany (Tier 2 Europe)",
    "europe_du_sud_amerique_latine": "Southern Europe / LATAM (-30%)",
    "asie_du_sud_reste_du": "South Asia / Rest of World (-60%)",
    "repartition_detaillee_des_revenus": "Detailed Revenue Breakdown",
    "video_longue_de_plus_de": "long-form 8+ minute video with mid-roll ads",
    "generent_generalement": "consistently generates",
    "100_a_250_fois_plus": "100x to 250x higher AdSense revenue",
    "niche_finance": "Finance / Stocks / Real Estate / Crypto",
    "niche_tech_business": "Tech / SaaS / Entrepreneurship / AI",
    "niche_education_science": "Education / Science / History",
    "niche_fitness_health": "Fitness / Nutrition / Health",
    "niche_travel_lifestyle": "Travel / Vlogs / Lifestyle",
    "niche_gaming": "Gaming / Video Games / Streaming",
    "niche_entertainment_memes": "Entertainment / Memes / Humor",
    "niche_kids_music": "Kids Content / Music",
    "monetisation_youtube_partner_program": "YouTube Partner Program Monetization",
    "simulateur_de_revenus_youtube": "YouTube Revenue Simulator (Long-Form & Shorts)",
    "intro_modelisez_vos_revenus": "Model your AdSense revenue based on video length (mid-rolls > 8 min), your niche, Shorts volume and paid memberships.",
    "soit_x_par_an": "That is {{value}} / year",
    "vues_videos_long_format": "Long-form video views (horizontal) / month",
    "vues_youtube_shorts": "YouTube Shorts views (vertical) / month",
    "thematique_niche_de_chaine": "Channel topic / niche",
    "geographie_de_l_audience": "Audience geography",
    "videos_8_minutes_eligibles": "Videos > 8 minutes (eligible for automatic mid-roll ad breaks / +45% RPM)",
    "membres_de_chaine": "Channel members (paying supporters)",
    "tarif_moyen_par_membre": "Average price per member ({{currency}}/month)",
    "adsense_videos_longues": "AdSense long-form videos",
    "rpm_par_1k_vues": "RPM: {{value}} / 1k views",
    "creator_pool_youtube_shorts": "YouTube Shorts Creator Pool",
    "abonnements_membres_net_70": "Memberships (Net 70%)",
    "abonnes_actifs": "{{value}} active members",
    "le_saviez_vous": "Did you know?",
    "saviez_vous_texte": "1,000 views on a <0>long-form video over 8 minutes with mid-rolls</0> generate, with the tool's benchmarks, <1>70 to 165 times more AdSense revenue</1> than 1,000 Shorts views, but Shorts remain the fastest lever for gaining subscribers for free."
  },
  "youtube-title-ctr-ab-simulator": {
    "vues_supplementaires_gagnees": "Additional Views Gained",
    "revenus_adsense_additionnels": "Incremental AdSense Revenue",
    "abonnes_supplementaires": "Estimated New Subscribers",
    "vues_generees": "projected views",
    "miniature_16_9": "Thumbnail 16:9",
    "miniature_16_9_optimisee": "Optimized Thumbnail 16:9",
    "votre_chaine": "Your Channel",
    "il_y_a_2_jours": "2 days ago",
    "label_ctr_b": "Target Click-Through Rate (CTR B) (%)",
    "label_impressions": "Projected Algorithm Impressions",
    "label_rpm": "Channel Average RPM ({{currency}}/1k views)",
    "exemple_titre_a": "How to make money with YouTube in 2026",
    "exemple_titre_b": "I tested 7 ways to make a living on YouTube (Real Results)",
    "plus_x_vues": "{{value}} views",
    "progression_de_x_sur_la_video": "<0>+{{value}}%</0> growth on the video",
    "total_variante_b": "Variant B total: {{value}}",
    "plus_x_abonnes": "{{value}} subscribers",
    "sur_la_base_de_x_de": "Based on a {{value}}% view → subscriber conversion rate",
    "variante_a_temoin": "Variant A (Control)",
    "score_x_100": "Score: {{value}}/100",
    "titre_a_x_caracteres": "Title A ({{value}} characters):",
    "70_caracteres_risque_de_troncature": "> 70 characters: risk of truncation (...) on smartphones.",
    "taux_de_clic_ctr_a": "Click-through rate (CTR A) (%)",
    "variante_b_challenger": "Variant B (Challenger)",
    "titre_b_x_caracteres": "Title B ({{value}} characters):",
    "taux_d_abonnement_par_vue": "Subscription rate per view (%)",
    "parametres_de_diffusion_de_la_video": "Video distribution settings",
    "apercu_rendu_dans_le_fil_youtube": "Preview in the YouTube feed (Mobile & Desktop)",
    "channel_line_a": "Your Channel • {{value}} views • 2 days ago",
    "channel_line_b": "Your Channel • <0>{{value}} views</0> • 2 days ago"
  },
  "content-repurposing-time-roi": {
    "multiplicateur_de_contenu": "Content Multiplier",
    "assets_crees_mois": "assets created / mo",
    "temps_economise_mois": "Time Saved / Month",
    "heures": "hours",
    "soit_environ": "Approx ~",
    "journees_travail": "work days",
    "economie_financiere_mensuelle": "Monthly Cost Savings",
    "a_taux_horaire": "At {{value}} / h",
    "temps_total_requis": "Total Time Required",
    "h_mois": "hrs / mo",
    "au_lieu_de": "Instead of",
    "h_sans_recyclage": "hrs without repurposing",
    "contenu_pilier_central": "1. Core Pillar Content (Macro-Content)",
    "format_contenu_pilier": "Core pillar content format",
    "opt_youtube": "▶️ Long-form YouTube video (>15 min)",
    "opt_podcast": "🎙️ Audio/Video Podcast Episode",
    "opt_webinar": "💻 Live Webinar / Masterclass",
    "frequence_mois": "Frequency / month",
    "heures_creation_pilier": "Hours to create / pillar",
    "taux_horaire_moyen": "Average Hourly Rate ({{currency}} / h)",
    "declinaisons_multiplateformes": "2. Cross-Platform Derivatives per Episode",
    "shorts_reels_tiktok": "📱 Shorts / Reels / TikTok per episode:",
    "carrousels_linkedin": "📑 LinkedIn PDF Carousels per episode:",
    "posts_courts_x": "𝕏 Short Posts / Threads on X:",
    "newsletter_recap": "📧 Summary Newsletter:",
    "article_blog_seo": "🌐 SEO-Optimized Blog Article:"
  },
  "color-converter": {
    "accessibility_wcag": "Accessibility (WCAG)",
    "contrast_ratio_with": "Contrast {{score}}:1 with {{color}}",
    "white": "White",
    "black": "Black",
    "picker": "Picker",
    "preview": "Preview",
    "grade_fail": "Fail"
  },
  "fluid-typography-calculator": {
    "output_unit_label": "Output unit",
    "rem_recommended": "REM (Accessibility recommended)",
    "generated_css": "Generated CSS code",
    "fluid_visual_preview": "Fluid visual preview",
    "clamp_explainer": "The CSS clamp() function adapts smoothly across viewports without rigid breakpoints.",
    "pixels_px": "Pixels (PX)",
    "copier_css": "Copy CSS",
    "titre_fluide_interactif": "Interactive Fluid Heading",
    "pourquoi_utiliser_css_clamp": "Why use CSS clamp()?"
  },
  "video-bitrate-calculator": {
    "video_resolution": "Video Resolution",
    "target_video_bitrate": "Target Video Bitrate: <0>{{bitrate}} Mbps</0> (+ 320 kbps audio)",
    "codec_d_export": "Export codec",
    "images_par_seconde_fps": "Frames per second (FPS)",
    "temps_d_upload_fibre_50": "Upload time (50 Mbps fiber)",
    "total_en_megabytes": "Total in megabytes"
  },
  "business-meeting-travel-carbon-footprint": {
    "title": "Meeting Carbon Footprint Calculator: In-Person vs Video",
    "desc": "Compare CO₂e emissions and financial costs between travel and video calls.",
    "visio_duration": "Video Meeting Duration",
    "avoided_title": "CSR Avoidance Summary",
    "avoided_emissions": "Avoided Emissions via Video",
    "saved_budget": "Saved Corporate Budget:",
    "saved_trees": "Equivalent trees absorbed (1 yr):",
    "official_emission_factors": "Official Emission Factors (ADEME)",
    "train_vs_plane_fact": "• Train travel emits about 77 times less CO₂e than flying for domestic routes.",
    "visio_power_fact": "• 1 hour of HD video call with camera uses ~50g of CO₂e per participant (indicative value).",
    "texte_copie_rapport": "=== CARBON & COST ASSESSMENT: IN-PERSON VS VIDEO MEETING ===\n• Participants: {{attendees}} people ({{hours}}h meeting)\n• Physical transport mode: {{mode}} ({{distance}} km round trip + {{nights}} hotel night)\n• PHYSICAL FOOTPRINT: {{physical}} kg CO2e (Total cost: {{physicalCost}} €)\n• VIDEOCONFERENCE FOOTPRINT: {{virtual}} kg CO2e (Cost: 0 €)\n• CARBON SAVINGS WITH VIDEO: -{{avoided}} kg CO2e (-{{percent}}%)\n• FINANCIAL SAVINGS: +{{saved}} € saved\n• Offset equivalent: {{trees}} tree(s) to plant to absorb the physical trip.",
    "bilan_d_impact_carbone_copie": "Carbon impact report copied!",
    "1_deplacement_physique": "1. Physical travel",
    "nombre_de_participants": "Number of participants",
    "pers": "ppl",
    "distance_a_r_par_personne": "Round-trip distance per person",
    "km_a_r": "km round trip",
    "mode_de_transport_principal": "Main mode of transport",
    "mode_train": "Train (high-speed)",
    "mode_plane": "Plane",
    "mode_car_thermal": "Petrol/Diesel Car",
    "mode_car_ev": "Electric Car",
    "nuits_d_hotel_pers": "Hotel nights / person",
    "nuits": "nights",
    "budget_trajet_total_pers": "Total travel budget / person",
    "eur_pers": "€/person",
    "2_option_visioconference": "2. Video Conference Option",
    "heures": "hours",
    "presentiel_x_kg_vs_visio": "In person: {{physical}} kg vs Video: {{virtual}} kg",
    "x_arbres": "{{value}} tree(s)",
    "copier_le_rapport_d_impact_rse": "Copy the CSR impact report"
  },
  "carbon-footprint-calculator": {
    "estimated_footprint": "Estimated Carbon Footprint",
    "flights_label": "Flights",
    "tip_veg": "A vegetarian meal saves up to 2.5 kg of CO₂ compared to red meat.",
    "tip_train": "Replacing a short flight with a train journey cuts travel footprint by 95%.",
    "tip_ev": "Switching to an EV or driving at 110 km/h instead of 130 saves up to 20% fuel.",
    "objectif_accord_de_paris": "Paris Agreement target (excellent)",
    "modere_sous_moyenne_fr": "Moderate (below the French average)",
    "moyenne_nationale_95_tonnes": "National average (~8.2 tonnes)",
    "empreinte_elevee": "High footprint",
    "transport_terrestre": "Land transport",
    "km_sem": "km/wk",
    "essence": "Petrol",
    "diesel": "Diesel",
    "hybride": "Hybrid",
    "electrique": "Electric",
    "avion": "Flights",
    "h_an": "h/yr",
    "regime_alimentaire": "Diet",
    "viande_plus": "Meat ++",
    "viande_moderee": "Moderate meat",
    "peu_de_viande": "Little meat",
    "vegetarien": "Vegetarian",
    "vegetalien": "Vegan",
    "logement": "Housing",
    "kwh_mois": "kWh/month",
    "gaz_naturel": "Natural gas",
    "fioul": "Heating oil",
    "bois_pellets": "Wood/Pellets",
    "t_co2e_an": "t CO₂e/yr",
    "voiture_transports": "Car & transport",
    "alimentation": "Food",
    "conseils_reduire_empreinte": "Tips to reduce your footprint"
  },
  "prompt-optimizer-tool": {
    "input_cost_label": "Input cost",
    "default_role": "Expert React & Tailwind CSS developer",
    "default_context": "Building a carbon footprint calculator component",
    "default_task": "Generate the working React component with interactive state and responsive handling.",
    "default_constraints": "No unnecessary external dependencies, strict TypeScript typing, dark mode support.",
    "default_output_format": "Complete TypeScript code in a markdown block with concise explanations.",
    "prompt_template": "### ROLE & EXPERTISE\nYou are a {{role}}.\n\n### PROJECT CONTEXT\n{{context}}\n\n### MAIN TASK\n{{task}}\n\n### STRICT CONSTRAINTS\n{{constraints}}\n\n### EXPECTED OUTPUT FORMAT\n{{outputFormat}}",
    "label_role": "1. Role / persona given to the AI",
    "label_context": "2. Context",
    "label_task": "3. Main instruction (task)",
    "label_constraints": "4. Strict constraints & guardrails",
    "label_output_format": "5. Desired output format",
    "label_target_model": "Target model for the estimate",
    "structured_prompt_ready": "Structured prompt ready",
    "copy_prompt": "Copy prompt",
    "tokens_est": "Tokens (est.)",
    "mots": "Words",
    "golden_rule_title": "Golden rule of prompt engineering"
  },
  "scientific-graphing-calculator": {
    "tab_equations": "Equations & Systems",
    "tab_stats": "Student Statistics",
    "card_functions": "Mathematical Functions",
    "quick_examples": "Quick Student Examples",
    "tangent_derivative": "Tangent & Derivative at x₀",
    "numerical_integral": "Numerical Integral ∫ f(x)dx",
    "zoom_out": "Zoom Out",
    "reset_view": "Reset View",
    "card_value_table": "Values Table (f(x))",
    "roots_zeros": "Roots / Zeros (f(x) = 0)",
    "no_extremum": "No local extremum detected",
    "card_constants": "Physical & Mathematical Constants",
    "card_system_2x2": "2x2 System Coefficients",
    "equation_1": "Equation 1: a₁x + b₁y = c₁",
    "equation_2": "Equation 2: a₂x + b₂y = c₂",
    "card_solve_deg2": "Step-by-step resolution (Quadratic)",
    "step_details": "Step details:",
    "card_solve_deg3": "Step-by-step resolution (Cubic - Cardano)",
    "param_p": "Parameter p",
    "param_q": "Parameter q",
    "real_roots": "Real roots:",
    "calc_details": "Calculation details:",
    "card_cramer": "Resolution by Cramer's Rule",
    "det_delta": "Determinant Δ",
    "card_input_1d": "1D Data Input",
    "card_regression_2d": "2D Linear Regression (points x, y)",
    "median": "Median (me)",
    "std_dev": "Standard Deviation (σ)",
    "range": "Range (max - min):",
    "iqr": "Interquartile Range (IQR):",
    "quartiles_extremes": "Quartiles & Extremes",
    "third_quartile": "Third Quartile (Q₃):",
    "card_regression": "Linear Fit & Regression (y = ax + b)",
    "regression_eq": "Regression Line Equation",
    "intercept_b": "Y-Intercept (b)",
    "r_squared": "Determination Coef. (R²)",
    "pearson_r": "Pearson Correlation Coefficient (r):",
    "const_pi": "Pi (Archimedes' constant)",
    "const_euler": "Euler's number",
    "const_light_speed": "Speed of light (m/s)",
    "const_gravitation": "Gravitational constant (N m²/kg²)",
    "const_planck": "Planck constant (J s)",
    "const_avogadro": "Avogadro constant (mol⁻¹)",
    "const_gas": "Ideal gas constant (J/(mol K))",
    "const_boltzmann": "Boltzmann constant (J/K)",
    "const_charge": "Elementary charge (C)",
    "const_electron_mass": "Electron mass (kg)",
    "calc_syntax_error": "Syntax error",
    "a_zero_deg3": "The coefficient 'a' cannot be zero for a third-degree equation.",
    "a_zero_deg2": "The coefficient 'a' cannot be zero for a second-degree equation.",
    "cardan_step1": "1. Conversion to depressed form t³ + pt + q = 0 with x = t - b/(3a)",
    "cardan_step2": "2. p = {{p}}, q = {{q}}",
    "cardan_step3": "3. Cardano discriminant Δ = q²/4 + p³/27 = {{value}}",
    "cardan_step4": "4. Real roots found: {{value}}",
    "p2_two_step1": "1. Discriminant: Δ = b² - 4ac = ({{b}})² - 4({{a}})({{c}}) = {{delta}}",
    "p2_two_step2": "2. Δ > 0: two distinct real roots x₁ and x₂",
    "p2_two_step3": "3. x₁ = (-b - √Δ) / 2a = ({{nb}} - {{sqrt}}) / {{den}} = {{x}}",
    "p2_two_step4": "4. x₂ = (-b + √Δ) / 2a = ({{nb}} + {{sqrt}}) / {{den}} = {{x}}",
    "p2_vertex_step": "{{n}}. Vertex of the parabola: S({{h}}, {{k}})",
    "p2_disc_step1": "1. Discriminant: Δ = b² - 4ac = {{delta}}",
    "p2_one_step2": "2. Δ = 0: one double root x₀",
    "p2_one_step3": "3. x₀ = -b / 2a = {{nb}} / {{den}} = {{x}}",
    "p2_complex_step2": "2. Δ < 0: two complex conjugate roots",
    "p2_complex_z1": "3. z₁ = {{re}} - {{im}}i",
    "p2_complex_z2": "4. z₂ = {{re}} + {{im}}i",
    "sys_infinite": "Dependent system: infinitely many solutions (coincident lines).",
    "sys_none": "Inconsistent system: no solution (parallel lines).",
    "sys_step1": "1. Main determinant Δ = a₁b₂ - a₂b₁ = ({{a1}})({{b2}}) - ({{a2}})({{b1}}) = {{value}}",
    "sys_step2": "2. Δx = c₁b₂ - c₂b₁ = ({{c1}})({{b2}}) - ({{c2}})({{b1}}) = {{value}}",
    "sys_step3": "3. Δy = a₁c₂ - a₂c₁ = ({{a1}})({{c2}}) - ({{a2}})({{c1}}) = {{value}}",
    "nd": "N/A",
    "curve_plotter": "Curve plotter",
    "scientific_calculator_tab": "Scientific Calculator",
    "hide_curve": "Hide curve",
    "show_curve": "Show curve",
    "expr_placeholder": "e.g. sin(x) + cos(2*x)",
    "gauss_preset": "e^(-x²) (Gaussian)",
    "damped_oscillation": "Damped oscillation",
    "advanced_tools_title": "Advanced Analysis Tools",
    "tool_active": "Active",
    "tool_inactive": "Disabled",
    "tangent_point_label": "Point of tangency (x₀)",
    "bound_a": "Bound a",
    "bound_b": "Bound b",
    "zoom_in": "Zoom in",
    "params_toggle": "Parameters (a,b,c,k)",
    "values_table_toggle": "Table of values",
    "export_png": "Export PNG",
    "dynamic_variables_hint": "Dynamic Variables (use 'a', 'b', 'c', 'k' in your expressions)",
    "reset_params": "Reset (1, 1, 0, 0)",
    "step_dx": "Step (Δx)",
    "analysis_results_title": "Mathematical Analysis Results ({{name}})",
    "no_visible_roots": "No visible root in this range",
    "local_extrema": "Local Extrema (Min / Max)",
    "max_point": "Max: ({{x}}, {{y}})",
    "min_point": "Min: ({{x}}, {{y}})",
    "integral_range": "Integral from [{{from}} to {{to}}]",
    "memory_value": "Memory: {{value}}",
    "equation_type_title": "Equation Type",
    "option_deg2": "Second Degree: ax² + bx + c = 0",
    "option_deg3": "Third Degree: ax³ + bx² + cx + d = 0",
    "option_sys2": "2x2 linear system",
    "coefficients_deg2": "Coefficients (ax² + bx + c = 0)",
    "coefficients_deg3": "Coefficients (ax³ + bx² + cx + d = 0)",
    "discriminant_delta": "Discriminant Δ",
    "vertex_hk": "Vertex S(h, k)",
    "roots_nature": "Nature of the roots",
    "two_real_roots": "2 real roots",
    "one_double_root": "1 Double Root",
    "two_complex_roots": "2 Complex Roots",
    "solutions_label": "Solutions:",
    "cardan_discriminant": "Cardano Discriminant Δ",
    "unique_solution": "Unique Solution (x, y):",
    "stats_series_label": "Single-variable data series (separated by commas or spaces)",
    "stats_series_placeholder": "e.g. 12, 15, 8, 20, 14, 18",
    "points_pairs_label": "Point pairs (one x, y point per line)",
    "points_placeholder": "e.g.:\n1, 2.1\n2, 4.2\n3, 6.1",
    "stats_1d_title": "1D Statistical Indicators",
    "total_count": "Total Count (N)",
    "mean_label": "Mean (x̄)",
    "dispersion_title": "Measures of Dispersion",
    "variance_label": "Variance (σ²):",
    "sum_label": "Sum (Σx):",
    "minimum_label": "Minimum:",
    "first_quartile": "First Quartile (Q₁):",
    "maximum_label": "Maximum:",
    "slope_a": "Slope (a)"
  },
  "audio-size-calculator": {
    "frequence_d_echantillonnage_sample_rate": "Sampling rate (Sample rate)",
    "48_khz_video_film": "48 kHz (Video/Film)",
    "96_khz_studio_hd": "96 kHz (HD Studio)",
    "192_khz_ultra_hd": "192 kHz (Ultra HD)",
    "resolution_bit_depth": "Resolution (Bit Depth)",
    "16_bit_standard_cd": "16-bit (CD standard)",
    "24_bit_studio_pro": "24-bit (Pro studio)",
    "32_bit_float_marge_anti_clip": "32-bit Float (anti-clipping headroom)",
    "canaux_audio": "Audio channels",
    "mono_1_ch": "Mono (1 ch)",
    "stereo_2_ch": "Stereo (2 ch)",
    "5_1_surround_6_ch": "5.1 Surround (6 ch)",
    "debit_de_donnees": "Data rate: <0>{{value}} KB/s</0>",
    "flac_sans_perte_55": "FLAC Lossless (~55%)",
    "standard_de_l_industrie": "Industry standard",
    "pour_la_musique_et_le": "For music and podcasting, recording at <0>24-bit / 48 kHz</0> offers an ideal balance between dynamic range and storage use."
  },
  "qr-code-generator": {
    "url_text": "URL / Text",
    "no_encryption": "None",
    "ecc_low": "Low (7%)",
    "ecc_medium": "Medium (15%)",
    "ecc_quartile": "Quartile (25%)",
    "ecc_high": "High (30%)",
    "qr_code_preview": "QR Code Preview",
    "export_size_px": "Export Size (px)",
    "size_hd": "500 x 500 px (HD)",
    "size_print": "800 x 800 px (Print)",
    "copy_image": "Copy Image",
    "copied": "Copied!"
  },
  "lawn-seed-calculator": {
    "heading": "Grass seed quantity",
    "subtitle": "Kilos of seed, number of bags and starter fertiliser for your area and type of sowing. Indicative, editable rates.",
    "area_label": "Area to sow",
    "operation_label": "Type of sowing",
    "operation_create": "New lawn",
    "operation_overseed": "Overseeding",
    "type_label": "Grass type",
    "type_universal": "General-purpose / ornamental lawn",
    "type_sport": "Sports / hard-wearing lawn",
    "type_shade": "Shade lawn",
    "type_rustic": "Low-maintenance lawn",
    "dose_label": "Seed rate",
    "fertilizer_toggle": "Add a starter fertiliser",
    "fertilizer_dose": "Starter fertiliser rate",
    "seed_result": "Seed needed",
    "bags_1": "Bags of 1 kg",
    "bags_5": "Bags of 5 kg",
    "bags_10": "Bags of 10 kg",
    "fertilizer_result": "Starter fertiliser",
    "disclaimer": "Indicative rates: follow the rate printed on your seed mix. The number of bags is rounded up for each size; pick one size or combine them depending on price per kilo.",
    "sources_note": "These rates are seed producers’ recommendations, not a rule. DCM Activo sheet: 20 to 30 g/m² for a new lawn, 10 to 20 g/m² for overseeding; DLF Turfline overseeding sheet: 25 to 30 g/m² (consulted on 14 October 2026). For a new lawn, the tool’s defaults (30 to 40 g/m²) exceed the DCM range; for overseeding (15 to 25 g/m²) they stay within these ranges. The rate on the bag takes precedence. Starter fertiliser at 30 g/m²: indicative value, not verified."
  },
  "trailer-towing-license-calculator": {
    "heading": "Which licence do you need to tow your trailer?",
    "subtitle": "Vehicle gross weight, gross train weight and trailer weight: category B, B96 or BE, with a towing capacity check.",
    "car_section": "Towing vehicle (registration certificate)",
    "car_ptac": "Vehicle gross weight (F.2)",
    "ptra": "Gross train weight (F.3)",
    "o1": "Max braked trailer (O.1)",
    "o2": "Max unbraked trailer (O.2)",
    "trailer_section": "Trailer or caravan",
    "trailer_ptac": "Trailer gross weight (F.2)",
    "braked": "Trailer has its own brakes",
    "thresholds_title": "Legal thresholds (editable)",
    "th_light": "Light trailer up to",
    "th_b": "Combined weight on category B",
    "th_b96": "Combined weight with B96",
    "th_be": "Max trailer weight on BE",
    "thresholds_note": "Values from Directive 2006/126/EC (Art. 4), applied across the EU. Indicative values: check them if the rules change.",
    "result_label": "Licence required",
    "licence_b_light": "Category B",
    "licence_b_sum": "Category B",
    "licence_b96": "Category B + code 96 (B96)",
    "licence_be": "Category BE",
    "licence_over_be": "Beyond category BE",
    "licence_not_b": "Not a category B vehicle",
    "reason_b_light": "The trailer’s gross weight is {{trailer}} kg, so {{light}} kg or less: a category B licence is enough, whatever the combined weight.",
    "reason_b_sum": "The trailer is over {{light}} kg, but the combined gross weight ({{sum}} kg) does not exceed {{b}} kg: a category B licence is enough.",
    "reason_b96": "The combined gross weight ({{sum}} kg) is between {{b}} and {{b96}} kg: you need code 96 (B96). In France it is granted after a 7-hour training course with no test; some EU countries require a test.",
    "reason_be": "The combined gross weight ({{sum}} kg) exceeds {{b96}} kg and the trailer is no more than {{be}} kg: you need a category BE licence, which involves a practical test.",
    "reason_over_be": "The trailer’s gross weight is over {{be}} kg: category BE no longer covers it, you need category C1E.",
    "reason_not_b": "The towing vehicle’s gross weight is over {{b}} kg: it falls outside category B (category C1 or C).",
    "sum_summary": "Combined gross weight: {{car}} kg (vehicle) + {{trailer}} kg (trailer) = {{sum}} kg",
    "ptra_ok": "Combined gross weight ({{sum}} kg) within the gross train weight ({{ptra}} kg): the combination can run fully loaded.",
    "ptra_over": "The combined gross weight exceeds the gross train weight by {{over}} kg: the actual loaded combination must stay at or below {{ptra}} kg, so reduce the load.",
    "tow_ok_o1": "{{trailer}} kg trailer: within the braked towing capacity (O.1 = {{limit}} kg).",
    "tow_ok_o2": "{{trailer}} kg trailer: within the unbraked towing capacity (O.2 = {{limit}} kg).",
    "tow_over_o1": "The trailer is {{over}} kg over the braked towing capacity (O.1 = {{limit}} kg): this vehicle cannot tow it.",
    "tow_over_o2": "The trailer is {{over}} kg over the unbraked towing capacity (O.2 = {{limit}} kg): choose a braked or lighter trailer.",
    "where_title": "Where to find these values on the registration certificate",
    "where_f2": "F.2: the vehicle’s gross weight, i.e. its maximum permissible laden mass.",
    "where_f3": "F.3: gross train weight, the maximum permissible mass of vehicle plus trailer.",
    "where_o1": "O.1 and O.2: the heaviest trailer the vehicle may tow, braked (O.1) or unbraked (O.2).",
    "where_trailer": "Trailer: its gross weight is in field F.2 of its own registration certificate or, failing that, on the manufacturer’s plate.",
    "disclaimer": "Indicative information only: check your vehicle registration certificate. The calculation applies the thresholds of Directive 2006/126/EC; also watch the actual loaded weight and the nose load on the tow ball.",
    "thresholds_dated": "Thresholds in force on 14/10/2026: Directive 2006/126/EC (art. 4) and article R221-4 of the French Highway Code (version of 29 April 2016); 7-hour B96 training (order of 17 January 2013). Directive (EU) 2025/2205 of 22 October 2025 keeps these thresholds. It also extends a B licence held for 2 years to alternative-fuel vehicles of 3,500 to 4,250 kg, by 26 November 2027 at the latest; its other rules will apply from 26 November 2029. These new cases are not simulated."
  },
  "smooth-box-shadow-generator": {
    "layered_shadow_generator": "Smooth layered box-shadow generator",
    "layered_shadow_hint": "Stack several shadows for a realistic look, with offset and blur growing progressively.",
    "layers": "Number of layers",
    "final_distance": "Final distance",
    "final_blur": "Final blur",
    "total_opacity": "Total opacity",
    "shadow_color": "Shadow color",
    "progression_curve": "Progression curve",
    "curve_linear": "Linear",
    "curve_ease_in": "Ease-in (slow start)",
    "curve_ease_out": "Ease-out (fast start)",
    "dark_background": "Dark background",
    "preview_card": "Card preview",
    "copy_code": "Copy"
  },
  "glassmorphism-css-generator": {
    "glassmorphism_css_generator": "Glassmorphism CSS generator (frosted glass)",
    "glass_hint": "Adjust blur, transparency and saturation: the preview and CSS code update live.",
    "blur": "Blur (backdrop-filter)",
    "transparency": "Background opacity",
    "saturation": "Saturation",
    "border_opacity": "Border opacity",
    "corner_radius": "Corner radius",
    "glass_color": "Glass colour",
    "drop_shadow": "Drop shadow",
    "preview_background": "Preview background",
    "bg_aurora": "Aurora",
    "bg_ocean": "Ocean",
    "bg_forest": "Forest",
    "bg_night": "Night",
    "preview_title": "Glass card",
    "preview_text": "The background shows softly through the blur.",
    "copy_code": "Copy",
    "accessibility_title": "Accessibility: text contrast on glass",
    "accessibility_text": "Estimate on the chosen background: white text {{white}}:1, dark text {{dark}}:1. WCAG requires at least 4.5:1 for body text and 3:1 for large text.",
    "accessibility_tip": "Real contrast varies with the image behind the glass: raise the background opacity or blur if text is hard to read, and test with your real backdrop.",
    "source_note": "WCAG 2.2 (W3C Recommendation of 5 October 2023): 4.5:1 for text, 3:1 for large text. backdrop-filter: Chrome 76, Edge 79, Firefox 103, Safari 18 unprefixed (-webkit- before). Checked on 14/10/2026."
  },
  "image-color-palette-extractor": {
    "image_color_palette_extractor": "Image color palette extractor",
    "palette_hint": "Upload an image: the dominant colours are computed with the median cut algorithm.",
    "uploaded_image": "Uploaded image",
    "drop_or_choose": "Drop an image here or click to choose one",
    "click_to_replace": "Click the image to replace it.",
    "number_of_colors": "Number of colours",
    "privacy_note": "Your image never leaves your browser: the analysis runs locally and nothing is sent to a server.",
    "error_not_image": "This file is not an image. Choose a PNG, JPEG, WebP or GIF.",
    "error_load": "This image could not be read.",
    "error_empty": "No colour to extract: the image is fully transparent.",
    "no_palette_yet": "The palette will appear here once you upload an image.",
    "copy_value": "Copy this value",
    "export_format": "Export format",
    "css_variables": "CSS variables",
    "copy_code": "Copy"
  },
  "speed-time-fuel-tradeoff-calculator": {
    "heading": "Driving faster: time saved or fuel wasted?",
    "subtitle": "Compare two speeds: journey time, extra fuel, extra cost, cost per minute saved and CO₂.",
    "trip_section": "Journey",
    "distance": "Distance",
    "speed_a": "Speed A",
    "speed_b": "Speed B",
    "car_section": "Car and fuel",
    "ref_consumption": "Reference consumption",
    "ref_speed": "at a speed of",
    "aero_share": "Aerodynamic share at that speed",
    "aero_hint": "Model: a fixed share of consumption plus an aerodynamic share that grows with the square of speed. Around 50 to 60% at 110 km/h for a saloon, more for an SUV or with a roof box.",
    "fuel_type": "Fuel",
    "fuel_petrol": "Petrol",
    "fuel_diesel": "Diesel",
    "fuel_price": "Fuel price",
    "co2_factor": "CO₂ per litre",
    "time_gained_label": "Time saved at {{b}} km/h instead of {{a}} km/h",
    "minutes_value": "{{minutes}} min",
    "extra_summary": "At the price of {{litres}} L of extra fuel ({{cost}}), i.e. +{{percent}}% consumption.",
    "hint_b_faster": "Enter the higher speed as speed B to get a positive time saving.",
    "cost_per_minute": "Cost per minute saved",
    "cost_per_hour": "or {{value}} per hour saved",
    "extra_co2": "Extra CO₂ emitted",
    "row_time": "Journey time",
    "row_consumption": "Consumption",
    "row_fuel": "Fuel used",
    "row_cost": "Fuel cost",
    "row_co2": "CO₂ emitted",
    "time_hm": "{{h}} h {{m}} min",
    "disclaimer": "Theoretical estimate at constant speed: traffic, tolls and breaks cut the time you actually save. The default CO₂ figures (2.31 kg/L for petrol, 2.68 kg/L for diesel) cover the combustion of pure fossil fuel; you can change them.",
    "co2_source": "Default CO₂ factors: ADEME Base Carbone, version 23.6 (data of 3 July 2025), combustion only: 2.20 kg CO₂e/L for SP95, SP95-E10 or SP98 petrol, 2.49 kg/L for B7 diesel. These fuels contain biofuels, whose biogenic CO₂ is excluded. Including upstream emissions (extraction, refining, transport): 2.69 and 3.10 kg/L. Checked on 14/10/2026.",
    "disclaimer_sourced": "Theoretical estimate at constant speed: traffic, tolls and breaks reduce the time actually saved. Official benchmarks: according to ADEME, the French environment agency (April 2026), driving 10 km/h slower on the motorway saves 1 to 3 litres over 500 km; according to France's Commissariat général au développement durable (February 2022), going from 130 to 110 km/h would in theory cut consumption by 25%."
  },
  "web-p-converter": {
    "webp_uniquement": "WebP only",
    "apercu": "Preview",
    "image_convertie": "Converted image"
  },
  "bpm-delay-reverb-calculator": {
    "title": "BPM to ms calculator: delay, reverb and pre-delay",
    "subtitle": "Duration in ms and Hz for every note value, straight, dotted or triplet, with reverb suggestions.",
    "tempo": "Tempo",
    "tap_tempo": "Tap tempo: click in time",
    "tap_hint": "{{taps}} tap(s). Average of the latest taps; a pause longer than 2 s resets it.",
    "one_beat": "One beat (quarter note)",
    "invalid_bpm": "Enter a tempo between 20 and 400 BPM.",
    "note_values": "Note value durations",
    "col_note": "Note",
    "col_straight": "Straight",
    "col_dotted": "Dotted (×1.5)",
    "col_triplet": "Triplet (×2/3)",
    "note_whole": "Whole note",
    "note_half": "Half note",
    "note_quarter": "Quarter note",
    "note_eighth": "Eighth note",
    "note_sixteenth": "Sixteenth note",
    "note_thirty_second": "Thirty-second note",
    "predelay": "Suggested pre-delay",
    "predelay_tight": "Short: 1/64 note",
    "predelay_medium": "Medium: 1/32 note",
    "predelay_wide": "Long: 1/16 note",
    "decay": "Suggested reverb decay",
    "decay_room": "Small room: 2 beats",
    "decay_plate": "Plate: 1 bar (4 beats)",
    "decay_hall": "Large hall: 2 bars (8 beats)",
    "note": "Duration in ms = 60,000 ÷ BPM × number of beats (quarter note = 1 beat, 4-beat bar). Pre-delay and decay values are indicative: locked to the tempo so the reverb breathes with the track, adjust by ear."
  },
  "depth-of-field-hyperfocal-calculator": {
    "title": "Depth of field and hyperfocal distance calculator",
    "subtitle": "Hyperfocal distance and near and far sharpness limits from focal length, aperture and sensor.",
    "settings": "Shooting settings",
    "focal_length": "Focal length (mm)",
    "aperture": "Aperture (f/)",
    "subject_distance": "Subject distance (m)",
    "sensor": "Sensor format",
    "sensor_medium": "Medium format",
    "sensor_full": "Full frame (35 mm)",
    "sensor_apsc": "APS-C",
    "sensor_m43": "Micro Four Thirds",
    "sensor_one_inch": "1-inch",
    "sensor_phone": "Smartphone",
    "custom": "Custom value",
    "coc": "Circle of confusion (mm)",
    "coc_hint": "Indicative values (full frame 0.030 mm). Lower it for stricter sharpness (large prints).",
    "hyperfocal": "Hyperfocal distance",
    "total_dof": "Total depth of field",
    "near_limit": "Near sharpness limit",
    "far_limit": "Far sharpness limit",
    "in_front": "Sharp zone in front of subject",
    "behind": "Sharp zone behind subject",
    "infinity": "Infinity",
    "beyond_hyperfocal": "The focus distance is beyond the hyperfocal distance: everything is sharp from {{near}} to infinity.",
    "focus_tip": "Landscape tip: focus at the hyperfocal distance ({{hyperfocal}}) for sharpness from {{near}} to infinity.",
    "invalid_input": "Check the values: focal length 1 to 2,000 mm, aperture f/0.7 to f/128, circle of confusion 0.001 to 0.1 mm, distance greater than the focal length.",
    "note": "H = f² ÷ (N × c) + f; near limit = s(H − f) ÷ (H + s − 2f); far limit = s(H − f) ÷ (H − s), infinite once s ≥ H. Theoretical estimate: perceived sharpness also depends on print size, diffraction and the viewer.",
    "source_note": "Rounded values of the d/1500 convention, checked on 14/10/2026. Medium format (0.039 mm) and smartphone (0.005 mm): indicative values, not verified."
  },
  "party-drinks-quantity-calculator": {
    "heading": "How many bottles do you need for your party?",
    "subtitle": "Champagne, wine, beer, soft drinks and water based on guest numbers, duration and the parts of your reception.",
    "guests_title": "Guests",
    "adults": "Adults",
    "non_drinkers": "of whom non-drinkers",
    "children": "Children",
    "moments_title": "Parts of the reception",
    "moment_cocktail": "Drinks reception",
    "moment_meal": "Meal",
    "moment_party": "Evening dancing",
    "duration": "Duration in hours",
    "rate_champagne": "Flutes / h",
    "rate_wine": "Glasses of wine / h",
    "rate_beer": "Beers / h",
    "rates_hint": "Glasses per drinking adult per hour. Rules of thumb: 1 flute an hour at the drinks reception, half a bottle of wine per person over the meal.",
    "soft_title": "Alcohol-free drinks and margin",
    "soft_drinkers": "Soft drinks / h, drinking adults",
    "soft_others": "Soft drinks / h, non-drinkers and children",
    "water_rate": "Water / h, per person",
    "margin": "Safety margin",
    "soft_hint": "Soft drinks and water: 20 cl glasses per person per hour, over the whole reception.",
    "result_label": "Quantities to buy",
    "result_summary": "For {{drinkers}} drinking adults and {{others}} non-drinkers or children, over {{hours}} h, margin included.",
    "champagne_bottles": "Champagne (75 cl bottles)",
    "champagne_sub": "Flutes planned: {{glasses}} ({{per}} per bottle)",
    "wine_bottles": "Wine (75 cl bottles)",
    "wine_sub": "Glasses planned: {{glasses}} ({{per}} per bottle)",
    "beer_litres": "Beer",
    "beer_sub": "25 cl glasses: {{glasses}}, or {{bottles}} 33 cl bottles",
    "soft_litres": "Soft drinks and juice",
    "water_litres": "Water",
    "bottles_15_sub": "That is {{bottles}} bottles of {{size}} L",
    "moderation": "Keep alcohol-free drinks as appealing as the rest, water freely available and a way home for everyone (designated driver, taxi, a bed on site). Please drink responsibly.",
    "standard_drink_source": "Santé publique France benchmarks (2017 expert opinion, page updated on 26 January 2026): a standard drink contains 10 g of pure alcohol; no more than 10 standard drinks a week or 2 a day, with alcohol-free days. A 12.5 cl glass of champagne at 12% holds 1.2 of them and a 15 cl glass of wine at 12.5% holds 1.5. The 6 flutes and 5 glasses per 75 cl bottle are serving assumptions (indicative values, not verified). Checked on 14/10/2026."
  },
  "ev-charging-calculator": {
    "3_7_kw_prise_renf": "3.7 kW (reinforced socket)",
    "7_4_kw_wallbox_1p": "7.4 kW (Wallbox 1-phase)",
    "11_kw_wallbox_3p": "11 kW (Wallbox 3-phase)",
    "50_kw_dc_rapide": "50 kW (DC fast)",
    "150_kw_hpc_ultra": "150 kW (HPC Ultra)",
    "comparatif_annuel_vs_essence": "Annual comparison vs petrol",
    "km_an": "km/year",
    "plus_x_eur_par_an": "+{{value}} € / year"
  },
  "food-waste-impact-calculator": {
    "pers": "pers.",
    "par_sem": "/wk",
    "kg_par_sem": "kg/wk",
    "par_an": "/year",
    "x_kg_par_an": "{{value}} kg / year",
    "x_kg_co2_par_an": "{{value}} kg CO₂ / year"
  },
  "case-converter": {
    "uppercase": "UPPERCASE",
    "lowercase": "lowercase",
    "capitalize": "Capitalize",
    "sentence": "Sentence",
    "alternate": "aLtErNaTe",
    "inverse": "InVeRsE",
    "clean_space": "Clean Space",
    "paste": "Paste"
  },
  "long-division-calculator": {
    "heading": "Long division step by step",
    "subtitle": "Every step explained, with a remainder or decimals, in your country's layout.",
    "dividend_label": "Dividend",
    "divisor_label": "Divisor",
    "mode_label": "Result",
    "mode_remainder": "With remainder",
    "mode_decimal": "Decimal quotient",
    "decimals_label": "Decimal places",
    "layout_label": "Layout",
    "layout_potence": "Divisor on the right, quotient below (France)",
    "layout_bracket": "Bracket: divisor on the left, quotient on top (UK, US)",
    "layout_inline": "Inline: 1234 : 7 = 176 R 2 (Germany)",
    "layout_hint": "Default by language: bracket in the UK (DfE), divisor on the right in France (Eduscol), inline in Germany (PIKAS). The arithmetic is identical.",
    "layout_unverified": "Default layout for this language: indicative value, not verified against an official curriculum.",
    "invalid": "Enter a positive dividend (up to 12 digits before the decimal point and 6 after) and a non-zero divisor (up to 9 digits, 4 decimals).",
    "quotient": "Quotient",
    "remainder": "Remainder",
    "rem_word": "r",
    "check": "Check: {{b}} × {{q}} + {{r}} = {{a}}",
    "truncated": "Quotient truncated to {{n}} decimal places (not rounded).",
    "period_text": "Repeating decimal (period length {{n}}):",
    "exact_text": "Carried on, the division ends exactly: {{value}}",
    "long_period": "No repeating block found in the first 10,000 decimal places.",
    "steps_title": "Steps explained",
    "diagram_label": "Long division of {{a}} by {{b}}, quotient {{q}}",
    "shift_note": "Decimal divisor: multiply both numbers by {{p}}, so the division becomes {{a}} ÷ {{b}}.",
    "step_small": "{{a}} is smaller than {{d}}: the quotient is 0 and the remainder {{a}}.",
    "step_comma_first": "The whole part is smaller than {{d}}: write 0 and the decimal point in the quotient, then bring down a 0.",
    "step_first": "Start with {{cur}}, the first number at least as large as {{d}}.",
    "step_main": "How many times does {{d}} go into {{cur}}? {{q}} times: {{q}} × {{d}} = {{prod}}, remainder {{cur}} − {{prod}} = {{rem}}.",
    "step_zero": "{{cur}} is smaller than {{d}}: write 0 in the quotient.",
    "step_bring": "Bring down the {{digit}}: that makes {{next}}.",
    "step_bring_comma": "The whole-number digits are used up: decimal point in the quotient, bring down the {{digit}}: {{next}}.",
    "step_end_rem": "No digits left to bring down: the remainder {{rem}} is smaller than {{d}}, so the division is finished.",
    "step_end_exact": "The remainder is 0: the division ends exactly.",
    "step_end_dec": "Stop at {{n}} decimal places, with a partial remainder of {{rem}}.",
    "limits": "Dividend up to 12 digits before the decimal point and 6 after, divisor up to 9 digits. A decimal divisor is made whole by multiplying both numbers by 10, 100 and so on. Decimal quotients are truncated, never rounded."
  },
  "microphone-test": {
    "heading": "Microphone test",
    "subtitle": "Level, waveform, playback recording and the mic’s real settings.",
    "start": "Turn on the mic",
    "starting": "Waiting for mic permission…",
    "stop": "Turn off the mic",
    "err_insecure": "The microphone is only available on a secure (https) page in a recent browser.",
    "err_denied": "Microphone access was denied. Allow it from the address bar (padlock or mic icon), then try again.",
    "err_notfound": "No microphone found. Plug one in or check your system settings.",
    "err_busy": "The microphone is in use by another app. Close it and try again.",
    "err_other": "Could not open the microphone. Reload the page or try another browser.",
    "denied_help": "Chrome and Edge: icon left of the address, then Microphone, Allow. Firefox: crossed-out mic icon in the address bar. Safari: Website settings, Microphone, Allow. Then reload the page.",
    "device_label": "Microphone",
    "device_default": "System default microphone",
    "device_n": "Microphone {{n}}",
    "device_hint": "Microphone names appear once access is allowed. Switching mic restarts the measurement.",
    "privacy": "Nothing is sent: sound and recording stay in your browser and disappear when you leave the page. The mic turns off at that point.",
    "level_title": "Input level",
    "rms_label": "RMS",
    "peak_label": "Peak",
    "clipped": "Clipping: the sound hits full scale. Move away from the mic or lower its gain in the system settings.",
    "silent_hint": "No sound picked up for 3 seconds: check the mic is not muted (key, switch or system setting) and that it is selected here.",
    "idle": "Turn on the mic to see its level.",
    "wave_aria": "Waveform of the captured sound",
    "level_note": "dBFS: decibels below full scale (0 = maximum; beyond it sound clips). The bar covers −60 to 0 dBFS.",
    "rec_title": "Record and play back",
    "rec_start": "Record",
    "rec_stop": "Stop ({{s}} s of {{max}})",
    "rec_unsupported": "Your browser cannot record (no MediaRecorder). Level and waveform still work.",
    "rec_player": "Recording playback",
    "rec_format": "Format: {{type}}",
    "file_name": "mic-test",
    "rec_download": "Download",
    "rec_hint": "Up to {{max}} seconds. The recording stays on your device; a new one replaces the previous one.",
    "settings_title": "Actual track settings",
    "set_rate": "Mic sample rate",
    "set_ctx_rate": "Browser processing rate",
    "set_channels": "Channels",
    "set_ec": "Echo cancellation",
    "set_ns": "Noise suppression",
    "set_agc": "Automatic gain",
    "on": "on",
    "off": "off",
    "unknown": "unknown",
    "settings_idle": "Settings appear once the mic is on.",
    "settings_note": "The tool asks for processing to be off to hear the mic as it is; some browsers, Safari among them, keep it on."
  },
  "random-wheel-spinner": {
    "heading": "Random wheel spinner",
    "subtitle": "One name per line, one click to draw",
    "wheel_title": "Wheel with {{n}} slices",
    "spin": "Spin the wheel",
    "spinning": "Spinning…",
    "winner_label": "Winner",
    "ready": "{{n}} slices on the wheel, a {{p}} chance each.",
    "names_label": "Names or options (one per line)",
    "names_hint": "Up to {{max}} lines. Empty lines are ignored; a name typed twice gets two slices.",
    "need_two": "Add at least 2 names to spin the wheel.",
    "too_many": "Only the first {{max}} lines are on the wheel.",
    "clear_names": "Clear the list",
    "example_names": "Sample list",
    "remove_winner": "Remove the winner from the list",
    "history_title": "Draw history",
    "history_clear": "Clear",
    "history_empty": "No draws yet.",
    "fairness_note": "The winner is drawn with crypto.getRandomValues before the wheel turns, with no modulo bias. The list stays in your browser.",
    "default_names": "Emma\nLiam\nOlivia\nNoah\nAva\nOliver\nSophia\nJames"
  },
  "sudoku-solver-generator": {
    "heading": "Sudoku: play, solve, generate",
    "subtitle": "Unique-solution grids, pencil marks and error checking",
    "tab_play": "Play",
    "tab_solve": "Solve a grid",
    "board_play": "Game grid",
    "board_solve": "Grid to solve",
    "cell_empty": "Row {{row}}, column {{col}}, empty",
    "cell_given": "Row {{row}}, column {{col}}, {{value}}, given digit",
    "cell_filled": "Row {{row}}, column {{col}}, {{value}}",
    "cell_error": "Row {{row}}, column {{col}}, {{value}}, error",
    "notes_on": "Notes on",
    "notes_off": "Notes",
    "show_errors": "Highlight errors",
    "keys_hint": "Arrow keys to move, 1 to 9 to write, Backspace or 0 to erase, N for notes.",
    "keys_hint_solve": "Arrow keys to move, 1 to 9 to write, Backspace or 0 to erase.",
    "erase": "Erase the cell",
    "won": "Well done, grid solved with no errors!",
    "filled_wrong": "The grid is full but contains errors (wrong cells: {{n}}). Turn on \"Highlight errors\" to see them.",
    "revealed": "Solution shown. Generate a new grid to play again.",
    "current_title": "Current grid",
    "rating": "Estimated level: {{level}} ({{technique}}), {{clues}} clues.",
    "reset": "Clear my digits",
    "reveal": "Show the solution",
    "new_title": "New grid",
    "level_easy": "Easy",
    "level_medium": "Medium",
    "level_hard": "Hard",
    "level_expert": "Expert",
    "tech_naked": "naked singles",
    "tech_hidden": "hidden singles",
    "tech_locked": "locked candidates",
    "tech_search": "beyond basic techniques",
    "generating": "Generating…",
    "new_game": "Generate a grid",
    "levels_note": "Levels estimated by the tool: easy = naked singles, medium = hidden singles, hard = locked candidates, expert = beyond. Every generated grid has a unique solution.",
    "solve_intro": "Enter the given digits of your grid, then run the solver.",
    "solve": "Solve",
    "clear": "Clear",
    "example": "Sample grid",
    "clues_count": "Clues entered: {{n}} (at least 17 for a unique solution)",
    "solve_unique": "Unique solution found.",
    "solve_multiple": "This grid has several solutions; one of them is shown.",
    "solve_none": "This grid has no solution.",
    "solve_conflict": "The same digit appears twice in a row, column or block (cells in red).",
    "solve_aborted": "Calculation stopped after 150,000 attempts: add clues and try again.",
    "play_this": "Play this grid",
    "solver_note": "The solver fills the cell with the fewest possible digits first and stops at 2 solutions, which is enough to tell whether the grid has none, one or several."
  },
  "guitar-tuner": {
    "heading": "Guitar tuner",
    "subtitle": "Play a string close to the mic: the needle shows the offset in cents.",
    "start": "Turn on the mic",
    "starting": "Waiting for mic permission…",
    "stop": "Turn off the mic",
    "err_insecure": "The microphone is only available on a secure (https) page in a recent browser.",
    "err_denied": "Microphone access was denied. Allow it from the address bar (padlock or mic icon), then try again.",
    "err_notfound": "No microphone found. Plug one in or check your system settings.",
    "err_busy": "The microphone is in use by another app. Close it and try again.",
    "err_other": "Could not open the microphone. Reload the page or try another browser.",
    "tuning_label": "Tuning",
    "tuning_standard": "Standard (E A D G B E)",
    "tuning_halfdown": "Half step down (E♭)",
    "tuning_dropd": "Drop D (D A D G B E)",
    "tuning_dadgad": "DADGAD (D A D G A D)",
    "tuning_openg": "Open G (D G D G B D)",
    "tuning_opend": "Open D (D A D F♯ A D)",
    "tuning_chromatic": "Chromatic (any note)",
    "a4_label": "Reference A4",
    "a4_hint": "440 Hz per ISO 16; some orchestras play at 442 Hz. Every target follows this setting.",
    "privacy": "Sound is analysed in your browser: nothing is recorded or sent. The mic turns off when you leave the page.",
    "cents_label": "cents",
    "gauge_aria": "Pitch offset in cents, from −50 to +50",
    "idle": "Turn on the mic to start.",
    "waiting": "Play a string…",
    "in_tune": "In tune",
    "flat": "Flat: tighten the string",
    "sharp": "Sharp: loosen the string",
    "reading": "Measured {{hz}} Hz, target {{target}} Hz",
    "strings_title": "Strings and reference tone",
    "chromatic_title": "Chromatic mode",
    "chromatic_hint": "The needle aims at the nearest semitone: handy for an unlisted tuning, a bass or a ukulele.",
    "string_n": "String {{n}}",
    "play_aria": "Play string {{n}}, {{note}} at {{hz}} Hz",
    "stop_sound": "Stop the sound",
    "strings_hint": "Tap a string to hear its note for 3 seconds (low volume). The string the tuner is aiming at is outlined.",
    "method_note": "Detection uses the McLeod Pitch Method (MPM), no AI. The needle is smoothed (median, then moving average) and turns green within ±{{cents}} cents.",
    "note_c": "C",
    "note_cs": "C♯",
    "note_d": "D",
    "note_ds": "D♯",
    "note_e": "E",
    "note_f": "F",
    "note_fs": "F♯",
    "note_g": "G",
    "note_gs": "G♯",
    "note_a": "A",
    "note_as": "A♯",
    "note_b": "B"
  },
  "vocal-range-test": {
    "heading": "Vocal range test",
    "subtitle": "Hold your lowest then your highest note: the tool measures the span.",
    "start": "Turn on the mic",
    "starting": "Waiting for mic permission…",
    "stop": "Turn off the mic",
    "err_insecure": "The microphone is only available on a secure (https) page in a recent browser.",
    "err_denied": "Microphone access was denied. Allow it from the address bar (padlock or mic icon), then try again.",
    "err_notfound": "No microphone found. Plug one in or check your system settings.",
    "err_busy": "The microphone is in use by another app. Close it and try again.",
    "err_other": "Could not open the microphone. Reload the page or try another browser.",
    "privacy": "Sound is analysed in your browser: nothing is recorded or sent. The mic turns off when you leave the page.",
    "steps_title": "How to do it",
    "step_low": "Sing the lowest note you can hold without straining, for at least a second, on an “ah”.",
    "step_high": "Go up note by note to the highest one, holding each for a moment.",
    "step_safe": "Stop if your voice gets scratchy or tired: the useful range is the one you hold with ease.",
    "current_label": "Note heard",
    "low_label": "Lowest held",
    "high_label": "Highest held",
    "range_label": "Range",
    "semitones": "{{n}} semitones",
    "octaves": "Octaves: {{octaves}}",
    "waiting": "Sing and hold a note…",
    "idle": "Turn on the mic to start.",
    "notation_note": "Scientific pitch notation: C4 = middle C, A4 = 440 Hz.",
    "reset": "Clear",
    "types_title": "Voice types (approximate guide)",
    "share": "{{pct}}% of your range",
    "types_note": "Ranges from The New Harvard Dictionary of Music (via Yale University Library). Types overlap and timbre matters: the match is a guide, not a classification.",
    "type_bass": "Bass",
    "type_baritone": "Baritone",
    "type_tenor": "Tenor",
    "type_alto": "Alto",
    "type_mezzo": "Mezzo-soprano",
    "type_soprano": "Soprano",
    "note_c": "C",
    "note_cs": "C♯",
    "note_d": "D",
    "note_ds": "D♯",
    "note_e": "E",
    "note_f": "F",
    "note_fs": "F♯",
    "note_g": "G",
    "note_gs": "G♯",
    "note_a": "A",
    "note_as": "A♯",
    "note_b": "B"
  },
  "hiragana-katakana-chart-quiz": {
    "heading": "Hiragana and katakana",
    "subtitle": "Charts, stroke order and reading quiz, with Hepburn romaji.",
    "script_label": "Script",
    "hiragana": "Hiragana",
    "katakana": "Katakana",
    "both": "Both",
    "show_romaji": "Show romaji",
    "section_basic": "Gojūon: 46 basic sounds",
    "section_dakuten": "Dakuten and handakuten: 25 kana with diacritics",
    "section_yoon": "Yōon: 33 combinations with ゃ, ゅ, ょ",
    "cell_label": "{{kana}} ({{romaji}})",
    "strokes_title": "Stroke order",
    "strokes_loading": "Loading stroke data…",
    "strokes_error": "Stroke data could not be loaded. Check your connection and try again.",
    "retry": "Try again",
    "svg_label": "Stroke order of {{kana}}",
    "stroke_count": "Number of strokes: {{n}}",
    "replay": "Replay strokes",
    "speak": "Listen",
    "no_voice": "No Japanese voice on this device, so listening is unavailable.",
    "reduced_note": "Reduced motion: strokes stay on screen, numbered in order.",
    "credits_label": "Stroke data:",
    "credits_link": "KanjiVG (kanjivg.tagaini.net), CC BY-SA 3.0",
    "hepburn_note": "Hepburn romaji from the Japanese passport table: ぢ and じ are written ji, づ and ず zu, を o. The quiz also accepts wo, di, du, si, tu, hu and nn.",
    "quiz_title": "Reading quiz",
    "score": "Score: {{ok}} of {{total}}",
    "streak": "Streak: {{n}}",
    "reset_score": "Reset score",
    "mode_label": "Quiz direction",
    "mode_k2r": "Kana → romaji (typed)",
    "mode_r2k": "Romaji → kana (multiple choice)",
    "rows_label": "Rows in the quiz",
    "rows_all": "All",
    "rows_basic": "Gojūon only",
    "empty_pool": "Select at least one row.",
    "prompt_k2r": "How is this kana read?",
    "prompt_r2k": "Which kana is read like this?",
    "answer_label": "Your answer in romaji",
    "answer_placeholder": "e.g. shi",
    "check": "Check",
    "next": "Next question",
    "right": "Correct: {{kana}} is read {{romaji}}.",
    "wrong": "Not quite: {{kana}} is read {{romaji}}."
  },
  "chord-progression-generator": {
    "heading": "Chord progression generator",
    "subtitle": "Key, schema, Roman numerals, the notes of every chord and playback at your tempo.",
    "tonic_label": "Tonic",
    "mode_label": "Mode",
    "major": "Major",
    "minor": "Minor",
    "key_major": "{{note}} major",
    "key_minor": "{{note}} minor",
    "transpose_label": "Transpose",
    "transpose_down": "One semitone down",
    "transpose_up": "One semitone up",
    "preset_label": "Schema",
    "custom": "Custom progression",
    "custom_hint": "Edited progression: add or remove chords freely.",
    "preset": {
      "axis": "Rotation of the singer/songwriter schema, common in 1990s singer-songwriter music.",
      "singer": "Singer/songwriter schema, common in 1990s singer-songwriter music.",
      "doowop": "Doo-wop schema, common in 1960s pop.",
      "hopscotch": "Hopscotch schema, common in pop since 2010.",
      "two_five_one": "ii–V–I with sevenths: the basic jazz progression in major.",
      "blues": "12-bar blues: three 4-bar phrases, all dominant seventh chords.",
      "singer_minor": "The singer/songwriter schema heard in the relative minor.",
      "lament": "Lament: the bass descends from tonic to dominant in minor, with a major V.",
      "two_five_one_minor": "iiø7–V7–i7: the jazz ii–V–i in minor."
    },
    "blues_label": "12-bar blues",
    "surprise": "Random schema",
    "sevenths": "Seventh chords",
    "progression_title": "Progression in {{key}}",
    "remove_last": "Remove last",
    "clear": "Clear all",
    "chord_play": "Play {{chord}}",
    "empty": "Add chords from the scale below or pick a schema.",
    "play": "Play",
    "stop": "Stop",
    "tempo": "Tempo",
    "volume": "Volume",
    "beats_label": "Beats per chord",
    "loop": "Loop",
    "duration": "Chords: {{n}}; {{chord}} s per chord; one pass: {{total}} s.",
    "diatonic_title": "Chords of the {{key}} scale",
    "diatonic_hint": "Tap a chord to hear it and add it to the end of the progression.",
    "add_chord": "Add {{chord}} to the progression",
    "max_note": "Maximum: {{n}} chords.",
    "minor_note": "In minor, chords follow the natural minor scale; the lament and the ii–V–i use a major V, as Open Music Theory notes.",
    "synth_note": "Sound synthesized in the browser, the same as the virtual piano's, not a sampled piano.",
    "source_note": "Schemas after Open Music Theory 2e (Gotham et al., CC BY-SA 4.0), described by style, without citing any work.",
    "note": {
      "c": "C",
      "c_sharp": "C♯",
      "c_flat": "C♭",
      "d": "D",
      "d_sharp": "D♯",
      "d_flat": "D♭",
      "e": "E",
      "e_sharp": "E♯",
      "e_flat": "E♭",
      "f": "F",
      "f_sharp": "F♯",
      "f_flat": "F♭",
      "f_double_sharp": "F♯♯",
      "g": "G",
      "g_sharp": "G♯",
      "g_flat": "G♭",
      "a": "A",
      "a_sharp": "A♯",
      "a_flat": "A♭",
      "b": "B",
      "b_sharp": "B♯",
      "b_flat": "B♭"
    }
  },
  "chess-clock": {
    "heading": "Chess clock",
    "subtitle": "Tap your clock or press Space to end your move.",
    "white": "White",
    "black": "Black",
    "half_aria": "{{player}} clock, {{time}}",
    "flag_fell": "Time is up",
    "flag_status": "Time is up for {{player}}.",
    "delay_left": "Delay: {{s}} s",
    "moves": "Moves: {{n}}",
    "start": "Start (White)",
    "pause": "Pause",
    "resume": "Resume",
    "reset": "Reset",
    "sound": "End-of-time sound",
    "fullscreen": "Full screen",
    "exit_fullscreen": "Exit full screen",
    "clock_region": "Clock",
    "keys_hint": "Space: end the move (or start, resume). Before the start, tapping your clock starts your opponent's. The screen stays on during the game where the browser allows it.",
    "presets_title": "Time controls",
    "cat_bullet": "Bullet",
    "cat_blitz": "Blitz",
    "cat_rapid": "Rapid",
    "cat_classical": "Classical",
    "presets_hint": "Minutes + seconds of Fischer increment. Grouped by Lichess estimated duration (time + 40 × increment).",
    "custom_title": "Custom time control",
    "minutes_label": "Minutes",
    "seconds_label": "Seconds",
    "increment_label": "Per move",
    "mode_label": "Type of added time",
    "mode_fischer": "Fischer increment (cumulative)",
    "mode_delay": "Bronstein delay (non-cumulative)",
    "mode_fischer_help": "The per-move time is added before every move, from the first one (FIDE glossary): it builds up if you play fast.",
    "mode_delay_help": "Main time only drops after the delay (FIDE, Art. 6.3.2); a move made within the delay leaves it unchanged and adds nothing.",
    "mode_none_help": "No per-move time: each player only has the base time (sudden death).",
    "fide_category": "FIDE category for this time control: {{category}}",
    "fide_blitz": "blitz (time + 60 × increment ≤ 10 min)",
    "fide_rapid": "rapid (over 10 and under 60 min)",
    "fide_standard": "standard (60 min or more)",
    "locked_hint": "Game in progress: reset to change the time control.",
    "background_note": "Time is recomputed from the moment the move started: it stays accurate if the tab goes to the background. During the game, the tool asks the browser to keep the screen on."
  },
  "padel-americano-generator": {
    "heading": "Padel americano tournament",
    "subtitle": "Players, courts, points per match: the round schedule, score entry and standings.",
    "players_title": "Players ({{n}})",
    "player_default": "Player {{n}}",
    "player_name": "Name of player {{n}}",
    "remove_player": "Remove {{name}}",
    "add_player": "Add a player",
    "players_hint": "From 4 to 24 players. Changing the number of players, courts or rounds needs a new schedule.",
    "courts_label": "Courts",
    "rounds_label": "Rounds",
    "rounds_hint": "For everyone to be able to partner everyone else: {{n}} rounds.",
    "points_label": "Points per match",
    "points_option": "{{n}} points",
    "points_hint": "Total points in a match, set by the organizer (for example 13-11 in a 24-point match).",
    "courts_unused": "Courts actually used with {{players}} players: {{used}} (4 players per court).",
    "sitout_each_round": "Players sitting out each round: {{k}}.",
    "rounds_short": "With fewer than {{needed}} rounds, not everyone can partner everyone else.",
    "generate": "Generate the schedule",
    "regenerate": "New draw",
    "confirm_regenerate": "A new schedule clears the scores entered. Continue?",
    "stale_notice": "Settings changed: the schedule shown uses the old settings (players: {{n}}, courts: {{courts}}, rounds: {{rounds}}). Generate a new one to apply them.",
    "balance_title": "Schedule balance",
    "stat_partner_ok": "No two players have partnered twice.",
    "stat_partner_rep": "Pairs who partnered more than once: {{pairs}} (up to {{max}} times).",
    "stat_never": "Pairs of players who never partnered: {{k}}.",
    "stat_opp": "Any two players face each other between {{min}} and {{max}} times.",
    "stat_games": "Matches per player: {{min}} to {{max}}; rests: {{rmin}} to {{rmax}}.",
    "method_note": "The schedule is searched by trial: it limits repeated partners, then spreads opponents, with no guarantee of an optimum. A perfect opponent balance is not possible for every number of players.",
    "standings_title": "Standings",
    "print": "Print",
    "col_player": "Player",
    "col_points": "Points",
    "col_played": "Matches",
    "col_wdl": "W-D-L",
    "col_diff": "Diff.",
    "col_avg": "Avg.",
    "rank_by_points": "Ranked by total points, then point difference, then wins.",
    "rank_by_avg": "Players have different numbers of scored matches: ranked by points per match, then difference, then wins.",
    "round_title": "Round {{n}}",
    "court": "Court {{n}}",
    "score_aria": "Score for {{team}}, court {{court}}, round {{round}}",
    "score_total_warn": "Total {{total}} instead of {{points}}: check the score.",
    "resting": "Sitting out: {{names}}",
    "format_note": "The americano is a club format: the International Padel Federation does not set its rules. The \"mexicano\" is not offered, for lack of a reference definition.",
    "storage_note": "Players, schedule and scores are saved in this browser, on this device."
  },
  "flashcards-spaced-repetition": {
    "heading": "Flashcards with spaced repetition",
    "subtitle": "Build decks and review today's cards: the SM-2 algorithm sets the next date.",
    "deck_label": "Deck",
    "delete_deck": "Delete the deck {{name}}",
    "confirm_delete_deck": "Delete the deck “{{name}}” and its cards ({{n}})?",
    "stat_cards": "Cards",
    "stat_due": "Due today",
    "stat_new": "New",
    "remaining": "Cards left in this session: {{n}}",
    "front": "Front",
    "back": "Back",
    "show_answer": "Show answer",
    "grade_prompt": "How did you answer?",
    "grade0": "Total blackout",
    "grade1": "Wrong, but recognised the answer",
    "grade2": "Wrong, though it seemed easy",
    "grade3": "Correct, with serious difficulty",
    "grade4": "Correct, after hesitating",
    "grade5": "Perfect",
    "next_in": "next in {{n}} d",
    "practice_only": "re-drill: schedule unchanged",
    "keys_hint": "Keyboard: Space or Enter shows the answer, 0 to 5 grades it.",
    "session_done": "Session finished. Cards reviewed: {{n}}.",
    "start": "Start review ({{n}})",
    "none_due_next": "Nothing due today. Next card on {{date}}.",
    "none_due": "This deck is empty: add a card.",
    "no_deck": "No deck yet: create one to start.",
    "list_title": "Cards in this deck ({{n}})",
    "card_meta": "due {{date}} · interval {{n}} d · EF {{ef}}",
    "delete_card": "Delete the card {{name}}",
    "add_title": "New card",
    "add_card": "Add card",
    "new_deck": "New deck",
    "new_deck_placeholder": "e.g. Spanish vocabulary",
    "create": "Create",
    "csv_title": "CSV import and export",
    "export": "Export (CSV)",
    "import": "Import (CSV)",
    "import_ok": "Cards imported: {{n}}",
    "import_error": "No cards read: the file needs at least two columns, front then back.",
    "csv_hint": "Columns: front, back, then optionally EF, repetitions, interval and due date (YYYY-MM-DD). Separator: comma, semicolon or tab.",
    "method_note": "SM-2: 1 day, then 6, then interval × EF (2.5 to start, 1.3 at least); a grade below 3 sends the card back to 1 day. Cards stay in this browser.",
    "sample": {
      "deck": "Example: European capitals",
      "f1": "Capital of Portugal?",
      "f2": "Capital of Austria?",
      "f3": "Capital of Poland?",
      "f4": "Capital of Greece?",
      "f5": "Capital of Ireland?",
      "f6": "Capital of Hungary?",
      "b1": "Lisbon",
      "b2": "Vienna",
      "b3": "Warsaw",
      "b4": "Athens",
      "b5": "Dublin",
      "b6": "Budapest"
    }
  },
  "reaction-time-test": {
    "heading": "Reaction time test",
    "subtitle": "Click as soon as the area turns green, {{n}} trials",
    "zone_idle": "Click to start",
    "zone_idle_sub": "Wait for green, then click as fast as you can.",
    "zone_wait": "Wait for green…",
    "zone_wait_sub": "A click now would be a false start.",
    "zone_go": "Click!",
    "zone_early": "Too soon!",
    "zone_early_sub": "This trial does not count. Click to try it again.",
    "zone_shown_sub": "Trial {{k}} of {{total}}. Click to continue.",
    "zone_done": "Mean: {{value}} ms",
    "zone_done_sub": "Click to run another series.",
    "controls_hint": "Mouse, touch, or the Space or Enter key when the area has focus.",
    "results_title": "Results ({{k}} of {{total}})",
    "restart": "Start over",
    "trials_label": "Time of each trial, in milliseconds",
    "mean_label": "Mean",
    "median_label": "Median",
    "best_label": "Best trial",
    "worst_label": "Slowest trial",
    "no_result": "No trials yet: click the blue area.",
    "ref_title": "Published benchmark",
    "ref_text": "Woods et al. (2015), 1,469 adults aged 18 to 65: {{mean}} ms on average, {{corrected}} ms after correcting for display and mouse delays ({{delay}} ms on their hardware).",
    "ref_compare": "Your median: {{median}} ms, which is {{diff}} ms compared with the study mean.",
    "latency_note": "Indicative result: it includes the latency of your display (one frame lasts {{frame}} ms at 60 Hz), of the mouse or touchscreen and of the browser. Compare yourself on the same device. This test does not replace a doctor's advice."
  },
  "sound-level-meter": {
    "heading": "Decibel meter",
    "subtitle": "A-weighted sound level, maximum and average (Leq) measured by the mic.",
    "not_a_meter": "A phone or computer microphone is not a sound level meter: it is not calibrated and clips at high levels. Values are relative (dBFS) until you enter an offset, and remain an estimate afterwards.",
    "start": "Turn on the mic",
    "starting": "Waiting for mic permission…",
    "stop": "Turn off the mic",
    "err_insecure": "The microphone is only available on a secure (https) page in a recent browser.",
    "err_denied": "Microphone access was denied. Allow it from the address bar (padlock or mic icon), then try again.",
    "err_notfound": "No microphone found. Plug one in or check your system settings.",
    "err_busy": "The microphone is in use by another app. Close it and try again.",
    "err_other": "Could not open the microphone. Reload the page or try another browser.",
    "privacy": "Sound is analysed in your browser: nothing is recorded or sent. The mic turns off when you leave the page.",
    "processing_warn": "Your browser did not confirm that automatic gain or noise suppression is off (as on Safari): the level may be smoothed or compressed.",
    "response_label": "Time weighting",
    "fast": "Fast (125 ms)",
    "slow": "Slow (1 s)",
    "offset_label": "Calibration offset",
    "offset_hint": "Measure the same source as a calibrated meter and enter the difference (its reading minus the one shown here at 0). At 0 the tool shows dBFS (A): 0 = mic full scale.",
    "level_fast": "Level (Fast, 125 ms)",
    "level_slow": "Level (Slow, 1 s)",
    "unit_dbfs": "dBFS (A)",
    "unit_dba": "est. dB(A)",
    "max_label": "Maximum",
    "leq_label": "Leq (average)",
    "duration_label": "Duration",
    "unit_note": "Values in {{unit}}, A-weighted. A full-scale sine reads −3.0 dBFS.",
    "reset": "Reset",
    "niosh_uncal": "Enter a calibration offset to compare the average (Leq) with exposure limits.",
    "niosh_time": "Estimated Leq {{leq}} dB(A): at this average level, NIOSH recommends no more than {{time}} of exposure a day.",
    "niosh_below": "Estimated Leq {{leq}} dB(A): below the NIOSH recommended limit of 85 dB(A) averaged over 8 hours.",
    "hours": "{{h}} h",
    "minutes": "{{m}} min",
    "history_title": "History (60 s)",
    "history_aria": "Sound level over the last 60 seconds, in {{unit}}",
    "history_range": "From {{lo}} to {{hi}} {{unit}}",
    "history_span": "last 60 seconds",
    "ref_title": "Everyday sound levels",
    "ref_conversation": "Normal conversation",
    "ref_cinema": "Movie theater",
    "ref_moto": "Motorcycles and dirt bikes",
    "ref_headphones": "Headphones at full volume, concerts, sports events",
    "ref_sirens": "Sirens",
    "ref_fireworks": "Fireworks show",
    "ref_source": "Typical levels in real dB(A), from the NIDCD (NIH, page updated 16/04/2025).",
    "thr_title": "Exposure limits",
    "thr_nidcd70": "Unlikely to harm hearing, even over long periods (NIDCD)",
    "thr_who": "Safe listening, 40 hours a week, adult / child (WHO-ITU H.870)",
    "thr_inrs": "Work in France, 8-hour average: action, upper action, limit value (Labour Code, INRS)",
    "thr_niosh": "Recommended 8-hour limit; each +3 dB halves the time (NIOSH)",
    "thr_nidcd85": "Long or repeated exposure: risk of hearing loss (NIDCD)",
    "thr_note": "These limits apply to a daily or weekly average (Leq), not to a peak. They assume real dB: without calibration the tool cannot check them."
  },
  "online-metronome": {
    "heading": "Metronome",
    "subtitle": "Steady tempo from 20 to 300 BPM, simple and compound time, subdivisions and tap tempo.",
    "bpm_label": "Tempo",
    "bpm_range": "Tempo limited to {{min}}–{{max}} BPM: using {{value}} BPM.",
    "tap": "Tap tempo",
    "meter_label": "Time signature",
    "bpm_hint": "BPM counts the bottom note: the quarter in x/4, the eighth in x/8. In 6/8, 9/8 and 12/8 the eighths are grouped in threes.",
    "sub_label": "Subdivisions",
    "sub": {
      "1": "Beats only",
      "2": "2 per beat",
      "3": "3 per beat (triplets)",
      "4": "4 per beat"
    },
    "accent": "Accent the first beat",
    "volume_label": "Volume",
    "summary": "{{meter}} · one beat every {{ms}} ms",
    "start": "Start",
    "stop": "Stop",
    "precision_note": "Each click is scheduled on the audio clock 100 ms ahead, so the tempo stays steady even if the page slows down. Bluetooth headphones may add a small constant delay.",
    "ios_note": "On iPhone or iPad, if you hear nothing, turn silent mode off."
  },
  "aquarium-volume-calculator": {
    "heading": "Net volume and weight of the tank",
    "subtitle": "Glass, substrate and decor removed, in liters and US gallons",
    "shape_label": "Shape",
    "shape_rect": "Rectangular",
    "shape_cyl": "Cylinder",
    "shape_corner": "Corner",
    "shape_bow": "Bow front",
    "unit_label": "Units",
    "unit_metric": "cm and mm",
    "unit_imperial": "Inches",
    "unit_in": "in",
    "unit_kgl": "kg/L",
    "dims_title": "Outside dimensions",
    "length_label": "Length",
    "width_label": "Width (depth)",
    "depth_side_label": "Depth at the sides",
    "bow_label": "Bow depth",
    "diameter_label": "Diameter",
    "side_label": "Side against the wall",
    "height_label": "Height",
    "glass_label": "Glass thickness",
    "corner_hint": "Quarter-circle tank: both straight sides against the walls, curved front.",
    "bow_hint": "Bow depth: how far the front sticks out at the center past the corners (at most half the length).",
    "gap_label": "Gap below rim",
    "substrate_label": "Substrate depth",
    "decor_label": "Decor volume",
    "svg_title": "Top view of the tank: outer and inner outline",
    "svg_caption": "Top view to scale: solid line outside, dashed line inside the glass.",
    "notice_glass": "The glass thickness exceeds the dimensions: check the units.",
    "notice_bow": "Bow depth capped at half the length (beyond that the front exceeds a half circle).",
    "result_title": "Volumes",
    "net_label": "Net water in the tank",
    "gross_label": "Gross volume (outside)",
    "inner_label": "Inside volume",
    "sand_volume": "Substrate volume",
    "gal_value": "{{value}} US gal",
    "weight_title": "Filled weight",
    "weight_value": "{{kg}} kg · {{lb}} lb",
    "water_weight": "Water",
    "glass_weight": "Glass",
    "glass_volume": "{{value}} L of glass at 2.5 kg/L",
    "sand_weight": "Substrate",
    "total_weight": "Total",
    "total_note": "Without stand and decor",
    "sand_density_label": "Substrate density",
    "indicative": "Substrate density: indicative value, not verified. Glass (2.5 kg/L) follows the AGC sheet under EN 572-1.",
    "equipment_title": "Heater and filter",
    "heater_label": "Heating per liter",
    "turnover_label": "Turnover (volumes per hour)",
    "heater_result": "Heater power",
    "filter_result": "Filter flow",
    "gph_value": "{{value}} US gal/h",
    "equipment_note": "Heating per liter and turnover rules: indicative values, not verified against an official source. Follow the maker's manual and your room temperature.",
    "disclaimer": "Geometric calculation: substrate counted as solid, braces and lids ignored. Check the load your stand and floor can carry."
  },
  "knitting-row-counter": {
    "heading": "Row and stitch counter",
    "subtitle": "Knitting or crochet: several counters, pattern repeats, undo and screen kept on.",
    "kind_rows": "Rows",
    "kind_repeat": "Pattern repeat",
    "kind_stitches": "Stitches",
    "kind_custom": "Counter",
    "default_project": "My project",
    "confirm_delete": "Delete the project “{{name}}” and its counters?",
    "repeat_progress": "{{value}} / {{every}} rows of the repeat · completed repeats: {{cycles}}",
    "project_select": "Project",
    "project_name": "Project name",
    "new_project": "New project",
    "delete_project": "Delete project",
    "plus_one": "+1",
    "plus_aria": "Add 1 to {{name}}",
    "minus_aria": "Subtract 1 from {{name}}",
    "undo": "Undo",
    "reset": "Reset to 0",
    "space_hint": "Space bar: +1 row (when no field is selected).",
    "counter_name": "Counter name",
    "remove_counter": "Delete counter {{name}}",
    "every_label": "Reset every N rows (0 = never)",
    "follow_label": "Moves with {{name}}",
    "add_counter": "Add a counter",
    "screen_title": "Screen",
    "wake_label": "Keep the screen on",
    "wake_unsupported": "This browser cannot keep the screen on: adjust sleep in your device settings.",
    "wake_note": "The browser releases this lock when you switch apps; it is requested again when you come back. It uses a little more battery.",
    "save_note": "Your projects and counters are kept in this browser on this device. The undo history is cleared on reload."
  },
  "aim-trainer": {
    "heading": "Aim trainer",
    "subtitle": "Static targets or tracking, with a mouse or by touch",
    "mode_label": "Mode",
    "mode_static": "Static targets",
    "mode_tracking": "Tracking",
    "duration_label": "Duration",
    "size_label": "Target size",
    "size_small": "Small",
    "size_medium": "Medium",
    "size_large": "Large",
    "lock_option": "Lock the pointer (Pointer Lock): hidden cursor, relative mouse movement as in a shooter. Esc ends the game.",
    "lock_unavailable": "Pointer Lock is not available on this device (phone, tablet or touchscreen): the game is played by touch.",
    "rules_static": "Hit each target as fast as you can; a click beside it counts as a miss.",
    "rules_tracking": "Keep the pointer (or your finger) on the moving target for as long as you can.",
    "canvas_label": "Shooting arena with targets",
    "hud_time": "Time",
    "hud_hits": "Hits",
    "hud_on_target": "On target",
    "start": "Start",
    "play_again": "Play again",
    "exit_hint": "Esc stops the game at any time. The game needs a mouse, touchpad or touchscreen.",
    "results_title": "Game results",
    "res_hits": "Score (targets hit)",
    "res_accuracy": "Accuracy",
    "res_avg_time": "Average time per target",
    "res_per_second": "Targets per second",
    "res_on_target": "Time on target",
    "res_on_target_time": "Total time on target",
    "no_result": "Start a game: score, accuracy and time per target will appear here.",
    "note": "Scores depend on the screen, mouse sensitivity and display latency: compare yourself on the same device with the same settings."
  },
  "chess-openings-explorer": {
    "heading": "Chess opening explorer",
    "subtitle": "Play moves or search an opening: name, ECO code and next moves from the lichess database.",
    "board_label": "Chessboard: choose a piece, then its destination square",
    "square_piece": "{{square}}, {{piece}}",
    "square_empty": "{{square}}, empty",
    "square_target_piece": "{{square}}, {{piece}}, capture available",
    "square_target_empty": "{{square}}, legal move",
    "piece": {
      "wp": "white pawn",
      "wn": "white knight",
      "wb": "white bishop",
      "wr": "white rook",
      "wq": "white queen",
      "wk": "white king",
      "bp": "black pawn",
      "bn": "black knight",
      "bb": "black bishop",
      "br": "black rook",
      "bq": "black queen",
      "bk": "black king"
    },
    "back": "Take back",
    "reset": "Reset",
    "flip": "Flip board",
    "turn_white": "White to move",
    "turn_black": "Black to move",
    "moves_title": "Moves played",
    "copy_pgn": "Copy PGN",
    "no_moves": "No moves yet: play on the board or pick a next move.",
    "load_error": "The opening database could not be loaded. Check your connection and try again.",
    "retry": "Try again",
    "loading": "Loading the opening database…",
    "opening_title": "Opening of this position",
    "start_position": "Starting position",
    "out_of_book": "This position is not in the database: name of the last listed position, after {{line}}.",
    "transposition": "Transposition: same position as the reference line {{line}}.",
    "no_named": "No named position along this path.",
    "next_title": "Next moves in the database",
    "move_header": "Move",
    "name_header": "Resulting position",
    "lines_header": "Lines",
    "unnamed": "no name of its own",
    "no_next": "No listed move from this position.",
    "search_label": "Search an opening",
    "search_placeholder": "Name (Sicilian) or ECO code (B20)",
    "search_count": "Showing {{shown}} of {{total}} results",
    "search_none": "No opening found.",
    "names_note": "Database of {{n}} named lines (ECO codes A00 to E99). Names are the database's own, in English.",
    "no_stats": "No game statistics or win rates: only the tree of named openings, loaded once by your browser.",
    "credits": "Openings: lichess-org/chess-openings (CC0) · Pieces: Colin M. L. Burnett (BSD) · Move rules: chess.js (BSD-2)"
  },
  "companion-planting-chart": {
    "heading": "Good and bad companions",
    "subtitle": "20 vegetables, with the source of every relationship",
    "warning": "Most pairings come from garden tradition and have not been demonstrated by trials. Each relationship shows whether it rests on a source or on tradition alone.",
    "crop_label": "Vegetable",
    "filter_all": "All",
    "filter_good": "Good",
    "filter_bad": "Bad",
    "studies_only": "Only relationships backed by a source",
    "good_title": "Good with: {{name}}",
    "bad_title": "Bad with: {{name}}",
    "none": "No relationship with this filter.",
    "trad_badge": "Garden tradition, not demonstrated",
    "study_badge": "Backed by a source",
    "ev_uvah": "Study: in mixed cropping, onions reduced carrot fly attacks, mostly while the onions were young, before bulbing (Uvah and Coaker, 1984).",
    "ev_purdue": "Established fact: Phytophthora infestans causes late blight on both tomato and potato (Purdue Extension). The effect of distance in a garden is not measured.",
    "with_q": "{{name}} ({{q}})",
    "q_bush": "bush",
    "q_pole": "pole",
    "beans_note": "The source also says beans go with \"most vegetables and herbs\": this general advice is not repeated cell by cell.",
    "grid_title": "Grid of the 20 vegetables",
    "grid_hint": "Click a vegetable in the first column to show its details. Companion herbs and flowers appear only in the details.",
    "cell_good": "{{a}} and {{b}}: good",
    "cell_bad": "{{a}} and {{b}}: bad",
    "legend_good": "Good",
    "legend_bad": "Bad",
    "legend_study": "Outline: backed by a source",
    "source_note": "Relationships: Companion Planting Chart of the UC Master Gardener Program (UC ANR, after ATTRA). Backed pairs: Uvah and Coaker (1984); Purdue Extension BP-80-W.",
    "disclaimer": "Gardening guidance: climate, spacing, rotation and soil health weigh more than neighbors.",
    "p_asparagus": "Asparagus",
    "p_bean": "Bean",
    "p_beet": "Beet",
    "p_cabbage": "Cabbage family (cabbage, broccoli, cauliflower)",
    "p_carrot": "Carrot",
    "p_celery": "Celery",
    "p_corn": "Corn",
    "p_cucumber": "Cucumber",
    "p_eggplant": "Eggplant",
    "p_lettuce": "Lettuce",
    "p_onion": "Onion and garlic",
    "p_parsley": "Parsley",
    "p_pea": "Pea",
    "p_potato": "Potato",
    "p_pumpkin": "Pumpkin",
    "p_radish": "Radish",
    "p_spinach": "Spinach",
    "p_squash": "Squash",
    "p_tomato": "Tomato",
    "p_turnip": "Turnip",
    "p_basil": "Basil",
    "p_chamomile": "Chamomile",
    "p_chard": "Chard",
    "p_dill": "Dill",
    "p_fennel": "Fennel",
    "p_fava": "Fava bean",
    "p_gladiolus": "Gladiolus",
    "p_herbs": "Aromatic herbs",
    "p_horseradish": "Horseradish",
    "p_hyssop": "Hyssop",
    "p_kohlrabi": "Kohlrabi",
    "p_marigold": "Marigold",
    "p_nasturtium": "Nasturtium",
    "p_rosemary": "Rosemary",
    "p_sage": "Sage",
    "p_savory": "Summer savory",
    "p_strawberry": "Strawberry",
    "p_sunflower": "Sunflower"
  },
  "compost-carbon-nitrogen-calculator": {
    "heading": "C/N ratio and moisture of the mix",
    "subtitle": "Weighted by dry matter (Cornell formula)",
    "materials_title": "Pile materials",
    "material_label": "Material",
    "mass_label": "Wet mass",
    "n_label": "Nitrogen (N, % dry)",
    "c_label": "Carbon (C, % dry)",
    "m_label": "Moisture",
    "remove_row": "Remove {{name}}",
    "add_row": "Add a material",
    "values_hint": "N, C and moisture come from the table (lab averages); edit them if you have an analysis of your materials.",
    "result_title": "Mix result",
    "ratio_label": "Carbon/nitrogen ratio",
    "bar_title": "C/N of {{value}} on a 0 to 60 scale, preferred range 25 to 30",
    "v_low": "Below 20: too much nitrogen, risk of ammonia smell. Add browns (leaves, straw, cardboard).",
    "v_ok_low": "Between 20 and 25: reasonable, slightly nitrogen-rich.",
    "v_pref": "Between 25 and 30: preferred range.",
    "v_ok_high": "Between 30 and 40: reasonable, slower breakdown.",
    "v_high": "Above 40: too much carbon, the pile barely heats. Add greens (grass, peelings, manure).",
    "v_none": "Add a material containing nitrogen to get a ratio.",
    "moisture_label": "Moisture",
    "total_label": "Total mass",
    "dry_label": "Dry matter",
    "m_dry": "Moisture below 40%: too dry, water while turning.",
    "m_ok": "Reasonable moisture (40 to 65%).",
    "m_pref": "Moisture in the preferred range (50 to 55%).",
    "m_wet": "Moisture above 65%: too wet, add dry materials.",
    "bar_caption": "Ranges from LSU AgCenter after the On-Farm Composting Handbook (NRAES-54): C/N 20 to 40 reasonable, 25 to 30 preferred.",
    "balance_title": "Reach a target C/N",
    "balance_row_label": "Material to adjust",
    "target_label": "Target C/N",
    "balance_result": "For a C/N of {{target}}: {{mass}} of {{name}} (currently {{current}}), other materials unchanged.",
    "balance_impossible": "This material cannot bring the mix to {{target}} with the others: pick a more carbon-rich or nitrogen-rich one depending on the gap.",
    "table_title": "Materials table (N, C, moisture)",
    "col_material": "Material",
    "col_n": "N % dry",
    "col_c": "C % dry",
    "col_cn": "C/N",
    "col_m": "Moisture %",
    "col_src": "Origin",
    "src_note": "The Composting Handbook, Appendix B (Compost Research & Education Foundation, revised 20/12/2021). OFCH: On-Farm Composting Handbook (1992); WSU: Washington State University; COTC: Composting Operators Training Course.",
    "disclaimer": "Estimate from averages: slow-to-degrade carbon (wood, cardboard) and turning the pile matter as much as the C/N.",
    "m_veg": "Vegetable scraps",
    "m_fruit": "Fruit waste",
    "m_food": "Food scraps",
    "m_coffee": "Coffee grounds",
    "m_grass": "Grass clippings",
    "m_leaves": "Fallen leaves",
    "m_straw": "Straw",
    "m_hay": "Hay",
    "m_shrub": "Shrub trimmings",
    "m_hardwood": "Hardwood, chipped",
    "m_sawdust": "Sawdust and shavings",
    "m_cardboard": "Corrugated cardboard",
    "m_newsprint": "Newsprint",
    "m_horse": "Horse manure",
    "m_cattle": "Cattle manure",
    "m_poultry": "Poultry manure with litter",
    "m_hens": "Laying hen manure",
    "m_sheep": "Sheep manure",
    "m_water": "Water"
  },
  "dead-pixel-test": {
    "heading": "Dead pixel test",
    "subtitle": "12 full-screen patterns to inspect your panel",
    "start": "Start the full-screen test",
    "controls": "Next pattern: right arrow, Space, click or swipe left. Previous pattern: left arrow or swipe right. Exit: Esc or the ✕ button. H hides or shows the hints.",
    "no_fullscreen": "This browser does not allow full screen: the pattern will cover the window. Exit with the ✕ button (tap the screen to show it) or Esc.",
    "patterns_title": "Start from a pattern",
    "pattern_black": "Black",
    "pattern_white": "White",
    "pattern_red": "Red",
    "pattern_green": "Green",
    "pattern_blue": "Blue",
    "pattern_cyan": "Cyan",
    "pattern_magenta": "Magenta",
    "pattern_yellow": "Yellow",
    "pattern_gray": "50% gray",
    "pattern_gradient_gray": "Black-to-white gradient",
    "pattern_gradient_rgb": "Color gradient",
    "pattern_grid": "Grid",
    "look_title": "What to look for",
    "look_dead": "Dead pixel: a black dot on white and on the colors.",
    "look_stuck": "Stuck pixel: a red, green or blue dot that does not change from one pattern to the next.",
    "look_hot": "Hot pixel: a bright dot on black.",
    "look_bleed": "Backlight bleed: bright halos in the corners or along the edges, on black.",
    "look_banding": "Banding: visible steps in the gradients instead of a smooth transition.",
    "tips": "Clean the screen before testing: dust looks like a dead pixel but moves when you wipe it. Patterns change at most 3 times per second and the tool never makes the screen flash.",
    "overlay_label": "Full-screen test pattern",
    "hud_hint": "← → or swipe to change, Esc or ✕ to exit",
    "exit": "Exit the test"
  },
  "drum-machine": {
    "heading": "16-step drum machine",
    "subtitle": "8 synthesized drum sounds, tempo, swing, per-track volume and a share link.",
    "start": "Play",
    "stop": "Stop",
    "presets_label": "Starter patterns",
    "preset": {
      "rock": "Rock",
      "house": "House",
      "hiphop": "Hip-hop",
      "reggaeton": "Reggaeton"
    },
    "clear": "Clear all",
    "grid_hint": "16 steps = one 4/4 bar of sixteenth notes. Tap a cell to add or remove a hit, and a track name to hear it.",
    "track": {
      "kick": "Kick",
      "snare": "Snare",
      "clap": "Clap",
      "hat_closed": "Closed hi-hat",
      "hat_open": "Open hi-hat",
      "tom_low": "Low tom",
      "tom_high": "High tom",
      "rim": "Rimshot"
    },
    "cell": "{{track}}, step {{step}}",
    "preview": "Listen: {{track}}",
    "tempo_label": "Tempo",
    "tempo_range": "Tempo limited to {{min}}–{{max}} BPM: using {{value}} BPM.",
    "swing_label": "Swing",
    "swing_hint": "50% = straight, 66.7% = triplet shuffle. Swing lengthens the 1st sixteenth of each pair and shortens the 2nd.",
    "master_label": "Master volume",
    "mixer_label": "Volume per track",
    "share_label": "Pattern link",
    "share_copy": "Copy link",
    "share_hint": "Pattern, tempo and swing live in the part after #: nothing is stored on a server.",
    "sound_note": "Sounds are computed live, with no samples. Hits are scheduled on the audio clock 100 ms ahead. On iPhone, turn silent mode off if you hear nothing."
  },
  "egg-incubation-calendar": {
    "heading": "Incubation calendar",
    "subtitle": "Candling, lockdown and hatch, by species",
    "species_label": "Species",
    "s_chicken": "Chicken",
    "s_turkey": "Turkey",
    "s_duck": "Duck",
    "s_muscovy": "Muscovy duck",
    "s_goose": "Goose",
    "s_guinea": "Guinea fowl",
    "s_quail": "Coturnix quail",
    "set_label": "Setting date (day 0)",
    "c1_label": "1st candling (day)",
    "c2_label": "2nd candling (day)",
    "candle_hint_chicken": "Chicken: first test after 4 to 7 days, second after 14 to 16 days if an embryo is doubtful (MSU Extension).",
    "candle_hint_other": "Candling days set in the same proportion as for chicken: indicative value, not verified for this species.",
    "params_title": "Incubator settings",
    "f_c": "{{f}} °F ({{c}} °C)",
    "temp_value": "Forced-air temperature: {{value}}",
    "still_air": "Still-air incubator: 2 to 3 °F higher, measured at egg height (102 °F for chicken).",
    "wet_set": "Wet bulb {{value}} until day {{day}}",
    "wet_hatch": "Wet bulb {{value}} for the last 3 days",
    "rh_chicken": "That is 58 to 60% relative humidity, then 65% or more at hatch.",
    "turning": "Turning: at least 4 to 6 times a day until day {{day}}, then not at all.",
    "source_note": "Periods, temperatures and humidity: Mississippi State University Extension, forced-air incubator.",
    "result_title": "Calendar: {{species}}",
    "invalid_date": "Enter a valid setting date.",
    "hatch_label": "Expected hatch",
    "range": "{{from}} to {{to}}",
    "days_one": "{{n}} days of incubation",
    "days_range": "{{min}} to {{max}} days of incubation",
    "today": "Today: day {{n}} of {{total}}",
    "timeline_title": "Timeline of steps from day 0 to hatch (day {{n}})",
    "col_day": "Day",
    "col_date": "Date",
    "col_step": "Step",
    "step_set": "Set the eggs, turn 4 to 6 times a day",
    "step_candle1": "First candling: remove clear eggs",
    "step_candle2": "Second candling: check doubtful embryos",
    "step_stop": "Last turning, then raise humidity to {{wet}} wet bulb",
    "step_vent": "Open the vents further",
    "step_hatch": "Expected hatch",
    "ics_set": "{{species}} incubation: eggs set",
    "ics_candle1": "{{species}} incubation: first candling",
    "ics_candle2": "{{species}} incubation: second candling",
    "ics_stop": "{{species}} incubation: stop turning",
    "ics_hatch": "{{species}} incubation: expected hatch",
    "disclaimer": "Guidance for forced-air incubators: also follow your device's manual and keep temperature swings within about 1 °F (MSU)."
  },
  "habit-tracker": {
    "heading": "Habit tracker",
    "subtitle": "Tick each day and follow your streaks and monthly rate. Everything stays in this browser.",
    "example_a": "Read for 20 minutes",
    "example_b": "Walk for 30 minutes",
    "prev_month": "Previous month",
    "next_month": "Next month",
    "habit_col": "Habit",
    "cell_label": "{{habit}}, {{date}}",
    "grid_hint": "Tap a box to tick or untick it. Future days are greyed out.",
    "month_rate_all": "Monthly rate, all habits",
    "month_rate_detail": "{{done}} boxes ticked out of {{days}} habit-days so far",
    "name_label": "Habit name",
    "delete": "Delete {{name}}",
    "confirm_delete": "Delete “{{name}}” and all its ticked days?",
    "streak_current": "Current streak (days)",
    "streak_best": "Best streak (days)",
    "month_rate": "Monthly rate",
    "record_now": "You are on your best streak",
    "add_label": "New habit",
    "add_placeholder": "e.g. meditate for 10 minutes",
    "add": "Add",
    "max_reached": "{{n}} habits at most.",
    "backup_title": "Backup",
    "export": "Export (JSON)",
    "import": "Import (JSON)",
    "import_ok": "Import done: {{n}} habits in total.",
    "import_error": "File not recognised: use a JSON export from this tool.",
    "storage_note": "Your data stays in this browser (local storage). Clearing site data deletes it, so export it now and then.",
    "method_note": "Streak: days ticked in a row up to today, or yesterday if today is empty. Rate: ticked days ÷ days elapsed in the month. Dates follow your device's local calendar."
  },
  "human-design-chart-calculator": {
    "heading": "Human Design chart",
    "subtitle": "Astronomical positions at birth and 88° of solar arc earlier, converted into gates and lines",
    "date_label": "Birth date",
    "time_label": "Birth time",
    "tz_label": "Time zone of the birthplace",
    "tz_hint": "Only the instant matters: pick the city's zone (daylight saving included). Time zones before 1970 depend on the browser's data.",
    "node_label": "Lunar node",
    "node_true": "True node",
    "node_mean": "Mean node",
    "node_hint": "Convention not set by a verified source: software uses one or the other (up to 2° apart).",
    "independence": "Independent tool, not affiliated with Jovian Archive or its trademarks. The diagram is the tool's own.",
    "notice_range": "Pick a date between 1900 and 2100.",
    "notice_invalid": "Incomplete date or time.",
    "loading": "Loading the ephemeris…",
    "notice_gap": "This time does not exist in this zone (clocks moved forward): the calculation keeps the offset in force before the change.",
    "notice_ambiguous": "This time occurs twice in this zone (clocks moved back): the calculation uses the first one.",
    "type_label": "Type",
    "authority_label": "Authority",
    "profile_label": "Profile",
    "birth_utc": "Birth: {{value}} UTC",
    "design_utc": "Design moment (Sun 88° earlier): {{value}} UTC",
    "wheel_title": "Wheel of the 64 gates and defined centers",
    "legend_personality": "Personality (birth)",
    "legend_design": "Design (88° earlier)",
    "legend_defined": "Defined center",
    "wheel_caption": "Gate 41 is at the top; longitudes increase clockwise. Outer ring: gates activated at birth; inner ring: gates activated at the design moment.",
    "channels_title": "Defined channels",
    "channels_none": "No complete channel: no defined center.",
    "centers_defined": "Defined centers: {{value}}",
    "table_title": "Activations (gate.line)",
    "col_body": "Body",
    "col_personality": "Personality",
    "col_design": "Design",
    "table_hint": "Tropical geocentric longitudes of date; Earth = Sun + 180°, south node = north node + 180°.",
    "disclaimer": "Astronomical calculation for a symbolic system with no scientific validation: read it as a reflection tool, not as a prediction or advice.",
    "body": {
      "sun": "Sun",
      "earth": "Earth",
      "north_node": "North node",
      "south_node": "South node",
      "moon": "Moon",
      "mercury": "Mercury",
      "venus": "Venus",
      "mars": "Mars",
      "jupiter": "Jupiter",
      "saturn": "Saturn",
      "uranus": "Uranus",
      "neptune": "Neptune",
      "pluto": "Pluto"
    },
    "center": {
      "head": "Head",
      "ajna": "Ajna",
      "throat": "Throat",
      "g": "G (Self)",
      "heart": "Heart",
      "sacral": "Sacral",
      "solar": "Solar plexus",
      "spleen": "Spleen",
      "root": "Root"
    },
    "type": {
      "generator": "Generator",
      "mg": "Manifesting Generator",
      "manifestor": "Manifestor",
      "projector": "Projector",
      "reflector": "Reflector"
    },
    "auth": {
      "emotional": "Emotional (solar plexus)",
      "sacral": "Sacral",
      "splenic": "Splenic",
      "ego_manifested": "Ego manifested",
      "ego_projected": "Ego projected",
      "self_projected": "Self-projected",
      "mental": "Mental (no inner authority)",
      "lunar": "Lunar"
    }
  },
  "knitting-gauge-yarn-calculator": {
    "heading": "Gauge and yarn calculator",
    "subtitle": "Stitches and rows to cast on, pattern conversion and number of skeins, from your swatch.",
    "unit_label": "Units",
    "unit_metric": "Centimeters",
    "unit_imperial": "Inches",
    "unit_in": "in",
    "unit_yd": "yd",
    "base_4in": "4 in",
    "gauge_title": "Your swatch and the piece",
    "st_label": "Stitches per {{base}}",
    "rows_label": "Rows per {{base}}",
    "width_label": "Target width",
    "height_label": "Target height",
    "gauge_hint": "Measure the swatch after washing and drying, in the middle, away from the edges.",
    "cast_title": "To cast on",
    "cast_label": "Stitches",
    "rows_result": "Rows",
    "exact": "exact value: {{value}}",
    "cyc_title": "Yarn weight (Craft Yarn Council)",
    "cyc_match": "Your swatch has {{st}} stitches per 4 in (10.16 cm): category {{list}}.",
    "cyc_none": "{{st}} stitches per 4 in: finer than category 0 of the table.",
    "col_cat": "Category",
    "col_types": "Yarn types",
    "col_st": "Stitches per 4 in",
    "col_needle": "Needles",
    "needle_cell": "{{mm}} mm (US {{us}})",
    "cyc_0": "Lace",
    "cyc_1": "Super Fine",
    "cyc_2": "Fine",
    "cyc_3": "Light",
    "cyc_4": "Medium",
    "cyc_5": "Bulky",
    "cyc_6": "Super Bulky",
    "cyc_7": "Jumbo",
    "cyc_0_types": "Fingering, 10-count crochet thread",
    "cyc_1_types": "Sock, Fingering, Baby",
    "cyc_2_types": "Sport, Baby",
    "cyc_3_types": "DK, Light Worsted",
    "cyc_4_types": "Worsted, Afghan, Aran",
    "cyc_5_types": "Chunky, Craft, Rug",
    "cyc_6_types": "Super Bulky, Roving",
    "cyc_7_types": "Jumbo, Roving",
    "cyc_note": "Guidelines only: the most common gauges and needles per category according to the Craft Yarn Council (checked on 29/10/2026). Two categories can overlap; for lace, follow the pattern's gauge.",
    "conv_title": "Adapt a pattern to your gauge",
    "pat_st_label": "Pattern stitches per {{base}}",
    "pat_rows_label": "Pattern rows per {{base}}",
    "pat_cast_label": "Stitches given by the pattern",
    "pat_rowcount_label": "Rows given by the pattern",
    "conv_cast": "Your stitches",
    "conv_rows": "Your rows",
    "conv_width": "The pattern plans a width of {{planned}}. With {{n}} stitches at your gauge, you would get {{mine}}.",
    "yarn_title": "Yarn amount from your weighed swatch",
    "sw_w_label": "Swatch width",
    "sw_h_label": "Swatch height",
    "sw_g_label": "Swatch weight",
    "pieces_label": "Number of pieces this size",
    "ball_g_label": "Ball weight",
    "ball_len_label": "Ball length",
    "margin_label": "Safety margin",
    "margin_note": "Indicative value, not verified: no official source sets this margin. Adjust it to your seams and finishing.",
    "yarn_grams": "Yarn needed",
    "yarn_balls": "Balls",
    "balls_exact": "that is {{value}} balls",
    "yarn_length": "Total length",
    "yarn_hint": "Knitted area: {{area}} (width × height × number of pieces). Weigh the swatch on a scale accurate to the gram.",
    "disclaimer": "Estimates: real measurements depend on your tension, increases and decreases, and washing. Always knit a swatch before you start."
  },
  "minecraft-circle-sphere-generator": {
    "heading": "Circle and sphere generator for Minecraft",
    "subtitle": "Block-by-block plan, block count per row and per layer",
    "tab_2d": "Circle / ellipse",
    "tab_3d": "Sphere / dome",
    "lock_label": "Circle (width = height)",
    "diameter_label": "Diameter (blocks)",
    "width_label": "Width (blocks)",
    "height_label": "Height (blocks)",
    "mode_label": "Fill",
    "mode_outline": "Outline",
    "mode_filled": "Filled",
    "thickness_label": "Outline thickness (blocks)",
    "dome_label": "Dome (top half)",
    "hollow_label": "Hollow (one-block shell)",
    "layer_label": "Layer to place",
    "layer_value": "{{n}} of {{total}}",
    "layer_down": "Previous layer",
    "layer_up": "Next layer",
    "convention": "Edge rule: a block is placed if its centre is inside the shape. Outline: a block of the shape that touches the outside within the chosen thickness (up, down, left, right). Shell: a block with one of its six faces open to the outside.",
    "notice_range": "Value limited to {{min}}–{{max}}.",
    "total_2d": "Blocks needed",
    "total_3d": "Blocks needed (all layers)",
    "size_label": "Width × height",
    "rows_label": "Rows to place",
    "layer_blocks": "Blocks in this layer",
    "height_blocks": "Height in layers",
    "compare_3d": "Whole sphere: {{filled}} blocks solid, {{hollow}} hollow.",
    "grid_title": "Block-by-block plan",
    "layer_title": "Layer {{n}} of {{total}}, seen from above",
    "export_png": "Export as PNG",
    "grid_caption": "Row number on the left, number of blocks in the row on the right. The red dashed lines mark the centre axes.",
    "rows_detail": "Row-by-row detail (columns to fill)",
    "row_line": "Row {{n}}: {{blocks}} blocks, columns {{runs}}",
    "three_title": "3D preview (shell)",
    "three_cap": "3D preview limited to {{max}} blocks across; the layer view stays complete.",
    "three_loading": "Loading 3D…",
    "three_aria": "Sphere of {{d}} blocks in 3D, layer {{n}} in green, rotatable with mouse or finger",
    "three_fail": "3D is not available on this device (WebGL 2): the layer view is enough to build.",
    "three_wait": "The 3D preview loads when this block comes into view.",
    "three_button": "View in 3D",
    "three_caption": "The chosen layer is green and the layers below are grey; the layers above are faded. Rotate the view with the mouse or a finger; it never spins on its own."
  },
  "morse-code-translator": {
    "heading": "Morse code translator",
    "subtitle": "Text ⇄ Morse with the ITU alphabet, as sound, light or vibration, plus a practice mode.",
    "mode_encode": "Text → Morse",
    "mode_decode": "Morse → text",
    "input_text": "Text to translate",
    "input_code": "Morse code to decode",
    "code_hint": "Dots (.) and dashes (-), one space between letters, / or two spaces between words.",
    "output": "Result",
    "copy": "Copy the result",
    "unknown_chars": "No Morse equivalent, skipped: {{chars}}",
    "unknown_codes": "Unrecognised codes (shown as #): {{n}}",
    "play": "Play",
    "stop": "Stop",
    "out_sound": "Sound",
    "out_light": "Light",
    "out_vibrate": "Vibration",
    "light_cap": "Light mode: characters at {{max}} WPM at most, so no more than 3 flashes per second (WCAG 2.3.1).",
    "wpm_label": "Character speed (WPM)",
    "eff_label": "Effective speed, Farnsworth (WPM)",
    "speed_hint": "Played at {{c}} WPM for characters and {{s}} WPM overall; one dot lasts {{u}} ms.",
    "freq_label": "Pitch: {{v}} Hz",
    "volume_label": "Volume: {{v}}%",
    "train_title": "Listening practice",
    "train_intro": "Listen to a random letter, then type it. The character speed you set applies.",
    "pool_letters": "Letters",
    "pool_all": "Letters and digits",
    "train_next": "New letter",
    "train_replay": "Replay",
    "train_answer": "Your answer",
    "train_ok": "Correct: {{char}} = {{code}}",
    "train_ko": "No: it was {{char}} ({{code}})",
    "train_score": "Score: {{ok}} out of {{total}}",
    "table_title": "Morse alphabet (ITU-R M.1677-1)",
    "play_char": "Play {{char}}: {{code}}",
    "prosigns_title": "Service signals",
    "ps_understood": "Understood",
    "ps_error": "Error",
    "ps_invitation": "Invitation to transmit",
    "ps_wait": "Wait",
    "ps_end": "End of work",
    "ps_start": "Starting signal",
    "method_note": "Dash = 3 dots; gaps of 1 dot within a letter, 3 between letters, 7 between words (ITU-R M.1677-1). A dot lasts 1.2 ÷ speed seconds (50-unit word PARIS, ARRL standard)."
  },
  "pickleball-score-keeper": {
    "heading": "Pickleball score keeper",
    "subtitle": "Score call, server and serving court under the USA Pickleball rulebook, in doubles or singles.",
    "team_a": "Team A",
    "team_b": "Team B",
    "winner": "{{team}} wins {{a}}-{{b}}",
    "call_label": "Score call",
    "serving_right": "Serving: {{name}}, right court",
    "serving_left": "Serving: {{name}}, left court",
    "receiver": "Receiving: {{name}}",
    "end_change": "A side has reached {{n}} points: change ends in a single-game match or tie-breaker (rule 21.B). The server and positions stay the same.",
    "court_title": "Player positions, server and receiver",
    "court_hint": "Top view; each player's right is as seen facing the net. The yellow ball marks the server and the dashed line points to the receiver.",
    "won_by": "Rally won: {{team}}",
    "undo": "Undo",
    "new_game": "New game",
    "announce": "Spoken score",
    "keep_awake": "Keep screen on",
    "history_title": "History",
    "history_empty": "No rallies played yet.",
    "log_entry": "{{n}}. Rally won by {{team}}",
    "settings_title": "Game settings",
    "format_label": "Format",
    "doubles": "Doubles",
    "singles": "Singles",
    "scoring_label": "Scoring",
    "sideout": "Side-out (standard)",
    "rally": "Rally scoring",
    "rally_note": "Provisional rule 14.A: a point on every rally, one server per team, two-number score call.",
    "target_label": "Points to win",
    "win_by_label": "Win by",
    "first_label": "Serves first",
    "swap_label": "Remind me to change ends (single game or tie-breaker)",
    "settings_pending": "These settings apply to the next game.",
    "names_title": "Player names",
    "team_a_name": "Team A name",
    "team_b_name": "Team B name",
    "a1_label": "A, right side at start",
    "a2_label": "A, left side at start",
    "b1_label": "B, right side at start",
    "b2_label": "B, left side at start",
    "player_a": "Player A",
    "player_b": "Player B",
    "rules_title": "Rules applied",
    "rule_scoring": "Only the serving side scores; the server switches courts after each point won.",
    "rule_call": "Doubles call: server score, receiver score, server number; start at 0-0-2.",
    "rule_position": "Each team's starting server is on the right when the team score is even.",
    "rule_game": "Games to 11, 15 or 21, win by 2; change ends at 6, 8 or 11 points in a single game or tie-breaker.",
    "rules_source": "Source: USA Pickleball, 2026 Official Rulebook, rules 4.A, 5.B, 6.B, 14.A, 15.C and 21.B."
  },
  "rpg-5e-character-sheet": {
    "heading": "5e character sheet (SRD)",
    "subtitle": "Ability scores, proficiency, saves, skills, HP and AC from the SRD 5.2.1",
    "name_label": "Character name",
    "name_placeholder": "Unnamed",
    "class_label": "Class",
    "level_label": "Level",
    "method_label": "Ability scores",
    "method_standard": "Standard array",
    "method_points": "Point buy",
    "method_manual": "Manual",
    "std_hint": "Each value is used once: picking one already taken swaps the two. Changing class applies the SRD's suggested placement.",
    "points_remaining": "Points left: {{n}} of {{total}}",
    "points_cost": "cost {{n}}",
    "points_hint": "Scores 8 to 15; costs 8 = 0, 9 = 1, 10 = 2, 11 = 3, 12 = 4, 13 = 5, 14 = 7, 15 = 9.",
    "manual_hint": "For rolled scores (4d6, keep the best 3) or scores set by the GM: 3 to 20.",
    "increase": "Increase {{ability}}",
    "decrease": "Decrease {{ability}}",
    "bonus_title": "Background increases",
    "bonus_hint": "The background lists three abilities: +2 to one and +1 to another, or +1 to all three; none goes above 20.",
    "bonus_invalid": "Not a valid split: choose +2 and +1, or +1 three times.",
    "skills_title": "Skill proficiencies",
    "skills_hint": "The class lets you pick {{picks}} from its list ({{n}} ticked); the background adds others.",
    "skills_hint_any": "The class lets you pick any {{picks}} ({{n}} ticked); the background adds others.",
    "skills_bold": "In bold: skills from the class list.",
    "hp_label": "Hit points",
    "hp_hint": "d{{die}} at level 1, then {{fixed}} + Con per level",
    "ac_label": "Armor class (unarmored)",
    "ac_hint_base": "10 + Dex",
    "ac_hint_barbarian": "Unarmored defense: 10 + Dex + Con",
    "ac_hint_monk": "Unarmored defense: 10 + Dex + Wis",
    "pb_label": "Proficiency bonus",
    "init_label": "Initiative",
    "passive_label": "Passive Perception",
    "spell_dc_label": "Spell save DC",
    "spell_attack_label": "Spell attack",
    "spell_attack_hint": "Spell attack {{value}}",
    "abilities_title": "Abilities and saving throws",
    "col_ability": "Ability",
    "col_score": "Score",
    "col_mod": "Mod.",
    "col_save": "Save",
    "saves_hint": "In green: saving throws the class is proficient in (modifier + proficiency).",
    "skills_table_title": "Skills",
    "print": "Print",
    "export_pdf": "Export as PDF",
    "reset": "Start over",
    "saved_note": "The sheet is saved in this browser only, on this device.",
    "srd_note": "Sheet compatible with fifth edition, based only on the rules of the SRD 5.2.1 (CC BY 4.0). Independent tool.",
    "attribution": "This work includes material from the System Reference Document 5.2.1 (“SRD 5.2.1”) by Wizards of the Coast LLC, available at https://www.dndbeyond.com/srd. The SRD 5.2.1 is licensed under the Creative Commons Attribution 4.0 International License, available at https://creativecommons.org/licenses/by/4.0/legalcode.",
    "pdf_unnamed": "Unnamed character",
    "pdf_class_level": "{{cls}}, level {{level}}",
    "pdf_legend": "*: proficient saving throw or skill. Armor, weapons, spells, feats and species are to be filled in by hand.",
    "ability": {
      "str": "Strength",
      "dex": "Dexterity",
      "con": "Constitution",
      "int": "Intelligence",
      "wis": "Wisdom",
      "cha": "Charisma"
    },
    "abbr": {
      "str": "Str",
      "dex": "Dex",
      "con": "Con",
      "int": "Int",
      "wis": "Wis",
      "cha": "Cha"
    },
    "skill": {
      "acrobatics": "Acrobatics",
      "animal": "Animal Handling",
      "arcana": "Arcana",
      "athletics": "Athletics",
      "deception": "Deception",
      "history": "History",
      "insight": "Insight",
      "intimidation": "Intimidation",
      "investigation": "Investigation",
      "medicine": "Medicine",
      "nature": "Nature",
      "perception": "Perception",
      "performance": "Performance",
      "persuasion": "Persuasion",
      "religion": "Religion",
      "sleight": "Sleight of Hand",
      "stealth": "Stealth",
      "survival": "Survival"
    },
    "class": {
      "barbarian": "Barbarian",
      "bard": "Bard",
      "cleric": "Cleric",
      "druid": "Druid",
      "fighter": "Fighter",
      "monk": "Monk",
      "paladin": "Paladin",
      "ranger": "Ranger",
      "rogue": "Rogue",
      "sorcerer": "Sorcerer",
      "warlock": "Warlock",
      "wizard": "Wizard"
    }
  },
  "secret-santa-generator": {
    "heading": "Secret Santa draw",
    "subtitle": "Participants, exclusions, then one link per person that reveals only their recipient.",
    "sample_1": "Alice",
    "sample_2": "Ben",
    "sample_3": "Chloe",
    "sample_4": "David",
    "sample_5": "Emma",
    "sample_6": "Frank",
    "reveal_invalid": "This Secret Santa link is incomplete or damaged. Ask the organizer to send it again.",
    "reveal_hello": "Hello {{name}}!",
    "reveal_button": "Reveal who I give to",
    "reveal_you_give": "You are giving a gift to",
    "reveal_budget": "Budget: {{budget}}",
    "reveal_date": "Gift exchange: {{date}}",
    "reveal_keep": "Keep the secret: this link is personal, do not forward it.",
    "people_title": "Participants ({{n}})",
    "person_label": "Participant {{n}}",
    "remove_person": "Remove {{name}}",
    "add_person": "Add a participant",
    "excl_title": "Exclusions",
    "excl_hint": "A couple is excluded both ways; last year's draw one way only (who gave to whom).",
    "excl_giver": "Must not give…",
    "excl_receiver": "… to",
    "excl_both_label": "Both ways (couple)",
    "excl_add": "Add exclusion",
    "excl_both": "{{a}} and {{b}} won't draw each other",
    "excl_one": "{{a}} won't give to {{b}}",
    "excl_remove": "Delete this exclusion",
    "budget_label": "Budget (optional)",
    "budget_placeholder": "$25",
    "date_label": "Exchange date (optional)",
    "draw": "Draw names",
    "redraw": "Draw again",
    "problem_few": "You need at least 3 participants.",
    "problem_empty": "Every participant needs a name.",
    "problem_dupes": "Two participants have the same name: add an initial to tell them apart.",
    "problem_impossible": "No draw meets these exclusions: remove one or add a participant.",
    "links_title": "One link per participant",
    "links_hint": "Send each person their own link. After a new draw, old links still show the old result: send the new ones.",
    "copy": "Copy link",
    "copied": "Copied",
    "copy_aria": "Copy {{name}}'s link",
    "share": "Share",
    "share_aria": "Share {{name}}'s link",
    "share_title": "Secret Santa",
    "share_text": "{{name}}, here is your Secret Santa link: open it to find out who you are giving a gift to.",
    "privacy_note": "The draw is computed in your browser. Each link holds its recipient's name in the part after #, which is not part of the request that loads the page. The name is encoded, not encrypted: without a server, the organizer can open any link and read it. The tool does not display the pairs; do not open other people's links.",
    "link_aria": "{{name}}'s link"
  },
  "smoker-cooking-time-calculator": {
    "heading": "Smoker cooking schedule",
    "subtitle": "Estimated time, start time and safe internal temperature (USDA FSIS)",
    "unit_label": "Units",
    "unit_metric": "kg and °C",
    "unit_imperial": "lb and °F",
    "meat_label": "Meat",
    "m_brisket": "Beef brisket",
    "m_shoulder": "Pork shoulder (pulled pork)",
    "m_ribs": "Pork ribs",
    "m_chicken": "Whole chicken",
    "m_turkey": "Whole turkey",
    "weight_label": "Weight",
    "smoker_label": "Smoker temperature",
    "rate_label_kg": "Time per kg",
    "rate_label_lb": "Time per pound",
    "margin_label": "Margin (stall)",
    "rest_label": "Rest before serving",
    "serve_label": "Serving time",
    "rate_hint": "Time per weight, margin and rest: indicative values, not verified against an official source. Adjust them to your smoker and its temperature.",
    "rate_turkey_hint": "Turkey: 25 min per pound, the middle of FSIS's 20 to 30 min/lb (8 to 12 lb birds). Margin and rest are indicative, not verified.",
    "result_title": "Estimated schedule",
    "start_label": "Put it on at",
    "day_0": "on serving day",
    "day_1": "the day before serving",
    "day_n": "{{n}} days before serving",
    "duration_hm": "{{h}} h {{m}}",
    "cook_label": "Estimated cook",
    "estimate": "Estimate: the probe decides",
    "total_label": "With margin and rest",
    "total_sub": "Serving at {{time}}",
    "timeline_title": "Timeline: cook {{cook}}, margin {{margin}}, rest {{rest}}",
    "seg_cook": "Cook",
    "seg_margin": "Margin",
    "seg_rest": "Rest",
    "turkey_fsis": "FSIS guide for this weight: {{min}} to {{max}} (20 to 30 min per pound).",
    "turkey_out": "FSIS only gives a smoker time for 8 to 12 lb turkeys: the estimate is less reliable here.",
    "smoker_out": "FSIS advises smoker air between {{min}} and {{max}} for the whole cook.",
    "stall_note": "Stall: a large cut can hold the same temperature for hours mid-cook. The margin is there to absorb it.",
    "safe_title": "Safe internal temperature (USDA FSIS)",
    "safe_whole": "Whole beef or pork cut: reach this at the center, then rest at least 3 minutes.",
    "safe_poultry": "Poultry: this in the thickest part of the breast, the thigh and the wing.",
    "safe_source": "USDA FSIS, Safe Minimum Internal Temperature Chart. The °C value is rounded up so it never falls below the threshold.",
    "pull_title": "Doneness temperature",
    "pull_label": "Pull at",
    "pull_note": "A texture choice (meat that pulls apart, juiciness): indicative value, not verified, separate from the safety threshold.",
    "pull_below_safe": "This temperature is below the USDA safe threshold: aim at least for the value shown above.",
    "disclaimer": "Schedule estimate: only a probe in the thickest part confirms doneness. Refrigerate leftovers within 2 hours (FSIS).",
    "rest_below_fsis": "Whole beef or pork cut: FSIS calls for at least a 3-minute rest after 145 °F."
  },
  "solar-eclipse-2027-calculator": {
    "heading": "Total solar eclipse of 2 August 2027",
    "subtitle": "Local contact times, length of totality and share of the Sun covered for a place",
    "safety": "Never look at the Sun without glasses or a viewer meeting ISO 12312-2, except during totality, when the Moon hides it completely. Sunglasses do not protect, and a camera, binoculars or telescope without a solar filter on the front burn the eye.",
    "mode_city": "City",
    "mode_coords": "Coordinates",
    "city_label": "City (in the band and nearby)",
    "lat_label": "Latitude (north +)",
    "lon_label": "Longitude (east +)",
    "coords_hint": "Decimal degrees, for example 36.53 and -6.29 for Cádiz.",
    "tz_label": "Time zone of the place",
    "tz_hint": "Offline, the tool cannot derive a time zone from coordinates: pick it, otherwise times stay in UTC.",
    "geo_button": "Use my location",
    "geo_busy": "Locating…",
    "geo_error": "Location unavailable: type the coordinates or pick a city.",
    "geo_hint": "Your location stays on your device; the suggested time zone is the device's, and you can change it.",
    "loading": "Calculating…",
    "your_place": "Your place",
    "result_for": "Eclipse seen from: {{place}}",
    "kind_total": "Total eclipse",
    "kind_partial": "Partial eclipse",
    "kind_annular": "Annular eclipse",
    "kind_none": "No eclipse visible",
    "none_hint": "The Moon's penumbra does not reach this place on 2 August 2027: the Sun is not covered there.",
    "obscuration_label": "Sun covered at maximum",
    "duration_label": "Length of totality",
    "duration_value": "{{min}} min {{sec}} s",
    "max_label": "Maximum (local time)",
    "alt_label": "Sun altitude at maximum",
    "notice_below": "The Sun is below the horizon throughout the eclipse: nothing is visible from this place.",
    "notice_horizon": "Part of the eclipse happens with the Sun below the horizon (negative altitude): that part is not visible.",
    "notice_partial": "This place is outside the path of totality: at no moment can you take off your eclipse glasses.",
    "times_title": "Eclipse timeline",
    "times_zone": "Times in the {{zone}} zone",
    "ev_c1": "Start (1st contact)",
    "ev_c2": "Totality begins (2nd contact)",
    "ev_max": "Maximum",
    "ev_c3": "Totality ends (3rd contact)",
    "ev_c4": "End (4th contact)",
    "sun_alt": "Sun at {{value}}°",
    "precision": "Times rounded to the minute (≈): within 3 s of NASA's calculator across eight cities, length of totality within 5 s.",
    "disk_title": "The Sun at maximum",
    "disk_aria": "Solar disc {{value}}% covered by the Moon",
    "north": "N",
    "disk_caption": "Sky view, north up and east left; Moon in dark, to the scale of apparent diameters.",
    "globe_title": "Globe: path of totality and chosen place",
    "globe_loading": "Loading the globe…",
    "globe_wait": "The 3D globe loads when this block comes into view.",
    "globe_button": "View in 3D",
    "globe_fail": "3D is not available on this device (WebGL 2): the results above remain complete.",
    "globe_max": "Maximum",
    "globe_aria": "Rotatable globe showing the path of totality of 2 August 2027, the point of maximum in Egypt and the chosen place",
    "globe_caption": "Orange band: totality, from the Atlantic (08:26 UTC) to the Indian Ocean (11:46 UTC), about 258 km wide. Red dot: maximum at 10:06:38 UTC, 25.5° N and 33.2° E, near Luxor. Green dot: chosen place. Rotate the globe with the mouse or a finger.",
    "credit_nasa": "Path of totality: Eclipse Predictions by Fred Espenak, NASA's GSFC. Coastlines: Natural Earth.",
    "credits": "Calculation: astronomy-engine. Cities: GeoNames, CC BY 4.0. Legal times follow the browser's time zone data; weather is not considered.",
    "city": {
      "cadiz": "Cádiz",
      "jerez": "Jerez de la Frontera",
      "algeciras": "Algeciras",
      "tarifa": "Tarifa",
      "malaga": "Málaga",
      "marbella": "Marbella",
      "sevilla": "Seville",
      "granada": "Granada",
      "almeria": "Almería",
      "madrid": "Madrid",
      "barcelona": "Barcelona",
      "gibraltar": "Gibraltar",
      "ceuta": "Ceuta",
      "melilla": "Melilla",
      "lisbon": "Lisbon",
      "faro": "Faro",
      "paris": "Paris",
      "marseille": "Marseille",
      "rome": "Rome",
      "milan": "Milan",
      "palermo": "Palermo",
      "valletta": "Valletta",
      "london": "London",
      "berlin": "Berlin",
      "tangier": "Tangier",
      "tetouan": "Tetouan",
      "alhoceima": "Al Hoceima",
      "nador": "Nador",
      "fes": "Fez",
      "rabat": "Rabat",
      "casablanca": "Casablanca",
      "oran": "Oran",
      "tlemcen": "Tlemcen",
      "algiers": "Algiers",
      "setif": "Setif",
      "tunis": "Tunis",
      "sfax": "Sfax",
      "gabes": "Gabès",
      "djerba": "Houmt Souk (Djerba)",
      "tripoli": "Tripoli",
      "benghazi": "Benghazi",
      "tobruk": "Tobruk",
      "luxor": "Luxor",
      "aswan": "Aswan",
      "asyut": "Asyut",
      "sohag": "Sohag",
      "hurghada": "Hurghada",
      "cairo": "Cairo",
      "alexandria": "Alexandria",
      "jeddah": "Jeddah",
      "mecca": "Mecca",
      "medina": "Medina",
      "riyadh": "Riyadh",
      "abha": "Abha",
      "sanaa": "Sanaa",
      "aden": "Aden",
      "bosaso": "Bosaso",
      "athens": "Athens",
      "istanbul": "Istanbul",
      "dubai": "Dubai",
      "amman": "Amman"
    }
  },
  "sourdough-hydration-calculator": {
    "heading": "Hydration and baker's percentages",
    "subtitle": "Starter flour and water included, based on total flour",
    "mode_recipe": "% from a recipe",
    "mode_percent": "Recipe from %",
    "flour_label": "Flour to mix",
    "water_label": "Added water",
    "salt_label": "Salt",
    "levain_label": "Starter",
    "dough_label": "Target dough weight",
    "hydration_label": "Hydration",
    "salt_pct_label": "Salt (% of flour)",
    "levain_pct_label": "Starter (% of flour)",
    "examples_title": "Example formulas",
    "ex_white": "White bread",
    "ex_french": "French bread",
    "ex_ciabatta": "Ciabatta",
    "examples_source": "Hydration and salt from formulas published by King Arthur Baking: examples, not standards.",
    "levain_hyd_label": "Starter hydration",
    "levain_hyd_hint": "Starter water ÷ flour: 100% for an equal-parts starter, 50% for a stiff starter.",
    "result_percent_title": "Baker's percentages",
    "hydration": "True hydration",
    "total_flour": "Total flour",
    "total_water": "Total water",
    "dough_weight": "Dough weight",
    "salt_pct": "Salt",
    "levain_pct": "Starter",
    "prefermented": "Prefermented flour",
    "no_flour": "Enter a flour or starter weight to get the percentages.",
    "result_recipe_title": "Amounts to weigh",
    "flour_dough": "Flour to mix",
    "water_dough": "Water to add",
    "recipe_check": "With the starter: {{flour}} total flour and {{water}} total water.",
    "water_negative": "The starter already brings more water than the target hydration: lower the starter or its hydration.",
    "flour_negative": "The starter exceeds the total flour: lower its percentage.",
    "feed_title": "Starter feeding",
    "feed_total_label": "Starter needed",
    "starter_hyd_label": "Mother starter hydration",
    "feed_ratio_label": "Common ratios",
    "feed_a": "Starter parts",
    "feed_b": "Flour parts",
    "feed_c": "Water parts",
    "feed_starter": "Starter",
    "feed_flour": "Flour",
    "feed_water": "Water",
    "feed_hyd": "Resulting hydration",
    "feed_hint": "Plan a few grams more than the recipe needs to keep some starter back.",
    "disclaimer": "Calculated from the weights entered: flour absorption and temperature change how dough behaves at the same hydration."
  },
  "tier-list-maker": {
    "heading": "Tier list maker",
    "subtitle": "Drag each item into its row, then export the ranking as an image.",
    "sample_1": "Pizza",
    "sample_2": "Sushi",
    "sample_3": "Tacos",
    "sample_4": "Croissant",
    "sample_5": "Lasagna",
    "sample_6": "Burger",
    "sample_7": "Ramen",
    "sample_8": "Paella",
    "sr_role": "movable item",
    "sr_instructions": "To pick up an item, press Space. Move it with the arrow keys, then press Space to drop it or Escape to cancel. Enter opens the move menu, Delete removes the item.",
    "sr_start": "Picked up {{item}}.",
    "sr_over": "{{item}} is over row {{row}}.",
    "sr_outside": "{{item}} is not over any row.",
    "sr_drop": "{{item}} dropped in row {{row}}.",
    "sr_cancel": "Move cancelled: {{item}} stays where it was.",
    "pool_title": "Items to rank",
    "pool_empty": "Everything is ranked. Add items below.",
    "export_png": "Export as PNG",
    "exporting": "Exporting…",
    "export_error": "The export failed. Try again, or take a screenshot of the board.",
    "reset": "Start over",
    "board_label": "Tier list board",
    "row_zone": "Row {{row}}",
    "selected_title": "Selected item: {{item}}",
    "move_to": "Move to",
    "remove_item": "Remove",
    "deselect": "Close selection",
    "hint_touch": "On touch screens: long-press to move, or tap an item and pick its row.",
    "hint_keyboard": "Keyboard: Space to pick up, arrow keys to move, Space to drop, Escape to cancel; Enter opens the menu, Delete removes.",
    "add_items_label": "Add items (one per line)",
    "add_items_placeholder": "One item per line",
    "add_button": "Add",
    "add_images": "Add images",
    "images_note": "Pictures stay on your device and are not saved: after a reload, add them again. Texts, rows and order are kept in this browser.",
    "rows_title": "Rows",
    "row_color": "Color of row {{row}}",
    "row_name": "Name of row {{row}}",
    "remove_row": "Delete row {{row}}",
    "add_row": "Add a row"
  },
  "tone-generator": {
    "heading": "Tone generator",
    "subtitle": "A tone from 20 Hz to 20 kHz as sine, square, sawtooth or triangle, left or right, with a sweep.",
    "freq_label": "Frequency",
    "freq_slider": "Frequency (logarithmic scale)",
    "octave_down": "−1 octave",
    "octave_up": "+1 octave",
    "range_note": "Frequency limited to 20 Hz–20,000 Hz: using {{value}} Hz.",
    "presets_label": "Common frequencies",
    "start": "Start",
    "stop": "Stop",
    "sweep_running": "Sweep in progress",
    "safety_title": "Protect your hearing",
    "safety_text": "Start at a low volume and raise it in small steps. The WHO states that 80 dB is safe for up to 40 hours a week but 90 dB for only 4 hours, and advises keeping devices below 60% of maximum volume.",
    "high_warning": "At very high frequencies a tone can seem faint or inaudible while being loud: do not raise the volume to hear it.",
    "wave_label": "Waveform",
    "wave": {
      "sine": "Sine",
      "square": "Square",
      "sawtooth": "Sawtooth",
      "triangle": "Triangle"
    },
    "volume_label": "Volume",
    "volume_hint": "Starts at 25% with a fixed cap; square and sawtooth waves are attenuated.",
    "pan_label": "Pan",
    "pan_left": "Left",
    "pan_center": "Center",
    "pan_right": "Right",
    "pan_value_left": "Left {{pct}}",
    "pan_value_right": "Right {{pct}}",
    "sweep_title": "Frequency sweep",
    "sweep_from": "From",
    "sweep_to": "To",
    "sweep_duration": "Duration",
    "sweep_mode": "Progression",
    "sweep_log": "Logarithmic (equal time per octave)",
    "sweep_linear": "Linear",
    "sweep_start": "Start the sweep",
    "disclaimer": "This is not a hearing test: headphones and speakers are not calibrated, so any result is only indicative and does not replace an audiologist or ENT doctor.",
    "ios_note": "On iPhone or iPad, if you hear nothing, turn silent mode off."
  },
  "virtual-piano": {
    "heading": "Virtual piano",
    "subtitle": "Play with the mouse, touch, your computer keyboard or a MIDI keyboard.",
    "octave_down": "One octave down",
    "octave_up": "One octave up",
    "range": "From {{low}} ({{lowHz}} Hz) to {{high}} ({{highHz}} Hz)",
    "sustain": "Sustain pedal",
    "stop": "Stop all",
    "keyboard_label": "Piano keyboard",
    "key_label": "{{note}}, {{hz}} Hz",
    "last_note": "Last note: {{note}}, {{hz}} Hz",
    "hint_play": "Press a key to play: sound starts with your first gesture.",
    "show_keys": "Show computer keys",
    "keys_layout_real": "Letters from your own keyboard, read by the browser. Keys are matched by position.",
    "keys_layout_qwerty": "QWERTY letters shown: keys are matched by position, so other layouts use the same physical keys.",
    "volume": "Volume",
    "a4_label": "Reference A",
    "a4_hint": "440 Hz by default (indicative value, not verified), adjustable from 400 to 480 Hz; applies to the next notes.",
    "midi_connect": "Connect a MIDI keyboard",
    "midi_on": "Web MIDI on. Inputs found: {{n}}.",
    "midi_unsupported": "This browser has no Web MIDI, which is the case of Safari on Mac and iPhone. Try Chrome, Edge or Firefox.",
    "midi_denied": "MIDI access denied or unavailable. Allow it in the site settings, then try again.",
    "midi_hint": "The browser asks for your permission. Notes and the sustain pedal (controller 64) of the MIDI keyboard are used.",
    "synth_note": "Sound synthesized in the browser (six partials that fade out), not a sampled piano: the tone is simplified.",
    "note": {
      "c": "C",
      "cs": "C♯",
      "d": "D",
      "ds": "D♯",
      "e": "E",
      "f": "F",
      "fs": "F♯",
      "g": "G",
      "gs": "G♯",
      "a": "A",
      "as": "A♯",
      "b": "B"
    }
  },
  "youtube-thumbnail-preview": {
    "heading": "YouTube thumbnail preview",
    "subtitle": "Check your thumbnail's format and see it in home, search and mobile mockups.",
    "default_title": "Your video title shows here, on two lines at most",
    "default_channel": "My channel",
    "meta_line": "{{views}} views · {{age}}",
    "mobile_sub": "{{channel}} · {{meta}}",
    "check_too_small": "{{w}} × {{h}} px: width below YouTube's {{min}} px minimum.",
    "check_size_rec": "{{w}} × {{h}} px: recommended resolution reached.",
    "check_size_min": "{{w}} × {{h}} px: accepted (width ≥ {{min}} px), below the recommended {{rw}} × {{rh}} px.",
    "check_ratio_ok": "16:9 ratio respected.",
    "check_ratio_off": "Ratio of {{ratio}}: YouTube recommends 16:9 (1.778) for a video. The preview crops the image.",
    "check_weight_ok": "{{size}} MB: can be uploaded from mobile (2 MB) and desktop (50 MB).",
    "check_weight_desktop": "{{size}} MB: above the 2 MB mobile limit, upload it from a computer (50 MB at most).",
    "check_weight_bad": "{{size}} MB: above the 50 MB limit, compress the image.",
    "check_format_ok": "JPG or PNG format, named by YouTube Help.",
    "check_format_other": "{{type}} format: YouTube Help only names JPG and PNG as examples, prefer one of them.",
    "thumb_alt": "Your thumbnail",
    "placeholder": "Your thumbnail here",
    "choose_image": "Choose a thumbnail",
    "replace_image": "Change image",
    "remove_image": "Remove image",
    "local_note": "The image stays on your device: it is not sent anywhere.",
    "title_label": "Video title",
    "channel_label": "Channel name",
    "duration_label": "Duration",
    "views_label": "Views",
    "days_label": "Days ago",
    "theme_label": "Mockup theme",
    "theme_light": "Light",
    "theme_dark": "Dark",
    "checks_title": "YouTube requirements check",
    "checks_empty": "Choose an image to check its dimensions, ratio, file size and format.",
    "file_info": "{{name}}: {{w}} × {{h}} px, {{size}} MB",
    "rule_size": "Recommended resolution: {{rw}} × {{rh}} px; minimum width: {{min}} px.",
    "rule_ratio": "Ratio: 16:9 for a video, 9:16 for a Short.",
    "rule_weight": "File size: 2 MB at most from mobile, 50 MB from desktop.",
    "rule_format": "Formats named as examples: JPG, PNG.",
    "rule_verified": "Custom thumbnails require a verified account.",
    "rules_source": "Source: YouTube Help, “Add custom thumbnails on YouTube”, checked on 29/10/2026.",
    "mock_home": "Home",
    "mock_search": "Search results",
    "mock_next": "Up next column",
    "mock_mobile": "Mobile",
    "disclaimer": "Generic mockups, no logo: display sizes and the size and position of the duration badge are indicative, as YouTube changes its interface. The preview crops the image to 16:9."
  }
}
