Monday, April 14, 2008

සිංහල යුනිකේතයෙන් සිංහල උපසිරසි යෙදීම.

චිත්‍රපටයකට උපසිරසි යෙදීමට විවිධ ක්‍රම භාවිතා කරනවා. වඩාත් ම ලෙහෙසි ක්‍රමය තමයි උපසිරසි ගොනුවක් සාදා එය චිත්‍රපටය සමඟ විවෘත කිරීම. පහත සඳහන් වන්නේ මම සුලු වෙනස්කමකට ලක්කල .srt ගොනුවක කොටසක්.

1
00:00:34,183 --> 00:00:35,582
මයිකල්.

2
00:00:35,751 --> 00:00:38,686
Dear Michael. Of course it's you.
Who else could they send?


3
00:00:38,854 --> 00:00:40,185
තවත් කවුද අපිට විශ්වාස කරන්න පුලුවන්.?
.....
.....
.....
174
00:12:03,572 --> 00:12:07,702
ඒ පොලීසියෙන් වෙන්න ඇති නේද?

175
00:12:07,876 --> 00:12:09,275
නෑ.

176
00:12:10,111 --> 00:12:11,772
ඒ ගොල්ලෝ කෝල් කර කර ඉන්නේ නෑ.

බැලූ බැල්මට පේනවා වගේම මෙම ගොනුව ඉතා ලෙහෙසියෙන් තේරුම්ගතහැකි ආකාරයේ ආකෘතියක් ඇති එකක්. මුලින්ම උපසිරසියේ නොම්මරයත්, දෙවනුව එය තිරයේ පෙන්විය යුතු කාල පරාසයත්, තෙවනුව උපසිරසි වදන්පෙලත් දැක්වෙනවා. මම කලේ ඉංග්‍රීසි ගොනුව අරගෙන උපසිරසි කිහිපයක් සිංහලට හරවා UTF-16 ක්‍රමයට සුරැකුවා. ඉන්පසු vlc මාධ්‍ය ධාවකයේ චිත්‍රපටයත්, උපසිරසි ගොනුවත් දෙකම එකට විවෘත කලා. එහි File -> Open File ... යොමුවෙන් පණගැන්වෙන සංවාද තිරයේ අදාල ස්ථානවලට ඔබගේ චිත්‍රපටයත්, උපසිරසි ගොනුවත් ඇතුලත් කර, Advanced Settings ... බොත්තම ඔබා Subtitle Text Encoding යන්නට UTF-16 ලබාදෙන්න. මීට අමතරව. Setting -> Preferences ... යොමුවෙන් පණගැන්වෙන සංවාද තිරයේ වමත් තීරුවේ ඇති රුක්යොමුවෙන් Video-\_Subtitiles/OSD-\_Text Renderer යන්නට ගොස්, Font සඳහා සිංහල යුන්කේත අකුරුවැලක් තෝරන්න.

චිත්‍රපටය බලන විට සිංහල උපසිරසි දර්ශණය වුවද රෙන්ඩරින් නිවැරදිව ක්‍රියා නොකිරීම නිසා කොම්බුව ආදිය විතැන් වී පෙනීමේ ගැටලුව නම් තිබුනා. මා මෙම පරීක්ෂණය කලේ ලිනක්ස් මෙහෙයුම් පද්ධතිය මත vlc මාධ්‍ය ධාවකයෙන්. මෙය වෙනත් මෙහෙයුම් පද්ධති මත හා විවිධ මාධ්‍ය ධාවක මත පරීක්ෂා කිරීමෙන් රෙන්ඩරින් නිවැරදිව පෙනෙන ධාවකයක් හොයාගන්න පුලුවන් වෙයි. හම්බවුනොත් අපටත් කියන්න.

Wednesday, November 21, 2007

වෙබ් පිටුවල charset=utf-16 යෙදීමෙන් පිටුවේ බර වැඩිවීමක් වේද?

සිංහල වෙබ් පිටු සැකසීමේදී මෙටා ටැග් එකෙහි charset=utf-8 ලෙස නොයොදා charset=utf-16 ලෙස යෙදීමේදී පිටුවේ බර වැඩිවීමක් වේද?

META http-equiv=Content-Type content="text/html; charset=utf-16"

මෙයින් වෙබ් පිටුවේ සැලකිය යුතු ආකාරයේ කිසිදු බර වැඩි වීමක් සිදු නොවේ. මෙහිදී මතක තබාගත යුතු කරුණ නම් UTF8 හා UTF16 කේතගතකරනයන් variable width කේතගතකරනයන් වීමයි. තවදුරටත් පැහැදිලි කරතොත් මේවා එක් එක් අකුර සඳහා වෙනස් බයිට සංඛ්‍යාවන් භාව්ත කරයි. UTF8 වලදී යුනිකේත අකුරු කේතයේ මුලින්ම තිබෙන අකුරු 128 නිරූපණයට එක් බයිටයක් යොදාගන්නා අතර ඉන්පසු තිබෙන අකුරු 1920ට බයිට දෙකක්ද ඉන් ඉදිරියට ඇති ඒවාට බයිට තුනක් ද යොදාගනියි. බයිට හතරක් යොදාගන්නා අකුරු ඇතද, basic multilingual plane නමින් හඳුන්වන කොටසේ ඇති චීන, ජපන්, සිංහල ආදී භාෂාත් ඇතුලත් භාෂා සඳහා බයිට 3ක් ප්‍රමාණවත් වේ. මෙනිසා ඉහත කේතගතකරණ දෙකින් කුමන කේතගතකරණය භාව්තා කලද සිංහල අකුරක් සඳහා යොදාගන්නේ බයිට 3කි(කරුණාකර මා වැරදි නම් නිවැරදි කරන්න). එනිසා වෙබ් පිටුවේ බර වැඩිවීමක් සිදුනොවේ. නමුත් මෙටා ටැග් එකේ 8 අංකය 16 කිරීමේදී වැඩිවන බයිට ප්‍රමාණය නම් වැඩිවිය යුතුය. තවද UTF32 කේතගතකරණය fixed width බවද මතක තබාගත යුතුය.

සිංහල නිසි ලෙස ක්‍රියාකිරීමට ඉහත පරිදි මෙටා ටැග් එක දැමීම අත්‍යාවශ්‍ය ම නොවේ. මෙහිදී දැනගත යුතු වනුයේ මුල සි‍ට අගට සිංහල වචනයකට සිදුවන්නේ කුමක් ද කියා අධ්‍යනය කිරීමයි. ඉතා සංකීර්ණ වුවත් එය ඉතා සැකෙවින් මෙසේ දැක්විය හැකිය.

ටෙක්ස් එඩිටරයකින් ටයිප් කිරීම හා ගොනුව සුරැකීම.
වෙබ් බ්‍රවුසරයකින් http request එකක් යැවීම.
වෙබ් සර්වරය ගොනුව කියවා http response එකක් යැවීම.
වෙබ් බ්‍රවුසරය එය කියවා දර්ශණය කිරීම.

ඉහත සෑම අවස්ථාවකදීම අදාල මෘදුකාංගය, ටෙක්ස් එඩිටරය, බ්‍රවුසරය හෝ සර්වරය නි‍වැරදි කේතගතකරණය තෝරාගෙන ක්‍රියාකරයි. ඔබ එඩිටරයක සිංහල ටයිප් කර සුරැකීමට යන විට එහි යුනිකේත අකුරු අඩංගු බව දැනගන්නා එඩිටරය එය වඩාත් සුදුසු UTF8 කේතගතකරනයෙන් සුරකියි. බ්‍රව්සරය http request යවන වි‍ට Accept-Charset: යනුවෙන් එය බලාපොරොත්තු වන කේතගතකරන් යවයි. වෙබ් සර්වරය ගොනුවේ කේතගතකරනයත්, ඉහත තොරතුරත් වෙනත් හේතුත් සලකා බලා සර්වරය Content-Type: එකේ කේතගතකරණය තෝරාගනියි. නැවතත් බ්‍රව්සරය ඒ මත පදනම්ව නිවැරදි කේතගතකරණය යොදාගෙන පිටුව දර්ශණය කරයි. මෙහිදී ඔබ යොදාගන්නා එඩිටරයේ, සර්වරයේ, බ්‍රව්සරයේ හා සර්වර්යේ යොදාගන්නා භාෂාවේ (ජාවා ද පීඑච්පී ද ආදී වශයෙන්) හැකියාවන් හා සූසර කිරීම් මත ප්‍රතිථල වෙනස් විය හැකි බව සැලකිය යුතුයි. ඩේටා බේස් එකක් යොදාගන්නේ නම් එහි යුනිකේත පහසුකම්ද බලපායි.

කෙසේවුවත් සිංහල වෙබ් අඩවි සෑදීමට මෙබඳු කරුණු සියල්ලම දැනගෙන සිටිය යුතු නොවේ. දැන් තිබෙන මෘදුකාංග කේතගතකරනයන් පිලිබඳ හොඳ අවධාන‍යකින් ක්‍රියාකරන නිසා හරිම පහසුයි.

Monday, October 15, 2007

සිංහලකරණය

සිංහලකරණය යනු මෘදුකාංගයක් හෝ මෘදුකාංග පද්ධතියක් හෝ වෙනත් යමක් සිංහලට දේශීයකරණය කිරීමයි. නමුත්, එසේ කිරීමේදී සිංහල සමාජයට ආවේණික සංස්කෘතිමය, සමාජමය හා අනෙකුත් කාරණා සැලකිල්ලට ගැනීම අනිවාර්‍යයෙන් ම කලයුතුය. එමනිසා සිංහලකරණය යනු හුදෙක් සිංහලට දේශීයකරණය කිරීමට වඩා පුලුල්ව යොදාගතයුතු සංකල්පයකි. බාහිර ලෝකයෙන්, විශේෂයෙන් ම බටහිරින් අප ලබාගත් බොහෝ දැනුම අපගේ ම කරගෙන ඒවායේ නියමුවන් බවට පත්වීමටත් එම ක්ෂේත්‍ර තුල ඔවුන් හා කරට කර සිටීමටත් අප අපොහොසත් වුයේ ඉහත සඳහන් පරිදි අපට ආවේණික සංස්කෘතික හා සමාජ මූලයන් තුලට ඒවා උකහා නොගෙන මතුපිටින් පමණක් ඒවා ග්‍රහණය කරගැනීමයි. එමනිසා සිංහලකරණයේ යෙදෙනවිට සැමවිටම අපගේ සමාජ සංස්කෘතික කාරණා ද සැලකිල්ලට ගනිමින් චිරස්ථායී දැනුමක් ගොඩනැගීම කෙරෙහි අවධානය යොමුකල යුතු වේ. මෘදුකාංගකරණයේදී සිංහලකරණය සඳහා ඉහත සඳහන් ආකාරයේ ප්‍රවේශයක් ලබාගැනීමෙන් ජනතාවට පරිඝණක තාක්‍ෂණයේ මහඟු ප්‍රතිඵල අත්පත් කර දීමට අදිටන් කරගනිමු.

ජාත්‍යන්තරකරණය හා දේශීයකරණය

මෘදුකාංග නිර්‍මාණකරණයේදී යම් මෘදුකාංගයක් ඉතා පහසුවෙන් වෙනත් භාෂා වලට පරිවර්තණය කල හැකි ආකාරයෙන් සැලසුම් කිරීම හා නිර්‍මාණය කිරීම ජාත්‍යන්තරකරණය (internationalization) ලෙසත් මෙලෙස ජාත්‍යන්තරකරණය කරණ ලද මෘදුකාංගයක් යම්කිසි භාෂාවකින් භාවිතා කිරීමට හැකිවන පරිදි තවදුරටත් සකස් කිරීම දේශීයකරණය (localization) ලෙසත් හඳුන්වයි.

ඔබ දන්නා පරිදි අප මෘදුකාංගයක් භාවිතයේදී මෘදුකාංගය සමඟ සන්නිවේදනය කිරීමට ක්‍රම කීපයක් භාවිතා කරයි. මේවා මූලික වශයෙන් input හා output වශයෙන් වර්‍ගීකරණය කරයි. පරිඝණය යතුරු පුවරුව භාවිතා කරමින් දත්ත ඇතුලුකිරීම, මූසිකය භාවිතයෙන් මෘදුකාංගය හැසිරවීම ආදිය inputs වන අතර දර්ශණ තිරය මඟින් හා මුද්‍රණ යන්ත්‍රයකින් දත්ත ලබාගැනීම outputs වේ. යම් මෘදුකාංගයක් කිසියම් භාෂාවකින් භාවිතා කලහැකිවීමට නම් එම භාෂාවෙන් එහි inputs ලබාදීමත් outputs ලබාගැනීමත් කලහැකිවිය යුතුය. ඊට අමතරව මෘදුකාංගය තුල ඇති සියලු ක්‍රියාකාරකම් එම භාෂාවට අනුගත වන ආකාරයට සිදුවිය යුතුය. උදාහරණයක් ලෙස ආකරාදි පිලිවෙලට වචන සකස්කිරීමේදී අදාල භාෂාවට අනුව එය කලයුතුය, මුදල් වගීය සඳහා භාවිතා කරන සංකේතය, දශම ස්ථානය නිරූපණය කිරීමට යොදාගන්නා සංකේතය ආදියද රටින් රටට, භාෂාවෙන් භාෂාවට වෙනස් ව්ය හැක. එනිසා ඒවාද නියමිත ආකාරයට යොදාගත යුතුය. ඉහත කරුණු සලකා බැලීමේදී මෘදුකාංගය භාවිතාකරන්නාගේ භාෂාමය හා එයට සම්බන්ධ අනෙකුත් අවශ්‍යතා ඔහුගේ භාෂාව අනුවත්, ඔහු ජීවත්වන රට හෝ ප්‍රදේශය අනුවත් වෙනස් විය හැකි බව පැහැදිලි වේ. උදාහරණයක් ලෙස ප්‍රංශයේ ජීවත්වන ප්‍රංශ භාෂාව කතාකරන්නෙකු සඳහා ප්‍රංශ භාෂාවෙන් මෘදුකාංගය සකස් කලයුතු අතර මුදල් සඳහා ෆෑන්ක් භාවිතා කල යුතුයි. නමුත් කැනඩාවේ ජීවත්වන ප්‍රංශ භාෂාව කතාකරන්නෙක් සඳහා එම මෘදුකාංගය සැකසීමේදී මුදල් වර්‍ගය ලෙස කැනඩා ඩොලර් යොදාගත යුතුයි. ඉහත සියලු කරුණු සලකා බලා ජාත්‍යන්තරකරණය හා දේශීයකරණය පහසුකරගැනීම සඳහා විවිධ තාක්ෂණ ක්‍රම ගනනාවක් හඳුන්වාදී ඇති අතර එයින් මූලිකම තාක්ෂණක්‍රමය වන ලෝකලි(locale) තාක්ෂණය ගැන මීලඟට විමසා බලමු.

ලෝකලි තාක්ෂණය
ඉහත අප සාකච්ඡා කල පරිදි පරිඝණක භාවිතාකරන්නන් දෙදෙනෙකුගේ භාෂාමය අවශ්‍යතාවයන් අනන්‍යව හඳුනාගැනීම සඳහා ඔහුගේ භාෂාවත් ඔහු ජීවත්වන රට හෝ ප්‍රදේශයත් සැලකිල්ලට ගත යුතුය. ලෝකලි එකක් යනු භාෂාවකත් රටක හෝ ප්‍රදේශයකත් එකතුවකි. ඇමෙරිකාවේ වෙසෙන ඉංග්‍රීසි කතාකරන්නෙක් සඳහා ලෝකලි එක en_US ලෙස නම්කරයි. එසේම ලංකාවේ වෙසෙන සිංහල කතාකරන්නෙක් සඳහා ලෝකලි එක si_LK වේ. එනිසා යම් මෘදුකාංගයක් සිංහලට දේශීයකරණය කිරීමට වඩා තාක්ෂණික වශයෙන් වඩාත් උචිත වදන එම මෘදුකාංගය si_LK ලෝකලි එකට සකස්කිරීමයි. ලෝකලි එකක මූලික අංග ගනනාවක් ඇති අතර ඒවායින් ප්‍රධානතම අංග වන්නේ,
1)භාෂාව
2)ඉලක්කම් නිරූපණය
3)දිනය හා වේලාව නිරූපණය (මාස, දවස්, පෙරවරු, පස්වරු ආදිය සඳහා යොදාගන්නා වචන ඇතුලුව)
4)මුදල් ඒකකය නිරූපණය
5)දශමස්ථානය ආදී සලකුණු නිරූපණය
7)ආකරාදී පිලිවෙලට සකස්කිරීමේ ක්‍රමවේදය
මේවාට අමතරව ලෝකලි එකට අනුකූලව වෙනත් දේ වෙනස් විය යුතුනම් ඒවාද ඇතුලත් විය යුතුය.

ලෝකලි තාක්ෂණය අද බහුතරයක් මෘදුකාංග වල යොදාගෙන තිබේ. මෙහෙයුම් පද්ධති, පරිඝණක භාෂා, ‍ඩේටා බේසස්, වෙබ් සරවර්ස්, වෙබ් බ්‍රව්සර්ස්, ඇප්ලිකේෂන් සර්වර්ස් ආදී මෙකී නොකී සෑම දෙයකම වගේ ලෝකලි තාක්ෂණය යොදාගෙන ඇත. එනම් මේ මොහොතේ ඔබගේ මෙහෙයුම් පද්ධතිය ක්‍රියාත්ම වන්නේ නිෂ්චිත ලෝකලියකට අනුකූලවයි. යුනික්ස් මෙහෙයුම් පද්ධතියක නම් echo $LANG විධානය භාවිතා කර ඔබට ඔබේ ලෝකලිය කුමක්ද යන්න සොයාගත හැකිය. වින්ඩෝස් වල නම් කොන්ට්‍රෝල් පැනලය තුල ඇති රීජනල් ඇන්ඩ් ලැන්ග්වේජ් සෙටින්ග්ස් වලිනි මෙය බලාගත හැකිය. මෙහෙයුම් පද්ධතිය මත ස්ථාපනය කර ඇති සමහරක් මෘදුකාංග ක්‍රියාත්මක වීමේදී මෙහෙයුම් පද්ධතියේ ලෝකලිය කුමක්ද යන්නත් එය සම්බන්ධ වෙනත් තොරතුරුත් ලබාගෙන ඒවාට අනුව ක්‍රියාත්මක වෙයි. තවත් සමහර මෘදුකාංග මෙහෙයුම් පද්ධතිය මත යැපීමක් නැතිව තමාගේම ලෝකලියක් භාවිතා කරයි. බොහෝ නූතන පරිඝණක භාෂා ද ලෝකලි තාක්ෂණය භාවිතා කරයි. උදාහරණයක් ලෙස ජාවා වර්චුවල් මැෂින් එක ධාවනය වෙද්දී එය නිෂ්චිත ලෝකලි එකක් භාවිතා කරන අතර ආකරාදී පිලිවෙලට සකස්කිරීමේම, දිනය හා වේලාව නිරූපණය කිරීම ආදියේදී එය අදාල ලෝකලිය භාවිතා කරයි.

ජාත්‍යන්තරකරණය හා දේශීයකරණය සඳහා ලෝකලි තාක්ෂණය යොදාගැනීම
මෘදුකාංගයක් ජාත්‍යන්තරකරණය කිරීමේදී මූලික වශයෙන්ම සිදුකලයුත්තේ ලෝකලි එක මත වෙනස්වල දේවල් හා එසේ වෙනස් නොවන එනම් සියලු ලෝකලි වලට පොදු දේවල් වෙන්කර ඒවා වෙන් වෙන්ව තබාගැනීමයි. එවිට ලෝකලි මත වෙනස් නොවන මූලික පද්ධතිය සමඟ විවිධ ලෝකලි වලට අදාල ලෝකලි මත වෙනස්වන කොටස් වල එකතුවක් ලෙස මෘදුකාංගය සැලසුම් කල හැකිය. මෙසේ සකස් කල මෘදුකාංගයක් දේශීයකරණය කිරීමේදී සිදුකරන්නේ එම ලෝකලියට අදාලව ඉහත වෙනස්වන කොටස පමණක් අලුතින් එකතුකිරීමයි. බොහෝවිට මෙලෙස අලුතින් එක් කරන්නට සිදුවන්නේ තිර මුහුනත්වල භාවිතාවන විධාන, උපදෙස් හා තොරතුරුයි. මෙය ඉතාමත් පහසු කාර්‍යයක් වන අතර මේ සඳහා resource bundle නමින් හඳුන්වන ගොනුවක් බොහෝවිට භාවිත කරයි. resource bundle එකක් සාමාන්‍යයෙන් පහත දැක්වෙන ස්වරූපය ගනී.

file=ගොනුව
open=විවෘත කරන්න

මෙමනිසා ජාත්‍යන්තරකරණය කරණ ලද මෘදුකාංගයක තිර මුහුනත් සිංහලට දේශීයකරණය කිරීමේදී කලයුතුවන්නේ හුදෙක් ඉහත ආකාරයට resource bundle එකක් සාදා අවශ්‍ය ස්ථානයට පිටපත් කිරීම පමණි.