Provided by: manpages-zh_1.5.1-1_all bug

NAME

       msgcat - Tcl 消息目錄

` SYNOPSIS
       package require Tcl 8.2

       package require msgcat 1.1

       ::msgcat::mc src-string

       ::msgcat::mclocale ?newLocale?

       ::msgcat::mcpreferences

       ::msgcat::mcload dirname

       ::msgcat::mcset locale src-string ?translate-string?

       ::msgcat::mcunknown locale src-string
_________________________________________________________________

yz DESCRIPTION
       msgcat   包提供用來管理多語言的使用者界悸漱@系列函數。在獨立於應用的一-
       荂u消息目錄」中定義文本串,可以編輯和蚹鼣o些文本串而不用蚹奰野峈-
       鴝l碼。通過向這荇灡坏媬增加一虓s檔案來提供一虓s語言或地域(locale)。

       對任何應用和包使用消息目錄都是可選的,但是鼓勵你使用它,以便應用或包在多語言環境中被採用。

RO COMMANDS
       ::msgcat::mc src-string ?arg arg ...?
              依照使用者的當前地區,返回                            src-string
              的翻譯(translation)。如果在                           src-string
              之後給出了附加的參數,使用     format      命令把     src-string
              的翻譯中的轉換指定符替換成補充參數。

              為了翻譯                 src-string                 ::msgcat::mc
              將在當前名字空間中查找定義的消息;如果未找到,它將在當前的名字空間的父空間中查找,以此類推直到到達全局名字空間。如果不存在轉換字符串,調用
              ::msgcat::mcunknown 並返回 ::msgcat::mcunknown  的返回。

       ::msgcat::mc              是用來本地化一蚗野峈漸Dn函數。不再直接的使用-
       ^文字符串,一蚗野峊i以把^文字符串傳遞給                    ::msgcat::mc
       並使用它的結果。如果以這種方式用一種語言寫了一-
       蚗野峞A通過簡單的定義新的消息目錄條目,以後增加附加的語言支持是很容易的。

       ::msgcat::mclocale ?newLocale?
              這茖蝻潀a域設置成                        newLocale。如果省略了
              newLocale,返回當前的地域,否則當前的地域被設置成
              newLocale。初始的地域預設為在使用者的環境變量中指定的地域。關於地域字符串的格式的詳細描-
              z參見下悸     LOCALE      AND      SUBLOCALE      SPECIFICATION
              地域和子地域指定章節。

       ::msgcat::mcpreferences
              返回一茼釦漲a域列表,它-
              怓O基於使用者指定的語言,以使用者喜好程度為次序。次序是從最偏好到最不喜好的。如果使用者已經指定了LANG=en_US_funky,這-
              蚢L程將返回{en_US_funky en_US en}。

       ::msgcat::mcload dirname
              在指定的目錄中查找一蚗仵蛂A這蚗仵蚺t用 ::msgcat::mcpreferences
              返回的語言指定。每-
              蚗仵蛌漁睎犰W是地域字符串,擴展名是「.msg」。返回匹配的指定和裝載了消息的數目。

       ::msgcat::mcset locale src-string ?translate-string?
              在指定的  locale  中設置從   src-stringtranslate-string
              的翻譯。如果未指定   translate-string,對二者都使用   src-string
              。函數返回 translate-string::msgcat::mcunknown locale src-string
              在當前的地域中沒有給  src-string   定義的翻譯的情況下,這茖珛{被
              ::msgcat::mc        調用。預設的動作是返回       src-string。這-
              蚢L程可以被這蚗野峆新定義,比如對每-
              茈憚齒r符串記錄錯誤消息日誌。在與                   ::msgcat::mc
              相同的棧層次上調用          ::msgcat::mcunknown           過程。
              ::msgcat::mcunknown  的返回Q用做 ::msgcat::mc 的返回C

aMlaWw LOCALE AND SUBLOCALE SPECIFICATION
       用地域字符串指定地域。地域字符串的組成是一蚖y言代碼,一-
       茈i選的國家(地區)代碼,一茈i選的特定於系統代碼,它-
       怚峞u_」分割。國家和語言代碼在標準ISO-639          和          ISO-3166
       中。例如,地域「en」指定 English 而「en_US」指定  U.S.  English。

       區域定義預設為裝載   msgcat    包時在    env(LANG)    中的C如果未定義
       env(LANG),則地域預設為「C」。

       在使用者指定一茼a域的時-
       唌A在字符串翻譯期間進行「最佳匹配」查找。例如,如果使用者指定了
       en_UK_Funky,按「en_UK_Funky」、「en_UK」、和「en」
       的次序查找地域,直到找到一茪t的字符串翻譯。如果沒有找到這-
       茼r符串的翻譯,則調用 ::msgcat::unknown。

       譯注:常用地域字符串的一部分
              語言 國家(地區)地域 ID
              Arabic Saudi Arabiaar_SA
              Chinese (Simplified)Chinazh_CN
              Chinese (Traditional)Taiwanzh_TW
              English   United Statesen_US
              French Francefr_FR
              German Germanyde_DE
              Hebrew Israeliw_IL
              Italian   Italyit_IT
              Japanese  Japanja_JP
              Korean South Koreako_KR
              Spanish   Spaines_ES
              Swedish   Swedensv_SE

NAME

       在消息目錄中存儲的字符串被存儲為相對於在其中增加它怐漕-
       茼W字空間。這允釵h-
       茈]使用相同的字符串而不用害怕與其他包沖突。它還允雪膠r符串被縮寫而減少(less
       prone to)排字錯誤。

       例如,執行代碼
              mcset en hello "hello from ::"
              namespace eval foo {mcset en hello "hello from ::foo"}
              puts [mc hello]
              namespace eval foo {puts [mc hello]}
       將輸出
              hello from ::
              hello from ::foo

       在查找一荇灡妒甄衝隍漁尕,消息目錄將-
       漸查找當前名字空間,接著是當前名字空間的父名字空間,以次類推知道到達全局名字空間。這允酗l名字空間從它的父名字空間「繼承」消息。

       例如,執行代碼
              mcset en m1 ":: message1"
              mcset en m2 ":: message2"
              mcset en m3 ":: message3"
              namespace eval ::foo {
                  mcset en m2 "::foo message2"
                  mcset en m3 "::foo message3"
              }
              namespace eval ::foo::bar {
                  mcset en m3 "::foo::bar message3"
              }
              puts "[mc m1]; [mc m2]; [mc m3]"
              namespace eval ::foo {puts "[mc m1]; [mc m2]; [mc m3]"}
              namespace eval ::foo::bar {puts "[mc m1]; [mc m2]; [mc m3]"}
       將輸出
              :: message1; :: message2; :: message3
              :: message1; ::foo message2; ::foo message3
              :: message1; ::foo message2; ::foo::bar message3

wM LOCATION AND FORMAT OF MESSAGE FILES
       消息檔案可以位於任何目錄中,取決於下列條件:

       [1]    給一茈]的所有消息檔案都在相同的目錄中。

       [2]    消息檔名跟一茼a域指定符並跟隨著「.msg」。例如:
              es.msg    -- spanish
              en_UK.msg -- UK English

       [3]    這蚗仵蚰]含一系列對      mcset       的調用,它怓偃o蚖y言設置需-
              n的翻譯字符串。例如:
              ::msgcat::mcset es "Free Beer!" "Cerveza Gracias!"

]]m RECOMMENDED MESSAGE SETUP FOR PACKAGES
       如果一茈]被安裝到tcl_pkgPath    的一茪l目錄中並通過   package   require
       裝載,推薦下列過程。

       [1]    在包安裝期間,在你的包目錄下建立一茪l目錄msgs。

       [2]    複製你的 *.msg 檔案到這茈媬中。

       [3]    在你的包初始化稿本中增加下列命令:
              # load language files, stored in msgs subdirectory
              ::msgcat::mcload [file join [file dirname [info script]] msgs]

 FORMATM  SCAN ROwNX  POSTITIONAL  CODES  FOR  FORMAT  AND  SCAN
       COMMANDS
       用做給   format   的參數的一荇灡圻r符串中的轉換指定符可以包含一   XPG3
       位置指定符。例如,它可以按句法的需n在翻譯的時圊新安排句子結構。
              format "We produced %d units in location %s" $num $city
              format "In location %s we produced %d units" $city $num

       可使用定位參數來處理:
              format "We produced %1\$d units in location %2\$s" $num $city
              format "In location %2\$s we produced %1\$d units" $num $city

       類似的,可以在 scan 中使用定位參數來提取國際化字符串中的C

P CREDITS
       消息目錄代碼由 Mark Harrison 開發。

 SEE ALSO
       format(n), scan(n), namespace(n), package(n)

r KEYWORDS
       internationalization,  i18n,   localization,   l10n,   message,   text,
       translation

[]
      Hhh
              譯注:部分句子寫的莫名其妙,餘加以意譯。

[]
       2001/10/12

m Linux manUpn:
       http://cmpp.linuxforum.net