Extension:UniversalLanguageSelector/th

'ตัวเลือกภาษาสากล'  เป็นเครื่องมือที่ช่วยให้ผู้ใช้สามารถเลือกภาษาและกำหนดค่าการสนับสนุนในวิธีที่ง่าย เมื่อใช้ มันยังจัดส่งฟังก์ชันการทำงานของส่วนขยายทั้ง และ  (ซึ่งทั้งคู่เลิกใช้งานแล้วเพื่อสนับสนุน Universal Language Selector) ดู สำหรับประวัติและข้อมูลเพิ่มเติม

การใช้งาน
จุดมุ่งหมายหลักคือ การอนุญาตให้ผู้ใช้เลือกภาษาและกำหนดค่าการสนับสนุนในวิธีที่ง่าย

ส่วนขยายมีคุณสมบัติดังต่อไปนี้:


 * 1) วิธีที่ยืดหยุ่นและง่ายในการเลือกภาษาจากชุดภาษาขนาดใหญ่
 * 2) การเลือกขึ้นอยู่กับภูมิภาคตามการสืบค้น การค้นหา
 * 3) การค้นหาขึ้นอยู่กับรหัสภาษา ISO ชื่อภาษาที่เขียนในภาษาอินเทอร์เฟซผู้ใช้ปัจจุบันหรือในสคริปต์ของตัวเอง (autoonym)
 * 4) ค้นหาข้ามภาษา - ค้นหาชื่อภาษาโดยใช้สคริปต์ใดก็ได้
 * 5) การเติมชื่อภาษาอัตโนมัติ
 * 6) การแก้ไขข้อผิดพลาดการสะกดคำในสตริงการค้นหาโดยอัตโนมัติ
 * 7) คำแนะนำภาษาตามภูมิศาสตร์ IP
 * 8) การเลือกภาษาตามเบราว์เซอร์ของผู้ใช้/ภาษาระบบปฏิบัติการ
 * 9) วิธีการป้อนข้อมูล
 * ดู สำหรับคำแนะนำที่สมบูรณ์
 * 1) คอลเล็กชันวิธีการป้อนข้อมูลที่เลือกได้ง่าย พร้อมให้ใช้งานในทุกช่องที่แก้ไขได้
 * 2) จัดเตรียมวิธีการป้อนข้อมูลจำนวนมากสำหรับภาษาต่าง ๆ มากมาย
 * 3) * รายการที่ล้าสมัยสามารถดูได้ที่ ส่วนขยาย:Narayam#แผนงานที่รองรับ
 * 4) การตั้งค่าวิธีการป้อนข้อมูลตามภาษา
 * 5) เว็บฟอนต์
 * 6) คอลเลกชั่นฟอนต์ขนาดใหญ่ให้เลือกสำหรับแต่ละภาษาเพื่อใช้เป็นฟอนต์แบบฝังสำหรับเพจ
 * 7) * สามารถดูรายการที่ล้าสมัยได้ที่ Extension:WebFonts#Supported languages
 * 8) * คุณสามารถเรียกดู รวมฟอนต์ทั้งหมด
 * 9) การตั้งค่าแบบอักษรตามภาษา



กำลังเพิ่มแบบอักษร
การสนับสนุนภาษาอื่น ๆ เป็นเพียงเรื่องของการรวมแบบอักษรที่เหมาะสมในโค้ดเท่านั้น อย่างไรก็ตาม โปรดทราบว่าเราจะเพิ่มการรองรับเฉพาะฟอนต์ freely licensed เท่านั้น ตัวอย่างเช่น ฟอนต์ที่ได้รับอนุญาตภายใต้ GNU GPL, SIL OFL เป็นต้น ไดเร็กทอรีตัวอย่างของฟอนต์ฟรีดังกล่าวคือ Google Fonts (ไม่ใช่ ยังตรวจสอบ/ใช้ประโยชน์อย่างเต็มที่โดยผู้เขียนส่วนขยายนี้) โปรดดูที่ Open Font Library

ก่อนอื่น คุณต้องค้นหาหรือผลิตแบบอักษรฟรีดังกล่าว (ส่วนที่สำคัญที่สุดและคุณต้องทำเอง) จากนั้นจะต้องแปลงเป็นรูปแบบที่ต้องการ ได้แก่ eot, ttf, woff; สุดท้าย คุณสามารถ file a request ใน Phabricator เพื่อให้แบบอักษรที่จะเพิ่มในส่วนขยาย

#Preparing webfonts ด้านล่างจะอธิบายวิธีการแปลงแบบอักษร: จำเป็นต้องมีความรู้พื้นฐานเกี่ยวกับระบบปฏิบัติการที่ใช้ GNU/Linux หากคุณมีปัญหาในการทำเช่นนี้ คุณสามารถข้ามขั้นตอนนี้และขอให้คนอื่นทำเพื่อคุณในคำขอฟาบริเคเตอร์เดียวกัน (แน่นอนว่าขั้นตอนนี้จะทำให้กระบวนการช้าลง)

การเตรียมเว็บฟอนต์
กำลังสร้าง .woff2:

ใช้ https://github.com/google/woff2 เพื่อสร้าง woff2 จาก ttf สิ่งนี้จะสร้างไฟล์ woff2 ที่ถูกบีบอัด เบราว์เซอร์สมัยใหม่รองรับรูปแบบนี้

สร้างไฟล์ font.ini นี่คือตัวอย่าง:

เครื่องหมายดอกจัน หลังรหัสภาษาหมายความว่าแบบอักษรนี้จะเป็นแบบอักษรเริ่มต้นสำหรับภาษานั้น หากคุณต้องการตัวเลือกให้ใช้แบบอักษรนี้สำหรับภาษานั้นเท่านั้น อย่าใช้เครื่องหมายดอกจัน

หลังจากสร้างไฟล์แล้ว ให้ทำดังนี้:


 * 1) สร้างไดเร็กทอรีสำหรับฟอนต์ภายใต้ data/fontrepo/fonts
 * 2) ใส่ไฟล์ ttf, woff, eot และ font.ini ลงในไดเร็กทอรีนั้นแล้วเพิ่มลงในที่เก็บซอร์ส
 * 3) ไปที่ไดเรกทอรี   และเรียกใช้
 * 4) ยอมรับการเปลี่ยนแปลงไปยังที่เก็บ  และส่งตาม เวิร์กโฟลว์ Git

เพิ่มการรองรับการแมปคีย์ใหม่ (วิธีการป้อนข้อมูล)
ทำตาม instructions on the jquery.ime github wiki แต่ยื่นคำขอในผลิตภัณฑ์ Wikimedia-extensions-UniversalLanguageSelector Phabricator

กำลังอัปเดต LanguageNameIndex
สำหรับการค้นหาแบบข้ามภาษา การค้นหา autonyms จะต้องเติมข้อมูลภาษา ULS มาพร้อมกับดัชนีชื่อภาษาที่เติมไว้ล่วงหน้า (data/langnames.ser) ในกรณีที่คุณต้องการอัปเดต ให้ติดตั้ง และอัปเดตข้อมูลด้วยคำสั่งต่อไปนี้

php UniversalLanguageSelector/data/LanguageNameIndexer.php และตรวจสอบว่าไฟล์  'langnames.ser ถูกสร้างขึ้นในโฟลเดอร์ ULS/data/

การกำหนดค่า
ตัวแปรต่อไปนี้ถูกสร้างขึ้นโดยอัตโนมัติในระหว่างการเริ่มต้นและสามารถใช้ได้จาก JavaScript โดยใช้ mw.config.get( NAME ):


 * - อาเรย์ที่คีย์เป็นรหัสภาษา และค่าเป็นชื่อภาษาในภาษาอังกฤษ
 * - อาร์เรย์ของรหัสภาษาจากค่า Accept-Language ของผู้ใช้ นี่คือภาษาที่เลือกในการตั้งค่าเบราว์เซอร์ของผู้ใช้

สำหรับการแสดงแบบอักษร คุณอาจต้องการเพิ่มประเภท mime ต่อไปนี้ในเว็บเซิร์ฟเวอร์ของคุณ หากยังไม่มี คู่มือนี้ อาจช่วยได้

 application/x-font-woff .woff application/vnd.ms-fontobject .eot application/x-font-ttf .ttf

ตัวแปรต่อไปนี้สามารถกำหนดค่าได้:


 * - ULS สามารถใช้บริการระบุตำแหน่งทางภูมิศาสตร์เพื่อแนะนำภาษาตามประเทศที่ผู้ใช้เข้ามา การตั้งค่านี้เป็นเท็จจะป้องกันไม่ให้มีการใช้ตำแหน่งทางภูมิศาสตร์ในตัว คุณสามารถระบุตำแหน่งทางภูมิศาสตร์ของคุณเองได้โดยการตั้งค่าหน้าต่าง ภูมิศาสตร์ไปยังวัตถุที่มีคีย์ 'country_code' หรือ 'country' หากตั้งค่าเป็น true จะสอบถามบริการ geoip ของ Wikimedia บริการควรส่งคืน jsonp ที่ใช้พารามิเตอร์การโทรกลับที่ให้มา ค่าเริ่มต้นเป็น http://freegeoip.net/json/ ( คำเตือน: เว็บไซต์นี้ปิดตัวลง API) และคาดว่าจะมีรูปแบบเดียวกัน
 * - เปิดใช้งานการเลือกภาษา ลิงก์ภาษาแบบย่อ วิธีการป้อนข้อมูล และแบบอักษรเว็บสำหรับทุกคน เว้นแต่พฤติกรรมจะถูกแทนที่โดยตัวแปรการกำหนดค่าด้านล่าง แม้ว่าคลาสและโมดูลตัวโหลดทรัพยากรจะเป็นเท็จสำหรับการใช้ส่วนขยายอื่น ๆ ไม่สามารถเปลี่ยนภาษาผ่านคุกกี้หรือพารามิเตอร์การค้นหา setlang
 * - อนุญาตให้ผู้ใช้ที่ไม่ระบุชื่อเปลี่ยนภาษาด้วยคุกกี้และพารามิเตอร์การค้นหา setlang อย่าใช้หากคุณแคชการดูหน้าเว็บที่ไม่ระบุตัวตนโดยไม่ได้คำนึงถึงคุกกี้ ไม่มีผลใดๆ หากตั้งค่า  หรือ   เป็นเท็จ
 * - ปิดใช้งานคุณลักษณะวิธีการป้อนข้อมูลสำหรับผู้ใช้ทั้งหมดโดยค่าเริ่มต้น ผู้ใช้ยังสามารถเปิดใช้งานได้ด้วยตนเอง
 * - ตำแหน่งและรูปแบบของทริกเกอร์การเลือกภาษา ค่าที่เป็นไปได้คือ: : เป็นลิงก์ใกล้กับชื่อผู้ใช้หรือลิงก์เข้าสู่ระบบในแถบเครื่องมือส่วนบุคคล (ค่าเริ่มต้น)  : เป็นไอคอนใกล้กับส่วนหัวของรายการลิงก์ระหว่างภาษาในแถบด้านข้าง
 * - อาร์เรย์ของตัวเลือก jQuery ขององค์ประกอบที่ต้องไม่เปิดใช้งาน IME เช่น
 * - จะตรวจหาภาษาของผู้ใช้โดยอัตโนมัติจากส่วนหัว Accept-Language หรือไม่

ตำแหน่งของทริกเกอร์ ULS

 * - ตำแหน่งและรูปแบบของทริกเกอร์การเลือกภาษา ค่าที่เป็นไปได้คือ: : เป็นลิงก์ใกล้กับชื่อผู้ใช้หรือลิงก์เข้าสู่ระบบในแถบเครื่องมือส่วนบุคคล (ค่าเริ่มต้น)  : เป็นไอคอนใกล้กับส่วนหัวของรายการลิงก์ระหว่างภาษาในแถบด้านข้าง

นอกจากนี้ยังสามารถเรียกใช้ ULS ได้ทุกที่ในหน้าจอ องค์ประกอบที่มี  จะทำหน้าที่เป็นทริกเกอร์ ULS

การแทนที่แบบอักษรเริ่มต้น
ULS มีที่เก็บแบบอักษรขนาดใหญ่เพื่อใช้เป็นแบบอักษรเว็บ บางครั้งมีหลายฟอนต์สำหรับภาษาหนึ่ง และมีฟอนต์เริ่มต้นสำหรับแต่ละภาษา/สคริปต์ ลำดับของแบบอักษรหรือแบบอักษรเริ่มต้นสามารถแทนที่ได้ดังนี้โดยใช้สคริปต์ส่วนกลาง (MediaWiki:Common.js) หรือสคริปต์ส่วนบุคคล (พิเศษ:MyPage/common.js):

การกำหนดค่าแคช
เพื่อให้แน่ใจว่าไฟล์ฟอนต์ของเว็บถูกแคชในเครื่องของไคลเอ็นต์ จะต้องเพิ่มประเภทไฟล์ฟอนต์ในการกำหนดค่าเว็บเซิร์ฟเวอร์ ใน Apache2 ประกอบด้วย:


 * การเพิ่มนามสกุลไฟล์ฟอนต์ให้กับ FileTimes regex ที่ FilesMatch สำหรับไดเร็กทอรีที่เกี่ยวข้อง เช่น
 * การเพิ่มค่า ExpiresByType ให้กับประเภท MIME ที่เกี่ยวข้อง เช่นเดียวกับประเภท MIME ของรูปภาพ
 * โปรดทราบว่าไม่มีประเภท MIME มาตรฐานสำหรับ TTF application/x-font-ttf ใช้สำหรับ Wikimedia
 * การเพิ่มประเภท MIME:

 AddType application/x-woff .woff AddType application/vnd.ms-fontobject .eot AddType application/x-font-ttf .ttf

สำหรับตัวอย่างแบบเต็ม โปรดดูที่ caching configuration update done for Wikimedia cluster

การแปลหน้า
UniversalLanguageSelector เป็นหนึ่งในการขึ้นต่อกันของส่วนขยาย ซึ่งใช้สำหรับคุณสมบัติการเลือกภาษาต่างๆ หนึ่งในนั้นคือระบบ MyLanguage สำหรับลิงก์ ซึ่งขึ้นอยู่กับภาษาอินเทอร์เฟซของผู้ใช้ แต่สามารถกำหนดค่าได้มากกว่านั้น: ดู คุณสมบัติการแปลหน้า

การใช้เว็บฟอนต์
ผู้ใช้สามารถเลือกเว็บฟอนต์สำหรับภาษาจากการตั้งค่าภาษา -> การตั้งค่าการแสดงผล ตามค่าเริ่มต้น ฟอนต์แรกในเมนูนั้นจะถูกนำไปใช้กับวิกิ ผู้ใช้สามารถเปลี่ยนแบบอักษรและจะจดจำไว้ทั่วทั้งหน้า ผู้ใช้สามารถปิดใช้งานการฝังแบบอักษรด้วยการเลือกแบบอักษรของระบบ

หากแบบอักษรพร้อมใช้งานในระบบภายในของผู้ใช้ แบบอักษรจะไม่ถูกดาวน์โหลด จากเซิร์ฟเวอร์มีเดียวิกิ มันจะถูกนำมาจากคอมพิวเตอร์ของผู้ใช้ มิฉะนั้น ฟอนต์จะถูกดาวน์โหลดจากเซิร์ฟเวอร์เพียงครั้งเดียว คือเมื่อผู้ใช้เลือกแบบอักษรครั้งแรก ครั้งหน้าเป็นต้นไป แบบอักษรจะถูกนำออกจากแคชในเครื่อง

โดยระบุ font-family
ภายในข้อความวิกิ YourText ส่วนขยายเว็บฟอนต์จะตรวจสอบว่าฟอนต์นั้นใช้ได้กับส่วนขยายหรือไม่ ถ้าใช่ จะเป็นการดาวน์โหลด ให้กับลูกค้า ดังนั้นผู้อ่านจะไม่ประสบปัญหาในการอ่านข้อความแม้ว่าแบบอักษรที่ระบุจะไม่พร้อมใช้งานในคอมพิวเตอร์ก็ตาม

โดยระบุภาษา
ภายในข้อความวิกิ YourText ส่วนขยายเว็บฟอนต์จะตรวจสอบว่าฟอนต์ใดๆ พร้อมใช้งานสำหรับภาษาที่กำหนดพร้อมกับส่วนขยายหรือไม่ หากมี จะเป็นการดาวน์โหลดลงใน ลูกค้า. ดังนั้นผู้อ่านจะไม่ประสบปัญหาในการอ่านข้อความแม้ว่าแบบอักษรที่ระบุจะไม่พร้อมใช้งานในคอมพิวเตอร์ก็ตาม หากมีหลายฟอนต์สำหรับภาษานั้น ฟอนต์เริ่มต้นจะถูกใช้ หากไม่ต้องการใช้ฟอนต์เริ่มต้น ให้ใช้วิธีตระกูลฟอนต์เพื่อระบุฟอนต์ หากแท็กมีทั้งคำจำกัดความของ lang และ font-family ตระกูล font-family จะมีความสำคัญ

ตัวอย่าง:

𒄖𒉈𒅁𒌨𒅎

ให้ข้อความที่แสดงผลในรูปแบบ Cuneiform โดยใช้แบบอักษรอัคคาเดียน

𒄖𒉈𒅁𒌨𒅎