Accesskey n ใช้เพื่อข้ามไปยัง หน้าในของ navigation. ข้ามไปยังส่วนเริ่มต้นของเนื้อหา
เอกสารฉบับนี้เป็นเอกสารฉบับแปลในกรณีที่มีข้อมูลไม่ตรงกันหรือมีข้อบกพร่อง เอกสารดั้งเดิมฉบับภาษาอังกฤษ จะถือว่าเป็นฉบับที่เป็นทางการ ลิขสิทธิ์ดั้งเดิม เป็นของ W3C, ดังที่แสดงไว้ข้างล่าง
ผู้แปล: ลาวัณย์ นันทโววาทย์ (Lawan Nuntavovat), WebStarThai
กลุ่มเป้าหมาย: ผู้เขียนโคด XHTML/HTML (โดยใช้โปรแกรมหรือการเขียน script), ผู้เขียน script เช่น PHP หรือ JSP, ผู้เขียนโคด CSS, และใครก็ตามที่ต้องการใช้ข้อมูลเกี่ยวกับภาษาในการนำมาใช้กับการใส่สไตล์ CSS ให้กับโคด
วิธีการใดเป็นวิธีการที่เหมาะสมที่สุดในการใส่สไตล์ CSS กับข้อความในบางภาษาในเอกสาร XHTML/HTML ที่มีหลายภาษา?
สไตล์ในการนำเสนอนั้นมักจะใช้ในการควบคุมการเปลี่ยนแปลงของ font ขนาดของ font และความสูงระหว่าง บรรทัดเมื่อมีการเปลี่ยนแปลงของภาษาเกิดขึ้นในเอกสาร เรื่องนี้อาจจะเป็นเรื่องสำคัญเมื่อเวลาที่ต้องนำมาใช้ กับตัวอักษรจีนระหว่างรูปแบบเรียบง่ายและแบบดั้งเดิมซึ่งผู้ใช้มักนิยมใช้ font ที่แตกต่างกันแม้ว่า font เหล่านั้น จะใช้เป็นตัวอักษรเดียวกันก็ตาม นอกจากนี้ยังมีประโยชน์ในการสร้างความสอดคล้องระหว่าง font ที่มีการผสม สคริปแบบเฉพาะเจาะจงเช่นเวลาที่ใช้ font Arabic และ Latin ผสมกัน
หน้านี้จะเป็นการกล่าวถึงทางเลือกที่เป็นไปได้สำหรับวิธีการดังกล่าวอย่างมีประสิทธิภาพ
มีวิธีการ 4 วิธีในการนำมาใช้กับสไตล์ที่แตกต่างกันให้กับภาษาที่ต่างกันในเอกสารที่มีหลากหลายภาษาที่มีการใช้ CSS2 วิธีการดังกล่าวเขียนเรียงตามลำดับความนิยมใช้ได้ดังนี้
ในขณะที่เขียนบทความนี้ Firefox 1.0 Mozilla 1.7.2 Netscape 8.0 และ Opera 8.0.2* support selector เหล่านี้แล้ว แต่น่าเสียดายที่เวลานำ selector เหล่านี้ไปใช้จริง Internet Explorer ไม่สามารถ support ได้ นั่นหมายความว่าผู้อ่าน จำนวนมากไม่สามารถเห็นการแสดงผลได้ตามที่ต้องการถ้านำ selector เหล่านี้ไปใช้ ทำให้เราต้องใช้ class หรือ id selector ทั่วไปกับทุก tag ที่ต้องการจะใส่สไตล์แทน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องการ support selector เหล่านี้ ให้ดูได้ในส่วน ผลของการทดสอบ
ส่วนที่เหลือของหน้านี้จะอธิบายและแจกแจงตัวอย่างของวิธีที่แตกต่างของการใช้ selector
ความแตกต่างที่สำคัญระหว่างการใช้ :lang และวิธีอื่นๆนั้นคือการใช้ :lang นั้นสามารถจดจำภาษาของ element ใน content ได้แม้ว่าการประกาศค่าภาษาจะอยู่ส่วนนอกของ element ที่เกี่ยวข้องก็ตาม
ตัวอย่างเช่นสมมติว่าในอนาคตเอกสารภาษาอังกฤษที่มีข้อความภาษาญี่ปุ่นที่คุณต้องการใส่สไตล์ในการเน้นข้อความ ภาษาญี่ปุ่นโดยใช้ property ภาษาพิเศษในกลุ่มเอเชียใน CSS3 แทนที่จะใช้ตัวเอียง (ซึ่งใช้ไม่ดีเสมอไปกับตัวอักษร ในภาษาญี่ปุ่นที่มีความสลับซับซ้อน) คุณอาจจะต้องใส่กฏต่อไปนี้ใน stylesheet
em { font-style: italic; }
em:lang(ja) { font-style: normal; font-emphasize: dot before; }
ตอนนี้สมมติว่าคุณมีเนื้อหาต่อไปนี้ที่ browser สามารถ support :lang ได้และ htmltag
แจ้งไว้ว่าเอกสารนี้เป็นภาษา อังกฤษ
<p>This is <em>English</em>, but <span lang="ja"
xml:lang="ja">これは<em>日本語</em>です。</span></p>
คุณอาจจะคาดว่าคุณจะเห็นคำภาษาอังกฤษที่ต้องการเน้นเป็นตัวเอียงแต่คำภาษาญี่ปุ่นที่ต้องการเน้นนั้นเป็นตัวอักษร แบบธรรมดาโดยมีจุดเล็กๆอยู่ด้านบนของตัวอักษรแต่ละตัว ดังนี้
![]()
จุดสำคัญที่ต้องคำนึงถึงในส่วนนี้คือไม่สามารถใช้ selector [lang|="..."] หรือ [lang="..."] ได้
หากต้องการที่จะใช้ คุณจะต้องประกาศค่าให้ชัดเจนใน em tag ที่ใช้กับตัวอักษรญี่ปุ่นแต่ละตัวเสียก่อน
ส่วนนี้เป็นความแตกต่างที่สำคัญระหว่างการใช้ selector ที่แตกต่างเหล่านี้ให้เป็นประโยชน์
:lang() pseudo-class selectorส่วนของ XHTML
<p>It is polite to welcome people in their own language:</p>
<ul>
<li xml:lang="zh-Hans" lang="zh-Hans">欢迎</li>
<li xml:lang="zh-Hant" lang="zh-Hant">歡迎</li>
<li xml:lang="el" lang="el">Καλοσωρίσατε</li>
<li xml:lang="ar" lang="ar">اهلا وسهلا</li>
<li xml:lang="ru" lang="ru">Добро пожаловать</li>
<li xml:lang="din" lang="din">Kudual</li>
</ul>
สามารถใส่สไตล์ดังต่อไปนี้ได้
body {font-family: "Times New Roman", serif;}
:lang(ar) {font-family: "Traditional Arabic", serif; font-size: 1.2em;}
:lang(zh-Hant) {font-family: PMingLiU,MingLiU, serif;}
:lang(zh-Hans) {font-family: SimSum-18030,SimHei, serif;}
:lang(din) {font-family: "Doulos SIL", serif;}
ควรจำไว้ว่าภาษากรีกและภาษารัสเซียจะใช้สไตล์ในส่วน element body
นี่เป็นแบบแผนในการใส่สไตล์ให้กับส่วนของภาษาเนื่องจากมีเพียง selector เท่านั้นที่สามารถใสไตล์ให้กับเนื้อหาใน element ได้เมื่อได้มีการประกาศค่าภาษาในเนื้อหานั้นก่อนหน้านี้แล้วในหน้าเอกสาร
กฏสำหรับ :lang(zh) จะสอดคล้องกันกับ element ซึ่งใช้ค่า value ภาษาเป็นzhนอกจากนี้ยังสอดคล้องกับภาษาที่
มีลักษณะเฉพาะมากยิ่งขึ้นเช่น zh-Hant zh-Hans และ zh-HK
The selector :lang(zh-Hant) จะสอดคล้องกับ element ที่มีค่า value ภาษาเป็น zh-Hant เท่านั้นหรือมีค่า value
ภาษา ที่เป็นลำดับชั้นต่อเนื่องกัน ถ้ากฏการใช้ CSS มีการระบุ:lang(zh-HK)กฏดังกล่าวจะไม่สอดคล้องกันกับย่อหน้าตัวอย่าง ของเรา
[lang|="..."] ที่สอดคล้องกันกับค่า value เริ่มต้นของ attributeสำหรับตัวอย่างโคดที่กล่าวมา สามารถเขียน stylesheet ได้ดังนี้
body {font-family: "Times New Roman", serif;}
*[lang|="ar"] {font-family: "Traditional Arabic", serif; font-size: 1.2em;}
*[lang|="zh-Hant"] {font-family: PMingLiU,MingLiU, serif;}
*[lang|="zh-Hans"] {font-family: SimSum-18030,SimHei, serif;}
*[lang|="din"] {font-family: "Doulos SIL", serif;}
selector สำหรับภาษาจีนใช้ค่า value ที่เฉพาะเจาะจงและจะสอดคล้องกันกับค่า value ที่กำหนดมาให้เท่านั้น ในขณะที่ attribute selector
ของภาษาอื่นใช้ได้กว้างกว่า ตัวอย่างเช่น [lang|="en"] สามารถใช้ร่วมกันกับ en-NZได้อย่างไม่มีปัญหา
ตัวอย่างดังกล่าวนี้และ selector ถัดไปจะสามารถทำงานได้ตราบใดที่คุณได้ประกาศค่าภาษาของ element ที่คุณต้องการ ใส่สไตล์ให้กับตัว element เองซึ่งไม่เหมือนกัน
มีความแตกต่างที่สำคัญยิ่งระหว่าง [lang="en"] และ [lang|="en"]selector ในภาษาแรกนั้นจะสอดคล้องกับ element
ที่มี attribute ของภาษาเท่ากับ enเท่านั้นในขณะที่ selector ที่สองจะสอดคล้องกันกับทุก element ใดๆที่มี attribute ของภาษาที่ขึ้นต้นด้วย
en ดังนั้น selector ที่สองจะสอดคล้องกันได้กับ en-US en-HK หรือ en-CAความเป็นจริงแล้ว
lang(en) เป็นรูปแบบที่เท่าเทียมกันกับ [lang|="en"]
[lang="..."] ที่สอดคล้องกันกับค่า value ของ attributeวิธีที่สามในการกำหนดกฏคือการใช้ attribute selector ที่สอดคล้องกันกับ attribute value อย่างพอเหมาะพอเจาะ
สำหรับตัวอย่างโคดที่กล่าวมา สามารถเขียน stylesheet ได้ดังนี้
body {font-family: "Times New Roman", serif;}
*[lang="ar"] {font-family: "Traditional Arabic", serif; font-size: 1.2em;}
*[lang="zh-Hant"] {font-family: PMingLiU,MingLiU, serif;}
*[lang="zh-Hans"] {font-family: SimSum-18030,SimHei, serif;}
*[lang="din"] {font-family: "Doulos SIL", serif;}
ควรจำไว้ว่าการใช้วิธีดังกล่าวกับ en จะไม่สอดคล้องกับ en-AU เนื่องจากจะต้องมีความสอดคล้องกันอย่างพอเหมาะ
พอเจาะ
ปัจจุบันวิธีที่ support ได้ดีที่สุดคือการใช้ class หรือ id selector ตามปกติ
วิธีการนี้ใช้ได้กับ browser ส่วนใหญ่ที่ support CSS แต่มีข้อเสียก็คือการเพิ่ม class attribute นั้นทำให้ใช้เวลา และ bandwidth มากขึ้น
ตัวอย่างที่กล่าวมาข้างต้นทำให้เราต้องเปลี่ยน XHTML โคดโดยเพิ่ม class attribute ดังต่อไปนี้
<p>It is polite to welcome people in their own language:</p>
<ul>
<li class="zhs" xml:lang="zh-Hans" lang="zh-Hans">欢迎</li>
<li class="zht" xml:lang="zh-Hant" lang="zh-Hant">歡迎</li>
<li xml:lang="el" lang="el">Καλοσωρίσατε</li>
<li class="ar" xml:lang="ar" lang="ar">اهلا وسهلا</li>
<li xml:lang="ru" lang="ru">Добро пожаловать</li>
<li class="din" xml:lang="din" lang="din">Kudual</li>
</ul>
หลังจากนั้นเราก็สามารถใส่สไตล์ดังต่อไปนี้ได้
body {font-family: "Times New Roman", serif; }
.ar {font-family: "Traditional Arabic", serif; font-size: 1.2em;}
.zht {font-family: PMingLiU,MingLiU, serif;}
.zhs {font-family: SimSum-18030,SimHei, serif;}
.din {font-family: "Doulos SIL", serif;}
ฉันได้ใช้โคดภาษา "zh-Hant" และ "zh-Hans" โคดภาษาเหล่านี้ไม่ได้เป็นการแสดงภาษาที่เฉพาะเจาะจง "zh-Hant" จะใช้แสดงภาษาจีนที่เขียนใน สคริป ภาษาจีนที่เป็นตัวอักษรแบบดั้งเดิม เช่นเดียวกันกับ “zh-Hans” ที่ใช้แสดง ภาษาจีนที่เขียนในสคริปภาษาจีนที่เป็นตัวอักษรแบบเรียบง่าย ซึ่งสามารถอ้างอิงได้ในภาษาจีนกลางหรือภาษาจีนอื่นๆ
จนกระทั่งเมื่อไม่นานมานี้มีการใช้โคด "zh-TW" และ "zh-CN" เพื่อแสดงรูปแบบการเขียนในภาษาจีนในแบบดังเดิมและ แบบเรียบง่ายตามลำดับ ในความเป็นจริง "zh-TW" ควรจะใช้ในการแสดงภาษาจีนที่ใช้พูดในประเทศไต้หวันแม้ว่าจะมีภาษา จีนมากกว่าหนึ่งที่ใช้พูดในประเทศไต้หวัน เช่นเดียวกันกับ "zh-CN" ที่ใช้แสดงในภาษาจีนที่ใช้พูดในประเทศจีน (สาธารณรัฐ ประชาธิปไตยประชาชนจีน) ซึ่งสามารถใช้อ้างอิงได้ในภาษาจีนกลางและภาษาจีนอื่นๆ
web browser แบบใหม่บางตัวจะใช้การแสดง tag ภาษา "zh-CN" และ "zh-TW" เพื่อเลือกค่า default ของ ฟอนท์ในการแสดง ข้อความเมื่อผู้ออกแบบหน้าเวบไม่ได้ระบุฟอนท์ (อ่านเพิ่มเติมได้ในส่วน ผลของการทดสอบ)
หากคุณต้องการใช้ tag ภาษาเพื่อแยกแยะความแตกต่างระหว่างภาษาจีน ทะเบียนภาษาสำหรับ tag ย่อยของ IANA จะระบุโคด ภาษาไว้ชัดเจนกว่าสำหรับรายชื่อภาษาในภาษาจีน
บอกเราด้วยว่าคุณคิดอย่างไร (ภาษาอังกฤษ)
แปลมาจากบทความภาษาอังกฤษลงวันที่ 2005-08-03. เวอร์ชั่นแปลฉบับที่เปลี่ยนแปลงลครั้งล่าสุด 2007-10-31 15:44 GMT
สำหรับการเปลี่ยนแปลงเอกสารเก่า, ค้นหา qa-css-lang ในบล๊อก i18n
Copyright © 2003-2006 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Your interactions with this site are in accordance with our public and Member privacy statements.