diff --git a/localedata/locales/lv_LV b/localedata/locales/lv_LV
index 32b3ddaaeb..8e41b2f00a 100644
--- a/localedata/locales/lv_LV
+++ b/localedata/locales/lv_LV
@@ -56,63 +56,95 @@ LC_COLLATE
 
 copy "iso14651_t1"
 
-% CLDR collation rules for Latvian:
+% CLDR collation rules for Latvian (as of 2024-02-07):
 % (see: https://unicode.org/cldr/trac/browser/trunk/common/collation/lv.xml)
 %
-% &[before 1]D<č<<<Č
-% &[before 1]H<ģ<<<Ģ
-% &I<<y<<<Y
-% &[before 1]L<ķ<<<Ķ
-% &[before 1]M<ļ<<<Ļ
-% &[before 1]O<ņ<<<Ņ
-% &[before 1]S<ŗ<<<Ŗ
-% &[before 1]T<š<<<Š
-% &[before 1]Ʒ<ž<<<Ž
+% &A<ā<<<Ā
+% &C<č<<<Č
+% &E<ē<<<Ē
+% &G<ģ<<<Ģ
+% &I<y<<<Y<ī<<<Ī
+% &K<ķ<<<Ķ
+% &L<ļ<<<Ļ
+% &N<ņ<<<Ņ
+% &O<ō<<<Ō
+% &R<ŗ<<<Ŗ
+% &S<š<<<Š
+% &U<ū<<<Ū
+% &Z<ž<<<Ž
 %
 % The following rules implement the same order for glibc.
 
+collating-symbol <a-macron>
 collating-symbol <c-caron>
+collating-symbol <e-macron>
 collating-symbol <g-cedilla>
+collating-symbol <ypsilon>
+collating-symbol <i-macron>
 collating-symbol <k-cedilla>
 collating-symbol <l-cedilla>
 collating-symbol <n-cedilla>
+collating-symbol <l-cedilla>
+collating-symbol <o-macron>
 collating-symbol <r-cedilla>
 collating-symbol <s-caron>
+collating-symbol <u-macron>
 collating-symbol <z-caron>
 
-reorder-after <BEFORE-D>
+reorder-after <AFTER-A>
+<a-macron>
+reorder-after <AFTER-C>
 <c-caron>
-reorder-after <BEFORE-H>
+reorder-after <AFTER-E>
+<e-macron>
+reorder-after <AFTER-G>
 <g-cedilla>
-reorder-after <BEFORE-L>
+reorder-after <AFTER-I>
+<ypsilon>
+<i-macron>
+reorder-after <AFTER-K>
 <k-cedilla>
-reorder-after <BEFORE-M>
+reorder-after <AFTER-L>
 <l-cedilla>
-reorder-after <BEFORE-O>
+reorder-after <AFTER-N>
 <n-cedilla>
-reorder-after <BEFORE-S>
+reorder-after <AFTER-O>
+<o-macron>
+reorder-after <AFTER-R>
 <r-cedilla>
-reorder-after <BEFORE-T>
+reorder-after <AFTER-S>
 <s-caron>
-reorder-after <BEFORE-EZH>
+reorder-after <AFTER-U>
+<u-macron>
+reorder-after <AFTER-Z>
 <z-caron>
 
+<U0101> <a-macron>;<BASE>;<MIN>;IGNORE % ā
+<U0100> <a-macron>;<BASE>;<CAP>;IGNORE % Ā
 <U010D> <c-caron>;<BASE>;<MIN>;IGNORE % č
 <U010C> <c-caron>;<BASE>;<CAP>;IGNORE % Č
+<U0113> <e-macron>;<BASE>;<MIN>;IGNORE % ē
+<U0112> <e-macron>;<BASE>;<CAP>;IGNORE % Ē
 <U0123> <g-cedilla>;<BASE>;<MIN>;IGNORE % ģ
 <U0122> <g-cedilla>;<BASE>;<CAP>;IGNORE % Ģ
-<U0079> <S0069>;<LOWLINE>;<MIN>;IGNORE % y
-<U0059> <S0069>;<LOWLINE>;<CAP>;IGNORE % Y
+<U0079> <ypsilon>;<BASE>;<MIN>;IGNORE % y
+<U0059> <ypsilon>;<BASE>;<CAP>;IGNORE % Y
+<U012B> <i-macron>;<BASE>;<MIN>;IGNORE % ī
+<U012A> <i-macron>;<BASE>;<CAP>;IGNORE % Ī
 <U0137> <k-cedilla>;<BASE>;<MIN>;IGNORE % ķ
 <U0136> <k-cedilla>;<BASE>;<CAP>;IGNORE % Ķ
 <U013C> <l-cedilla>;<BASE>;<MIN>;IGNORE % ļ
 <U013B> <l-cedilla>;<BASE>;<CAP>;IGNORE % Ļ
 <U0146> <n-cedilla>;<BASE>;<MIN>;IGNORE % ņ
 <U0145> <n-cedilla>;<BASE>;<CAP>;IGNORE % Ņ
+<U014D> <o-macron>;<BASE>;<MIN>;IGNORE % ō
+<U014C> <o-macron>;<BASE>;<CAP>;IGNORE % Ō
 <U0157> <r-cedilla>;<BASE>;<MIN>;IGNORE % ŗ
 <U0156> <r-cedilla>;<BASE>;<CAP>;IGNORE % Ŗ
 <U0161> <s-caron>;<BASE>;<MIN>;IGNORE % š
 <U0160> <s-caron>;<BASE>;<CAP>;IGNORE % Š
+<U016B> <u-macron>;<BASE>;<MIN>;IGNORE % ū
+<U016A> <u-macron>;<BASE>;<CAP>;IGNORE % Ū
 <U017E> <z-caron>;<BASE>;<MIN>;IGNORE % ž
 <U017D> <z-caron>;<BASE>;<CAP>;IGNORE % Ž
 
diff --git a/localedata/lv_LV.UTF-8.in b/localedata/lv_LV.UTF-8.in
index db7e83c77e..a894627f0c 100644
--- a/localedata/lv_LV.UTF-8.in
+++ b/localedata/lv_LV.UTF-8.in
@@ -2,63 +2,109 @@ a
 A
 å
 Å
-ā
-Ā
 aa
 Aa
-āa
-Āa
 ab
 Ab
-āb
-Āb
 æ
 Æ
+ā
+Ā
+āa
+Āa
+āb
+Āb
 c
 C
 ç
 Ç
 č
 Č
+ča
+Ča
+čb
+Čb
 D
+e
+E
+ē
+Ē
+ēa
+Ēa
+ēb
+Ēb
+g
+G
 ģ
 Ģ
+ģa
+Ģa
+ģb
+Ģb
+h
 H
 i
 I
-ī
-Ī
-y
-Y
 ia
 Ia
-īa
-Īa
-ya
-Ya
 ib
 Ib
-īb
-Īb
+y
+Y
+ya
+Ya
 yb
 Yb
+ī
+Ī
+īa
+Īa
+īb
+Īb
 ĵ
 Ĵ
 ĵa
 Ĵa
 ĵb
 Ĵb
+k
+K
 ķ
 Ķ
+ķa
+Ķa
+ķb
+Ķb
+l
 L
 ļ
 Ļ
+ļa
+Ļa
+ļb
+Ļb
+m
 M
+n
+N
 ņ
 Ņ
+ņa
+Ņa
+ņb
+Ņb
+o
 O
 ø
 Ø
+ō
+Ō
+ōa
+Ōa
+ōb
+Ōb
+r
+R
 ra
 Ra
 rb
@@ -69,6 +115,7 @@ Rb
 Ŗa
 ŗb
 Ŗb
+s
 S
 sa
 Sa
@@ -82,6 +129,14 @@ Sb
 Šb
 t
 T
+u
+U
+ū
+Ū
+ūa
+Ūa
+ūb
+Ūb
 x
 z
 Z
