CHUVASH.eu

CHunky Universe of Vigourous Astonishing SHarepoint :)

Tag Archives: Chuvash

Chuvash Keyboard Layout for Mac

I’ve got a Mac and one of my first questions was: How can I write in Chuvash on my Mac, obviously 🙂 In this post I am going to tell how I created Chuvash Keyboard Layout. The solution and installation instructions are on Github:

Chuvash Keyboard Layout for Mac

cv-kbd-mac-000

What the heck is Chuvash?

For those who don’t know yet: Chuvash are people who live in Chuvash Republic in Russian Federation, and abroad, as me. We are 1.5 million. Chuvash is also a language, an official language of the Republic, a minority language, that is completely different from the second official language Russian. Chuvash uses Cyrillic letters, all 33 Russian letters plus 4 additional letters: A breve (Ӑ), E breve (Ӗ), C cedilla (Ҫ) and U with double acute (Ӳ).

Keyboard Layout

There is no official Chuvash keyboard layout. What we have is a de facto standard – a very humble layout. It is “humble” because it does not dare to put Chuvash letters on the buttons directly, they are accessible through modifiers: AltGr in Windows and Linux, Option on a Mac. To get A breve you press AltGr and A in the same time. That is not a good input method for Chuvash where additional letters with diacritics (breve, double acute and cedilla) are more common than some Russian letters. In fact, many Russian letters are just part of the Chuvash alphabet because the loan words are just imported in the original spelling.

The reason why this humble keyboard layout was introduced and became a de facto standard was a will to provide a fully functional Russian keyboard layout with a bonus – being able to write in Chuvash, although a hard way. It is hard to write, but it is very simple to have (you don’t need to switch input sources), it is easy to explain: want a diacritic, just press AltGr and the corresponding plain letter. I created the same layout for Mac, too. In future a better, more Chuvash, keyboard layout must be designed and agreed upon.

Keyboard Layouts on Mac

AFAIK, there is no keyboard layout (“input source”) for any minority language in Russia. On the other hand the process of creating and installing a custom keyboard layout is easiest on a Mac. I followed the steps described on Salvatore Testa’s blog: I installed Ukulele and created a new keyboard layout based on Russian PC. That bundle that is saved from Ukulele needs to be copied to ~/Library/Keyboard Layouts/ folder. Then (presumably after a computer restart), Chuvash can be added as an input source. Custom keyboard layouts are just files (bundles) in a user’s home folder. No need for Administrator rights (as in Windows for installing a custom keyboard layout as an exe file), no sudo access to X11 folder (as in Linux).

What I would like to wish is the presence of Chuvash and other minority languages’ keyboard layouts directly Out-of-the-Box on Mac OS, iOS, Android and Windows. Linux is the only OS family that natively supports Chuvash keyboard layout.

Other minority languages

I am just curious: what languages have already had custom keyboard layouts ready for install. I found those ones:

Some words in Chuvash and Russian

I want this text to be searchable and findable, so here come summary of this blog post in Chuvash and Russian.

Макинтош валли чӑваш сарӑмӗ

Чӑваш сарӑмӗ Линукс, Виндовс, татат Андроид оператив системисенче пуррине халӑх пӗлет-ҫкӗ. Паян эпӗ Маккинтош (Mac OS) валли чӑваш сарӑмне турӑм. Вӑл виндовсри тата линуксри пекех, мӑйракаллисене ҫырас тесен Option (Alt) пускӑчне пусса мӑйракасӑррине пӗрле пусмалла. Option + А – Ӑ пулать. Ку ҫӗнни мар. Сарӑмӗ тата мӗнле лартмалли ку вырӑнта тупӑнать (хальлӗх акӑлчанла, анчах вӗҫ ӑнлантарнине ӳкерчӗклентертӗм).

Чувашская раскладка на Макинтош

Теперь есть чувашская раскладка для Mac OS, она такая же как и на Виндовс и Линукс. Чтобы написать Ӑ нужно нажать на Option (Alt) и на букву А. Раскладку и инструкцию по установке можно найти на этой странице (инструкция на английском пока, но все шаги проиллюстрированы картинками).

Working with Ukulele

I won’t go into details about how to work with Ukulele. But I was very surprised how easy it was to update the keyboard layout.

cv-kbd-mac-006

And more surprised I became when I saw that Chuvash was present in the list of available languages. cv-kbd-mac-007

Just to compare, Chuvash exists as a language in many systems in the Open Source world and close to it: Linux, Firefox, Wikipedia… For Microsoft Chuvash does not exist. No LCID, no locale, no way of referencing cv and cv-RU. There is one exception – Skype, but it was added before Skype was bought by Microsoft. I really hope it can be changed in future.

cv-kbd-mac-008

The last step was to rename to Chuvash – PC and generate an ID within the range for Cyrillic keyboards.

Microsoft again (update 2015-12-14)

After I installed my Chuvash keyboard layout and I was glad, suddenly I could not open Word, it just crashed. I didn’t realize  that it was due my custom keyboard layout. How painful, that Microsoft products crash on a custom keyboard layout. Sigh.

Chuvash Latin Script (update 2016-02-06)

I found that ABC Extended Keyboard Layout on Mac lets me write in Chuvash Latin Script using following dead keys:

  • Option b = Breve (ă, ĕ and maybe ĭ)
  • Option u = Diaeresis (ü)
  • Option c = Cedilla (ş)
  • Option v = Caron (š)

Other turkic languages

  • ı: Option+w and then i
  • ə: Shift+Option+: and then a

 

 

A new Chuvash keyboard layout

The Chuvash keyboard layout has been the Russian keyboard layout with 4 Chuvash letters that are typed by pressing the right Alt button plus the base letter. Some of the arguments have been

  1. Users don’t need to switch or learn a new keyboard layout. They can keep on typing Russian texts and sometimes Chuvash texts
  2. It is easy to communicate about how the right Alt button works. The Right-Alt-technique is also used in Esperanto, Polish and other languages.
  3. The letters are placed according the labels

Recently two major events happened that made the question about the Chuvash keyboard layout important:

  1. We are working on a Chuvash keyboard for iOS. There we have less place and we have to remove rare Russian letters from the first keyboard screen. There are no physical labels. So we can rethink the whole keyboard.
  2. chuvash.org finally moved from latin equivalents with diacritic marks to Cyrillic letters (Cyrillic extended script). Therefore we need to update users’ keyboard layouts

I’ll write a separate post about the Chuvash Keyboard for iOS. One of the important things we made during that work was to find the frequency of the Chuvash letters. This was used to design the keyboard layout.

Here is the most recent version of the keyboard layout (first screen):

cv-kbd-ios

These are the principles for placing the letters:

  • The most used letters are in the middle.
  • Consonants and vocals come after each other. We tried to avoid many consonants after each other.
  • The letters are often in the same area as in the Russian keyboard layout (but it is not so important)

Now to the physical keyboard

When it is possible on a virtual keyboard, wouldn’t it be worth trying on a physical keyboard? Knowing the “best” layout, we can implement it for a physical keyboard. Let’s do it for xkb. xkb is a keyboard system for Linux. I wrote a few articles on that topic.

Many minority languages in Russian use the Russian keyboard layout plus their Cyrillic letters instead of numbers (Bashkir, Udmurt, Kalmyk) or Right-Alt-combinations (Chuvash, Sakha, Komi…). Two other languages have their own keyboard layouts for primary keys: Tatar and Ossetian. Ossetian language has only one extra letter. The Tatar alphabet contains a few more. Let’s look at the Tatar keyboard layout for xkb:

tatar-xkb-kbd

The Tatar keyboard layout uses their letters on the primary keys and puts the Russian letters in the Right-Alt-combinations. It allows:

  • A quicker typing in Tatar
  • And access to Russian letters, because they are part of the official Tatar alphabet, but they are only used in Russian loanwords. The placement of those rare Russian letters are the same as in the Russian layout (except that they are accessible by pressing the Right-Alt button).

Now the Chuvash keyboard layout for Linux and Windows is as follows:

chuvash-xkb-kbd

When I use it, I always press the Right-Alt, because the ӑӗҫӳ in Chuvash are very common. So the Right-Alt is not an exception, rather that a regular typing behaviour. Some Chuvash frequently used Chuvash letters (х, й, э) are placed too from the middle. Some rare letters (ф, ц, ж, о, г, щ) are too “near”.

So let’s change it. If we just take the keyboard layout designed for iOS and put the rare Russian letters “behind the Right-Alt button”, then we’ll get this:

chuvash-xkb-kbd-2015

This keyboard layout will demand some time to learn, but once learned, it will provide

  • a better and quicker typing in Chuvash,
  • less pain in the right thumb,
  • and, perhaps, less Russian loanwords caused by laziness.

Regarding the learning, it could be facilitated using keyboard stickers, printed for Chuvash keyboards. Here is how Russian stickers look like:

The xkb code for the new Chuvash keyboard layout

// Chuvash Keyboard Layout that is organized according the letter frequency of Chuvash
// Author Anatoly Mironov @mirontoli
// Last changes: 2015-01-03
partial alphanumeric_keys
xkb_symbols "cv" {
    include "ru(winkeys)"

    name[Group1]= "Chuvash";

    key.type[group1]="FOUR_LEVEL";


    key <AD01> {[ U04F3,  U04F2 ]}; // ӳ
    key <AD02> {[ Cyrillic_shorti,  Cyrillic_SHORTI, Cyrillic_tse,     Cyrillic_TSE ]}; // й, ц
    key <AD03> {[ Cyrillic_u,       Cyrillic_U ]}; 
    key <AD04> {[ Cyrillic_ka,      Cyrillic_KA ]}; 
    key <AD05> {[ Cyrillic_ie,      Cyrillic_IE ]}; // е, ё
    key <AD06> {[ Cyrillic_en,      Cyrillic_EN ]}; // 
    key <AD07> {[ U04D7,            U04D6 ]}; // ӗ
    key <AD08> {[ Cyrillic_ha,      Cyrillic_HA ]};
    key <AD09> {[ Cyrillic_sha,     Cyrillic_SHA, Cyrillic_shcha,   Cyrillic_SHCHA ]};
    key <AD10> {[ Cyrillic_ze,      Cyrillic_ZE ]}; 
    key <AD11> {[ Cyrillic_ghe,     Cyrillic_GHE ]};

    key <AC01> {[ Cyrillic_be,      Cyrillic_BE, Cyrillic_ef,      Cyrillic_EF ]}; 
    key <AC02> {[ Cyrillic_yeru,    Cyrillic_YERU ]}; 
    key <AC03> {[ Cyrillic_ve,      Cyrillic_VE ]}; 
    key <AC04> {[ U04D1,            U04D0 ]}; // ӑ
    key <AC05> {[ Cyrillic_el,      Cyrillic_EL ]};
    key <AC06> {[ Cyrillic_a,       Cyrillic_A ]}; 
    key <AC07> {[ Cyrillic_er,      Cyrillic_ER ]}; 
    key <AC08> {[ Cyrillic_o,       Cyrillic_O  ]   };
    key <AC09> {[ Cyrillic_pe,      Cyrillic_PE ]   };
    key <AC10> {[ Cyrillic_e,       Cyrillic_E, Cyrillic_zhe,     Cyrillic_ZHE ]}; 
    key <AC11> {[ Cyrillic_de,      Cyrillic_DE ]};     

    key <AB05> {[ U04AB,            U04AA ]}; // ҫ
    key <AB06> {[ Cyrillic_i,       Cyrillic_I ]};
    key <AB07> {[ Cyrillic_te,      Cyrillic_TE ]}; 
    key <AB08> {[ Cyrillic_softsign,Cyrillic_SOFTSIGN, Cyrillic_hardsign,Cyrillic_HARDSIGN ]};
    key <AB09> {[ Cyrillic_yu,      Cyrillic_YU ]}; 

    include &quot;level3(ralt_switch)&quot;
};

Windows

To create a custom keyboard layout for Windows is easy, but it is hard to contribute to Windows official releases. We only need to install the Microsoft Keyboard Layout Creator.

This is how the new Chuvash Keyboard layout looks like in Windows (Chuvash 2015.1)

chuvash-win-kbd-normal

chuvash-win-kbd-shiftl

chuvash-win-kbd-altgr

Dead keys

Creating a Russian Extended Keyboard Layout

In my spare time I am currently working on a Chuvash-Tatar phrasebook. I have used the Chuvash and Tatar keyboard layout on Linux. They work fine, but switching between them takes time. So I decided to add Tatar letters (right Alt + combinations) to my Chuvash keyboard layout. While adding it I found a combined Russian-Ukranian United keyboard layout and I thought:

  • What if I create a new keyboard layout for Russian that will have almost all additional Cyrillic letters? A Russian Extended keyboard layout could be based on the Russian keyboard layout and have other non-Russian letters.

This is what I have come up to so far. The definition can be found on my project at github: russian-extended-kbd. I will update it more and provide more info about how it is organized and how to install it. I’ll also try to implement it for Windows and maybe for Mac (I doubt it, everything is so locked-down there).

rux-xkb-kbd

This is just a proof-of-concept so far. It only works on Linux (with xkb). Nevertheless, some key characteristics of this layout:

  • It has all the letters of Russian, Erzya, Moksha, Chuvash, Udmurt, Mari (Meadow and Hill Mari), Bashkir, Tatar and other languages of the Russian Federation and other countries.
  • It provides powerful dead keys for (breve, diaeresis, double acute, macron) for composing multiple Cyrillic non-Russian letters
  • It is not as quick as “native” keyboard layouts, but you can type text in many languages without switching the keyboard layout.
  • It has many other characters that are not present in the Russian standard keyboard layout for editing in wiki, markdown and other formats: [ ] { } ~, mathematical symbols: ≈ ÷ ∞ ° ‰ ≤ < > ≥ × •
  • It leaves the numbers. Compared too many other keyboard layouts (see below), this layout does not “steal” the number row. You still can type numbers as usual.

Dead keys

As I mentioned above, dead keys is a powerful feature for composing letters. It is harder to write, but the layout can cover many letters.

These dead keys work

diaeresis ӱ ӥ ӓ ӟ ӝ ӹ ӧ ӵ ӛ ё ї ӫ
double acute ӳ
breve ӑ ӗ ў й
macron ӣ ӯ

These do not work for now (but maybe in future):

cedilla ҫ ҙ
bar ғ ұ
hook ң ҳ қ

So many variants of similar letters

A big challenge in creating a Russian Extended keyboard layout is the fact that languages use different letters for the same sounds (meaning similar sounds).

  • /œ/ is ө (Tatar, Bashkir, Sakha…), and ӧ in (Altay, Udmurt, Mari…)
  • /y/ is ӳ (Chuvash), ӱ (Mari, Altay, Khakas), ү (Tatar, Bashkir, Sakha)
  • /ŋ/ is ҥ (Altay, Sakha, Mari), and ң (Tatar, Bashkir, Khakas, Khanty)

Well, the sounds are not the same, but they are similar. The Swedish Ä is not the same as the German Ä either. If we had a more united Cyrillic script, it would be easier to create a keyboard layout and to read and learn each others’ languages.

The letters from different languages are compare in my Google document.

Some “Native” keyboard layouts of the minority languages of the Russian Federation

chuvash-xkb-kbd

udmurt-xkb-kbd

mari-xkb-kbd

komi-xkb-kbd

kalmyk-xkb-kbd

bashkir-xkb-kbd

ossetian-xkb-kbd

sakha-xkb-kbd

tatar-xkb-kbd

 

 

Other Cyrillic keyboard layouts (outside the Russian Federation)

ukrainian-xkb-kbd

belarusian-xkb-kbd

tajik-xkb-kbd

bulgarian-xkb-kbd

kazakh-xkb-kbd

mongol-xkb-kbd

 

Chuvash localization

Recently I wanted to add Chuvash localization to the jQuery UI datepicker. Unfortunately, my pull request was rejected. The reason is that jQuery UI will be using Globalize framework:

Selection_003

The jQuery Globalize framework relies on CLDR, so

What is Unicode CLDR (Common Locale Data Repository)?

The Unicode CLDR provides key building blocks for software to support the world’s languages, with the largest and most extensive standard repository of locale data available. This data is used by a wide spectrum of companies for their software internationalization and localization, adapting software to the conventions of different languages for such common software tasks

Today there is no Chuvash locale in the CLDR project. So it it is time to add it.

I have filed a ticket on CLDR.

Other Chuvash localization projects

A Chuvash locale exists in a couple of projects:

Code

Just to be complete, here is the Chuvash locale for jQuery UI datepicker that I wanted to add:

/* Written by Anatoly Mironov (@mirontoli). */
(function( factory ) {
	if ( typeof define === &quot;function&quot; &amp;&amp; define.amd ) {

		// AMD. Register as an anonymous module.
		define([ &quot;../datepicker&quot; ], factory );
	} else {

		// Browser globals
		factory( jQuery.datepicker );
	}
}(function( datepicker ) {

datepicker.regional['cv'] = {
	closeText: 'Хуп',
	prevText: '<Кая',
	nextText: 'Мала>',
	currentText: 'Паян',
	monthNames: ['кӑрлач','нарӑс','пуш','ака','ҫу','ҫӗртме',
	'утӑ','ҫурла','авӑн','юпа','чӳк','раштав'],
	monthNamesShort: ['кӑр','нар','пуш','ака','ҫу','ҫӗр',
	'утӑ','ҫур','авн','юпа','чӳк','раш'],
	dayNames: ['вырсарникун','тунтикун','ытларикун','юнкун','кӗҫнерникун','эрнекун','шӑматкун'],
	dayNamesShort: ['выр','тун','ытл','юнк','кӗҫ','эрн','шӑм'],
	dayNamesMin: ['Вр','Тн','Ыт','Юн','Кҫ','Эр','Шм'],
	weekHeader: 'Эрне',
	dateFormat: 'dd.mm.yy',
	firstDay: 1,
	isRTL: false,
	showMonthAfterYear: false,
	yearSuffix: ''};
datepicker.setDefaults(datepicker.regional['cv']);

return datepicker.regional['cv'];

}));

It is time to standardize the Chuvash Keyboard Layout

Proto-Bulgarian Runes. Wonder if they are supported in Unicode :)

Proto-Bulgarian Runes (Chuvash language is the closest language to the Proto-Bulgar language). Wonder if they are supported in Unicode 🙂

The Chuvash Computer Keyboard layouts have existed since 2001, but due to the lack for Unicode support we were forced to use the look-alike letters  from other latin-based keyboard layouts. On Linux The Chuvash keyboard layout was added in 2007 and Linux is still the only operating system that has a native keyboard layout for Chuvash language. On Windows we have used the Keyboard Layout Creator and distributed it as an executable file.

Today, when Windows XP is not supported anymore, the majority of users now have full support for the correct Chuvash letters from the Extended Cyrillic table. These four Chuvash letters are “additional” to the Russian alphabet: ӐӖҪ and Ӳ.

Now when new “keyboards” appear on Android, in web browser (they use the standardized letters) and hopefully in Windows and iOS, we have to consider put the correct letters into the keyboard layouts. For Linux the /usr/share/X11/xkb/symbols/ru file has to be updated:

// Chuvash language layout
// Anatoly Mironov @mirontoli
partial alphanumeric_keys
xkb_symbols "cv" {
    include "ru(winkeys)"

    name[Group1]= "Chuvash";

    key.type[group1]="FOUR_LEVEL";

    key        <AD03> {        [      Cyrillic_u,	Cyrillic_U,
                            0x010004f3,    0x010004f2      ]       };
    key        <AD05> {        [      Cyrillic_ie,     Cyrillic_IE,
                       0x010004d7,	0x010004d6     ]       };
    key        <AC04> {        [      Cyrillic_a,	Cyrillic_A,
                          0x010004d1,  0x010004d0      ]       };
    key        <AB03> {        [      Cyrillic_es,     Cyrillic_ES,
                            0x010004ab,    0x010004aa      ]       };

    include "level3(ralt_switch)"
};

Impact

This switch will have a huge impact on the Chuvash language. Much of content on forums, websites and Chuvash Wikipedia will be hardly searchable. But we have to do it, to standardize and prepare for the future. The Chuvash language Committee is not against it, despite it has not been updated the guidelines for using letters from 2009.

Edit 2014-04-30

The bug in the freedesktop bugzilla was solved very quickly. In fact, in the new Ubuntu 14.04 you’ll find a correct keyboard layout:

chuvash-keyboard-map

Here is the source code:
chuvash-keyboard-xkb

partial alphanumeric_keys
xkb_symbols "cv" {
    include "ru(winkeys)"

    name[Group1]= "Chuvash";

    key.type[group1]="FOUR_LEVEL";

    key        <AD03> {        [      Cyrillic_u,	Cyrillic_U,
                          U04F3,    U04F2      ]       };
    key        <AD05> {        [      Cyrillic_ie,     Cyrillic_IE,
                          U04D7,    U04D6     ]       };
    key        <AC04> {        [      Cyrillic_a,	Cyrillic_A,
                          U04D1,    U04D0      ]       };
    key        <AB03> {        [      Cyrillic_es,     Cyrillic_ES,
                          U04AB,    U04AA      ]       };

    include "level3(ralt_switch)"
};

Update 2015-01-01

Today chuvash.org has switched to Cyrillic letters. I also submitted a pull request in momentjs to update the labels.

Pragmatic Responsive Design

I have been curious about the responsive design but have not had time to try it out. To learn more I decided to make an existing website more responsive. A friend of mine drives a Chuvash Dictionary website: samah.chv.su. Today it looks like this in a mobile browser:

Before responsiveThe site is a classic 1000px-ish centered page with header and two columns. The left column is for the main content and the right column for additional “aside” information. Can it be more classic? This current version works, you can still use the dictionary on a mobile phone. But there are several improvements that can be done:

  • Avoid scaling to be able to read text
  • Avoid scrolling back and forth to read every line
  • Move the right column down, it is better to use the space for the main content.
  • Hide the quick links to the individual letters
  • Shrink unused space in the header.



What I wanted was to provide some easy steps to make it more responsive. The steps had to be pragmatic: some easy-to-implement steps that would make a difference, and with very little impact on existing markup.

I created a copy of this page and made it available publicly, because I wanted to access from everywhere and test it on so many devices and resolutions as possible. I used Github Pages to get the version control too, even though a public folder on Dropbox, OneDrive or Google Drive could give the same result.

Here is my list of what I did to make it more responsive:

Don’t do anything for larger resolutions

Just leave it as it is, unless you want to redesign your site.

Create the css file for responsive design

Just create a file and call it responsive.css. Reference this file inside your site in a usual way.

<link rel="stylesheet" href="./responsive.css" type="text/css">

Set witdh 100% when a scroll appears

Find the “break point” where your site gets a horizontal scroll. To do so, just fire the Chrome Dev Tools, dock it to the right, and resize your page. In my case it was 1016px. Now it is time to do a change. Create a media query for that and try to remove all the hard-coded width values by setting width:100%. Well something towards this “very responsive site”.

@media all and (max-width: 1016px) {
    .art-sheet {
        width: 100%;
    }
    div.art-header {
        width: 100%;
    }
}

Let the columns disappear

Find the width where two columns become ugly and impractical. Create a media query for that and just style the columns so they do not float. In my case the original site uses table-row layout. I set display:block and the right column went down.

@media all and (max-width: 675px) {
  div.art-content-layout-row {
      display: block;
  }
  div.art-content-layout div.art-layout-cell {
      display: block;
  }
  div.art-content-layout-row {
      display: block;
  }
}

Prevent scaling in mobiles

Now your page is more responsive in a desktop browser, but it is still unreadable in a mobile. The reason is the mobile browser that scales it for us. Let’s disable it. Just put this meta tag in the head session of your page:

<meta name="viewport" content="width=device-width, initial-scale=1">

Hide rarely used elements

In a mobile we want to see the most important things, the actual content. Hide menus and remove empty spaces. In my case I hid the letters that took to much place and the language switcher. They can be shown in another menu (see below).

Make a responsive navigation menu

It is not complicated at all. You can google it. There are many tips and jQuery plugins. I did in a very easy way. I added a new div to my html:

<div id="responsive-menu" onclick="toggleMenu()">☰</div>

I also added this css style and hid this div for bigger resolutions:

#responsive-menu {
  position: absolute;
  right: 5px;
  top: 15px;
  font-size: 30px;
  cursor: pointer;
  display: none;
}
@media all and (max-width: 399px) {
  #responsive-menu {
    display: block;
  }
}

Here is the tiny javascript click event listener:

(function() {
  var menuOpen = false
      , menu
      , langSwitcher;

  window.toggleMenu = function() {
    menu = menu || document.getElementsByTagName("center")[0];
    menu.style.display = menuOpen ? "none" : "block";
    menuOpen = !menuOpen;
  }
})();

Here is the result. There are still some improvements that can be done, but here is the result of the my changes.

samah-004 samah-003

Add a website icon

Improve the user experience by adding a website icon. It will be used when an iPhone, iPad and Android user will save your page as a bookmark (and it will be placed on the screen and look like any app). Here is how I did:

  1. I created a 74 x 74 px png image and saved it as apple-touch-icon.png. I placed it in the “root folder”.
  2. In the page markup I added this line inside the head element:
<link rel="apple-touch-icon" href="apple-touch-icon.png">

That’s it. So now when someone saves the website as a bookmark, it looks like this:

photo samahsar-001 Screenshot_2014-03-25-23-30-02

Then on the mobile screen it looks like any other app. It works even on Android devices (even though the icon is an apple-touch-icon).

 

UPDATE 2014-03-25

Now these changes are implemented on the real site: samah.chv.su

UPDATE 2014-05-12

I discovered a blog post about how to adjust a web app for best experience in iOS. This gist is a perfect example what you can add for properties.

<!-- Run in full-screen mode. -->
<meta name="apple-mobile-web-app-capable" content="yes">
<!-- Make the status bar black with white text. -->
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<!-- Prevent text size adjustment on orientation change. -->
<style>html { -webkit-text-size-adjust: 100%; }</style>

On Windows keyboard layouts for minority languages in Russia

keyboard-bak-tat-sak

I can’t write in Chuvash in Windows 8 (and all the previous Windows releases). Chuvash is a minority language in Russian Federation. In this blog post I want to summarize the status of the keyboard layout support of the minority languages of Russia and find a way to improve this situation.

Languages and Microsoft

There are thousands of languages. Of course it is hard to support them all. As per 2012-02-21 Windows 8 supports 109 (!) languages. In december 2012 the support for Cheerokee language was added.

Display language, locale and keyboard layout

In Windows 8, when you go to Language preferences – Add a language, you’ll get “a language”. Behind this general word there are three parts which have to be distinguished in this post:

  • Display language (labels, messages and other user interface in the particular language)
  • Locale (a set of preferences for a particular language and region/country like currency, point or comma as a decimal delimiter, ltr vs rtl, encoding and much more)
  • Keyboard layout (just an arrangement of keys, their placement, can be specific for a language or country, can have different systems like Dvorak)

This blog post is about the keyboard layouts, the easiest part of the “language” support in an operating system.

Russian Federation minorities

There are 160 ethnic groups in Russia speaking over 100 minority languages. The most of ethnic groups ar so called stateless nations meaning there is no main country for this nation (e.g. Sami people in Sweden, but not Germans in the USA).

In Russia there are 21 republics which have their own official languages alongside Russian and their purpose is to be home for ethnic groups. I’ll focus mostly on the official languages in these republics in this blog post, but it would be interesting to investigate smaller languages as well.

Allmost all of the minority languages of stateless nations use the Cyrillic alphabet (often with additional letters). So it makes it pretty simple to see how many languages are supported in Windows 8. Just Go to the Language preferences -> Add a language and group them by writing system. See the screenshot above. There are only three minority keyboard layouts which are supported:

  • Bashkir (1,45 millions speakers)
  • Sakha (Yakut, 360 native speakers)
  • Tatar (4,3 millions speakers)

The funny thing is that all the three are Turkic languages.
There are two additional language keyboard layouts which are implicitly supported:

These two languages (which are co-official languages in the republic of Mordovia) don’t use any additional letters. That’s it. So they can write using only the standard Russian keyboard layout.

Keyboard layouts in Linux

Just a little comparison. In Linux distributions there are more minority languages from Russian Federation represented. The supported ones can be found in the /usr/share/X11/xkb/symbols/ru file:

  • Tatar / tt
  • Ossetian / os
  • Chuvash / cv
  • Udmurt / udm
  • Komi / kom
  • Sakha (Yakut) / sah
  • Kalmyk / xal
  • Bashkir / bak
  • Mari / chm

All these keyboard layouts were added by the community. I personally sent the Chuvash and Kalmyk fragments of that file to Sergey Udaltsov who created patch files and pushed it to freedesktop.

keyboard-xal

Windows 8 keyboard layouts and Touch mode

When I tried these three supported minority language keyboard layouts of Russia in touch mode, only one worked! It was the Tatar keyboard layout.
tatar-keyboard-layout-in-touch

The tatars can type all their additional letters in touch mode as well.

Bashkir and Sakha keyboard layouts use the row above qwerty: 12345… Here is the preview for the classic Sakha keyboard layout:

sakha-preview

And what about the virtual touch keyboard layout for Sakha language?

sakha-touch

As you can see there are no keys for the additional letters for Sakha language (ҕ ҥ ө һ).

Summary

Many minority languages of Russian Federation (the most of them already endangered) miss the native keyboard layout support in Microsoft Windows 8 and Windows 7. Windows is a prevalent operating system in Russia. The support for minority language keyboard layout would help people to use their languages and give more chances for languages to survive. For now there are only 3 languages (besides Russian and implicitly some others like Moksha and Erzya) which are supported in Windows 8 with a physical keyboard: Tatar, Bashkir and Sakha. And only one of them (!) works even in touch mode: Tatar.

The purpose of this post is only to identify the status for Russian Federation minority language keyboard layout support in Windows 8. Microsoft Local Language Program (LLP) seems very promising. I hope we will see more languages of Russia and other countries available in “Add language” menu in Microsoft Windows 8.

Long tap and additional letters in Windows 8 (update 2013-03-16)

After I wrote this post I discovered some additional letters available when you long-tap the buttons on the virtual keyboard. Here is an excerpt from the Microsoft Blog about the “press-and-hold”-letters:

There is an interesting counter example in press-and-hold behavior. On a physical keyboard, when you press and hold a character, it repeats. On our touch keyboard when you press and hold, we show alternate characters or symbols. This is something a touch keyboard can do well and a physical keyboard can’t. If you don’t know the specific key combination to show ñ or é or š, for example, it’s painful to type on a physical keyboard. It’s easy to find on the touch keyboard. Practically no one has complained about this departure from convention. We built on it, in fact. You might discover that you can simply swipe from a key in the direction of the secondary key, and that character will be entered, without an explicit selection from the menu. So if you use accented characters a lot, you can get pretty fast with this.

I appreciate this. Here come all the letters I found in the Russian keyboard layout:

Flyout letters Main letter Additional letters
long-tap-u у ү   ұ
long-tap-k к ҡ   қ
long-tap-n н ң   ҥ
long-tap-g г ғ   ҕ
long-tap-z з ҙ
long-tap-h х һ
long-tap-o о ө
long-tap-e э ә
long-tap-s с ҫ
long-tap-i и і

Here is the full list of the Cyrillic additional letters:

ү Cyrillic Ue Bashkir, Tatar, Kazakh, Buryat, Kalmyk, Kyrgyz, Mongolian
ұ Straight U with stroke Kazakh
ҡ Bashkir Qa Bashkir
қ Ka with descender Kazakh, Uyghur, Uzbek, Tajik, Abkhaz
ң En with descender Bashkir, Tatar, Kazakh, Dungan, Kalmyk, Khakas, Kyrgyz , Turkmen, Tuvan, Uyghur
ҥ En-ghe (Cyrillic) Sakha, Meadow Mari, Altai, Aleut
ғ Ge with stroke Bashkir, Kazakh, Uzbek, Tofa, Tajik
ҕ Ge with middle hook Sakha, Abkhaz
ҙ Ze with descender Bashkir
һ Shha Bashkir, Sakha, Tatar, Kazakh Buryat Kalmyk Kildin Sami
ө Barred O (Oe) Bashkir, Sakha, Kazakh, Buryat, Kalmyk, Kyrgyz, Mongolian
ә Cyrillic Schwa Bashkir, Tatar, Kazakh, Abkhaz, Dungan, Itelmen, Kalmyk, Kurdish
ҫ Cyrillic The Bashkir, Chuvash
і Dotted i Kazakh, Ukrainian, Belarusian, Khakas, Komi, Rusyn

Those are missing: ӑ ӳ

ӗ E breve Chuvash
ӑ A breve Chuvash
ӳ U with double acute Chuvash
ӝ Zhe with diaeresis Udmurt
ӟ Ze with diaeresis Udmurt
ӥ I with diaeresis Udmurt
ӧ O with diaeresis Udmurt, Meadow Mari, Hill Mari
ӵ Che with diaeresis Udmurt
ӓ A with diaeresis Hill Mari
ӱ U with diaeresis Meadow Mari, Hill Mari
ӹ Yery with diaeresis Hill Mari

Here we have four fully functional language keyboard layouts if you are okay with long-tapping:

Bashkir ғ ҡ ҙ ҫ ң һ ә ө ү
Sakha ҕ ҥ ө һ ү
Tuvan ң ү ө
Buryat ө ү һ

Bashkir and Sakha, I suppose, were considered whilst designing the keyboard layout, and Tuvan and Buryat language letters only happen to be within the Bashkir and Sakha letters range.

Tatar letters aren’t complete in the standard Russian keyboard layout, the reason for that must be, as I mentioned above, the full functional virtual keyboard for Tatar (where is no need for long-tapping).

There is another language which contains all the letters through long-tapping. Kazakh is absolutely a minority language of Russia, but it doesn’t represent a stateless nation.

Kazakh ғ ә қ ң ө ү ұ і һ

Long-tapping technique could be a solution for many minority languages of Russia:

Language Existing letters To be added
Chuvash ҫ ӗ ӑ ӳ
Udmurt ӝ ӟ ӥ ӧ ӵ
Meadow Mari ҥ ö ӱ
Hill Mari ä ö ӱ ӹ
Komi і ö
Altay ҥ ј ӧ ӱ

Chuvash localization of moment.js

For three months ago I added Chuvash localization of moment.js. For 16 days ago moment.js 1.7.0 was officially released which included the Chuvash translation.

Wait a sec… What is moment.js?

moment.js is the best datetime tool for javascript. It supports many languages (now even Chuvash) for displaying date and time. Another very handy functionality is showing relative time which has a simple interface: fromNow().

Here is a simple example from a web browser console:

moment.lang("cv")
moment().subtract("days", 3).calendar()
//"Иртнĕ вырсарникун 07:30 сехетре"
moment().subtract("days", 3).subtract("hours", 10).calendar()
//"Иртнĕ шăматкун 21:31 сехетре"
moment("2011-10-04", "YYYY-MM-DD").fromNow()
//"10 уйăх каялла"
moment("2012-10-04", "YYYY-MM-DD").fromNow()
//"2 уйăхран"

Previous Issues

UPDATE: It has been released an update of moment.js: 1.7.1 where all of the issues with Chuvash localization are gone.
For Until now there is was one issue with Chuvash localization of moment.js: wrong suffix in future relative time. In most supported languages in moment.js to express something what will happen in future, prepositions (words before, like in, for, by) are used. In the agglunative languages (Basque, Turkish, Korean and Japanese) postpositions (words after) are used. Chuvash is a bit different, the future is expressed by the ablative case.

ikĕ ujăh (2 months) - ikĕ ujăhran (in two months)

Not a big deal, you think? It wouldn’t be if it there wasn’t vowel harmony (front and back vowels):

ikĕ sehet (2 hours) - ikĕ sehetren (in two hours)

Besides vowel harmony the ablative case affix can be ran/ren (after almost all sounds) and tan/ten (after l n r).

ikĕ şul (2 years) - ikĕ şultan (in two years)

For now it is not possible to provide a function for custom logic for future fromNow (like there is such functions for time units: minutes, montsh, years), something like that:

relativeTime : {
	future : function(output) {
		var affix = /сехет$/i.exec(output) 
                     ? "рен" : /çул$/i.exec(output) ? "тан" : "ран";
		return output + affix; 
	}
	//...

And the “humanize” function in moment.js has to be able to handle a function as parameter:

humanize : function (withSuffix) {
	var difference = +this,
		rel = this.lang().relativeTime,
		output = relativeTime(difference, !withSuffix, this.lang());
	if (withSuffix) {
		var rt = difference <= 0 ? rel.past : rel.future;
                //was: output = (difference <= 0 ? rel.past : rel.future).replace(/%s/i, output);
		if (typeof rt === 'function') {
			output = rt(output);
		}
		else {
			output = rt.replace(/%s/i, output);
		}
	}
	return output;
}

Chuvash translation of Wikipedia Mobile

The official Wikipedia mobile app is now translated into Chuvash language and available to use:

What does Chuvash mean?

I am Chuvash. Chuvash is the name of an ethnicity which counts up to 2 milions peoply (mostly in Russia). Chuvashes talk the Chuvash language which is also an official language in Chuvash Republic (besides Russian). Chuvash language is a Turkic language and has a status “Vulnerable” in the UNESCO list of languages in danger. There is a Chuvash Wikipedia cv.wikipedia.org.

What is Wikipedia Mobile?

Wikipedia Mobile is a mobile application which is available on Google Play and App Store. It is written mostly in javascript and uses Cordova (PhoneGap) as a mobile container to interact with a mobile device.

Translation

I translated text strings into Chuvash on translatewiki.net which is used for the translation of wikimedia projects and external projects. Thanks for the tip to @aharoni and Sakha Wikipedia mailing list. If you can write Chuvash, please feel free to correct and add new text strings.

How to use

To be able to see the Chuvash interface we have to have a Chuvash locale. Unfortunately there is no one. If you are using Android then you are a lucky one, you can add any locale with MoreLocale 2 app.

Just install it and add a new locale (cv or cv-RU):

By the way, to write with additional four letters in Chuvash (besides the Russian 33 letters), you can use the Chuvash keyboard layout for Android which I published on Google Play. The most interface on your mobile will use default strings (English), but Wikipedia Mobile’s interface will be completely in Chuvash 🙂

Chuvash Keyboard for Android

Screndump of Chuvash KeyboardNow there is a Chuvash keyboard for Android. The little program uses AnySoftKeyboard application, gives the ability to write in Cyrillic and Latin. All kinds of feedback are appreciated. Chuvash Keyboard for Android is open source like AnySoftKeyboard.

Discovering SharePoint

And having fun doing it

Bram de Jager talking Office 365, SharePoint and Azure

My view and thoughts on Productivity and more.

My programming life

and everything in between

SharePoint Development Lab by @avishnyakov

It is a good place to share some SharePoint stories and development practices.

SharePoint Dragons

Nikander & Margriet on SharePoint

RealActivity - Real-time and trustworthy

Blog site of founder, RealActivty - Paul J. Swider

Mai Omar Desouki - Avid SharePointer

Egyptian & Vodafoner - Senior SharePoint Consultant

Cameron Dwyer | Office 365, SharePoint, Outlook, OnePlace Solutions

Office 365, SharePoint, OnePlace Solutions & Life's Other Little Wonders

paul.tavares

Me and My doings!

Share SharePoint Points!!

By Mohit Vashishtha

Jimmy Janlén "Den Scrummande Konsulten"

Erfarenheter, synpunkter och raljerande om Scrum från Jimmy Janlén

SPJoel

SharePoint for everyone

SharePointRyan

Ryan Dennis is a SharePoint Solution Architect with a passion for SharePoint and PowerShell

SharePoint 2020

The Vision for a Future of Clarity

Aharoni in Unicode, ya mama

Treacle tarts for great justice

... And All That JS

JavaScript, Web Apps and SharePoint

blksthl

Mostly what I know about SharePoint - CommunicoCuspis