@d3plus/locales 3.1.6 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /*
2
- @d3plus/locales v3.1.5
2
+ @d3plus/locales v4.0.0
3
3
  International localizations for number, date, and UI labels.
4
4
  Copyright (c) 2026 D3plus - https://d3plus.org
5
5
  @license MIT
@@ -424,6 +424,658 @@
424
424
  }
425
425
  };
426
426
 
427
+ // Tech acronyms written the same way across Latin-script languages, spread into
428
+ // each non-English locale alongside its own entries. Deliberately excludes forms
429
+ // that collide with a common word in one of these languages — e.g. "API"
430
+ // (Italian "api" = bees), "RAM" (Catalan "ram" = bouquet), "ML"/"kg" (units).
431
+ const intl = [
432
+ "TV",
433
+ "CPU",
434
+ "GPU",
435
+ "SSD",
436
+ "USB",
437
+ "DVD",
438
+ "GPS",
439
+ "PDF",
440
+ "HTML",
441
+ "CSS",
442
+ "XML",
443
+ "JSON",
444
+ "SQL",
445
+ "HTTP",
446
+ "HTTPS",
447
+ "URL",
448
+ "DNS",
449
+ "VPN",
450
+ "SDK"
451
+ ];
452
+ const titleCaseLocale = {
453
+ // Fallback for languages without an explicit entry — title-cases every word
454
+ // (no minor-word list to keep lowercase). A no-op for scripts that have no
455
+ // letter case (Arabic "ar", Chinese "zh", Korean "ko", Punjabi "pa"), so
456
+ // those are intentionally omitted.
457
+ default: {
458
+ style: "title"
459
+ },
460
+ en: {
461
+ style: "title",
462
+ lowercase: [
463
+ "a",
464
+ "amid",
465
+ "an",
466
+ "and",
467
+ "as",
468
+ "at",
469
+ "atop",
470
+ "but",
471
+ "by",
472
+ "for",
473
+ "from",
474
+ "if",
475
+ "in",
476
+ "into",
477
+ "near",
478
+ "nor",
479
+ "of",
480
+ "on",
481
+ "onto",
482
+ "or",
483
+ "per",
484
+ "so",
485
+ "than",
486
+ "that",
487
+ "the",
488
+ "till",
489
+ "to",
490
+ "unto",
491
+ "upon",
492
+ "v",
493
+ "versus",
494
+ "via",
495
+ "vs",
496
+ "with",
497
+ "yet"
498
+ ],
499
+ acronyms: [
500
+ "API",
501
+ "B2B",
502
+ "B2C",
503
+ "CEO",
504
+ "CFO",
505
+ "CIA",
506
+ "CIO",
507
+ "CMO",
508
+ "CNC",
509
+ "COO",
510
+ "CPU",
511
+ "CRM",
512
+ "CSS",
513
+ "CTO",
514
+ "DNS",
515
+ "DVD",
516
+ "ERP",
517
+ "FAQ",
518
+ "FBI",
519
+ "GDP",
520
+ "GDPR",
521
+ "GNP",
522
+ "GPS",
523
+ "GPU",
524
+ "HTML",
525
+ "HTTP",
526
+ "HTTPS",
527
+ "HVAC",
528
+ "IaaS",
529
+ "IoT",
530
+ "iOS",
531
+ "JSON",
532
+ "KPI",
533
+ "macOS",
534
+ "NASA",
535
+ "PaaS",
536
+ "PDF",
537
+ "PhD",
538
+ "PR",
539
+ "R&D",
540
+ "ROI",
541
+ "SaaS",
542
+ "SDK",
543
+ "SQL",
544
+ "SSD",
545
+ "TV",
546
+ "UI",
547
+ "URL",
548
+ "USB",
549
+ "UX",
550
+ "VP",
551
+ "VPN",
552
+ "XML"
553
+ ]
554
+ },
555
+ // The lists below are fuller, but still collision-vetted by a non-native pass —
556
+ // worth a native-speaker review before relying on them. Every locale
557
+ // title-cases; its `lowercase` list keeps that language's minor words lowered
558
+ // mid-title, and its `acronyms` are forced uppercase.
559
+ ca: {
560
+ style: "title",
561
+ lowercase: [
562
+ "a",
563
+ "al",
564
+ "als",
565
+ "amb",
566
+ "cap",
567
+ "contra",
568
+ "d",
569
+ "de",
570
+ "del",
571
+ "dels",
572
+ "des",
573
+ "el",
574
+ "els",
575
+ "en",
576
+ "entre",
577
+ "fins",
578
+ "i",
579
+ "l",
580
+ "la",
581
+ "les",
582
+ "ni",
583
+ "o",
584
+ "pel",
585
+ "pels",
586
+ "per",
587
+ "però",
588
+ "que",
589
+ "sense",
590
+ "sinó",
591
+ "sobre",
592
+ "sota",
593
+ "un",
594
+ "una",
595
+ "unes",
596
+ "uns",
597
+ "vers"
598
+ ],
599
+ acronyms: [
600
+ ...intl,
601
+ "API",
602
+ "CEO",
603
+ "PIB",
604
+ "IVA",
605
+ "UE",
606
+ "ONU",
607
+ "ONG",
608
+ "ADN",
609
+ "OMS",
610
+ "FMI",
611
+ "UNESCO"
612
+ ]
613
+ },
614
+ da: {
615
+ style: "title",
616
+ lowercase: [
617
+ "af",
618
+ "efter",
619
+ "eller",
620
+ "en",
621
+ "et",
622
+ "for",
623
+ "fra",
624
+ "før",
625
+ "gennem",
626
+ "hos",
627
+ "i",
628
+ "med",
629
+ "mellem",
630
+ "men",
631
+ "mod",
632
+ "og",
633
+ "om",
634
+ "over",
635
+ "på",
636
+ "samt",
637
+ "så",
638
+ "til",
639
+ "uden",
640
+ "under",
641
+ "ved"
642
+ ],
643
+ acronyms: [
644
+ ...intl,
645
+ "API",
646
+ "CEO",
647
+ "BNP",
648
+ "EU",
649
+ "FN",
650
+ "NATO",
651
+ "DNA",
652
+ "CVR",
653
+ "CPR"
654
+ ]
655
+ },
656
+ // German capitalizes all nouns by orthographic rule; title case capitalizes
657
+ // every significant word (nouns included), lowering only these minor words.
658
+ de: {
659
+ style: "title",
660
+ lowercase: [
661
+ "aber",
662
+ "an",
663
+ "auf",
664
+ "aus",
665
+ "bei",
666
+ "bis",
667
+ "bzw",
668
+ "das",
669
+ "dem",
670
+ "den",
671
+ "denn",
672
+ "der",
673
+ "des",
674
+ "die",
675
+ "durch",
676
+ "ein",
677
+ "eine",
678
+ "einem",
679
+ "einen",
680
+ "einer",
681
+ "eines",
682
+ "für",
683
+ "gegen",
684
+ "hinter",
685
+ "in",
686
+ "mit",
687
+ "nach",
688
+ "neben",
689
+ "oder",
690
+ "ohne",
691
+ "sondern",
692
+ "sowie",
693
+ "über",
694
+ "um",
695
+ "und",
696
+ "unter",
697
+ "von",
698
+ "vor",
699
+ "während",
700
+ "wegen",
701
+ "zu",
702
+ "zwischen"
703
+ ],
704
+ acronyms: [
705
+ ...intl,
706
+ "API",
707
+ "CEO",
708
+ "BIP",
709
+ "GmbH",
710
+ "AG",
711
+ "MwSt",
712
+ "USt",
713
+ "EU",
714
+ "UNO",
715
+ "NATO",
716
+ "KI",
717
+ "EDV",
718
+ "DSGVO",
719
+ "AGB",
720
+ "PLZ",
721
+ "KFZ",
722
+ "LKW",
723
+ "PKW",
724
+ "IBAN",
725
+ "EZB"
726
+ ]
727
+ },
728
+ es: {
729
+ style: "title",
730
+ lowercase: [
731
+ "a",
732
+ "al",
733
+ "ante",
734
+ "bajo",
735
+ "cabe",
736
+ "con",
737
+ "contra",
738
+ "de",
739
+ "del",
740
+ "desde",
741
+ "durante",
742
+ "e",
743
+ "el",
744
+ "en",
745
+ "entre",
746
+ "hacia",
747
+ "hasta",
748
+ "la",
749
+ "las",
750
+ "lo",
751
+ "los",
752
+ "mediante",
753
+ "ni",
754
+ "o",
755
+ "para",
756
+ "pero",
757
+ "por",
758
+ "que",
759
+ "según",
760
+ "sin",
761
+ "sino",
762
+ "so",
763
+ "sobre",
764
+ "tras",
765
+ "u",
766
+ "un",
767
+ "una",
768
+ "unas",
769
+ "unos",
770
+ "versus",
771
+ "vía",
772
+ "y"
773
+ ],
774
+ acronyms: [
775
+ ...intl,
776
+ "API",
777
+ "CEO",
778
+ "CFO",
779
+ "COO",
780
+ "PIB",
781
+ "IVA",
782
+ "UE",
783
+ "ONU",
784
+ "ONG",
785
+ "PYME",
786
+ "ADN",
787
+ "OTAN",
788
+ "OMS",
789
+ "FMI",
790
+ "IPC",
791
+ "UNESCO",
792
+ "UNICEF"
793
+ ]
794
+ },
795
+ et: {
796
+ style: "title",
797
+ lowercase: [
798
+ "aga",
799
+ "ega",
800
+ "ent",
801
+ "et",
802
+ "ja",
803
+ "kui",
804
+ "kuid",
805
+ "nagu",
806
+ "ning",
807
+ "sest",
808
+ "vaid",
809
+ "või"
810
+ ],
811
+ acronyms: [
812
+ ...intl,
813
+ "API",
814
+ "SKT",
815
+ "EL",
816
+ "ÜRO",
817
+ "NATO",
818
+ "DNA"
819
+ ]
820
+ },
821
+ fr: {
822
+ style: "title",
823
+ lowercase: [
824
+ "à",
825
+ "après",
826
+ "au",
827
+ "aux",
828
+ "avant",
829
+ "avec",
830
+ "car",
831
+ "chez",
832
+ "comme",
833
+ "contre",
834
+ "d",
835
+ "dans",
836
+ "de",
837
+ "depuis",
838
+ "des",
839
+ "donc",
840
+ "du",
841
+ "dès",
842
+ "en",
843
+ "entre",
844
+ "envers",
845
+ "et",
846
+ "hors",
847
+ "l",
848
+ "la",
849
+ "le",
850
+ "les",
851
+ "mais",
852
+ "malgré",
853
+ "ne",
854
+ "ni",
855
+ "or",
856
+ "ou",
857
+ "par",
858
+ "parmi",
859
+ "pour",
860
+ "que",
861
+ "qui",
862
+ "sans",
863
+ "sauf",
864
+ "selon",
865
+ "si",
866
+ "sous",
867
+ "sur",
868
+ "un",
869
+ "une",
870
+ "vers",
871
+ "via"
872
+ ],
873
+ acronyms: [
874
+ ...intl,
875
+ "API",
876
+ "PDG",
877
+ "PIB",
878
+ "R&D",
879
+ "UE",
880
+ "ONU",
881
+ "PME",
882
+ "TVA",
883
+ "RH",
884
+ "SARL",
885
+ "TGV",
886
+ "ADN",
887
+ "OTAN",
888
+ "OMS",
889
+ "FMI",
890
+ "INSEE",
891
+ "SMIC",
892
+ "RGPD"
893
+ ]
894
+ },
895
+ // No "API" (Italian "api" = bees) and no short note/word forms (ai, do, re,
896
+ // la, si …) — they would clobber everyday words.
897
+ it: {
898
+ style: "title",
899
+ lowercase: [
900
+ "a",
901
+ "agli",
902
+ "ai",
903
+ "al",
904
+ "alla",
905
+ "alle",
906
+ "allo",
907
+ "che",
908
+ "coi",
909
+ "col",
910
+ "come",
911
+ "con",
912
+ "da",
913
+ "dai",
914
+ "dal",
915
+ "dalla",
916
+ "dei",
917
+ "del",
918
+ "della",
919
+ "delle",
920
+ "dello",
921
+ "di",
922
+ "e",
923
+ "ed",
924
+ "fra",
925
+ "gli",
926
+ "i",
927
+ "il",
928
+ "in",
929
+ "la",
930
+ "le",
931
+ "lo",
932
+ "ma",
933
+ "né",
934
+ "negli",
935
+ "nei",
936
+ "nel",
937
+ "nella",
938
+ "nelle",
939
+ "o",
940
+ "od",
941
+ "per",
942
+ "se",
943
+ "su",
944
+ "sugli",
945
+ "sui",
946
+ "sul",
947
+ "sulla",
948
+ "tra",
949
+ "un",
950
+ "una",
951
+ "uno"
952
+ ],
953
+ acronyms: [
954
+ ...intl,
955
+ "CEO",
956
+ "PIL",
957
+ "IVA",
958
+ "UE",
959
+ "ONU",
960
+ "PMI",
961
+ "NATO",
962
+ "OMS",
963
+ "FMI",
964
+ "ISTAT",
965
+ "SRL",
966
+ "DNA"
967
+ ]
968
+ },
969
+ pt: {
970
+ style: "title",
971
+ lowercase: [
972
+ "a",
973
+ "à",
974
+ "às",
975
+ "ante",
976
+ "ao",
977
+ "aos",
978
+ "após",
979
+ "as",
980
+ "até",
981
+ "com",
982
+ "contra",
983
+ "da",
984
+ "das",
985
+ "de",
986
+ "desde",
987
+ "do",
988
+ "dos",
989
+ "e",
990
+ "em",
991
+ "entre",
992
+ "mas",
993
+ "na",
994
+ "nas",
995
+ "nem",
996
+ "no",
997
+ "nos",
998
+ "num",
999
+ "numa",
1000
+ "o",
1001
+ "os",
1002
+ "ou",
1003
+ "para",
1004
+ "pela",
1005
+ "pelo",
1006
+ "per",
1007
+ "perante",
1008
+ "por",
1009
+ "que",
1010
+ "sem",
1011
+ "sob",
1012
+ "sobre",
1013
+ "um",
1014
+ "uma",
1015
+ "via"
1016
+ ],
1017
+ acronyms: [
1018
+ ...intl,
1019
+ "API",
1020
+ "CEO",
1021
+ "PIB",
1022
+ "UE",
1023
+ "ONU",
1024
+ "EUA",
1025
+ "PME",
1026
+ "ONG",
1027
+ "OTAN",
1028
+ "OMS",
1029
+ "FMI",
1030
+ "IBGE",
1031
+ "CPF",
1032
+ "CNPJ"
1033
+ ]
1034
+ },
1035
+ sv: {
1036
+ style: "title",
1037
+ lowercase: [
1038
+ "av",
1039
+ "efter",
1040
+ "eller",
1041
+ "en",
1042
+ "ett",
1043
+ "för",
1044
+ "före",
1045
+ "från",
1046
+ "genom",
1047
+ "hos",
1048
+ "i",
1049
+ "med",
1050
+ "mellan",
1051
+ "men",
1052
+ "mot",
1053
+ "och",
1054
+ "om",
1055
+ "över",
1056
+ "på",
1057
+ "samt",
1058
+ "så",
1059
+ "till",
1060
+ "utan",
1061
+ "under",
1062
+ "vid"
1063
+ ],
1064
+ acronyms: [
1065
+ ...intl,
1066
+ "API",
1067
+ "CEO",
1068
+ "VD",
1069
+ "BNP",
1070
+ "EU",
1071
+ "FN",
1072
+ "NATO",
1073
+ "DNA",
1074
+ "SCB"
1075
+ ]
1076
+ }
1077
+ };
1078
+
427
1079
  const locale = {
428
1080
  "ar-SA": {
429
1081
  dateTime: "%x, %X",
@@ -10779,6 +11431,7 @@
10779
11431
  exports.findLocale = findLocale;
10780
11432
  exports.formatLocale = formatLocale;
10781
11433
  exports.locale = locale;
11434
+ exports.titleCaseLocale = titleCaseLocale;
10782
11435
  exports.translateLocale = translateLocale;
10783
11436
 
10784
11437
  }));