Warning: include_once(/home/sankarshan/sankarshan.randomink.org/blog/wp-content/plugins/wp-super-cache/wp-cache-phase1.php): Failed to open stream: No such file or directory in /home/sankarshan/sankarshan.randomink.org/blog/wp-content/advanced-cache.php on line 10

Warning: include_once(): Failed opening '/home/sankarshan/sankarshan.randomink.org/blog/wp-content/plugins/wp-super-cache/wp-cache-phase1.php' for inclusion (include_path='.:') in /home/sankarshan/sankarshan.randomink.org/blog/wp-content/advanced-cache.php on line 10

Deprecated: Return type of WP_Theme::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-theme.php on line 554

Deprecated: Return type of WP_Theme::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-theme.php on line 595

Deprecated: Return type of WP_Theme::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-theme.php on line 535

Deprecated: Return type of WP_Theme::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-theme.php on line 544

Deprecated: Return type of WP_REST_Request::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/rest-api/class-wp-rest-request.php on line 952

Deprecated: Return type of WP_REST_Request::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/rest-api/class-wp-rest-request.php on line 972

Deprecated: Return type of WP_REST_Request::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/rest-api/class-wp-rest-request.php on line 984

Deprecated: Return type of WP_REST_Request::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/rest-api/class-wp-rest-request.php on line 995

Deprecated: Return type of WP_Block_List::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-block-list.php on line 151

Deprecated: Return type of WP_Block_List::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-block-list.php on line 175

Deprecated: Return type of WP_Block_List::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-block-list.php on line 164

Deprecated: Return type of WP_Block_List::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-block-list.php on line 186

Deprecated: Return type of WP_Block_List::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-block-list.php on line 138

Deprecated: Return type of WP_Block_List::offsetExists($index) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-block-list.php on line 75

Deprecated: Return type of WP_Block_List::offsetGet($index) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-block-list.php on line 89

Deprecated: Return type of WP_Block_List::offsetSet($index, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-block-list.php on line 110

Deprecated: Return type of WP_Block_List::offsetUnset($index) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-block-list.php on line 127

Deprecated: Return type of WP_Block_List::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/class-wp-block-list.php on line 199

Deprecated: Return type of Requests_Cookie_Jar::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/Requests/Cookie/Jar.php on line 63

Deprecated: Return type of Requests_Cookie_Jar::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/Requests/Cookie/Jar.php on line 73

Deprecated: Return type of Requests_Cookie_Jar::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/Requests/Cookie/Jar.php on line 89

Deprecated: Return type of Requests_Cookie_Jar::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/Requests/Cookie/Jar.php on line 102

Deprecated: Return type of Requests_Cookie_Jar::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/Requests/Cookie/Jar.php on line 111

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 40

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 51

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 68

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 82

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 91

Deprecated: register_widget_control is deprecated since version 2.8.0! Use wp_register_widget_control() instead. in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/functions.php on line 4861

Deprecated: register_sidebar_widget is deprecated since version 2.8.0! Use wp_register_sidebar_widget() instead. in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/functions.php on line 4861

Deprecated: ltrim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/wp-db.php on line 3031

Warning: Cannot modify header information - headers already sent by (output started at /home/sankarshan/sankarshan.randomink.org/blog/wp-content/advanced-cache.php:10) in /home/sankarshan/sankarshan.randomink.org/blog/wp-includes/feed-rss2.php on line 8
i8n – Random thoughts and serendipity http://sankarshan.randomink.org/blog A collection of jottings on various issues that excite no one else Tue, 16 Dec 2008 06:08:15 +0000 en-US hourly 1 https://wordpress.org/?v=5.6.13 21471312 …and here we go again http://sankarshan.randomink.org/blog/2008/12/16/and-here-we-go-again-2/ http://sankarshan.randomink.org/blog/2008/12/16/and-here-we-go-again-2/#comments Tue, 16 Dec 2008 06:08:15 +0000 http://sankarshan.randomink.org/blog/?p=464 Continue reading …and here we go again ]]> In an article on l10n and i18n published in this month’s edition of LinuxForYou (the article isn’t available online), Kenneth Gonsalves makes a statement as (italics are mine):

The vast majority of applications today are internationalised – the need of the hour is to provide translations in Indian languages. Except for some major applications, very little work is being done in this field. I don’t know whether it is because people are not aware of the need, are too lazy or they do not know how to!

This thought seems to be the new black. Adding on to the pre-existing notions of:

  • translations are very easy to do
  • translations are for hobbyists

On some days I am surprised about why such perceptions prevail. If any language team/community works on

  • a single distribution
  • two desktop environments
  • a browser
  • a mail client
  • an office suite
  • web-site content translation
  • release notes translation

then, assuming that most projects end up following a 6 month release cycle, it leaves folks with around 3+ months (on an optimistic schedule) to work with. In fact with “string freeze” (or, the time when the developers hand off the English versions to the translators) the effective window to actually translate is around 1 month. And, I have seen that for whatever little translations I have done for GNOME and OLPC.

And, the fact that schedules are tight can be seen on the mailing lists during desktop environment release times. So, if we can assume that the teams aren’t lazy and they know what they are doing, adding any more applications to be translated (and localized) would require capacity to be added. Which means that those who do go about FOSS evangelism and FOSS advocacy have to comprehend the following:

  • translation is not easy. Idiomatic English does not lend itself easily to translations and more importantly, message strings are sometimes not well constructed to be translated. For example, read this blog entry.
  • translation is not for hobbyists. It is a process of ensuring newer applications and releases are available in the local language. Thus, it means that teams working on translations improve quality of existing translations, check for consistency and still manage to work on newer releases. It is a serious business and folks take pride in a job well done.

If there are more applications that require translations/l10n, it would be a good effort to start coordinating with the language teams (via the IndLinux mailing list perhaps) rather than assuming that teams don’t know about such applications or, are lazy.

]]>
http://sankarshan.randomink.org/blog/2008/12/16/and-here-we-go-again-2/feed/ 6 464