diff --git a/cdn/dev/img/icon-ldml.png b/cdn/dev/img/icon-ldml.png
new file mode 100644
index 000000000..f2f2bfe08
Binary files /dev/null and b/cdn/dev/img/icon-ldml.png differ
diff --git a/developer/index.php b/developer/index.php
index d0b7c26c0..424f087cd 100644
--- a/developer/index.php
+++ b/developer/index.php
@@ -25,6 +25,15 @@
+
-
\ No newline at end of file
+
diff --git a/developer/ldml/guide/glossary.md b/developer/ldml/guide/glossary.md
new file mode 100644
index 000000000..88cadf3e0
--- /dev/null
+++ b/developer/ldml/guide/glossary.md
@@ -0,0 +1,18 @@
+---
+title: Glossary for LDML
+---
+
+## B {#b-glossary}
+
+### BCP 47 language tag
+
+A standardized code that is used to identify human languages on the Internet. More on [BCP 47](https://www.rfc-editor.org/info/bcp47).
+
+There are many possible subtags, but only three types are currently used in most places in Keyman Developer:
+
+* [language subtag](../../current-version/reference/bcp-47#toc-the-language-subtag)
+* [script subtag](../../current-version/reference/bcp-47#toc-the-script-subtag)
+* [region subtag](../../current-version/reference/bcp-47#toc-the-region-subtag)
+
+More information about BCP 47 language tag and full details on [how they are used in Keyman Developer](../../current-version/reference/bcp-47).
+
diff --git a/developer/ldml/guide/index.md b/developer/ldml/guide/index.md
new file mode 100644
index 000000000..69cf0b463
--- /dev/null
+++ b/developer/ldml/guide/index.md
@@ -0,0 +1,8 @@
+---
+title: LDML Guide
+---
+
+## Language elements
+
+* [LDML Language Overview](overview)
+* [Glossary](glossary)
diff --git a/developer/ldml/guide/overview.md b/developer/ldml/guide/overview.md
new file mode 100644
index 000000000..d4ad6f6d2
--- /dev/null
+++ b/developer/ldml/guide/overview.md
@@ -0,0 +1,7 @@
+---
+title: LDML overview
+---
+
+The LDML format …. Source files have the **.xml** extension and are text files.
+
+…
diff --git a/developer/ldml/index.md b/developer/ldml/index.md
new file mode 100644
index 000000000..c14fac630
--- /dev/null
+++ b/developer/ldml/index.md
@@ -0,0 +1,17 @@
+---
+title: LDML Format
+---
+
+LDML is the Locale Data Markup Language. It it an XML-based format specified as the Unicode Consortium’s specification [UTS#35 Part 7], maintained by the [Common Locale Data Repository (CLDR)][CLDR] Technical Commitee.
+
+Like the [Keyman Keyboard Language (.kmn) format][kmn], the LDML Keyboard format defines how keystrokes are interpreted and how keys are laid out in a virtual keyboard. The LDML format has been defined from the beginning to become a cross-platform industry standard, with active participation from several Unicode member organizations including SIL Global.
+
+[LDML guide](guide)
+
+[LDML reference](reference)
+
+
+
+[CLDR]: https://cldr.unicode.org
+[kmn]: ../language/
+[UTS#35 Part 7]: https://www.unicode.org/reports/tr35/tr35-keyboards.html
diff --git a/developer/ldml/reference/display.md b/developer/ldml/reference/display.md
new file mode 100644
index 000000000..1646d4f74
--- /dev/null
+++ b/developer/ldml/reference/display.md
@@ -0,0 +1,47 @@
+---
+title: display
+---
+
+## Summary
+
+The **`display`** element is used to overide the keytops for certain keys.
+
+## Syntax
+
+```xml
+
+
+```
+
+### Attributes
+
+`id`
+: The …
+
+## Description
+
+The `display` element is used to…
+
+## Examples
+
+### Example: Using `display`
+
+```xml
+
+
+```
+
+## Version history
+
+The `display` element was added in LDML v46
+
+
+
+## See Also
+
+- LDML Specification: [`` in UTS#35 Part 7][tr35-element-display]
+
+[tr35-element-display]: https://www.unicode.org/reports/tr35/tr35-keyboards.html#element-display
+
diff --git a/developer/ldml/reference/displayOptions.md b/developer/ldml/reference/displayOptions.md
new file mode 100644
index 000000000..27e33cb8f
--- /dev/null
+++ b/developer/ldml/reference/displayOptions.md
@@ -0,0 +1,47 @@
+---
+title: displayOptions
+---
+
+## Summary
+
+The **`displayOptions`** element is used to provide setting information for keytop displays.
+
+## Syntax
+
+```xml
+
+
+```
+
+### Attributes
+
+`id`
+: The …
+
+## Description
+
+The `displayOptions` element is used to…
+
+## Examples
+
+### Example: Using `displayOptions`
+
+```xml
+
+
+```
+
+## Version history
+
+The `displayOptions` element was added in LDML v46
+
+
+
+## See Also
+
+- LDML Specification: [`` in UTS#35 Part 7][tr35-element-displayOptions]
+
+[tr35-element-displayOptions]: https://www.unicode.org/reports/tr35/tr35-keyboards.html#element-displayoptions
+
diff --git a/developer/ldml/reference/displays.md b/developer/ldml/reference/displays.md
new file mode 100644
index 000000000..fa2cec48a
--- /dev/null
+++ b/developer/ldml/reference/displays.md
@@ -0,0 +1,47 @@
+---
+title: displays
+---
+
+## Summary
+
+The **`displays`** element contains a collection of [``](display) elements as well as an optional [``](displayOptions) element.
+
+## Syntax
+
+```xml
+
+
+```
+
+### Attributes
+
+`id`
+: The …
+
+## Description
+
+The `displays` element is used to contain all [``](key) elements and the optional [``](displayOptions) element for the keyboard. There may only be one of these elements.
+
+## Examples
+
+### Example: Using `displays`
+
+```xml
+
+
+```
+
+## Version history
+
+The `displays` element was added in LDML v46
+
+
+
+## See Also
+
+- LDML Specification: [`` in UTS#35 Part 7][tr35-element-displays]
+
+[tr35-element-displays]: https://www.unicode.org/reports/tr35/tr35-keyboards.html#element-displays
+
diff --git a/developer/ldml/reference/flick.md b/developer/ldml/reference/flick.md
new file mode 100644
index 000000000..6d61e4022
--- /dev/null
+++ b/developer/ldml/reference/flick.md
@@ -0,0 +1,49 @@
+---
+title: flick
+---
+
+## Summary
+
+The **`flick`** element represents a set of possible flick gestures.
+
+## Syntax
+
+```xml
+
+
+```
+
+### Attributes
+
+`id`
+: The identifier for this flick. Only one flick may have this identifier, but it doesn't have to be diffrent from any other kinds of identifiers.
+
+## Description
+
+The **`flick`** element represents a set of possible flick gestures which can result in output text.
+
+The element is referenced by its id, allowing multiple [``](key) elements to reference and reuse the same flick set.
+
+## Examples
+
+### Example: Using `flick`
+
+```xml
+
+
+```
+
+## Version history
+
+The `flick` element was added in LDML v46
+
+
+
+## See Also
+
+- LDML Specification: [`` in UTS#35 Part 7][tr35-element-flick]
+
+[tr35-element-flick]: https://www.unicode.org/reports/tr35/tr35-keyboards.html#element-flick
+
diff --git a/developer/ldml/reference/flickSegment.md b/developer/ldml/reference/flickSegment.md
new file mode 100644
index 000000000..10b7e84e8
--- /dev/null
+++ b/developer/ldml/reference/flickSegment.md
@@ -0,0 +1,57 @@
+---
+title: flickSegment
+---
+
+## Summary
+
+The **`flickSegment`** element represents one particular set of gestures which will produce a specific output.
+
+## Syntax
+
+```xml
+
+
+```
+
+### Attributes
+
+`id`
+: The …
+
+## Description
+
+The `flickSegment` element is used to represent one set of gestures (an ordered path), and their output. For example, "Sliding the touch North produces `A`". It could include more than one keyword, such as "Sliding the touch West and then South produces `B`".
+
+### Directions
+
+The following table attempts to show the eight directions supported by the format, relative to the center (•). So `nw` for Northwest means diagonally Up-and-Left, whereas `e` for East means directly to the right.
+
+| | | |
+|------|-----|------|
+| `nw` | `n` | `ne` |
+| `w` | • | `e` |
+| `sw` | `s` | `se` |
+
+## Examples
+
+### Example: Using `flickSegment`
+
+```xml
+
+
+```
+
+## Version history
+
+The `flickSegment` element was added in LDML v46
+
+
+
+## See Also
+
+- LDML Specification: [`` in UTS#35 Part 7][tr35-element-flickSegment]
+
+[tr35-element-flickSegment]: https://www.unicode.org/reports/tr35/tr35-keyboards.html#element-flicksegment
+
diff --git a/developer/ldml/reference/flicks.md b/developer/ldml/reference/flicks.md
new file mode 100644
index 000000000..4aaa691ac
--- /dev/null
+++ b/developer/ldml/reference/flicks.md
@@ -0,0 +1,49 @@
+---
+title: flicks
+---
+
+## Summary
+
+The **`flicks`** element contains a collection of [``](flick) elements.
+
+## Syntax
+
+```xml
+
+ …
+
+```
+
+### Attributes
+
+`id`
+: The …
+
+## Description
+
+The `flicks` element is used to contain all [``](flick) elements for the keyboard. There may only be one of these elements.
+
+## Examples
+
+### Example: Using `flicks`
+
+```xml
+
+ …
+
+```
+
+## Version history
+
+The `flicks` element was added in LDML v46
+
+
+
+## See Also
+
+- LDML Specification: [`` in UTS#35 Part 7][tr35-element-flicks]
+
+[tr35-element-flicks]: https://www.unicode.org/reports/tr35/tr35-keyboards.html#element-flicks
+
diff --git a/developer/ldml/reference/form.md b/developer/ldml/reference/form.md
new file mode 100644
index 000000000..82800f3a3
--- /dev/null
+++ b/developer/ldml/reference/form.md
@@ -0,0 +1,51 @@
+---
+title: form
+---
+
+## Summary
+
+The **`form`** element is used to define or override the scan code layout of a hardware keyboard.
+
+## Syntax
+
+```xml
+
+```
+
+Parent Element: [``](forms)
+
+### Attributes
+
+`id`
+: The …
+
+## Description
+
+The `form` element is used to define or override the scan code layout of a hardware keyboard.
+
+Note that keyboard developers will not normally need or want to use this element, but rather to use the pre-defined hardware forms.
+
+## Examples
+
+### Example: Using `form`
+
+```xml
+
+```
+
+## Version history
+
+The `form` element was added in LDML v46
+
+
+
+## See Also
+
+- LDML Specification: [`