diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9f700f4b..34a99352 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -43,9 +43,9 @@ jobs:
readarray -t ignoresArray <<< $(find ./_includes/locale/strings/keyboards/ -maxdepth 1 -name '*.php' ! -name "en.php" \
-execdir basename {} .php ';')
baseURL="http://localhost:8053"
- ignoreStr=(" --exclude */downloads/releases/*")
+ ignoreStr=(" --exclude ${baseURL}*downloads/releases/*")
for locale in "${ignoresArray[@]}"; do
- ignoreStr+=" --exclude ${baseURL}/$locale/*"
+ ignoreStr+=" --exclude ${baseURL}/${locale}/*"
done
echo "ignoreStr: ${ignoreStr[@]}"
npx broken-link-checker ${baseURL}/_test --recursive --ordered ---host-requests 50 -e --filter-level 3 ${ignoreStr} | tee blc.log
diff --git a/.htaccess b/.htaccess
index b24dbb7c..5ae4b331 100644
--- a/.htaccess
+++ b/.htaccess
@@ -23,15 +23,190 @@ RewriteBase /
# Add mime type for apple-app-site-association
AddType application/json apple-app-site-association
-# Deny crowdin.yml
-RewriteRule ^crowdin.yml$ = [F,L]
-
# Custom error messages (need to pass the original request)
-ErrorDocument 404 /_includes/errors/404
+ErrorDocument 404 /_includes/errors/404.php
+
+RewriteRule "^_includes/errors/404(.php)?$" "/_includes/errors/404.php" [END]
+
+# ##################################################################
+# Reject special and legacy top-level files without i18n
+# ##################################################################
+
+# Any existing file in _common/assets - must come first because it is overridden below otherwise
+RewriteCond "%{DOCUMENT_ROOT}/$1/$2" -f
+RewriteRule "^(_common/assets)/(.+)$" - [END]
+
+#
+# The following top-level files and folders are not directly visible through URLs:
+#
+# _common/ (excl. _common/assets/)
+# _content/
+# _includes/
+# _scripts/
+# .github/
+# resources/
+# tests/
+# .editorconfig
+# .gitattributes
+# .gitignore
+# .htaccess (this file, not listed explicitly)
+# build.sh
+# composer.json
+# composer.lock
+# crowdin.yml
+# Dockerfile
+# package-lock.json
+# package.json
+# phpunit.xml
+# README.md
+# TODO.md
+#
+RewriteRule "^(_common|_content|_includes|_scripts|.github|resources|tests)(/.*|$)" - [F,END]
+RewriteRule "^(.editorconfig|.gitattributes|.gitignore|build.sh|composer.json|composer.lock|crowdin.yml|Dockerfile|package-lock.json|package.json|phpunit.xml|README.md|TODO.md)$" - [F,END]
+
+#
+# The following paths are accessible but controlled by sub-folder .htaccess:
+# _legacy/
+# Thus this rule currently has no effect but will come into play if the
+# _legacy/.htaccess file is removed.
+#
+RewriteRule "^(_legacy)(/.*|$)" - [F,END]
+
+# ##################################################################
+# Handle special and legacy top-level files without i18n
+# ##################################################################
+
+#
+# The following top-level files and folders do not have i18n redirection,
+# but have .php and .md rewrites. They do not have sub-folders.
+# _common/assets/ (handled above because _common/ itself is excluded)
+# _control/
+# _ie_thunk/
+# _test/
+#
+# The following top-level files and folders do not have .php or .md rewrites
+# .well-known/
+# cdn/
+# go/
+# robots.txt
+# tier.txt
+#
# apple-app-site-association
RewriteRule "^.well-known/apple-app-site-association$" "/.well-known/apple-app-site-association.json" [L]
+# Add terminating slash on top-level folders by redirecting
+RewriteCond "$1" ^(_control|_ie_thunk|_test|.well-known|go|cdn)$
+RewriteRule "^([^/]+)$" "$1/" [R,L]
+
+# .php rewrite
+RewriteCond "$1" ^(_control|_ie_thunk|_test)$
+RewriteCond "%{DOCUMENT_ROOT}/$1/$2.php" -f
+RewriteRule "^([^/]+)/(.+)$" "/$1/$2.php" [END]
+
+# .md rewrite
+RewriteCond "$1" ^(_control|_ie_thunk|_test)$
+RewriteCond "%{DOCUMENT_ROOT}/$1/$2.md" -f
+RewriteRule "^([^/]+)/(.+)$" "/_includes/includes/md/mdhost.php?file=$1/$2.md" [END]
+
+# .md rewrite for folder; no .php rewrite for folder
+RewriteCond "$1" ^(_control|_ie_thunk|_test)$
+RewriteCond "%{DOCUMENT_ROOT}/$1/index.md" -f
+RewriteRule "^([^/]+)/$" "/_includes/includes/md/mdhost.php?file=$1/index.md" [END]
+
+# Any existing file in any of those folders or sub folders
+RewriteCond "$1" ^(_control|_ie_thunk|_test|.well-known|go|cdn)$
+RewriteCond "%{DOCUMENT_ROOT}/$1/$2" -f
+RewriteRule "^([^/]+)/(.+)$" - [END]
+
+# Top-level files
+RewriteCond "$1" ^(robots.txt|tier.txt)$
+RewriteCond "%{DOCUMENT_ROOT}/$1" -f
+RewriteRule "^([^/]+)$" - [END]
+
+# ##################################################################
+# Redirections - before rewriting
+# ##################################################################
+
+# ------------------------------------------------------------------
+# PHP and Markdown redirections
+# ------------------------------------------------------------------
+
+# Remove index.md or index.php and redirect (and stop processing)
+RewriteRule "^((.+)/)?index(\.md|\.php)?$" "$1" [R,L]
+
+# Remove .php extension and redirect
+RewriteRule "^(.+)\.php$" "$1" [R,L]
+RewriteRule "^(.+)\.md$" "$1" [R,L]
+
+# ------------------------------------------------------------------
+# For consistency:
+# * remove trailing `/` for files if present
+# * add trailing `/` for folders if not present
+# ------------------------------------------------------------------
+
+#
+# Note: we don't test the content of the lang path parameter (?:[^/]+)/
+# here; that is managed exclusively in the i18n section later.
+#
+
+# Redirect folder to folder/ for .php
+RewriteCond "%{DOCUMENT_ROOT}/_content/$2" -d
+RewriteCond "%{DOCUMENT_ROOT}/_content/$2/index.php" -f
+RewriteRule "^([^/]+)/(.+[^/])$" "$1/$2/" [R,L]
+
+# Redirect folder to folder/ for .md
+RewriteCond "%{DOCUMENT_ROOT}/_content/$2" -d
+RewriteCond "%{DOCUMENT_ROOT}/_content/$2/index.md" -f
+RewriteRule "^([^/]+)/(.+[^/])$" "$1/$2/" [R,L]
+
+# Redirect file/ to file (.md)
+RewriteCond "%{DOCUMENT_ROOT}/_content/$2" !-d
+RewriteCond "%{DOCUMENT_ROOT}/_content/$2.md" -f
+RewriteRule "^([^/]+)/(.+)/$" "$1/$2" [R,L]
+
+# Redirect file/ to file (.php)
+RewriteCond "%{DOCUMENT_ROOT}/_content/$2" !-d
+RewriteCond "%{DOCUMENT_ROOT}/_content/$2.php" -f
+RewriteRule "^([^/]+)/(.+)/$" "$1/$2" [R,L]
+
+#
+# top-level folders and files
+#
+
+# Redirect folder to folder/ for .php
+RewriteCond "%{DOCUMENT_ROOT}/$1" -d
+RewriteCond "%{DOCUMENT_ROOT}/$1/index.php" -f
+RewriteRule "^(.+[^/])$" "$1/" [R,L]
+
+# Redirect folder to folder/ for .md
+RewriteCond "%{DOCUMENT_ROOT}/$1" -d
+RewriteCond "%{DOCUMENT_ROOT}/$1/index.md" -f
+RewriteRule "^(.+[^/])$" "$1/" [R,L]
+
+# Redirect file/ to file (.md)
+RewriteCond "%{DOCUMENT_ROOT}/$1" !-d
+RewriteCond "%{DOCUMENT_ROOT}/$1.md" -f
+RewriteRule "^(.+)/$" "$1" [R,L]
+
+# Redirect file/ to file (.php)
+RewriteCond "%{DOCUMENT_ROOT}/$1" !-d
+RewriteCond "%{DOCUMENT_ROOT}/$1.php" -f
+RewriteRule "^(.+)/$" "$1" [R,L]
+
+# ------------------------------------------------------------------
+# Known path redirections
+# ------------------------------------------------------------------
+
+# Redirect /archive/downloads.php
+RewriteRule "^archive/downloads(.php)?$" "/downloads/archive/" [NC,R=301,END,QSA]
+
+# ios and iphone and ipad to iphone-and-ipad
+RewriteRule "^(ios|iphone|ipad)(/.*)?$" "/iphone-and-ipad$2" [NC,R=301,END,QSA]
+
+# Redirect Android/iOS app to help homepage
+RewriteRule "^(android|iphone-and-ipad)/app(.*)$" "https://help.keyman.com/products/$1/" [NC,R=301,END]
+
# macosx and macos to mac (ignore case)
RewriteRule "^(macosx|macos)\b(.*)$" "/mac$2" [NC,R=301,END,QSA]
@@ -39,29 +214,22 @@ RewriteRule "^(macosx|macos)\b(.*)$" "/mac$2" [NC,R=301,END,QSA]
RewriteRule "^plus.*" "/" [NC,R=301,END,QSA]
# Redirect PHP unit tests
-RewriteRule "^tests(\/.*)?" "/" [NC,R=301,END,QSA]
+RewriteRule "^tests(/.*)?" "/" [NC,R=301,END,QSA]
# /donate -> donate.keyman.com
-RedirectMatch 301 "^(?i)/donate(\/.*)?" "https://donate.keyman.com"
+RedirectMatch 301 "^(?i)/donate(/.*)?" "https://donate.keyman.com"
# /privacy -> SIL Privacy policy
-RedirectMatch 301 "^(?i)/privacy(\/.*)?" "https://software.sil.org/language-software-privacy-policy/"
+RedirectMatch 301 "^(?i)/privacy(/.*)?" "https://software.sil.org/language-software-privacy-policy/"
# desktop to windows
RewriteRule "^desktop(/.*)?" "/windows$1" [NC,R=301,END,QSA]
-# releases-tier/download
-# note: the tier is currently ignored
-RewriteRule "^downloads/releases/(alpha|beta|stable)/(.+)$" "/downloads/releases/_version_downloads.php?tier=$1&version=$2" [END]
-
-# releases-download
-RewriteRule "^downloads/releases/(.+)$" "/downloads/releases/_version_downloads.php?version=$1" [END]
-
-# index
-RewriteRule "^downloads/releases(\/)?$" "/downloads" [R,END]
+# releases-download index
+RewriteRule "^downloads/releases(/)?$" "/downloads" [R,END]
# CLDR -> LDML
-RewriteRule "^cldr(\/)?$" "/ldml" [R=301,END]
+RewriteRule "^cldr(/)?$" "/ldml" [R=301,END]
#
# Keyboard landing pages (TODO)
@@ -86,59 +254,14 @@ RewriteRule "^keyboards/(.*)/share(/?)$" "/keyboards/share/$1" [R=301]
# /keyboard/{content} to /keyboards/...
RewriteRule "^keyboard(/.*)$" "/keyboards$1" [R,END]
-#
-# Install | Download | Share | bare | .json -->
-#
-
-# /keyboards/install/[id] to /keyboards/install.php
-RewriteRule "^keyboards/install/([^/]+)$" "/keyboards/install.php?id=$1" [END,QSA]
-
-# /keyboards/download/[id] to /keyboards/keyboard.php
-# This formerly redirected to a download, but we no longer need it; keep it for
-# legacy links
-RewriteRule "^keyboards/download/([^/]+)$" "/keyboards/keyboard.php?id=$1" [END,QSA]
-
-# /keyboards/share/[id] to /keyboards/share.php
-# if the keyboard exists in the repo, then share.php will redirect to /keyboards/ The success of Keyman is up to you! Keyman is a community-developed program and your involvement guarantees the ongoing usefulness of Keyman.
-There are many ways you can help: get involved in the Keyman project now! The success of Keyman is up to you! Keyman is a community-developed program and your involvement guarantees the ongoing usefulness of Keyman.
+There are many ways you can help: get involved in the Keyman project now! The success of Keyman is up to you! Keyman is a community-developed program and your involvement guarantees the ongoing usefulness of Keyman.
- There are many ways you can help: get involved in the Keyman project now! The success of Keyman is up to you! Keyman is a community-developed program and your involvement guarantees the ongoing usefulness of Keyman.
+ There are many ways you can help: get involved in the Keyman project now! There are many ways you can help: get involved in the Keyman project now!
+ There are many ways you can help: get involved in the Keyman project now!
Keyman Desktop 11
Stable
diff --git a/12/index.php b/_content/12/index.php
similarity index 85%
rename from 12/index.php
rename to _content/12/index.php
index 902cfb3a..91db9d88 100644
--- a/12/index.php
+++ b/_content/12/index.php
@@ -44,8 +44,8 @@
Get Involved
-Downloads
diff --git a/12/predictive-text-editor.png b/_content/12/predictive-text-editor.png
similarity index 100%
rename from 12/predictive-text-editor.png
rename to _content/12/predictive-text-editor.png
diff --git a/12/predictive-text-ios.png b/_content/12/predictive-text-ios.png
similarity index 100%
rename from 12/predictive-text-ios.png
rename to _content/12/predictive-text-ios.png
diff --git a/12/predictive-text-khmer.png b/_content/12/predictive-text-khmer.png
similarity index 100%
rename from 12/predictive-text-khmer.png
rename to _content/12/predictive-text-khmer.png
diff --git a/12/predictive-text-settings-android.png b/_content/12/predictive-text-settings-android.png
similarity index 100%
rename from 12/predictive-text-settings-android.png
rename to _content/12/predictive-text-settings-android.png
diff --git a/13/index.php b/_content/13/index.php
similarity index 83%
rename from 13/index.php
rename to _content/13/index.php
index 27ee3681..f091e322 100644
--- a/13/index.php
+++ b/_content/13/index.php
@@ -37,8 +37,8 @@
Get Involved
-Downloads
diff --git a/13/ios-dark.png b/_content/13/ios-dark.png
similarity index 100%
rename from 13/ios-dark.png
rename to _content/13/ios-dark.png
diff --git a/13/share-qr-code.png b/_content/13/share-qr-code.png
similarity index 100%
rename from 13/share-qr-code.png
rename to _content/13/share-qr-code.png
diff --git a/14/index.php b/_content/14/index.php
similarity index 98%
rename from 14/index.php
rename to _content/14/index.php
index 88688825..29c70214 100644
--- a/14/index.php
+++ b/_content/14/index.php
@@ -250,5 +250,5 @@
Get Involved
-
There are many ways you can help: get involved in the Keyman project now! +
There are many ways you can help: get involved in the Keyman project now!
diff --git a/about/developers/contributors.md b/_content/about/developers/contributors.md similarity index 100% rename from about/developers/contributors.md rename to _content/about/developers/contributors.md diff --git a/about/developers/index.md b/_content/about/developers/index.md similarity index 100% rename from about/developers/index.md rename to _content/about/developers/index.md diff --git a/about/developers/previous.md b/_content/about/developers/previous.md similarity index 100% rename from about/developers/previous.md rename to _content/about/developers/previous.md diff --git a/about/get-involved.md b/_content/about/get-involved.md similarity index 96% rename from about/get-involved.md rename to _content/about/get-involved.md index b551e1ca..1dde09bd 100644 --- a/about/get-involved.md +++ b/_content/about/get-involved.md @@ -25,11 +25,11 @@ paying staff and contractors, server costs and hardware and software purchases. ## Create a keyboard layout for your language ## {#create-keyboard} Keyman Developer is our comprehensive tool for creating keyboard layouts for every major platform; it is of -course completely free and open source! Go ahead and [download Keyman Developer](/developer/download) +course completely free and open source! Go ahead and [download Keyman Developer](../developer/download) to start creating keyboard layouts today. Once you have created a layout, you can share it online, and if you like, contribute it to the Keyman keyboard repository. -* [Learn about Keyman Developer](/developer) +* [Learn about Keyman Developer](../developer) * [Share your keyboard layouts](https://help.keyman.com/developer/keyboards) ## Localize Keyman for your language ## {#localize-keyman} @@ -51,7 +51,7 @@ We frequently release updates to Keyman. Independent testing and reporting of is you test bug fixes and report issues, you help those who are depending on Keyman to work in their language, many of whom do not have the capacity to test new versions themselves. -* [Download a pre-release version](/downloads/pre-release) +* [Download a pre-release version](../downloads/pre-release) * [Report issues and feature requests](https://github.com/keymanapp/keyman/issues/new/choose) ## Write some code ## {#write-code} @@ -79,6 +79,6 @@ developing software that serves the needs of language communities around the wor introduce yourself — we'd love to meet with you! * [About the Keyman team](team/) -* [Jobs](/jobs) +* [Jobs](../jobs) * [Write to us](https://software.sil.org/about/contact/) * [Send us a tweet or DM on Twitter](https://twitter.com/keyman) diff --git a/about/index.md b/_content/about/index.md similarity index 91% rename from about/index.md rename to _content/about/index.md index 02645bb2..f61e9af2 100644 --- a/about/index.md +++ b/_content/about/index.md @@ -29,7 +29,7 @@ mobile platforms.
+
Keyman is created by SIL Global (formerly SIL International). Partners in Language Development,
SIL Global is a faith-based nonprofit organization committed to serving language communities
diff --git a/about/list.php b/_content/about/list.php
similarity index 100%
rename from about/list.php
rename to _content/about/list.php
diff --git a/about/sponsors/fpcc.svg b/_content/about/sponsors/fpcc.svg
similarity index 100%
rename from about/sponsors/fpcc.svg
rename to _content/about/sponsors/fpcc.svg
diff --git a/about/sponsors/index.md b/_content/about/sponsors/index.md
similarity index 90%
rename from about/sponsors/index.md
rename to _content/about/sponsors/index.md
index d9d48630..5e4a1480 100644
--- a/about/sponsors/index.md
+++ b/_content/about/sponsors/index.md
@@ -48,7 +48,7 @@ title: About our sponsors and partners
Please contact us if you are interested in sponsoring Keyman.
- ➡️ Become a sponsor
+ ➡️ Become a sponsor
@@ -69,7 +69,7 @@ Indigenous and minority language communities around the world.


Microsoft, through their
The National Polytechnic Institute of Cambodia
@@ -117,7 +117,7 @@ Indigenous and minority language communities around the world.
We are using BrowserStack to test KeymanWeb
@@ -135,7 +135,7 @@ Indigenous and minority language communities around the world.
Keyman uses Sentry for error monitoring. Thank you to
@@ -149,7 +149,7 @@ Indigenous and minority language communities around the world.
Thank you to 1Password for supporting the Keyman team
diff --git a/about/sponsors/translation-commons.svg b/_content/about/sponsors/translation-commons.svg
similarity index 100%
rename from about/sponsors/translation-commons.svg
rename to _content/about/sponsors/translation-commons.svg
diff --git a/about/sponsors/typotheque.svg b/_content/about/sponsors/typotheque.svg
similarity index 100%
rename from about/sponsors/typotheque.svg
rename to _content/about/sponsors/typotheque.svg
diff --git a/about/team/bios/DavidLRowe.md b/_content/about/team/bios/DavidLRowe.md
similarity index 100%
rename from about/team/bios/DavidLRowe.md
rename to _content/about/team/bios/DavidLRowe.md
diff --git a/about/team/bios/LornaSIL.md b/_content/about/team/bios/LornaSIL.md
similarity index 100%
rename from about/team/bios/LornaSIL.md
rename to _content/about/team/bios/LornaSIL.md
diff --git a/about/team/bios/MakaraSok.md b/_content/about/team/bios/MakaraSok.md
similarity index 100%
rename from about/team/bios/MakaraSok.md
rename to _content/about/team/bios/MakaraSok.md
diff --git a/about/team/bios/Markus-SWAG.md b/_content/about/team/bios/Markus-SWAG.md
similarity index 100%
rename from about/team/bios/Markus-SWAG.md
rename to _content/about/team/bios/Markus-SWAG.md
diff --git a/about/team/bios/Meng-Heng.md b/_content/about/team/bios/Meng-Heng.md
similarity index 100%
rename from about/team/bios/Meng-Heng.md
rename to _content/about/team/bios/Meng-Heng.md
diff --git a/about/team/bios/Nnyny.md b/_content/about/team/bios/Nnyny.md
similarity index 100%
rename from about/team/bios/Nnyny.md
rename to _content/about/team/bios/Nnyny.md
diff --git a/about/team/bios/SabineSIL.md b/_content/about/team/bios/SabineSIL.md
similarity index 100%
rename from about/team/bios/SabineSIL.md
rename to _content/about/team/bios/SabineSIL.md
diff --git a/about/team/bios/darcywong00.md b/_content/about/team/bios/darcywong00.md
similarity index 100%
rename from about/team/bios/darcywong00.md
rename to _content/about/team/bios/darcywong00.md
diff --git a/about/team/bios/ermshiperete.md b/_content/about/team/bios/ermshiperete.md
similarity index 100%
rename from about/team/bios/ermshiperete.md
rename to _content/about/team/bios/ermshiperete.md
diff --git a/about/team/bios/glasseyes.md b/_content/about/team/bios/glasseyes.md
similarity index 100%
rename from about/team/bios/glasseyes.md
rename to _content/about/team/bios/glasseyes.md
diff --git a/about/team/bios/jahorton.md b/_content/about/team/bios/jahorton.md
similarity index 100%
rename from about/team/bios/jahorton.md
rename to _content/about/team/bios/jahorton.md
diff --git a/about/team/bios/markcsinclair.md b/_content/about/team/bios/markcsinclair.md
similarity index 100%
rename from about/team/bios/markcsinclair.md
rename to _content/about/team/bios/markcsinclair.md
diff --git a/about/team/bios/mcdurdin.md b/_content/about/team/bios/mcdurdin.md
similarity index 100%
rename from about/team/bios/mcdurdin.md
rename to _content/about/team/bios/mcdurdin.md
diff --git a/about/team/bios/rc-swag.md b/_content/about/team/bios/rc-swag.md
similarity index 100%
rename from about/team/bios/rc-swag.md
rename to _content/about/team/bios/rc-swag.md
diff --git a/about/team/bios/sgschantz.md b/_content/about/team/bios/sgschantz.md
similarity index 100%
rename from about/team/bios/sgschantz.md
rename to _content/about/team/bios/sgschantz.md
diff --git a/about/team/bios/srl295.md b/_content/about/team/bios/srl295.md
similarity index 94%
rename from about/team/bios/srl295.md
rename to _content/about/team/bios/srl295.md
index 7de37044..873266fa 100644
--- a/about/team/bios/srl295.md
+++ b/_content/about/team/bios/srl295.md
@@ -25,7 +25,7 @@ projects, I continue to contribute to Unicode’s Common Locale Data Repository
(CLDR), and chair its
[Digitally Disadvantaged Languages](https://cldr.unicode.org/ddl) working group.
-As for Keyboards, I have been involved in [LDML Keyboards](/ldml) as the CLDR
+As for Keyboards, I have been involved in [LDML Keyboards](../../../ldml) as the CLDR
spec editor, and have been involved in the implementation of LDML in Keyman,
both on the compiler (kmc) and runtime (core) portions.
diff --git a/about/team/bios/tombogle.md b/_content/about/team/bios/tombogle.md
similarity index 100%
rename from about/team/bios/tombogle.md
rename to _content/about/team/bios/tombogle.md
diff --git a/about/team/bios/tpbaehr.md b/_content/about/team/bios/tpbaehr.md
similarity index 100%
rename from about/team/bios/tpbaehr.md
rename to _content/about/team/bios/tpbaehr.md
diff --git a/about/team/contributors.css b/_content/about/team/contributors.css
similarity index 100%
rename from about/team/contributors.css
rename to _content/about/team/contributors.css
diff --git a/about/team/index.md b/_content/about/team/index.md
similarity index 100%
rename from about/team/index.md
rename to _content/about/team/index.md
diff --git a/about/team/team.css b/_content/about/team/team.css
similarity index 100%
rename from about/team/team.css
rename to _content/about/team/team.css
diff --git a/about/team/team.json b/_content/about/team/team.json
similarity index 100%
rename from about/team/team.json
rename to _content/about/team/team.json
diff --git a/_content/alpha/index.php b/_content/alpha/index.php
new file mode 100644
index 00000000..e9a41f75
--- /dev/null
+++ b/_content/alpha/index.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/android/faq/index.php b/_content/android/faq/index.php
similarity index 100%
rename from android/faq/index.php
rename to _content/android/faq/index.php
diff --git a/android/index.php b/_content/android/index.php
similarity index 93%
rename from android/index.php
rename to _content/android/index.php
index db469c53..c45421ea 100644
--- a/android/index.php
+++ b/_content/android/index.php
@@ -26,7 +26,7 @@
- Want to try the Keyman for Android = $beta_version ?> Beta? Learn more Want to try the Keyman for Android = $beta_version ?> Beta? Learn more
- Create custom Keyman dictionaries with Keyman Developer = $stable_version ?>
+ Create custom Keyman dictionaries with Keyman Developer = $stable_version ?>
and install them to use with your keyboards.
Now you also have the flexibility of installing Keyman keyboard packages from either online
- (like = KeymanHosts::Instance()->keyman_com ?>/keyboards) or local storage from a new "Settings" panel.
+ (like = KeymanHosts::Instance()->keyman_com ?>/keyboards) or local storage from a new "Settings" panel.
@@ -260,7 +260,7 @@
@@ -314,11 +314,11 @@
- You can develop your own keyboard layouts for Keyman for Android with Keyman Developer. If you have existing keyboards, they can be ported to Android with just a recompile. And of course, we include support for touch-oriented features such as touch-and-hold menus, dynamic keyboard layers and more!
+ You can develop your own keyboard layouts for Keyman for Android with Keyman Developer. If you have existing keyboards, they can be ported to Android with just a recompile. And of course, we include support for touch-oriented features such as touch-and-hold menus, dynamic keyboard layers and more!
Keyman Engine for Android Documentation
- Download the latest Keyman Engine for Android
+ Download the latest Keyman Engine for Android
Keyman Developer is not compatible with Windows Vista. Please download Keyman Developer 8.0 instead from our archived downloads page. Keyman Developer is not compatible with Windows Vista. Please download Keyman Developer 8.0 instead from our archived downloads page. Keyman Developer is not compatible with Windows XP. Please download Keyman Developer 8.0 instead from our archived downloads page. Keyman Developer is not compatible with Windows XP. Please download Keyman Developer 8.0 instead from our archived downloads page.
- Keyman Developer is compatible with Windows 10 and Windows 11. If you have an older version of Windows, please download an earlier version of Keyman Developer from our archived downloads page.
+ Keyman Developer is compatible with Windows 10 and Windows 11. If you have an older version of Windows, please download an earlier version of Keyman Developer from our archived downloads page.
- For kmcomp, please download from our archived downloads page.
+ For kmcomp, please download from our archived downloads page.
Keyman Developer is the most powerful tool for creating
+ Keyman Developer is the most powerful tool for creating
keyboard layouts for any popular platform for any language around the world. Build keyboards layouts for desktop,
web, tablet and phone. Optimise your keyboards for each platform, including touch-and-hold keys and alternative layers.
Want to try the Keyman Developer Beta? Learn more Want to try the Keyman Developer Beta? Learn more
KeymanWeb = $stable_version; ?> is an Open Source input method system for the web, supporting both desktops and touch devices. Keyboard layouts for
- use with KeymanWeb can be created with the free download Keyman Developer (Windows).
+ use with KeymanWeb can be created with the free download Keyman Developer (Windows).
@@ -76,13 +76,13 @@
Keyman Engine for Android makes it straightforward to take your app to the world!
-
+ 

-
+
-
+
-
+ 

New in Update 1.2 (22 Apr 2014):
-
Download Keyman Developer
-
+
\ No newline at end of file
diff --git a/developer/index.php b/_content/developer/index.php
similarity index 88%
rename from developer/index.php
rename to _content/developer/index.php
index 7bc7e679..f2cf45be 100644
--- a/developer/index.php
+++ b/_content/developer/index.php
@@ -17,14 +17,14 @@
?>
Keyman Developer
-
-
@@ -32,7 +32,7 @@
- Add KeymanWeb to a Website
@@ -45,11 +45,11 @@
@@ -97,9 +97,9 @@
-
diff --git a/developer/keymanweb/keyboards.php b/_content/developer/keymanweb/keyboards.php
similarity index 100%
rename from developer/keymanweb/keyboards.php
rename to _content/developer/keymanweb/keyboards.php
diff --git a/developer/keymanweb/keyboards.txt b/_content/developer/keymanweb/keyboards.txt
similarity index 100%
rename from developer/keymanweb/keyboards.txt
rename to _content/developer/keymanweb/keyboards.txt
diff --git a/developer/keymanweb/keymanweb-version.inc.php b/_content/developer/keymanweb/keymanweb-version.inc.php
similarity index 100%
rename from developer/keymanweb/keymanweb-version.inc.php
rename to _content/developer/keymanweb/keymanweb-version.inc.php
diff --git a/developer/keymanweb/sample1.php b/_content/developer/keymanweb/sample1.php
similarity index 100%
rename from developer/keymanweb/sample1.php
rename to _content/developer/keymanweb/sample1.php
diff --git a/developer/keymanweb/sample2.php b/_content/developer/keymanweb/sample2.php
similarity index 100%
rename from developer/keymanweb/sample2.php
rename to _content/developer/keymanweb/sample2.php
diff --git a/downloads/_downloads.php b/_content/downloads/_downloads.php
similarity index 100%
rename from downloads/_downloads.php
rename to _content/downloads/_downloads.php
diff --git a/downloads/all-versions/index.php b/_content/downloads/all-versions/index.php
similarity index 100%
rename from downloads/all-versions/index.php
rename to _content/downloads/all-versions/index.php
diff --git a/downloads/archive/index.php b/_content/downloads/archive/index.php
similarity index 100%
rename from downloads/archive/index.php
rename to _content/downloads/archive/index.php
diff --git a/downloads/archive/legacy-embed.php b/_content/downloads/archive/legacy-embed.php
similarity index 100%
rename from downloads/archive/legacy-embed.php
rename to _content/downloads/archive/legacy-embed.php
diff --git a/downloads/archive/static-keys.php b/_content/downloads/archive/static-keys.php
similarity index 100%
rename from downloads/archive/static-keys.php
rename to _content/downloads/archive/static-keys.php
diff --git a/downloads/index.php b/_content/downloads/index.php
similarity index 100%
rename from downloads/index.php
rename to _content/downloads/index.php
diff --git a/downloads/pre-release/index.php b/_content/downloads/pre-release/index.php
similarity index 100%
rename from downloads/pre-release/index.php
rename to _content/downloads/pre-release/index.php
diff --git a/downloads/releases/_version_downloads.php b/_content/downloads/releases/_version_downloads.php
similarity index 100%
rename from downloads/releases/_version_downloads.php
rename to _content/downloads/releases/_version_downloads.php
diff --git a/engine/index.php b/_content/engine/index.php
similarity index 90%
rename from engine/index.php
rename to _content/engine/index.php
index ac1bb271..fb5f1744 100644
--- a/engine/index.php
+++ b/_content/engine/index.php
@@ -45,7 +45,7 @@
standalone Keyman Engine for Web (KeymanWeb), you can integrate over 2500 languages to give you and your users the
simplest solution to typing on your site possible.
- You can of course build your own keyboard layouts using Keyman Developer, as well as
+ You can of course build your own keyboard layouts using Keyman Developer, as well as
access our library of hundreds of keyboard layouts covering thousands of languages.
KeymanWeb Documentation
@@ -61,13 +61,13 @@
the world!
You can develop your own keyboard layouts for Keyman for iOS with
- Keyman Developer. If you have existing keyboards, they can be ported to iOS with just
+ Keyman Developer. If you have existing keyboards, they can be ported to iOS with just
a recompile. And of course, we include support for touch-oriented features such as touch-and-hold menus,
dynamic keyboard layers and more!
Keyman Engine for iPhone and iPad Documentation
- Get the Keyman Engine for iOS now
+ Get the Keyman Engine for iOS now
Keyman Engine for Android
You can develop your own keyboard layouts for Keyman for Android with
- Keyman Developer. If you have existing keyboards, they can be ported to Android with just
+ Keyman Developer. If you have existing keyboards, they can be ported to Android with just
a recompile. And of course, we include support for touch-oriented features such as touch-and-hold menus,
dynamic keyboard layers and more!
Keyman Engine for Android Documentation
- Get the Keyman Engine for Android SDK now
+ Get the Keyman Engine for Android SDK now
diff --git a/events/iuc38/Lao Roman/index.html b/_content/events/iuc38/Lao Roman/index.html
similarity index 100%
rename from events/iuc38/Lao Roman/index.html
rename to _content/events/iuc38/Lao Roman/index.html
diff --git a/events/iuc38/Lao Roman/kmw/build.bat b/_content/events/iuc38/Lao Roman/kmw/build.bat
similarity index 100%
rename from events/iuc38/Lao Roman/kmw/build.bat
rename to _content/events/iuc38/Lao Roman/kmw/build.bat
diff --git a/events/iuc38/Lao Roman/kmw/keymanweb.js b/_content/events/iuc38/Lao Roman/kmw/keymanweb.js
similarity index 100%
rename from events/iuc38/Lao Roman/kmw/keymanweb.js
rename to _content/events/iuc38/Lao Roman/kmw/keymanweb.js
diff --git a/events/iuc38/Lao Roman/kmw/kmwbase.js b/_content/events/iuc38/Lao Roman/kmw/kmwbase.js
similarity index 100%
rename from events/iuc38/Lao Roman/kmw/kmwbase.js
rename to _content/events/iuc38/Lao Roman/kmw/kmwbase.js
diff --git a/events/iuc38/Lao Roman/kmw/kmwosk.js b/_content/events/iuc38/Lao Roman/kmw/kmwosk.js
similarity index 100%
rename from events/iuc38/Lao Roman/kmw/kmwosk.js
rename to _content/events/iuc38/Lao Roman/kmw/kmwosk.js
diff --git a/events/iuc38/Lao Roman/kmw/resources/osk/kmwosk.css b/_content/events/iuc38/Lao Roman/kmw/resources/osk/kmwosk.css
similarity index 100%
rename from events/iuc38/Lao Roman/kmw/resources/osk/kmwosk.css
rename to _content/events/iuc38/Lao Roman/kmw/resources/osk/kmwosk.css
diff --git a/events/iuc38/Lao Roman/kmw/version.txt b/_content/events/iuc38/Lao Roman/kmw/version.txt
similarity index 100%
rename from events/iuc38/Lao Roman/kmw/version.txt
rename to _content/events/iuc38/Lao Roman/kmw/version.txt
diff --git a/events/iuc38/Lao Roman/laoroman-1.0.js b/_content/events/iuc38/Lao Roman/laoroman-1.0.js
similarity index 100%
rename from events/iuc38/Lao Roman/laoroman-1.0.js
rename to _content/events/iuc38/Lao Roman/laoroman-1.0.js
diff --git a/events/iuc38/Lao Roman/laoroman-1.0.json b/_content/events/iuc38/Lao Roman/laoroman-1.0.json
similarity index 100%
rename from events/iuc38/Lao Roman/laoroman-1.0.json
rename to _content/events/iuc38/Lao Roman/laoroman-1.0.json
diff --git a/events/iuc38/Thai Satellite/jquery1-11-1.min.js b/_content/events/iuc38/Thai Satellite/jquery1-11-1.min.js
similarity index 100%
rename from events/iuc38/Thai Satellite/jquery1-11-1.min.js
rename to _content/events/iuc38/Thai Satellite/jquery1-11-1.min.js
diff --git a/events/iuc38/Thai Satellite/thai-full-iphone.png b/_content/events/iuc38/Thai Satellite/thai-full-iphone.png
similarity index 100%
rename from events/iuc38/Thai Satellite/thai-full-iphone.png
rename to _content/events/iuc38/Thai Satellite/thai-full-iphone.png
diff --git a/events/iuc38/Thai Satellite/thai-satellite-mockup-full-iphone.css b/_content/events/iuc38/Thai Satellite/thai-satellite-mockup-full-iphone.css
similarity index 100%
rename from events/iuc38/Thai Satellite/thai-satellite-mockup-full-iphone.css
rename to _content/events/iuc38/Thai Satellite/thai-satellite-mockup-full-iphone.css
diff --git a/events/iuc38/Thai Satellite/thai-satellite-mockup-full-iphone.html b/_content/events/iuc38/Thai Satellite/thai-satellite-mockup-full-iphone.html
similarity index 100%
rename from events/iuc38/Thai Satellite/thai-satellite-mockup-full-iphone.html
rename to _content/events/iuc38/Thai Satellite/thai-satellite-mockup-full-iphone.html
diff --git a/events/iuc38/Thai Satellite/thai-satellite-mockup-full.css b/_content/events/iuc38/Thai Satellite/thai-satellite-mockup-full.css
similarity index 100%
rename from events/iuc38/Thai Satellite/thai-satellite-mockup-full.css
rename to _content/events/iuc38/Thai Satellite/thai-satellite-mockup-full.css
diff --git a/events/iuc38/Thai Satellite/thai-satellite-mockup-full.html b/_content/events/iuc38/Thai Satellite/thai-satellite-mockup-full.html
similarity index 100%
rename from events/iuc38/Thai Satellite/thai-satellite-mockup-full.html
rename to _content/events/iuc38/Thai Satellite/thai-satellite-mockup-full.html
diff --git a/events/iuc38/Thai Satellite/thai-satellite-mockup.css b/_content/events/iuc38/Thai Satellite/thai-satellite-mockup.css
similarity index 100%
rename from events/iuc38/Thai Satellite/thai-satellite-mockup.css
rename to _content/events/iuc38/Thai Satellite/thai-satellite-mockup.css
diff --git a/events/iuc38/Thai Satellite/thai-satellite-mockup.html b/_content/events/iuc38/Thai Satellite/thai-satellite-mockup.html
similarity index 100%
rename from events/iuc38/Thai Satellite/thai-satellite-mockup.html
rename to _content/events/iuc38/Thai Satellite/thai-satellite-mockup.html
diff --git a/events/iuc38/Thai Satellite/thai-satellite-mockup.js b/_content/events/iuc38/Thai Satellite/thai-satellite-mockup.js
similarity index 100%
rename from events/iuc38/Thai Satellite/thai-satellite-mockup.js
rename to _content/events/iuc38/Thai Satellite/thai-satellite-mockup.js
diff --git a/events/iuc38/index.php b/_content/events/iuc38/index.php
similarity index 100%
rename from events/iuc38/index.php
rename to _content/events/iuc38/index.php
diff --git a/events/iuc38/keyboardfutures_iuc38.pdf b/_content/events/iuc38/keyboardfutures_iuc38.pdf
similarity index 100%
rename from events/iuc38/keyboardfutures_iuc38.pdf
rename to _content/events/iuc38/keyboardfutures_iuc38.pdf
diff --git a/fonts/index.php b/_content/fonts/index.php
similarity index 100%
rename from fonts/index.php
rename to _content/fonts/index.php
diff --git a/free/index.md b/_content/free/index.md
similarity index 97%
rename from free/index.md
rename to _content/free/index.md
index b77e712a..0d831a6d 100644
--- a/free/index.md
+++ b/_content/free/index.md
@@ -25,4 +25,4 @@ are also licensed under the MIT License. Copyright for these keyboards and
lexical models belongs to many different authors.
* [About SIL Global](https://global.sil.org/about/)
-* [About Keyman](/about)
\ No newline at end of file
+* [About Keyman](../about)
\ No newline at end of file
diff --git a/funding-appeal/index.md b/_content/funding-appeal/index.md
similarity index 100%
rename from funding-appeal/index.md
rename to _content/funding-appeal/index.md
diff --git a/funding-appeal/share.md b/_content/funding-appeal/share.md
similarity index 100%
rename from funding-appeal/share.md
rename to _content/funding-appeal/share.md
diff --git a/index.php b/_content/index.php
similarity index 91%
rename from index.php
rename to _content/index.php
index d318a92b..4a27fd05 100644
--- a/index.php
+++ b/_content/index.php
@@ -1,4 +1,4 @@
-
Keyman helps you type in over 2500 languages on
just about any device — Windows, macOS, Linux, iPhone, iPad, Android tablets and phones, and even instantly in your web browser.
- Keyman is completely free and open source!
+ Keyman is completely free and open source!
@@ -66,7 +66,7 @@
-