Pine Vietnamese HOWTO

Author: Long Pham Kim

2004-07-21

Revision History
Revision 0.9.32004-07-21PKL
second draft

Tóm tắt

Sử dụng email tiếng Việt trong pine theo bảng mã Unicode (UTF-8) và VIQR.


Table of Contents

1. Giới thiệu
2. Yêu cầu hệ thống
3. Sử dụng uvconv
4. Đặt thông số cho xterm
5. Sử dụng tiếng Việt trong pine
5.1. Đọc email UTF-8
5.2. Đọc email viết bằng VIQR dưới dạng UTF-8
5.3. Gửi email tiếng Việt
5.4. Hiển thị màu sắc
6. Kết luận
7. Bản quyền

1. Giới thiệu

Tài liệu này giới thiệu cách sử dụng email tiếng Việt trong pine, qua đó bạn có thể:

  • Đọc email tiếng Việt theo dạng UTF-8 hoặc VIQR, không phụ thuộc bảng mã của email đó.

  • Gửi email theo dạng VIQR hoặc UTF-8, ngay cả khi hệ thống của bạn không có một bộ gõ tiếng Việt.

Phiên bản mới nhất của tài liệu này được lưu tại http://unikey.sf.net/guide/vn-pine.html.

2. Yêu cầu hệ thống

Để đọc, gửi thư tiếng Việt theo dạng UTF-8, hệ thống của bạn cần có các điều kiện sau:

  • X Window có hỗ trợ Unicode và có sẵn các font Unicode. Các phiên bản phân phối Linux mới nói chung đều đã có hỗ trợ Unicode.

  • Font tiếng Việt Unicode. Thông thường các bản phân phối Linux chuẩn chưa có sẵn font chữ tiếng Việt. Font unicode cho tiếng Việt đẹp và được dùng phổ biến nhất hiện nay là bộ font TrueType của Microsoft. Chi tiết về cách cài đặt font TrueType bạn có thể xem trong Font-HOWTOVi-HOWTO.

  • Pine. Bạn nên có phiên bản 4.33 trở lên.

  • Một chương trình chuyển mã tiếng Việt. Tài liệu này sẽ trình bày cách sử dụng uvconv.

  • Console có hỗ trợ hiển thị UTF8, ví dụ như xterm.

Tài liệu này sẽ chỉ trình bày cách thiết lập thông số cho xterm, pineuvconv. Tuy nhiên bạn có thể áp dụng những thông tin ở đây để dùng pine với các phần mềm khác làm console như: Konsole, GNOME terminal, cũng như các chương trình chuyển đổi tiếng Việt khác thay vì uvconv như: vnconv, vntovn...

Ngoài ra, nếu muốn gõ tiếng Việt dễ dàng có thể dùng x-unikey.

3. Sử dụng uvconv

uvconv là chương trình chuyển đổi tiếng Việt giữa các bảng mã khác nhau. Version 1.1.2 có hỗ trợ tất cả các bảng mã tiếng Việt thông dụng như: Unicode UCS-2, UTF-8, VIQR, TCVN3, VNI...

uvconv 1.1.2 có thể lấy tại các địa chỉ sau:

Mã nguồn
Chương trình dịch sẵn RPM, do Nguyễn Đại Quý đóng gói.
Mã nguồn đóng gói RPM

Có thể xem thêm thông tin về uvconv tại website UniKey.

Các tham số của uvconv:

uvconv [file] [options]
file File cần chuyển mã. Ngầm định là standard input
-h Hướng dẫn sử dụng.
-f Bảng mã nguồn.
-t Bảng mã đích.
-l Liệt kê tên các bảng mã.
-o File đích. Ngầm định là standard output

Ngoài các bảng mã thường dùng, uvconv quy định thêm một bảng mã không chính thức là UVIQR để dùng cho trường hợp nội dung cần chuyển chứa lẫn cả mã VIQR và UTF-8. Tính năng này rất thuận tiện khi chuyển mã các email sẽ được trình bày trong phần sau.

Ví dụ:

Chuyển mã từ viqr sang utf-8: uvconv in.txt -f viqr -t utf-8 > out.txt
Chuyển mã từ utf-8 sang viqr: uvconv in.txt -f utf-8 -t viqr > out.txt

4. Đặt thông số cho xterm

Muốn pine hiển thị tiếng Việt UTF-8 bạn cần phải bật tính năng hỗ trợ UTF-8 của xterm. Bạn hãy thêm các dòng sau vào file .Xdefaults hoặc .Xresources.

xterm*utf8: 1
xterm*font: -monotype-courier new-medium-r-normal--0-0-0-0-m-0-iso10646-1
  

Thiết lập ở trên dùng font chữ Courier New với bảng mã Unicode (10646), bạn có thể kiểm tra hệ thống đã có font này hay chưa bằng lệnh xlsfonts |grep -i 'courier.*new.*10646' Nếu không thấy font này thì bạn phải quay lại làm theo chỉ dẫn trong Font-HOWTO.

Để cập nhật các sửa đổi ở trên, hãy dùng lệnh xrdb -load ~/.Xdefaults.

Hãy thử chạy một xterm mới, sau đó chạy lệnh echo "tie^'ng Vie^.t" | uvconv -f viqr -t utf-8 Nếu bạn thấy dòng chữ "tiếng Việt" như minh hoạ dưới đây là đã thành công và có thể chuyển sang bước tiếp theo.

$ echo "tie^'ng Vie^.t" | uvconv -f viqr -t utf-8
tiếng Việt
===> Successfully converted from viqr to utf-8
$
  

5. Sử dụng tiếng Việt trong pine

Các thông tin chi tiết về pine xin hãy xem tại website của Đại học Washington.

Các thông số hoạt động của pine được đặt trong mục Setup - Configuration, có thể truy nhập nhanh bằng các phím M S C.

pine có cơ chế filter khiến cho việc sử dụng tiếng Việt khá tiện lợi và linh hoạt.

Display filter

Là bộ lọc được pine gọi đến khi email đang đọc thoả mãn một điều kiện nào đó. pine sẽ lấy kết quả từ display filter để hiển thị email. Bạn có thể đặt nhiều display filter. Nếu 1 email thoả mãn điều kiện của nhiều filter cùng một lúc thì chỉ có filter đầu tiên trong số đó được gọi.

Display filter được đặtt trong mục Setup - Configuration, tham số display-filters.

Sending filter

Là bộ lọc được pine gọi đến trước khi gửi email đi. Trong khi display filter được pine gọi tự động thì sending filter chỉ được dùng đến khi có yêu cầu của người dùng. (pine sẽ hỏi người dùng mỗi khi gửi email đi).

Sending filter được đặt trong mục Setup - Configuration, tham số sending-filters.

5.1. Đọc email UTF-8

Để đọc được các email đã viết bằng tiếng Việt theo chuẩn UTF-8 bạn chỉ cần bật lựa chọn pass-control-characters-as-is trong Setup - Configuration, nhóm Viewer Preferences. Nếu không bật lựa chọn này thì sẽ có một số chữ không đọc được.

5.2. Đọc email viết bằng VIQR dưới dạng UTF-8

Emai viết theo dạng VIQR có ưu điểm là trong mọi môi trường đều có thể đọc được. Nhưng nhược điểm là dạng này đọc hơi "nhức mắt". Điều này có thể khắc phục bằng cách dùng display filter để tự động chuyển email dạng VIQR thành dạng UTF-8. Bạn hãy đặt 3 filter như sau trong Setup - Configuration của pine.

a^ /full/path/to/uvconv -f uviqr -t utf-8
e^ /full/path/to/uvconv -f uviqr -t utf-8
o^ /full/path/to/uvconv -f uviqr -t utf-8
  

Mỗi display filter có hai phần được cách nhau bởi khoảng trắng. Phần đầu là trigger quy định điều kiện filter được bật. Phần thứ 2 là lệnh được thực thi. Khi một email chứa đoạn text trong 1 trigger nào đó thì lệnh tương ứng sẽ được thực hiện.

1 trong 3 filter ở trên được gọi nếu trong email xuất hiện chữ a^, hoặc e^, hoặc o^. Hầu như bất kỳ một email VIQR nào cũng đều chứa 1 trong 3 chữ ghép này, vì thế gần như chắc chắn mọi email VIQR sẽ được lọc. Ngay cả khi một email có header là charset=utf-8 nhưng nội dung là VIQR cũng được lọc.

Các filter ở trên đều đặt bảng mã nguồn là UVIQR để đảm bảo chuyển đổi chính xác khi nội dung email chứa cả VIQR và UTF-8, điều thường xảy ra khi email có trích dẫn.

Nếu hệ thống của bạn không có khả năng hiển thị UTF-8 thì có thể dùng filter để lọc các email từ UTF-8 thành VIQR bằng cách đặt display-filters như sau:

_CHARSET(UTF-8)_ /full/path/to/uvconv -f uviqr -t viqr
    

Chú ý

Theo quy định của pine, trong display filter luôn luôn phải dùng đường dẫn đầy đủ (full path).

5.3. Gửi email tiếng Việt

Khi gửi email tiếng Việt bạn sẽ cần đến sending filter trong các trường hợp sau:

  • Bạn chỉ có thể viết theo kiểu VIQR, trong khi người nhận chỉ muốn đọc theo dạng UTF-8.

  • Bạn thích viết email theo kiểu UTF-8, trong khi người nhận không thể đọc UTF-8 và họ muốn đọc theo kiểu VIQR.

Ngoài hai lý do trên còn một điều rất quan trọng cần lưu ý: sau khi đặt display filter để đọc email theo kiểu UTF-8 như ở mục Đọc Email VIQR, nếu bạn trả lời một email nào đó, sẽ xả ra tình huống:

  • Bạn chỉ có thể viết VIQR, trong khi nội dung email bạn trích dẫn đã được chuyển sang UTF-8.

  • Có thể người mà bạn trả lời đã viết email theo kiểu VIQR, và họ chỉ có thể đọc theo kiểu VIQR. Nếu bạn gửi không có sending filter thì họ sẽ không đọc được phần trích dẫn (đã được chuyển sang UTF-8).

Để giải quyết mọi tình huống nêu trên chúng ta cần 2 sending filter: một dùng để chuyển đổi email thành VIQR trước khi gửi, và một để chuyển đổi thành UTF-8. Có thể tạo 2 shell script nhỏ cho 2 filter này.

Script chuyển ra mã đích UTF-8:

#! /bin/sh
# uviqr-utf8
uvconv -f uviqr -t utf-8

    

Script chuyển ra mã đích VIQR:

#! /bin/sh
# uviqr-viqr
uvconv -f uviqr -t viqr

    

Hãy đặt sending-filters trong Setup - Configuration như sau:

sending-filers=/path/to/uviqr-viqr
               /path/to/uviqr-utf-8
    
Sở dĩ không viết thẳng lệnh uvconv vào sending-filers vì như thế khi chọn filter để gửi đi ta sẽ không phân biệt được các filter (vì 2 filter sẽ đều có tên là uvconv).

Chú ý

Chế độ ngầm định của pine khi gửi email là không lọc. Nếu muốn dùng filter thì khi bấm nút gửi (^X - Send) bạn không được xác nhận Yes ngay mà phải chọn filter trước (bấm ^N hoặc dùng phím mũi tên đến khi thấy filter cần dùng).

5.4. Hiển thị màu sắc

Thông thường trong một email có các đoạn trích dẫn (quote) thì pine sử dụng các màu sắc khác nhau cho các trích dẫn khác nhau. Nhưng khi đặt display filter thì pine không hiển thị màu sắc nữa. Phần này sẽ hướng dẫn bạn cách cải tiến thêm các filter đã nói để ở trên để có thể hiển thị màu sắc trong email.

Trước hết, display filter cần phải có khả năng chèn thêm các mã màu (color code) của console. Điều này có thể thực hiện được bằng cách kết hợp uvconv với một chương trình xử lý text như sed, awk, perl...

Đoạn shell script sau sử dụng uvconvsed. uvconv chuyển mã từ VIQR sang UTF-8. Output của uvconv sẽ được dùng làm input cho sedsed sẽ chèn thêm các mã màu một cách thích hợp cho các trích dẫn.

bg=$(tput setab | sed s/%p1%d/0/)
setaf=$(tput setaf)
fg=$(echo $setaf | sed s/%p1%d/7/) #white
q1=$(echo $setaf | sed s/%p1%d/6/) #cyan
q2=$(echo $setaf | sed s/%p1%d/2/) #green
q3=$(echo $setaf | sed s/%p1%d/5/) #magenta

uvconv -f uviqr -t utf-8 | sed \
 "s/$/e/
  s/^> *[^ >].*$/${q1}${bg}&c/
  s/^> *> *[^ >].*$/${q2}${bg}&c/
  s/^> *> *>.*$/${q3}${bg}&c/
  s/e$//
  s/ec$/${fg}${bg}/"


    

Bạn có thể sửa đổi script trên để dùng các màu bạn muốn. Có thể xem các mã màu khác của terminal bằng cách tham khảo terminfo với lệnh man 5 terminfo.

Sau đó đặt lại display-filters trong pine như sau:

a^ /full/path/to/vcolor-utf8
e^ /full/path/to/vcolor-utf8
o^ /full/path/to/vcolor-utf8
  

Sau khi đặt filter như trên, nếu bạn gửi trả lời một email đã có quote thì trong email gửi đi sẽ chứa cả mã màu, một điều không mong muốn. Vì vậy cần phải có sending filter để loại bỏ các mã màu này trước khi gửi. Sending filter ở phần Gửi email tiếng Việt cần được sửa lại như sau:

#! /bin/sh
# decolor-viqr
esc=^[
sed "s/${esc}\[[^m]*m//g" | uvconv -f uviqr -t viqr
    
1

Trong biến esc thì ^[ là ký tự điều khiển ESC bạn phải nhập vào bằng cách bấm CTRL+V CTRL+[ (trong vi) hoặc CTRL+Q CTRL+[ (trong emacs).

Trên đây là sending filter để gửi đi dạng VIQR. Tương tự, bạn cũng có thể đặt sending filter để gửi đi dạng UTF-8:

#! /bin/sh
# decolor-utf8
esc=^[
sed "s/${esc}\[[^m]*m//g" | uvconv -f uviqr -t utf-8
  

Như vậy có thể dùng 2 sending filter cho pine trong phần này để thay thế cho các sending filter đề cập trong phần Gửi email tiếng Việt.

sending-filters=/path/to/decolor-viqr,
                /path/to/decolor--utf8
  

6. Kết luận

Hy vọng sau khi quen sử dụng pine bạn sẽ không còn cảm thấy cần dùng các chương trình email nặng nề và cứng nhắc như Kmail hay Mozilla... nữa :-)

Chúc thành công!

7. Bản quyền

Bạn có thể sử dụng, phân phối, sửa chữa tài liệu này tùy ý, chỉ với điều kiện phải ghi rõ nguồn gốc của tài liệu.