From e87e58244e8cdabe88913fd3e5925b29d8911ceb Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 8 Feb 2026 08:20:59 +1100 Subject: [PATCH 1/2] feat: funding appeal Text matches approved content, so please no changes to text except fixing typos. Test-bot: skip --- _includes/includes/ui/keyboard-details.php | 14 +- .../includes/ui/section-announcement.php | 22 +++ cdn/dev/css/funding.css | 164 ++++++++++++++++++ cdn/dev/css/index.css | 26 +-- cdn/dev/css/section-announcement.css | 49 ++++++ cdn/dev/css/template.css | 13 ++ funding-appeal/index.md | 52 ++++++ funding-appeal/share.md | 34 ++++ index.php | 19 +- 9 files changed, 354 insertions(+), 39 deletions(-) create mode 100644 _includes/includes/ui/section-announcement.php create mode 100644 cdn/dev/css/funding.css create mode 100644 cdn/dev/css/section-announcement.css create mode 100644 funding-appeal/index.md create mode 100644 funding-appeal/share.md diff --git a/_includes/includes/ui/keyboard-details.php b/_includes/includes/ui/keyboard-details.php index 0132e45d..2df5c203 100644 --- a/_includes/includes/ui/keyboard-details.php +++ b/_includes/includes/ui/keyboard-details.php @@ -4,13 +4,14 @@ require_once('includes/template.php'); require_once('includes/playstore.php'); require_once('includes/appstore.php'); + require_once('includes/ui/section-announcement.php'); use \DateTime; use \Keyman\Site\com\keyman\KeymanWebHost; use \Keyman\Site\Common\KeymanHosts; use \Keyman\Site\com\keyman\Locale; use \Keyman\Site\com\keyman; - + Locale::definePageLocale('LOCALE_KEYBOARDS_DETAILS', 'keyboards/details'); $_m_KeyboardDetails = function($id, ...$args) { return Locale::m(LOCALE_KEYBOARDS_DETAILS, $id, ...$args); @@ -307,7 +308,7 @@ protected static function WriteTitle() { } else { $head_options += [ 'js' => ['../keyboard-search/keyboard-details.js', 'qrcode.js'], - 'css' => ['template.css', '../keyboard-search/search.css'] + 'css' => ['template.css', '../keyboard-search/search.css', 'section-announcement.css'] ]; $embed_target = ''; } @@ -319,6 +320,7 @@ protected static function WriteTitle() { var embed_query=''; @@ -376,7 +378,7 @@ protected static function WriteTitle() {
" . $_m_KeyboardDetails("important_note") . " " . - $_m_KeyboardDetails("obsolete_version") . + $_m_KeyboardDetails("obsolete_version") . " $dep" . $_m_KeyboardDetails("instead") . "
@@ -636,7 +638,7 @@ protected static function WriteKeyboardDetails() { $s = @file_get_contents(KeymanHosts::Instance()->SERVER_api_keyman_com.'/keyboard/' . rawurlencode($name)); if ($s === FALSE) { echo "$hname "; } else { @@ -669,9 +671,9 @@ protected static function WriteKeyboardDetails() { foreach($langs as $bcp47 => $detail) { if($n == 3) { - echo " " . + echo " " . $_m_KeyboardDetails("expand_more", $count) . ""; - echo "" . + echo "" . $_m_KeyboardDetails("collapse") . " "; } if (property_exists($detail, 'languageName')) { diff --git a/_includes/includes/ui/section-announcement.php b/_includes/includes/ui/section-announcement.php new file mode 100644 index 00000000..9fde2684 --- /dev/null +++ b/_includes/includes/ui/section-announcement.php @@ -0,0 +1,22 @@ + + + +
+
+
+

Funding appeal — we need your support

+

+ The Keyman project is facing a major funding crisis. Learn more +

+
+
+
+ + td img { + width: 150px; +} \ No newline at end of file diff --git a/cdn/dev/css/index.css b/cdn/dev/css/index.css index 71f30fbd..7b103f48 100644 --- a/cdn/dev/css/index.css +++ b/cdn/dev/css/index.css @@ -2,6 +2,8 @@ * Section1 CSS * ***********************************/ +@import url('section-announcement.css'); + .main1 { float: left; width: 100%; @@ -242,30 +244,6 @@ color: #2F4B67 } -.section-announcement { - color: #B92034; - background: white; -} - -.section-announcement p { - font-size: 36pt; - font-weight: bold; - padding: 36px 12px; - text-align: center; -} - -.section-announcement p a { - color: #B92034; - text-decoration: none; - padding: 4px; - display: inline-block; -} - -.section-announcement p a:hover { - background: #D6D6D6; - border-radius: 6px; -} - .lang-ital { font-style: italic; font-size: 12pt; diff --git a/cdn/dev/css/section-announcement.css b/cdn/dev/css/section-announcement.css new file mode 100644 index 00000000..d6cf9c35 --- /dev/null +++ b/cdn/dev/css/section-announcement.css @@ -0,0 +1,49 @@ + +html .section-announcement { + color: #B92034; + background: white; + padding: 0; + + /* grow transition */ + display: grid; + animation: 2s ease-out 0s 1 expand-section-announcement; + overflow: hidden; +} + +@keyframes expand-section-announcement { + 0% { + grid-template-rows: 0fr; + } + 75% { + grid-template-rows: 0fr; + } + 100% { + grid-template-rows: 1fr; + } +} + +.section-announcement > .wrapper { + overflow: hidden; +} + +.section-announcement .content { + padding: 36px 12px; +} + +.section-announcement p { + font-size: 36pt; + font-weight: bold; + padding: 8px 4px; + text-align: center; +} + +.section-announcement p a { + color: #B92034; + padding: 4px; + display: inline-block; +} + +.section-announcement p a:hover { + background: #D6D6D6; + border-radius: 6px; +} diff --git a/cdn/dev/css/template.css b/cdn/dev/css/template.css index 49da617f..8fddbe62 100644 --- a/cdn/dev/css/template.css +++ b/cdn/dev/css/template.css @@ -133,6 +133,11 @@ q:after { content: none; } +#section2 .markdown h3 { + font-size: 16pt; + font-weight: bold +} + .markdown blockquote { margin: 12px 24px 24px; padding: 18px 6px 6px 6px; @@ -151,6 +156,14 @@ q:after { padding: 1em; } +#section2 .markdown strong { + font-weight: bold; +} + +#section2 .markdown em { + font-style: italic; +} + table { border-collapse: collapse; border-spacing: 0; diff --git a/funding-appeal/index.md b/funding-appeal/index.md new file mode 100644 index 00000000..7ced182a --- /dev/null +++ b/funding-appeal/index.md @@ -0,0 +1,52 @@ +--- +title: Keep Keyman Free to All +--- + + + +This year, our main partner—who has for years allowed us to offer Keyman free to +users—faced funding limitations and could not contribute. To keep this tool +available at no cost for every language community, we need your help. + +# To continue, we must raise: US$280,000 by 1 March 2026 + + + +## You can help! + +* GIVE what you can + +* SHARE the need with your friends + +We’re inviting those who care about language equity to step in and help sustain +the work. _Let’s raise US$280,000 together!_ + +Keyman supports thousands of Indigenous and minority languages worldwide. + +Every update, security fix, new keyboard, and mobile release depends on a small +team and a global community who believe that every language deserves a place in +the digital world. + +
+ +### Your support will help: + +* Keep your keyboards working when phones and apps update + +* Support new and improved keyboards for more languages + +* Ensure Keyman stays free and open for everyone + +* Create access for more language communities + +# No language left offline + +Our mission is to empower every language to thrive in the digital world, giving +communities the tools to read, write, and communicate in their own language—at +no cost to them. + + + diff --git a/funding-appeal/share.md b/funding-appeal/share.md new file mode 100644 index 00000000..21849d35 --- /dev/null +++ b/funding-appeal/share.md @@ -0,0 +1,34 @@ +--- +title: Share your story +--- + + + +Please share your story of how Keyman has served you and your language +community. We would love to hear about how Keyman has impacted you! + +Many people use Keyman, but the Keyman story is not about the statistics. The +Keyman story is your story: you, the individuals, communities, and language +groups who can now type your language using Keyman. + +Your stories: + +* bring the Keyman project alive + +* encourage the team in their continued service + +* help us engage with major funders + + + + +If you prefer to share by email, you can write to +[support@keyman.com](mailto:support@keyman.com?subject=My%20Keyman%20story). + +Please note: by sharing your story with us, you are giving us permission to +republish the story with credit to you. Please do not share sensitive details, +and feel free to use pseudonyms where appropriate. We may make minor edits for +coherence only. + +> _[Keyman] helps me to write in Tankri. The only app where we can type in our regional script._ +> - Ankush Thakur, Nov 19, 2025 diff --git a/index.php b/index.php index 30e7ab86..e830a753 100644 --- a/index.php +++ b/index.php @@ -1,6 +1,7 @@  'Unlock the power of your language with Keyman customizable keyboard software. Available for Windows, Mac, Linux, Android, iPhone, and web, we support over 2,000 languages to make communication seamless and meaningful.', - 'css' => ['template.css','index.css'], + 'css' => ['template.css','index.css','section-announcement.css'], 'showMenu' => true, 'addSection2' => false ]); ?>
+ + +
+ +

Type to the world
in your language

" alt='More than 2500 languages supported' />
+ -

Choose a keyboard for your language

From 99c25892a31a577836280a6810413c38e16c2ba6 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 10 Feb 2026 07:30:12 +1100 Subject: [PATCH 2/2] chore: update external links --- funding-appeal/index.md | 4 ++-- funding-appeal/share.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/funding-appeal/index.md b/funding-appeal/index.md index 7ced182a..e26af018 100644 --- a/funding-appeal/index.md +++ b/funding-appeal/index.md @@ -10,7 +10,7 @@ available at no cost for every language community, we need your help. # To continue, we must raise: US$280,000 by 1 March 2026 - + ## You can help! @@ -47,6 +47,6 @@ no cost to them. diff --git a/funding-appeal/share.md b/funding-appeal/share.md index 21849d35..4205f4c1 100644 --- a/funding-appeal/share.md +++ b/funding-appeal/share.md @@ -20,7 +20,7 @@ Your stories: * help us engage with major funders - + If you prefer to share by email, you can write to [support@keyman.com](mailto:support@keyman.com?subject=My%20Keyman%20story).