# translation of zh_TW.po to 正體中文 # translation of zh_TW.po to Chinese Traditional # translation of DrakX-zh_TW.po to Chinese Traditional # drakbootdisk messages in Traditional Chinese # Copyright (C) 2000, 2003, 2004 Free Software Foundation, Inc. # Platin , 2000 # Kenduest Lee , 2002 # Danny Zeng , 2000. # Joe Man , 2001. # Chong Sein Yeo , 2003. # Hilbert , 2003, 2004. # Hilbert , 2004. # hilbert , 2004. # Shiva Huang , 2005. # Shiva Huang , 2005. # You-Cheng Hsieh , 2005. # msgid "" msgstr "" "Project-Id-Version: DrakX\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-09-12 12:22+0200\n" "PO-Revision-Date: 2006-04-06 20:30+0200\n" "Last-Translator: Shiva Huang \n" "Language-Team: Traditional Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.3.1\n" "X-Poedit-Language: Chinese\n" "X-Poedit-Country: TAIWAN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../help.pm:14 #, fuzzy, c-format msgid "" "Before continuing, you should carefully read the terms of the license. It\n" "covers the entire Mageia distribution. If you agree with all the\n" "terms it contains, check the \"%s\" box. If not, clicking on the \"%s\"\n" "button will reboot your computer." msgstr "" "在繼續之前,您應該仔細的閱讀下面相關版權條款。\n" "這包含整個 Mageia 發行版的版權內容。若是您同意裡面的所有條款,\n" "請點選 \"%s\" 按鈕,否則請點選 \"%s\" 按鈕並自動重新開機。" #: ../help.pm:20 #, c-format msgid "" "GNU/Linux is a multi-user system which means each user can have his or her\n" "own preferences, own files and so on. But unlike \"root\", who is the\n" "system administrator, the users you add at this point will not be " "authorized\n" "to change anything except their own files and their own configurations,\n" "protecting the system from unintentional or malicious changes which could\n" "impact on the system as a whole. You'll have to create at least one regular\n" "user for yourself -- this is the account which you should use for routine,\n" "day-to-day usage. Although it's very easy to log in as \"root\" to do\n" "anything and everything, it may also be very dangerous! A very simple\n" "mistake could mean that your system will not work any more. If you make a\n" "serious mistake as a regular user, the worst that can happen is that you'll\n" "lose some information, but you will not affect the entire system.\n" "\n" "The first field asks you for a real name. Of course, this is not mandatory\n" "-- you can actually enter whatever you like. DrakX will use the first word\n" "you type in this field and copy it to the \"%s\" one, which is the name\n" "this user will enter to log onto the system. If you like, you may override\n" "the default and change the user name. The next step is to enter a password.\n" "From a security point of view, a non-privileged (regular) user password is\n" "not as crucial as the \"root\" password, but that's no reason to neglect it\n" "by making it blank or too simple: after all, your files could be the ones\n" "at risk.\n" "\n" "Once you click on \"%s\", you can add other users. Add a user for each one\n" "of your friends, your father, your sister, etc. Click \"%s\" when you're\n" "finished adding users.\n" "\n" "Clicking the \"%s\" button allows you to change the default \"shell\" for\n" "that user (bash by default).\n" "\n" "When you're finished adding users, you'll be asked to choose a user who\n" "will be automatically logged into the system when the computer boots up. If\n" "you're interested in that feature (and do not care much about local\n" "security), choose the desired user and window manager, then click on\n" "\"%s\". If you're not interested in this feature, uncheck the \"%s\" box." msgstr "" "GNU/Linux 是一個多使用者的系統,那表示每個使用者都可以擁有各自的\n" "偏好設定、檔案等等。不同於系統管理者 \"root\" 您在這新增的使用者\n" "將僅被授權於改變他們自己的檔案與設定,以保護系統免於遭受到無意或\n" "惡意的對整個系統造成衝擊的改變。您需要建立至少一個一般使用者給您\n" "自己 -- 這是您應該用於一般日常操作的帳號。雖然使用 \"root\" 登入\n" "來做任何事是非常容易的,但這也是非常危險的!一個非常簡單的錯誤就\n" "可能造成系您的統再也不能正常工作。但是若您以一般使用者的身份犯了\n" "一連串嚴重的錯誤,最糟的情況將僅僅是您遺失某些資訊,但並不影響整\n" "個系統。\n" "\n" "第一個欄位詢問您的真實名稱。當然這並非必要 -- 事實上您可以輸入任\n" "何您喜歡的名字。DrakX 會將您輸入於此欄位的第一個字複製到 \"%s\" \n" "欄,作為使用者登入系統時輸入的名稱。若您喜歡,您可以不使用預設值\n" "並改變使用者名稱。下一步是輸入一個密碼。從安全性的觀點而言,一個\n" "一般使用者的密碼並不如 \"root\" 密碼來的重要,但是這並不構成輕忽\n" "地使用空白或過於簡單的密碼的理由:畢竟您的檔案可能正處於危險中。\n" "\n" "一旦您點選 \"%s\",您可以新增其他使用者。新增使用者給您的每一個\n" "朋友、您的父親或姊妹。當您全部新增完成後,請點選 \"%s\" 。\n" "\n" "點選 \"%s\" 按鈕允許您改變預設的 \"shell\" 給這位使用者 (預設值\n" "為 bash)。\n" "\n" "當您完成新增使用者之後,您將會被要求選擇一位使用者在電腦開機時自\n" "動登入系統。如果您對這個功能有興趣 (且不太關心本地端安全性),請\n" "選擇想要登入的使用者與視窗管理員,然後勾選 \"%s\"。若您對這個功\n" "能沒有興趣,請不要勾選 \"%s\"。" #: ../help.pm:54 #, c-format msgid "User name" msgstr "" #: ../help.pm:54 #, c-format msgid "Accept user" msgstr "" #: ../help.pm:54 #, c-format msgid "Do you want to use this feature?" msgstr "您想要使用這個功能嗎?" #: ../help.pm:57 #, c-format msgid "" "Listed here are the existing Linux partitions detected on your hard disk drive.\n" "You can keep the choices made by the wizard, since they are good for most\n" "common installations. If you make any changes, you must at least define a\n" "root partition (\"/\"). Do not choose too small a partition or you will not\n" "be able to install enough software. If you want to store your data on a\n" "separate partition, you will also need to create a \"/home\" partition\n" "(only possible if you have more than one Linux partition available).\n" "\n" "Each partition is listed as follows: \"Name\", \"Capacity\".\n" "\n" "\"Name\" is structured: \"hard disk drive type\", \"hard disk drive number\",\n" "\"partition number\" (for example, \"hda1\").\n" "\n" "\"Hard drive type\" is \"hd\" if your hard disk drive is an IDE hard disk drive and\n" "\"sd\" if it is a SCSI hard disk drive.\n" "\n" "\"Hard drive number\" is always a letter after \"hd\" or \"sd\". For IDE\n" "hard disk drives:\n" "\n" " * \"a\" means \"master hard disk drive on the primary IDE controller\";\n" "\n" " * \"b\" means \"slave hard disk drive on the primary IDE controller\";\n" "\n" " * \"c\" means \"master hard disk drive on the secondary IDE controller\";\n" "\n" " * \"d\" means \"slave hard disk drive on the secondary IDE controller\".\n" "\n" "With SCSI hard disk drives, an \"a\" means \"lowest SCSI ID\", a \"b\" means\n" "\"second lowest SCSI ID\", etc." msgstr "" "目前所列出來的是硬碟機上偵測到已經存在的 Linux 分割區.\n" "您可以保留精靈模式做的選擇,因為他們對一般安裝是不錯的。\n" "如果您做任何改變的話, 您至少要定義出一塊當作根分割區 (\"/\").\n" "別選擇一個太小的分割區, 否則您將無法安裝足夠的軟體.\n" "如果您想儲存您的資料到一個分離的分割區, 你需要建立一個\"/home\" 分割區\n" "(只在您有多於一個 Linux 分割區情況下才可能).\n" "\n" "下列每個分割區都列出了: \"名稱\", \"容量\".\n" "\n" "\"名稱\" 都是有統一的命名方式: \"硬碟類型\", \"硬碟編號\", \n" "\"分割區編號\" (例如, \"hda1\").\n" "\n" "\"硬碟類型\" 部份, IDE 硬碟使用 \"hd\", SCSI 則是 \"sd\".\n" "\"硬碟編號\" 部份, 伴隨在 \"hd\" 或者是 \"sd\" 後面:\n" "\n" " * \"a\" 這是指 \"primary IDE controller 上第一台 (master) 硬碟\",\n" "\n" " * \"b\" 這是指 \"primmary IDE controller 上第二台 (slave) 硬碟\",\n" "\n" " * \"c\" 這是指 \"secondary IDE controller 上第一台 (master) 硬碟\",\n" "\n" " * \"d\" 這是指 \"secondary IDE controller 上第二台 (slave) 硬碟\".\n" "\n" "以 SCSI 硬碟來說, \"a\" 就是指 \"SCSI ID 編號最小的那一台\", \"b\"\n" "就是指 \"SCSI ID 編號為第二小的那一台硬碟\", 然後依此類推下去." #: ../help.pm:88 #, fuzzy, c-format msgid "" "The Mageia installation is distributed on several CD-ROMs. If a\n" "selected package is located on another CD-ROM, DrakX will eject the current\n" "CD and ask you to insert the required one. If you do not have the requested\n" "CD at hand, just click on \"%s\", the corresponding packages will not be\n" "installed." msgstr "" "Mageia 安裝片包含數張光碟片。若所選擇的套件是位於另一張光碟上,\n" "DrakeX 會退出現在的光碟且要求您放入所要求的正確光碟片。\n" "若您沒有要求的光碟在手上的話, 就按下 \"%s\", 對應的套件不會被安裝." #: ../help.pm:95 #, fuzzy, c-format msgid "" "It's now time to specify which programs you wish to install on your system.\n" "There are thousands of packages available for Mageia, and to make it\n" "simpler to manage, they have been placed into groups of similar\n" "applications.\n" "\n" "Mageia sorts package groups in four categories. You can mix and\n" "match applications from the various categories, so a ``Workstation''\n" "installation can still have applications from the ``Server'' category\n" "installed.\n" "\n" " * \"%s\": if you plan to use your machine as a workstation, select one or\n" "more of the groups in the workstation category.\n" "\n" " * \"%s\": if you plan on using your machine for programming, select the\n" "appropriate groups from that category. The special \"LSB\" group will\n" "configure your system so that it complies as much as possible with the\n" "Linux Standard Base specifications.\n" "\n" " Selecting the \"LSB\" group will ensure 100%%-LSB compliance\n" "of the system. However, if you do not select the \"LSB\" group you will\n" "still have a system which is nearly 100%% LSB-compliant.\n" "\n" " * \"%s\": if your machine is intended to be a server, select which of the\n" "more common services you wish to install on your machine.\n" "\n" " * \"%s\": this is where you will choose your preferred graphical\n" "environment. At least one must be selected if you want to have a graphical\n" "interface available.\n" "\n" "Moving the mouse cursor over a group name will display a short explanatory\n" "text about that group.\n" "\n" "You can check the \"%s\" box, which is useful if you're familiar with the\n" "packages being offered or if you want to have total control over what will\n" "be installed.\n" "\n" "If you start the installation in \"%s\" mode, you can deselect all groups\n" "and prevent the installation of any new packages. This is useful for\n" "repairing or updating an existing system.\n" "\n" "If you deselect all groups when performing a regular installation (as\n" "opposed to an upgrade), a dialog will pop up suggesting different options\n" "for a minimal installation:\n" "\n" " * \"%s\": install the minimum number of packages possible to have a\n" "working graphical desktop.\n" "\n" " * \"%s\": installs the base system plus basic utilities and their\n" "documentation. This installation is suitable for setting up a server.\n" "\n" " * \"%s\": will install the absolute minimum number of packages necessary\n" "to get a working Linux system. With this installation you will only have a\n" "command-line interface. The total size of this installation is about 65\n" "megabytes." msgstr "" "現在是指定那個程式您想要裝在您的系統上. Mageia 有上千個套件,\n" "為了簡單管理, 相似性質的應用程式已經被分類到群組裡.\n" "\n" "Mageia 分類套件群組於四個類別. 你能由不同類別混合與配對應用程式,\n" "所以一個 ``工作站''安裝也能安裝``伺服器''類別安裝的應用程式.\n" "\n" " * \"%s\": 如果您計畫用您的機器當作一個工作站, 選擇一個或\n" "更多的群組於工作站類別.\n" "\n" " * \"%s\": 如果您計畫用您的機器來程式設計, 選擇適當\n" "的群組於那個類別。特別的 \"LSB\" 群組將設定您的系統使之盡量符合\n" "Linux Standard Bases 規範.\n" "\n" " 選擇 \"LSB\" 群組除了預設的 \"2.6\" 也將安裝 \"2.4\" 核心系列,\n" "這是確保系統的 100%%-LSB compliance. 可是, 如果您不選擇 \"LSB\"\n" "群組您仍然將有一個幾乎 100%% LSB-compliant 的系統.\n" "\n" " * \"%s\": 如果您的機器是要用作伺服器, 選擇那一個\n" "更常用的服務您想裝在系統上.\n" "\n" " * \"%s\": 這是您選擇您的偏好的圖形環境的地方.\n" "如果您像要有圖形介面可用, 至少一個要被選擇.\n" "\n" "移動滑鼠游標到一個群組上方將顯示一段關於該群組簡短的解釋文字\n" "\n" "你能選取 \"%s\" 方塊盒, 若您對所提供的套件熟悉或您想要有對於什麼\n" "將被安裝有全部控制, 這將會有用\n" "\n" "若您用 \"%s\" 模式開始安裝, 你可以取消選擇全部群組且防止安裝任何新套件.\n" "這對修復或更新一個已經存在的系統很有用.\n" "\n" "如果當您執行一個一般正常安裝, 您取消選擇全部群組 (相反於一個升級),\n" "一個對話方塊將會跳出建議不同的選項給最小安裝:\n" "\n" " * \"%s\":安裝最少的套件來擁有可工作的圖形桌面。\n" "\n" " * \"%s\":安裝系統基礎加上基本的工具與其文件\n" "這種安裝適合於設定起來一個伺服器。\n" "\n" " * \"%s\":將安裝絕對最少套件必要於使一個 Linux 系統工作。\n" "用這個安裝您將只擁有一個命令列介面. 全部安裝大小大約 65 MB。" #: ../help.pm:149 ../help.pm:591 #, c-format msgid "Upgrade" msgstr "升級" #: ../help.pm:149 #, c-format msgid "With basic documentation" msgstr "包含基本的說明文件" #: ../help.pm:149 #, c-format msgid "Truly minimal install" msgstr "真的最小安裝" #: ../help.pm:152 #, c-format msgid "" "If you choose to install packages individually, the installer will present\n" "a tree containing all packages classified by groups and subgroups. While\n" "browsing the tree, you can select entire groups, subgroups, or individual\n" "packages.\n" "\n" "Whenever you select a package on the tree, a description will appear on the\n" "right to let you know the purpose of that package.\n" "\n" "!! If a server package has been selected, either because you specifically\n" "chose the individual package or because it was part of a group of packages,\n" "you'll be asked to confirm that you really want those servers to be\n" "installed. By default Mageia will automatically start any installed\n" "services at boot time. Even if they are safe and have no known issues at\n" "the time the distribution was shipped, it is entirely possible that\n" "security holes were discovered after this version of Mageia was\n" "finalized. If you do not know what a particular service is supposed to do " "or\n" "why it's being installed, then click \"%s\". Clicking \"%s\" will install\n" "the listed services and they will be started automatically at boot time. !!\n" "\n" "The \"%s\" option is used to disable the warning dialog which appears\n" "whenever the installer automatically selects a package to resolve a\n" "dependency issue. Some packages depend on others and the installation of\n" "one particular package may require the installation of another package. The\n" "installer can determine which packages are required to satisfy a dependency\n" "to successfully complete the installation.\n" "\n" "The tiny floppy disk icon at the bottom of the list allows you to load a\n" "package list created during a previous installation. This is useful if you\n" "have a number of machines that you wish to configure identically. Clicking\n" "on this icon will ask you to insert the floppy disk created at the end of\n" "another installation. See the second tip of the last step on how to create\n" "such a floppy." msgstr "" #: ../help.pm:183 #, c-format msgid "Automatic dependencies" msgstr "自動相依性" #: ../help.pm:185 #, c-format msgid "" "This dialog is used to select which services you wish to start at boot\n" "time.\n" "\n" "DrakX will list all services available on the current installation. Review\n" "each one of them carefully and uncheck those which are not needed at boot\n" "time.\n" "\n" "A short explanatory text will be displayed about a service when it is\n" "selected. However, if you're not sure whether a service is useful or not,\n" "it is safer to leave the default behavior.\n" "\n" "!! At this stage, be very careful if you intend to use your machine as a\n" "server: you probably do not want to start any services which you do not " "need.\n" "Please remember that some services can be dangerous if they're enabled on a\n" "server. In general, select only those services you really need. !!" msgstr "" "這個對話視窗用來選擇你打算於啟動系統時執行運作的服務.\n" "\n" "DrakX 將列出在現在安裝上可選擇的服務項目. 仔細詳細回顧查看每一個\n" "且取消選取那些開機時不會用到的.\n" "\n" "當你選取該項目時, 會出現一個簡略說明文字. 但是若是您對於該項目\n" "實在不確定是否要啟用的話, 比較安全的作法就是維持原樣不要動作即可.\n" "\n" "!! 在這階段, 請小心如果您這台機器是要當作伺服器: 您大概不想要\n" "開啟那些您不用的服務. 請記得某些服務在伺服器上啟動後可能會有危險.\n" "大致上只選那些你真正需要的服務. !!" #: ../help.pm:209 #, c-format msgid "" "GNU/Linux manages time in GMT (Greenwich Mean Time) and translates it to\n" "local time according to the time zone you selected. If the clock on your\n" "motherboard is set to local time, you may deactivate this by unselecting\n" "\"%s\", which will let GNU/Linux know that the system clock and the\n" "hardware clock are in the same time zone. This is useful when the machine\n" "also hosts another operating system.\n" "\n" "The \"%s\" option will automatically regulate the system clock by\n" "connecting to a remote time server on the Internet. For this feature to\n" "work, you must have a working Internet connection. We recommend that you\n" "choose a time server located near you. This option actually installs a time\n" "server which can be used by other machines on your local network as well." msgstr "" #: ../help.pm:213 #, c-format msgid "Hardware clock set to GMT" msgstr "" #: ../help.pm:213 #, c-format msgid "Automatic time synchronization" msgstr "自動時間同步" #: ../help.pm:223 #, c-format msgid "" "Graphic Card\n" "\n" " The installer will normally automatically detect and configure the\n" "graphic card installed on your machine. If this is not correct, you can\n" "choose from this list the card you actually have installed.\n" "\n" " In the situation where different servers are available for your card,\n" "with or without 3D acceleration, you're asked to choose the server which\n" "best suits your needs." msgstr "" "顯示卡\n" "\n" " 一般而言,安裝程式會自動偵測並設定安裝在您機器上的顯示\n" "卡。如果偵測結果不正確,您可以由本清單中選取正確的型號。\n" "\n" " 如果有不同的伺服器可以與您的顯示卡搭配使用 (有或沒有 3D\n" "加速功能),請您選擇一個最符合您需求的伺服器來使用。" #: ../help.pm:234 #, c-format msgid "" "X (for X Window System) is the heart of the GNU/Linux graphical interface\n" "on which all the graphical environments (KDE, GNOME, AfterStep,\n" "WindowMaker, etc.) bundled with Mageia rely upon.\n" "\n" "You'll see a list of different parameters to change to get an optimal\n" "graphical display.\n" "\n" "Graphic Card\n" "\n" " The installer will normally automatically detect and configure the\n" "graphic card installed on your machine. If this is not correct, you can\n" "choose from this list the card you actually have installed.\n" "\n" " In the situation where different servers are available for your card,\n" "with or without 3D acceleration, you're asked to choose the server which\n" "best suits your needs.\n" "\n" "\n" "\n" "Monitor\n" "\n" " Normally the installer will automatically detect and configure the\n" "monitor connected to your machine. If it is not correct, you can choose\n" "from this list the monitor which is connected to your computer.\n" "\n" "\n" "\n" "Resolution\n" "\n" " Here you can choose the resolutions and color depths available for your\n" "graphics hardware. Choose the one which best suits your needs (you will be\n" "able to make changes after the installation). A sample of the chosen\n" "configuration is shown in the monitor picture.\n" "\n" "\n" "\n" "Test\n" "\n" " Depending on your hardware, this entry might not appear.\n" "\n" " The system will try to open a graphical screen at the desired\n" "resolution. If you see the test message during the test and answer \"%s\",\n" "then DrakX will proceed to the next step. If you do not see it, then it\n" "means that some part of the auto-detected configuration was incorrect and\n" "the test will automatically end after 12 seconds and return you to the\n" "menu. Change settings until you get a correct graphical display.\n" "\n" "\n" "\n" "Options\n" "\n" " This steps allows you to choose whether you want your machine to\n" "automatically switch to a graphical interface at boot. Obviously, you may\n" "want to check \"%s\" if your machine is to act as a server, or if you were\n" "not successful in getting the display configured." msgstr "" #: ../help.pm:291 #, c-format msgid "" "Monitor\n" "\n" " Normally the installer will automatically detect and configure the\n" "monitor connected to your machine. If it is not correct, you can choose\n" "from this list the monitor which is connected to your computer." msgstr "" "螢幕\n" "\n" " 一般來說,安裝程式會自動偵測並設定連接到您電腦的螢幕。如果它不正確\n" ",您可以由此列表中選取連結到您電腦的螢幕。" #: ../help.pm:298 #, c-format msgid "" "Resolution\n" "\n" " Here you can choose the resolutions and color depths available for your\n" "graphics hardware. Choose the one which best suits your needs (you will be\n" "able to make changes after the installation). A sample of the chosen\n" "configuration is shown in the monitor picture." msgstr "" "解析度\n" "\n" " 在這裡您可以選擇您顯示卡可以使用的解析度與色深。請選取最適合您的設定值\n" "(您可以在安裝完成之後更改)。您選取的設定值的樣本將顯示在螢幕圖片上。" #: ../help.pm:306 #, c-format msgid "" "In the situation where different servers are available for your card, with\n" "or without 3D acceleration, you're asked to choose the server which best\n" "suits your needs." msgstr "" "如果有不同的伺服器可以與您的顯示卡搭配使用 (有或沒有 3D加速\n" "功能),請您選擇一個最符合您需求的伺服器來使用。" #: ../help.pm:311 #, c-format msgid "" "Options\n" "\n" " This steps allows you to choose whether you want your machine to\n" "automatically switch to a graphical interface at boot. Obviously, you may\n" "want to check \"%s\" if your machine is to act as a server, or if you were\n" "not successful in getting the display configured." msgstr "" "選項\n" "\n" " 這個步驟允許您選擇是否想要您的機器開機時自動跳到圖形介.\n" "顯然地, 如果您的機器是當作一個伺服器或您不能成功地設定顯示,\n" "您想核對選取 \"%s\"." #: ../help.pm:319 #, fuzzy, c-format msgid "" "You now need to decide where you want to install the Mageia\n" "operating system on your hard disk drive. If your hard disk drive is empty or if an\n" "existing operating system is using all the available space you will have to\n" "partition the drive. Basically, partitioning a hard disk drive means to\n" "logically divide it to create the space needed to install your new\n" "Mageia system.\n" "\n" "Because the process of partitioning a hard disk drive is usually irreversible\n" "and can lead to data losses, partitioning can be intimidating and stressful\n" "for the inexperienced user. Fortunately, DrakX includes a wizard which\n" "simplifies this process. Before continuing with this step, read through the\n" "rest of this section and above all, take your time.\n" "\n" "Depending on the configuration of your hard disk drive, several options are\n" "available:\n" "\n" " * \"%s\". This option will perform an automatic partitioning of your blank\n" "drive(s). If you use this option there will be no further prompts.\n" "\n" " * \"%s\". The wizard has detected one or more existing Linux partitions on\n" "your hard disk drive. If you want to use them, choose this option. You will then\n" "be asked to choose the mount points associated with each of the partitions.\n" "The legacy mount points are selected by default, and for the most part it's\n" "a good idea to keep them.\n" "\n" " * \"%s\". If Microsoft Windows is installed on your hard disk drive and takes\n" "all the space available on it, you will have to create free space for\n" "GNU/Linux. To do so, you can delete your Microsoft Windows partition and\n" "data (see ``Erase entire disk'' solution) or resize your Microsoft Windows\n" "FAT or NTFS partition. Resizing can be performed without the loss of any\n" "data, provided you've previously defragmented the Windows partition.\n" "Backing up your data is strongly recommended. Using this option is\n" "recommended if you want to use both Mageia and Microsoft Windows on\n" "the same computer.\n" "\n" " Before choosing this option, please understand that after this\n" "procedure, the size of your Microsoft Windows partition will be smaller\n" "than when you started. You'll have less free space under Microsoft Windows\n" "to store your data or to install new software.\n" "\n" " * \"%s\". If you want to delete all data and all partitions present on\n" "your hard disk drive and replace them with your new Mageia system, choose\n" "this option. Be careful, because you will not be able to undo this " "operation\n" "after you confirm.\n" "\n" " !! If you choose this option, all data on your disk will be deleted. !!\n" "\n" " * \"%s\". This option appears when the hard disk drive is entirely taken by\n" "Microsoft Windows. Choosing this option will simply erase everything on the\n" "drive and begin fresh, partitioning everything from scratch.\n" "\n" " !! If you choose this option, all data on your disk will be lost. !!\n" "\n" " * \"%s\". Choose this option if you want to manually partition your hard\n" "drive. Be careful -- it is a powerful but dangerous choice and you can very\n" "easily lose all your data. That's why this option is really only\n" "recommended if you have done something like this before and have some\n" "experience. For more instructions on how to use the DiskDrake utility,\n" "refer to the ``Managing Your Partitions'' section in the ``Starter Guide''." msgstr "" "您需要決定那裡你想要安裝 Mageia\n" "作業系統於那個硬碟. 如果您的硬碟是全新尚未使用或\n" "已經存在的作業系統正在使用全部可被利用的空間, 您將\n" "必須進行分割硬碟的動作. 基本上, 分割硬碟的動作包含\n" "邏輯上劃分它以建立需要的空間來安裝您的新\n" "Mageia 系統.\n" "\n" "因為分割硬碟的動作程序通常是無法回復的\n" "且能導致資料遺失, 若您是一位不熟練的使用者,\n" "割硬碟的動作是脅迫恫嚇與充滿著緊張壓力的. 幸運的是\n" "DrakX 包含精靈模式以簡化這程序。於繼續此步驟前,\n" "先詳細閱讀其他部份與全部, 慢慢來.\n" "\n" "根據您的硬碟設定值, 有數個選項可用:\n" "\n" " * \"%s\". 該項目將會執行自動劃分您空白的磁碟.\n" "若您使用此選項, 將沒有進一步的提示.\n" "\n" " * \"%s\"。精靈模式已經偵測一個或多個已經存在的 Linux 硬碟\n" "分割. 若您想要使用他們, 選此選項. 您將會\n" "被要求選擇關於每一個分割的掛載點.\n" "就有的掛載點預設為被選擇, 且大部分最好保留\n" "他們.\n" "\n" " * \"%s\". 若您硬碟有安裝 Microsoft Windows 且佔據\n" "全部可用剩餘可用的空間, 您將必須建立自由空間給\n" "GNU/Linux. 為了達到目的, 您可以刪除 Microsoft Windows 分割與資料\n" "(見 ``Erase entire disk (消除整個磁碟)'' 解決方案) 或是\n" "重新調整 Microsoft Windows FAT 或 NTFS 分割區大小.\n" "若您已經 defragment(不連續碎片重新整理) Windows 分割\n" "且它用 FAT 格式.重新調整分割可以被執行於不遺失任何資料\n" "資料備份是被強烈建議的. 若您想要使用 Mageia and Microsoft\n" "Windows 於同一台電腦, 使用此選項是被建議的.\n" "\n" " 選擇此選項前, 請了解當使用這個過程項目後, Microsoft Windows\n" "分割可用的剩餘空間將會比之前減少. 您將有較少的自由空間於\n" " Microsoft Windows 來存您的資料與安裝新軟體.\n" "\n" " * \"%s\". 如果您想要刪除全部現存於您的硬碟上資料與\n" "分割且以您的新 Mageia 系統替換他們,\n" "選此選項. 但是小心使用, 你將無法於你確認之後\n" "逆反你的決定.\n" "\n" " !! 若你選此選項, 全部於你的磁碟上的資料將會被刪除. !!\n" "\n" " * \"%s\". 當硬碟完全被 Microsoft Windows 佔據時出現此選項.\n" "選擇此選項將會簡單地消除一切於磁碟中的資料且從新開始,\n" "從頭開始分割一切.\n" "\n" " !! 若你選此選項, 全部於你的磁碟上的資料將會遺失. !!\n" "\n" " * \"%s\". 選這個選項若您想要手動分割您的硬碟.\n" "請小心使用 -- 它是強力的但是危險的選擇且您可能非常\n" "容易遺失您的全部資料. 這是為何此選項事實上只於\n" "您曾經做過類似於此且有些許經驗的時候被建議.\n" "更多指令於如何使用 DiskDrake 工具, 指向\n" "``Starter Guide (初學者指導)''的\n" "``Managing Your Partitions (管理您的分割)'' 部份." #: ../help.pm:377 #, c-format msgid "Use existing partition" msgstr "使用已經存在的分割區" #: ../help.pm:370 #, c-format msgid "Use the free space on the Microsoft Windows® partition" msgstr "" #: ../help.pm:370 #, c-format msgid "Erase entire disk" msgstr "刪除所有磁碟內容" #: ../help.pm:380 #, c-format msgid "" "There you are. Installation is now complete and your GNU/Linux system is\n" "ready to be used. Just click on \"%s\" to reboot the system. Do not forget\n" "to remove the installation media (CD-ROM or floppy). The first thing you\n" "should see after your computer has finished doing its hardware tests is the\n" "boot-loader menu, giving you the choice of which operating system to start.\n" "\n" "The \"%s\" button shows two more buttons to:\n" "\n" " * \"%s\": enables you to create an installation floppy disk which will\n" "automatically perform a whole installation without the help of an operator,\n" "similar to the installation you've just configured.\n" "\n" " Note that two different options are available after clicking on that\n" "button:\n" "\n" " * \"%s\". This is a partially automated installation. The partitioning\n" "step is the only interactive procedure.\n" "\n" " * \"%s\". Fully automated installation: the hard disk is completely\n" "rewritten, all data is lost.\n" "\n" " This feature is very handy when installing on a number of similar\n" "machines. See the Auto install section on our web site for more\n" "information.\n" "\n" " * \"%s\"(*): saves a list of the packages selected in this installation.\n" "To use this selection with another installation, insert the floppy and\n" "start the installation. At the prompt, press the [F1] key, type >>linux\n" "defcfg=\"floppy\"<< and press the [Enter] key.\n" "\n" "(*) You need a FAT-formatted floppy. To create one under GNU/Linux, type\n" "\"mformat a:\", or \"fdformat /dev/fd0\" followed by \"mkfs.vfat\n" "/dev/fd0\"." msgstr "" "整個安裝步驟到這裡代表您安裝已經完成了且 GNU/Linux 系統準備好被使用.\n" "只要點選 \"%s\" 來重新啟動系統. 別忘了移除安裝媒介 (光碟或軟片).\n" "於您的電腦完成硬體測試後您第一個見到的是開機載入程式選單,\n" "給您開始那個作業系統的選擇\n" " \"%s\" 按鈕顯示另兩個按鈕到:\n" "\n" "* \"%s\": 使您建立一個安裝軟片, 一張不需要操作手的幫助\n" "就能夠自動執行全部安裝的軟片, 類似於您剛剛設定的安裝一樣.\n" "\n" " 注意按下那個按鈕後有兩個不同的選項可供選擇:\n" "\n" " * \"%s\". 這是半自動安裝方式, 磁碟分割項目將是唯一維持手動方式操作.\n" "\n" " * \"%s\". 這是全自動的安裝方式: 硬碟將完全被重新寫入, 全部資料遺失.\n" "\n" " 這功能對於需要大量安裝很多相似機器上的話來說這是相當實用.\n" "可以參考我們網頁上自動安裝章節的更多資訊.\n" "\n" " * \"%s\"(*): 儲存一個於這安裝時選擇的套件清單.\n" "要用這些選擇於另一個安裝, 插入軟片且開始安裝. 於提示時按下 F1 按鍵,\n" "然後輸入 >>linux defcfg=\"floppy\"<< 按下 [Enter] 鍵.\n" "\n" "(*) 您需要一個 FAT-formatted 軟片. 要建立一張於於GNU/Linux 環境下,\n" "鍵入 \"mformat a:\", 或 \"fdformat /dev/fd0\" 然後 \"mkfs.vfat /dev/fd0\"." #: ../help.pm:412 #, c-format msgid "Generate auto-install floppy" msgstr "產生自動安裝軟片" #: ../help.pm:405 #, c-format msgid "Replay" msgstr "" #: ../help.pm:405 #, c-format msgid "Automated" msgstr "" #: ../help.pm:405 #, c-format msgid "Save packages selection" msgstr "" #: ../help.pm:408 #, fuzzy, c-format msgid "" "If you chose to reuse some legacy GNU/Linux partitions, you may wish to\n" "reformat some of them and erase any data they contain. To do so, please\n" "select those partitions as well.\n" "\n" "Please note that it's not necessary to reformat all pre-existing\n" "partitions. You must reformat the partitions containing the operating\n" "system (such as \"/\", \"/usr\" or \"/var\") but you do not have to " "reformat\n" "partitions containing data that you wish to keep (typically \"/home\").\n" "\n" "Please be careful when selecting partitions. After the formatting is\n" "completed, all data on the selected partitions will be deleted and you\n" "will not be able to recover it.\n" "\n" "Click on \"%s\" when you're ready to format the partitions.\n" "\n" "Click on \"%s\" if you want to choose another partition for your new\n" "Mageia operating system installation.\n" "\n" "Click on \"%s\" if you wish to select partitions which will be checked for\n" "bad blocks on the disk." msgstr "" "如果您選擇去重新使用某些 GNU/Linux 分割, 您或許想要重新格式化他們\n" "且抹去任何他們包含的資料. 要的話, 請選擇那些分割.\n" "請注意一下, 並不是所有先前已經存在的分割區都得重新格式化,\n" "您必須重新格式化包含作業系統的分割 (例如 \"/\", \"/usr\" or \"/var\")\n" "但是您不需要重新格式化包含您想保留資料的分割 (通常是 \"/home\").\n" "\n" "請小心選擇分割. 當格式化完成時, 全部在選擇分割上得資料將被刪除且\n" "您將不行重新恢復它.\n" "當您準備好要格式化此分割, 點選 \"%s\".\n" "\n" "若您想選擇另一個分割給您的新的 Mageia 作業系統安裝, 點選了\"%s\".\n" "若您想選擇要被檢查磁碟上壞的區塊的分割, 點選.\"%s\"." #: ../help.pm:437 #, fuzzy, c-format msgid "" "By the time you install Mageia, it's likely that some packages will\n" "have been updated since the initial release. Bugs may have been fixed,\n" "security issues resolved. To allow you to benefit from these updates,\n" "you're now able to download them from the Internet. Check \"%s\" if you\n" "have a working Internet connection, or \"%s\" if you prefer to install\n" "updated packages later.\n" "\n" "Choosing \"%s\" will display a list of web locations from which updates can\n" "be retrieved. You should choose one near to you. A package-selection tree\n" "will appear: review the selection, and press \"%s\" to retrieve and install\n" "the selected package(s), or \"%s\" to abort." msgstr "" "此時您安裝 Mageia 時, 或許自從初始釋出的某些套件將有更新.\n" "臭蟲或許已經修正了, 安全性問題解決了. 為了允許您從這些更新中\n" "獲得利益, 您現在可以由網際網路下載他們. 如果您有可用的網際網路連線,\n" "選取 \"%s\", 或是, 如果您想稍後安裝更新套件, 選取 \"%s\".\n" "\n" "選擇 \"%s\" 將顯示一張更新可以被擷取的網站位置清單. 您應該選擇一個\n" "跟您近的. 一個套件選擇樹將出現: 審查選擇, 按下 \"%s\" 來擷取且安裝\n" "被選擇的套件, 或 \"%s\" 以中斷放棄." #: ../help.pm:450 #, fuzzy, c-format msgid "" "At this point, DrakX will allow you to choose the security level you desire\n" "for your machine. As a rule of thumb, the security level should be set\n" "higher if the machine is to contain crucial data, or if it's to be directly\n" "exposed to the Internet. The trade-off that a higher security level is\n" "generally obtained at the expense of ease of use.\n" "\n" "If you do not know what to choose, keep the default option. You'll be able\n" "to change it later with the draksec tool, which is part of Mageia\n" "Control Center.\n" "\n" "Fill the \"%s\" field with the e-mail address of the person responsible for\n" "security. Security messages will be sent to that address." msgstr "" "到這裡時, DrakX 將允許您選擇您想要的安全性等級給您的機器.\n" "根據拇指規則, 若是機器將要有包含重要的資料, 或是直接暴露在網際網路,\n" "安全性等級應該設定較高. 權衡之下, 較高的安全性等級換得不容易使用.\n" "\n" "如果您不知道選什麼, 保留預設選項. 您將能在稍後用 draksec 工具改變它,\n" "draksec 是 Mageia 控制中心的一部分.用負責安全性的人的 e-mail 地址填" "入 \"%s\" 欄位. 安全性訊息將被寄到\n" "那個位址." #: ../help.pm:461 #, c-format msgid "Security Administrator" msgstr "安全性管理員:" #: ../help.pm:464 #, fuzzy, c-format msgid "" "At this point, you need to choose which partition(s) will be used for the\n" "installation of your Mageia system. If partitions have already been\n" "defined, either from a previous installation of GNU/Linux or by another\n" "partitioning tool, you can use existing partitions. Otherwise, hard disk drive\n" "partitions must be defined.\n" "\n" "To create partitions, you must first select a hard disk drive. You can select\n" "the disk for partitioning by clicking on ``hda'' for the first IDE drive,\n" "``hdb'' for the second, ``sda'' for the first SCSI drive and so on.\n" "\n" "To partition the selected hard disk drive, you can use these options:\n" "\n" " * \"%s\": this option deletes all partitions on the selected hard disk drive\n" "\n" " * \"%s\": this option enables you to automatically create ext3 and swap\n" "partitions in the free space of your hard disk drive\n" "\n" "\"%s\": gives access to additional features:\n" "\n" " * \"%s\": saves the partition table to a floppy. Useful for later\n" "partition-table recovery if necessary. It is strongly recommended that you\n" "perform this step.\n" "\n" " * \"%s\": allows you to restore a previously saved partition table from a\n" "floppy disk.\n" "\n" " * \"%s\": if your partition table is damaged, you can try to recover it\n" "using this option. Please be careful and remember that it does not always\n" "work.\n" "\n" " * \"%s\": discards all changes and reloads the partition table that was\n" "originally on the hard disk drive.\n" "\n" " * \"%s\": un-checking this option will force users to manually mount and\n" "unmount removable media such as floppies and CD-ROMs.\n" "\n" " * \"%s\": use this option if you wish to use a wizard to partition your\n" "hard disk drive. This is recommended if you do not have a good understanding of\n" "partitioning.\n" "\n" " * \"%s\": use this option to cancel your changes.\n" "\n" " * \"%s\": allows additional actions on partitions (type, options, format)\n" "and gives more information about the hard disk drive.\n" "\n" " * \"%s\": when you are finished partitioning your hard disk drive, this will\n" "save your changes back to disk.\n" "\n" "When defining the size of a partition, you can finely set the partition\n" "size by using the Arrow keys of your keyboard.\n" "\n" "Note: you can reach any option using the keyboard. Navigate through the\n" "partitions using [Tab] and the [Up/Down] arrows.\n" "\n" "When a partition is selected, you can use:\n" "\n" " * Ctrl-c to create a new partition (when an empty partition is selected)\n" "\n" " * Ctrl-d to delete a partition\n" "\n" " * Ctrl-m to set the mount point\n" "\n" "To get information about the different filesystem types available, please\n" "read the ext2FS chapter from the ``Reference Manual''.\n" "\n" "If you are installing on a PPC machine, you will want to create a small HFS\n" "``bootstrap'' partition of at least 1MB which will be used by the yaboot\n" "bootloader. If you opt to make the partition a bit larger, say 50MB, you\n" "may find it a useful place to store a spare kernel and ramdisk images for\n" "emergency boot situations." msgstr "" "在這個階段, 您需要選擇要用來安裝 Mageia 系統的分割區.\n" "如果分割區已經被定義了, 不管是從舊有的 GNU/Linux 安裝或是\n" "另一個處理分割區的工具, 您可以使用原本已經劃分好的分割區.\n" "否則硬碟分割必須要被定義.\n" "\n" "要建立分割區, 您需要先選擇一台硬碟. 您可以選擇要操作的分割區, 按 ``hda''\n" "為第一台 IDE 磁碟, ``hdb'' 為第二台, ``sda'' 為第一台 SCSI 磁碟等等.\n" "\n" "要進行分割的動作於選好的硬碟上, 您有這些項目可以使用:\n" "\n" " * \"%s\": 這個選項刪除在所選的影碟上的全部分割區\n" "\n" " * \"%s\": 這個選項使您自動建立 ext3 與 swap 分割區於您的硬碟上的空白空間\n" "\n" "\"%s\": 給多加的功能的使用:\n" "\n" " * \"%s\": 儲存分割表到軟片. 必要時對於分割表拯救有用. 強烈建議執行此步驟.\n" "\n" " * \"%s\": 允許您回存一個之前從軟片儲存的分割表\n" "\n" " * \"%s\": 如果您的分割表受損, 您可以試著用這個選項救回它.\n" "請小心且記得這並非總是有效.\n" "\n" " * \"%s\": 丟棄全部改變且重新載入原始硬碟的分割表.\n" "\n" " * \"%s\": 不選取這個選項將強制使用者手動掛載與卸載可移除式媒介例如磁碟片與\n" "光碟。\n" "\n" " * \"%s\": 如果您想用精靈來分割您的硬碟, 使用這個選項. 如果您沒有對於\n" "操作分割的好的了解, 這是被建議的.\n" "hard disk drive. This is recommended if you do not have a good understanding of\n" "partitioning.\n" "\n" " * \"%s\": 用這個選項來取消您的變更.\n" "\n" " * \"%s\": 允許多加的動作於分割 (類型, 選項, 格式)且給更多的關於硬碟的資訊.\n" "\n" " * \"%s\": 當您完成分割您的硬碟, 這將儲存您的變更回磁碟.\n" "\n" "當定義一個分割的大小時, 您可以好好的用鍵盤上的方向鍵來設定分割大小.\n" "\n" "注意: 您可以用鍵盤達成任何選項. 用 [Tab] 鍵與上或下方向鍵瀏覽分割.\n" "\n" "當一個分個被選擇時, 您可以使用:\n" "\n" " * Ctrl-c 來建立一個新的分割 (當空白分割被選擇時)\n" "\n" " * Ctrl-d 來刪除一個分割\n" "\n" " * Ctrl-m 來設定掛載點\n" "\n" "要得到關於不同可用的檔案系統的資訊, 請從 ``Reference Manual (參考手冊)''\n" "閱讀 ext2FS 章節.\n" "\n" "如果您正在安裝於一個 PPC 機器, 您將想要建立一個小的 HFS\n" "``bootstrap'' 分割至少 1MB 以用於 yaboot 開機載入器. 如果您選擇使分割大一" "些,\n" "像 50MB, 您或許發現它是一個好用的貯存一個備用核心與 ramdisk\n" "影像給緊急使用開機的好地方." #: ../help.pm:526 #, c-format msgid "Save partition table" msgstr "" #: ../help.pm:526 #, c-format msgid "Restore partition table" msgstr "" #: ../help.pm:526 #, c-format msgid "Rescue partition table" msgstr "" #: ../help.pm:526 #, c-format msgid "Removable media auto-mounting" msgstr "可移除式媒介自動掛載" #: ../help.pm:526 #, c-format msgid "Wizard" msgstr "" #: ../help.pm:526 #, c-format msgid "Undo" msgstr "" #: ../help.pm:526 #, c-format msgid "Toggle between normal/expert mode" msgstr "切換一般/專家模式" #: ../help.pm:536 #, fuzzy, c-format msgid "" "More than one Microsoft partition has been detected on your hard disk drive.\n" "Please choose the one which you want to resize in order to install your new\n" "Mageia operating system.\n" "\n" "Each partition is listed as follows: \"Linux name\", \"Windows name\"\n" "\"Capacity\".\n" "\n" "\"Linux name\" is structured: \"hard disk drive type\", \"hard disk drive number\",\n" "\"partition number\" (for example, \"hda1\").\n" "\n" "\"Hard drive type\" is \"hd\" if your hard dive is an IDE hard disk drive and\n" "\"sd\" if it is a SCSI hard disk drive.\n" "\n" "\"Hard drive number\" is always a letter after \"hd\" or \"sd\". With IDE\n" "hard disk drives:\n" "\n" " * \"a\" means \"master hard disk drive on the primary IDE controller\";\n" "\n" " * \"b\" means \"slave hard disk drive on the primary IDE controller\";\n" "\n" " * \"c\" means \"master hard disk drive on the secondary IDE controller\";\n" "\n" " * \"d\" means \"slave hard disk drive on the secondary IDE controller\".\n" "\n" "With SCSI hard disk drives, an \"a\" means \"lowest SCSI ID\", a \"b\" means\n" "\"second lowest SCSI ID\", etc.\n" "\n" "\"Windows name\" is the letter of your hard disk drive under Windows (the first\n" "disk or partition is called \"C:\")." msgstr "" "多於一個 Microsoft 分割區已經在您的硬碟上被偵測到. 請選擇您希望要重新調整 大" "小的分割以便安裝您的新的 Mageia 作業系統.\n" "\n" "每個分割區都列出了像是: \"Linux 名稱\", \"Windows 名稱\", \"容量\".\n" "\n" "\"Linux 名稱\" 是有結構性的: \"硬碟型態\", \"硬碟編號\", \"分割區編號\"\n" "(比方像是: \"hda1\" ).\n" "\n" "\"硬碟型態\" 就是, 若您使用的是 IDE 硬碟, 會顯示 \"hd\", 若是SCSI硬碟的話,\n" "就是 \"sd\".\n" "\n" "\"硬碟編號\" 就是在 \"hd\" 或者是 \"sd\" 後面的字母. 以 IDE 硬碟裝置來說:\n" "\n" " * \"a\"這是指 \"primary IDE controller 上第一台 (master) 硬碟\";\n" "\n" " * \"b\"這是指\"primmary IDE controller 上第二台 (slave) 硬碟\";\n" "\n" " * \"c\"這是指\"secondary IDE controller 上第一台 (master) 硬碟\";\n" "\n" " * \"d\"這是指\"secondary IDE controller 上第二台 (slave) 硬碟\".\n" "\n" "以 SCSI 硬碟來說, \"a\" 是指 \"SCSI ID 編號最小的那一台硬碟\", \"b\" 是指" "\"SCSI ID 編號為第二小的那一台硬碟\", 然後依此類推下去.....\n" "\n" "\"Windows 名稱\" 是在 Windows 下的磁碟機代號名稱 (第一個磁碟或分割稱為\n" "\"C:\")." #: ../help.pm:567 #, c-format msgid "" "\"%s\": check the current country selection. If you're not in this country,\n" "click on the \"%s\" button and choose another. If your country is not in " "the\n" "list shown, click on the \"%s\" button to get the complete country list." msgstr "" "\"%s\":檢視目前選擇的國家。如果您不在這個國家,\n" "請按下 \"%s\" 按鈕並選擇另一個。如果您的國家不在選單中,\n" "請按下 \"%s\" 按鈕來看完整的國家清單。" #: ../help.pm:572 #, fuzzy, c-format msgid "" "This step is activated only if an existing GNU/Linux partition has been\n" "found on your machine.\n" "\n" "DrakX now needs to know if you want to perform a new installation or an\n" "upgrade of an existing Mageia system:\n" "\n" " * \"%s\". For the most part, this completely wipes out the old system.\n" "However, depending on your partitioning scheme, you can prevent some of\n" "your existing data (notably \"home\" directories) from being over-written.\n" "If you wish to change how your hard disk drives are partitioned, or to change\n" "the filesystem, you should use this option.\n" "\n" " * \"%s\". This installation class allows you to update the packages\n" "currently installed on your Mageia system. Your current partitioning\n" "scheme and user data will not be altered. Most of the other configuration\n" "steps remain available and are similar to a standard installation.\n" "\n" "Using the ``Upgrade'' option should work fine on Mageia systems\n" "running version \"8.1\" or later. Performing an upgrade on versions prior\n" "to Mageia version \"8.1\" is not recommended." msgstr "" "這個步驟是在您的機器上找到已經存在的 GNU/Linux 分割區才會啟用。\n" "\n" "DrakX 需要知道您是要安裝新的系統或者升級既有的 Mageia 系統:\n" "\n" " * \"%s\". 大致來說,這將會完全抹除舊的系統。然而,根據您的分割區配\n" "置方式,您可以避免部分現存的資料 (例如 \"home\" 之中的目錄) 被完全\n" "抹除。如果您想要改變您的硬碟分割方式,或改變檔案系統,您應該使用這\n" "個選項。\n" "\n" " * \"%s\". 這個安裝方式讓您更新目前安裝在您的 Mageia 中的套\n" "件。您目前的分割方式和使用者資料不會被改變。大部分其他的設定步驟仍\n" "然會出現並且和標準的安裝過程相似。\n" "\n" "使用 ``更新'' 選項應該在 Mageia 版本 \"8.1\" 或更新的系統上\n" "可以正常運作。不建議從 Mageia 版本 \"8.1\" 或更早的系統進行更新。" #: ../help.pm:594 #, c-format msgid "" "Depending on the language you chose (), DrakX will automatically select a\n" "particular type of keyboard configuration. Check that the selection suits\n" "you or choose another keyboard layout.\n" "\n" "Also, you may not have a keyboard which corresponds exactly to your\n" "language: for example, if you are an English-speaking Swiss native, you may\n" "have a Swiss keyboard. Or if you speak English and are located in Quebec,\n" "you may find yourself in the same situation where your native language and\n" "country-set keyboard do not match. In either case, this installation step\n" "will allow you to select an appropriate keyboard from a list.\n" "\n" "Click on the \"%s\" button to be shown a list of supported keyboards.\n" "\n" "If you choose a keyboard layout based on a non-Latin alphabet, the next\n" "dialog will allow you to choose the key binding which will switch the\n" "keyboard between the Latin and non-Latin layouts." msgstr "" "根據您所選的語言 (), DrakX 將會自動選擇一個特別的鍵盤設定型態. 檢查所選擇的\n" "是否適合您或選擇另一個鍵盤形式。\n" "\n" "您或許沒有精確對應於您的語言的鍵盤: 例如, 如果您是一個說英文的瑞士本國人,\n" "您或許有瑞士鍵盤. 或如果您說英文且在魁北克 (Quebec), 您或許發現您自己在一個\n" "您本國語言與國家鍵盤組合不對稱的情況. 不管是那種情形, 這個安裝步驟將允許您\n" "從一個清單中選擇適合的鍵盤\n" "\n" "點選 \"%s\" 按鈕以顯示一個支援的鍵盤清單.\n" "\n" "如果您根據一個非拉丁語系字母選擇一個鍵盤形式,下一個對話窗將允許您選擇\n" "按鍵組合以便切換於拉丁與非拉丁鍵盤形式之中。" #: ../help.pm:612 #, fuzzy, c-format msgid "" "The first step is to choose your preferred language.\n" "\n" "Your choice of preferred language will affect the installer, the\n" "documentation, and the system in general. First select the region you're\n" "located in, then the language you speak.\n" "\n" "Clicking on the \"%s\" button will allow you to select other languages to\n" "be installed on your workstation, thereby installing the language-specific\n" "files for system documentation and applications. For example, if Spanish\n" "users are to use your machine, select English as the default language in\n" "the tree view and \"%s\" in the Advanced section.\n" "\n" "About UTF-8 (unicode) support: Unicode is a new character encoding meant to\n" "cover all existing languages. However full support for it in GNU/Linux is\n" "still under development. For that reason, Mageia's use of UTF-8 will\n" "depend on the user's choices:\n" "\n" " * If you choose a language with a strong legacy encoding (latin1\n" "languages, Russian, Japanese, Chinese, Korean, Thai, Greek, Turkish, most\n" "iso-8859-2 languages), the legacy encoding will be used by default;\n" "\n" " * Other languages will use unicode by default;\n" "\n" " * If two or more languages are required, and those languages are not using\n" "the same encoding, then unicode will be used for the whole system;\n" "\n" " * Finally, unicode can also be forced for use throughout the system at a\n" "user's request by selecting the \"%s\" option independently of which\n" "languages were been chosen.\n" "\n" "Note that you're not limited to choosing a single additional language. You\n" "may choose several, or even install them all by selecting the \"%s\" box.\n" "Selecting support for a language means translations, fonts, spell checkers,\n" "etc. will also be installed for that language.\n" "\n" "To switch between the various languages installed on your system, you can\n" "launch the \"localedrake\" command as \"root\" to change the language used\n" "by the entire system. Running the command as a regular user will only\n" "change the language settings for that particular user." msgstr "" "第一步驟是選擇您偏好的語言.\n" "\n" "您選擇的偏好語言一般來說將影響安裝、文件、與系統。先選擇您在的區域,然後\n" "是您說的語言.\n" "\n" "點選 \"%s\" 按鍵將允許您選擇其他語言來安裝在您的工作站上, 因此, 安裝特殊語" "言\n" "檔案給系統文件與應用程式. 例如, 如果西班牙使用者會用您的機器, 在樹狀檢視中\n" "選擇英文當預設語言且在進階部份選擇 \"%s\".\n" "\n" "關於 UTF-8 (unicode) 支援:Unicode 是一個新的字元編碼以涵蓋所有存在的語言。\n" "然而, 在 GNU/Linux 下完全的支援仍然在開發中. 因為那個原因, Mageia " "的\n" " UTF-8 使用將根據使用者的選擇而定:\n" "\n" " * 如果您選擇一個有偏重傳統編碼的語言 (latin1 語言、俄羅斯文、日文、中文、\n" "韓國, 泰國, 希臘, 土耳其, 大多的 iso-8859-2 語言)\n" "\n" " * 其他語言將使用 unicode 為預設;\n" "\n" " * 如果兩個或兩個以上的語言被需要, 且那些語言不用相同的編碼, 則 unicode 將被" "用於整個系統;\n" "\n" " * 最後,unicode 也可以被強制使用於整個系統,藉由使用者的選擇 \"%s\" 選項\n" "來要求之.\n" "\n" "記得您不被限制於選擇一個單一的附加語言. 您可以選擇數個, 或甚至藉由選擇\n" " \"%s\" 方塊安裝他們全部。選擇支援該種語言是指翻譯、字型、拼字檢查等等,\n" "將也會被安裝給那個語言.\n" "為了切換於不同的安裝於您系統上的語言之間,您可以用 \"root\" 執行\n" "\"localedrake\" 程式來改變用於整個系統上的語言。用一般使用者執行程式\n" "將只會改變對於那個特別使用者的語言設定." #: ../help.pm:650 #, c-format msgid "Espanol" msgstr "西班牙語" #: ../help.pm:643 #, c-format msgid "Use Unicode by default" msgstr "" #: ../help.pm:646 #, c-format msgid "" "Usually, DrakX has no problems detecting the number of buttons on your\n" "mouse. If it does, it assumes you have a two-button mouse and will\n" "configure it for third-button emulation. The third-button mouse button of a\n" "two-button mouse can be obtained by simultaneously clicking the left and\n" "right mouse buttons. DrakX will automatically know whether your mouse uses\n" "a PS/2, serial or USB interface.\n" "\n" "If you have a 3-button mouse without a wheel, you can choose a \"%s\"\n" "mouse. DrakX will then configure your mouse so that you can simulate the\n" "wheel with it: to do so, press the middle button and move your mouse\n" "pointer up and down.\n" "\n" "If for some reason you wish to specify a different type of mouse, select it\n" "from the list provided.\n" "\n" "You can select the \"%s\" entry to chose a ``generic'' mouse type which\n" "will work with nearly all mice.\n" "\n" "If you choose a mouse other than the default one, a test screen will be\n" "displayed. Use the buttons and wheel to verify that the settings are\n" "correct and that the mouse is working correctly. If the mouse is not\n" "working well, press the space bar or [Return] key to cancel the test and\n" "you will be returned to the mouse list.\n" "\n" "Occasionally wheel mice are not detected automatically, so you will need to\n" "select your mouse from a list. Be sure to select the one corresponding to\n" "the port that your mouse is attached to. After selecting a mouse and\n" "pressing the \"%s\" button, a mouse image will be displayed on-screen.\n" "Scroll the mouse wheel to ensure that it is activating correctly. As you\n" "scroll your mouse wheel, you will see the on-screen scroll wheel moving.\n" "Test the buttons and check that the mouse pointer moves on-screen as you\n" "move your mouse about." msgstr "" "通常 DrakX 沒有偵測滑鼠按鍵數量的問題. 如果有的話, 它假設您有兩鍵的滑鼠\n" "且將設定它模擬三鍵. 第三鍵按鍵於兩鍵滑鼠可以由同時按下左鍵與右鍵來模擬.\n" "DrakX 將會自動知道您的滑鼠是否使用 PS/2, 序列埠 或 USB 介面.\n" "\n" " 如果您有一個無滾輪的三鍵滑鼠, 您可以選擇 \"%s\" 滑鼠. DrakX 將會設定您的\n" "滑鼠以至於您可以用它模擬滾輪: 為了要使用它, 按下中間鍵且上下移動您的滑鼠指" "標.\n" "\n" "如果由於某些原因您想指定一個不同的滑鼠類型, 從提供的清單中選它.\n" "\n" "您可以選擇 \"%s\" 項目來選擇一個 ``generic (一般)'' 滑鼠型態, 適用於幾乎全" "部\n" "的滑鼠.\n" "\n" "如果您選擇一個不同於預設值的滑鼠,將會顯示一個測試畫面。使用按鍵與滾輪來\n" "確認設定值是正確的且滑鼠正確工作。如果滑鼠不能工作,請按下空白鍵或 [Return] " "鍵\n" "以取消測試且您將回到滑鼠清單.\n" "\n" "某些情況下, 滾輪滑鼠不能被自動偵測, 所以您將需要從清單中選擇您的滑鼠.\n" "確定選擇一個對應於您的滑鼠連接埠的項目。選擇一個滑鼠且按下 \"%s\" 鍵後,\n" "一個滑鼠影像將顯示在螢幕上.\n" "請捲動滑鼠滾輪以確定它正確被啟動。當您滾動滾輪,您將看見螢幕上的滾輪移動。\n" "測試按鍵並檢查當您移動您的滑鼠時游標是否在螢幕上移動。" #: ../help.pm:684 #, c-format msgid "with Wheel emulation" msgstr "滾輪模擬" #: ../help.pm:684 #, c-format msgid "Universal | Any PS/2 & USB mice" msgstr "通用 | 任何 PS/2 & USB 滑鼠" #: ../help.pm:687 #, c-format msgid "" "Please select the correct port. For example, the \"COM1\" port under\n" "Windows is named \"ttyS0\" under GNU/Linux." msgstr "" "請選擇正確的連接埠名稱. 比方, Windows 所稱呼的 \"COM1\"\n" "在 GNU/Linux 環境是稱呼為 \"ttyS0\"." #: ../help.pm:684 #, c-format msgid "" "A boot loader is a little program which is started by the computer at boot\n" "time. It's responsible for starting up the whole system. Normally, the boot\n" "loader installation is totally automated. DrakX will analyze the disk boot\n" "sector and act according to what it finds there:\n" "\n" " * if a Windows boot sector is found, it will replace it with a GRUB/LILO\n" "boot sector. This way you'll be able to load either GNU/Linux or any other\n" "OS installed on your machine.\n" "\n" " * if a GRUB or LILO boot sector is found, it'll replace it with a new one.\n" "\n" "If DrakX can not determine where to place the boot sector, it'll ask you\n" "where it should place it. Generally, the \"%s\" is the safest place.\n" "Choosing \"%s\" will not install any boot loader. Use this option only if " "you\n" "know what you're doing." msgstr "" "開機載入器是在電腦開機時啟動的程式。它負責啟動整個系統。正常的話,開機載入\n" "程式的安裝是完全自動化的。DrakX 會分析硬碟的開機扇區並根據它所找到的行動:\n" "\n" " * 如果找到 Windows 開機扇區的話,它會將其取代為 GRUB/LILO 開機扇區。這樣\n" "您就能載入 GNU/Linux 或任何其他安裝在您的機器上的作業系統。\n" "\n" " * 如果找到 GRUB 或 LILO 開機扇區,它會用一個新的將其取代。\n" "\n" "如果 DrakX 無法決定該將開機扇區放在哪哩,它會詢問您要將其放置於何處。一般來\n" "說,\"%s\" 是最安全的地方。選擇 \"%s\" 將不會安裝任何開機載入程式。只有在\n" "您很清楚您在做什麼時才選擇這個選項。" #: ../help.pm:745 #, fuzzy, c-format msgid "" "Now, it's time to select a printing system for your computer. Other\n" "operating systems may offer you one, but Mageia offers two. Each of\n" "the printing systems is best suited to particular types of configuration.\n" "\n" " * \"%s\" -- which is an acronym for ``print, do not queue'', is the choice\n" "if you have a direct connection to your printer, you want to be able to\n" "panic out of printer jams, and you do not have networked printers. (\"%s\"\n" "will handle only very simple network cases and is somewhat slow when used\n" "within networks.) It's recommended that you use \"pdq\" if this is your\n" "first experience with GNU/Linux.\n" "\n" " * \"%s\" stands for `` Common Unix Printing System'' and is an excellent\n" "choice for printing to your local printer or to one halfway around the\n" "planet. It's simple to configure and can act as a server or a client for\n" "the ancient \"lpd\" printing system, so it's compatible with older\n" "operating systems which may still need print services. While quite\n" "powerful, the basic setup is almost as easy as \"pdq\". If you need to\n" "emulate a \"lpd\" server, make sure you turn on the \"cups-lpd\" daemon.\n" "\"%s\" includes graphical front-ends for printing or choosing printer\n" "options and for managing the printer.\n" "\n" "If you make a choice now, and later find that you do not like your printing\n" "system you may change it by running PrinterDrake from the Mageia\n" "Control Center and clicking on the \"%s\" button." msgstr "" "現在要選擇您的電腦要使用的列印系統. 其他作業系統或許只有提供您一種選擇,\n" "但是 Mageia 這邊提供了兩種選擇. 每一種列印系統是最適合於特別設定型" "態.\n" "\n" " * \"%s\" - 是 ``print, do not queue (列印, 不排隊)'' 之縮寫字, 是當您有一" "個\n" "直接連線的印表機, 您不想因為卡紙而驚慌, 且您沒有網路印表機. (\"%s\"\n" "只將會處理非常簡單的網路條件且當用於網路時有些慢) 如果這是您第一次 GNU/" "Linux\n" "經驗, 建議您使用\"pdq\".\n" "\n" " * \"%s\" 是 ``Common Unix Printing System (通用 Unix 列印系統)'', 這是一套\n" "對於直接列印到本地端印表機上, 或者是到地球另一端都相當出色的選擇. 它的設定\n" "是相當簡單且可以當成古老的 lpd 列印系統的伺服器端或者是用戶端使用, 所以它是\n" "相容於需要列印服務比較舊的作業系統。相當強大,基本設定幾乎跟 \"pdq\" 一樣\n" "簡單. 如果您希望能夠模擬 \"lpd\" 伺服器, 確定您開啟 \"cups-lpd\" daemon.\n" "\"%s\" 提供了圖形的介面前端給列印, 選擇列印的選項, 管理印表機.\n" "\n" "如果您現在做出決定, 且您之後發現不喜歡您的列印系統, 您可以藉由從\n" "Mageia 控制中心執行 PrinterDrake 點選 \"%s\" 按鍵改變它." #: ../help.pm:768 #, c-format msgid "pdq" msgstr "pdq" #: ../help.pm:724 #, c-format msgid "CUPS" msgstr "" #: ../help.pm:724 #, c-format msgid "Expert" msgstr "專家" #: ../help.pm:771 #, c-format msgid "" "DrakX will first detect any IDE devices present in your computer. It will\n" "also scan for one or more PCI SCSI cards on your system. If a SCSI card is\n" "found, DrakX will automatically install the appropriate driver.\n" "\n" "Because hardware detection is not foolproof, DrakX may fail in detecting\n" "your hard disk drives. If so, you'll have to specify your hardware by hand.\n" "\n" "If you had to manually specify your PCI SCSI adapter, DrakX will ask if you\n" "want to configure options for it. You should allow DrakX to probe the\n" "hardware for the card-specific options which are needed to initialize the\n" "adapter. Most of the time, DrakX will get through this step without any\n" "issues.\n" "\n" "If DrakX is not able to probe for the options to automatically determine\n" "which parameters need to be passed to the hardware, you'll need to manually\n" "configure the driver." msgstr "" "DrakX 將要偵測您電腦上的 IDE 裝置. 它也會順便掃描您系統上的 PCI\n" "SCSI 介面卡. 當偵測到 SCSI 卡時, DrakX 將會自動安裝適當的驅動程式\n" "\n" "因為也許無法完全的偵測出您的系統是否還有更多的硬體裝置, 所以 DrakX或許會失敗" "偵測您的硬碟. 若是這樣, 您必須手動指定您的硬體.\n" "\n" "如果您必須手動方式指定您的 PCI SCSI 適配器時, DrakX 會詢問您是否要對這個\n" "驅動程式設定選項參數. 您應該要允許 DrakX 能夠先自動偵測硬體卡特別的選項參數\n" "以需要初始化適配器. 通常, DrakX 將會沒有問題通過這個步驟.\n" "\n" "若是 DrakX 無法偵測選項以自動決定那個參數需要被送到硬體, 您必須手動設定\n" "驅動程式." #: ../help.pm:789 #, c-format msgid "" "\"%s\": if a sound card is detected on your system, it'll be displayed\n" "here. If you notice the sound card is not the one actually present on your\n" "system, you can click on the button and choose a different driver." msgstr "" "\"%s\": 如果您的系統上有偵測到音效卡,它將會顯示在這裡。如果您發現這並不是\n" "目前您的系統使用的音效卡,您可以按下按鈕並選擇另一個驅動程式。" #: ../help.pm:794 #, c-format msgid "" "As a review, DrakX will present a summary of information it has gathered\n" "about your system. Depending on the hardware installed on your machine, you\n" "may have some or all of the following entries. Each entry is made up of the\n" "hardware item to be configured, followed by a quick summary of the current\n" "configuration. Click on the corresponding \"%s\" button to make the change.\n" "\n" " * \"%s\": check the current keyboard map configuration and change it if\n" "necessary.\n" "\n" " * \"%s\": check the current country selection. If you're not in this\n" "country, click on the \"%s\" button and choose another. If your country\n" "is not in the list shown, click on the \"%s\" button to get the complete\n" "country list.\n" "\n" " * \"%s\": by default, DrakX deduces your time zone based on the country\n" "you have chosen. You can click on the \"%s\" button here if this is not\n" "correct.\n" "\n" " * \"%s\": verify the current mouse configuration and click on the button\n" "to change it if necessary.\n" "\n" " * \"%s\": if a sound card is detected on your system, it'll be displayed\n" "here. If you notice the sound card is not the one actually present on your\n" "system, you can click on the button and choose a different driver.\n" "\n" " * \"%s\": if you have a TV card, this is where information about its\n" "configuration will be displayed. If you have a TV card and it is not\n" "detected, click on \"%s\" to try to configure it manually.\n" "\n" " * \"%s\": you can click on \"%s\" to change the parameters associated with\n" "the card if you feel the configuration is wrong.\n" "\n" " * \"%s\": by default, DrakX configures your graphical interface in\n" "\"800x600\" or \"1024x768\" resolution. If that does not suit you, click on\n" "\"%s\" to reconfigure your graphical interface.\n" "\n" " * \"%s\": if you wish to configure your Internet or local network access,\n" "you can do so now. Refer to the printed documentation or use the\n" "Mageia Control Center after the installation has finished to benefit\n" "from full in-line help.\n" "\n" " * \"%s\": allows to configure HTTP and FTP proxy addresses if the machine\n" "you're installing on is to be located behind a proxy server.\n" "\n" " * \"%s\": this entry allows you to redefine the security level as set in a\n" "previous step ().\n" "\n" " * \"%s\": if you plan to connect your machine to the Internet, it's a good\n" "idea to protect yourself from intrusions by setting up a firewall. Consult\n" "the corresponding section of the ``Starter Guide'' for details about\n" "firewall settings.\n" "\n" " * \"%s\": if you wish to change your bootloader configuration, click this\n" "button. This should be reserved to advanced users. Refer to the printed\n" "documentation or the in-line help about bootloader configuration in the\n" "Mageia Control Center.\n" "\n" " * \"%s\": through this entry you can fine tune which services will be run\n" "on your machine. If you plan to use this machine as a server it's a good\n" "idea to review this setup." msgstr "" #: ../help.pm:809 #, fuzzy, c-format msgid "TV card" msgstr "ISDN 卡" #: ../help.pm:809 #, c-format msgid "ISDN card" msgstr "ISDN 卡" #: ../help.pm:858 #, c-format msgid "Graphical Interface" msgstr "圖形介面" #: ../help.pm:861 #, fuzzy, c-format msgid "" "Choose the hard disk drive you want to erase in order to install your new\n" "Mageia partition. Be careful, all data on this drive will be lost\n" "and will not be recoverable!" msgstr "" "選擇您想要抹除的硬碟來安裝新的 Mageia 分割. 小心,\n" "磁碟上全部資料將遺失且將無法挽回!" #: ../help.pm:866 #, c-format msgid "" "Click on \"%s\" if you want to delete all data and partitions present on\n" "this hard disk drive. Be careful, after clicking on \"%s\", you will not be able\n" "to recover any data and partitions present on this hard disk drive, including\n" "any Windows data.\n" "\n" "Click on \"%s\" to quit this operation without losing data and partitions\n" "present on this hard disk drive." msgstr "" "您如果想要刪除在這個硬碟上的全部資料與分割, 點選 \"%s\".\n" "小心, 點選 \"%s\" 之後, 您將無法挽回任何在這個硬碟上的資料與分割, 包含\n" "Windows 資料.\n" "\n" "點選 \"%s\" 以不遺失在這個硬碟上的資料與分割放棄這個動作." #: ../help.pm:872 #, c-format msgid "Next ->" msgstr "下一步 ->" #: ../help.pm:872 #, c-format msgid "<- Previous" msgstr "<- 上一步" #~ msgid "" #~ "This is the most crucial decision point for the security of your GNU/" #~ "Linux\n" #~ "system: you must enter the \"root\" password. \"Root\" is the system\n" #~ "administrator and is the only user authorized to make updates, add " #~ "users,\n" #~ "change the overall system configuration, and so on. In short, \"root\" " #~ "can\n" #~ "do everything! That's why you must choose a password which is difficult " #~ "to\n" #~ "guess: DrakX will tell you if the password you chose is too simple. As " #~ "you\n" #~ "can see, you're not forced to enter a password, but we strongly advise\n" #~ "against this. GNU/Linux is just as prone to operator error as any other\n" #~ "operating system. Since \"root\" can overcome all limitations and\n" #~ "unintentionally erase all data on partitions by carelessly accessing the\n" #~ "partitions themselves, it is important that it be difficult to become\n" #~ "\"root\".\n" #~ "\n" #~ "The password should be a mixture of alphanumeric characters and at least " #~ "8\n" #~ "characters long. Never write down the \"root\" password -- it makes it " #~ "far\n" #~ "too easy to compromise your system.\n" #~ "\n" #~ "One caveat: do not make the password too long or too complicated because " #~ "you\n" #~ "must be able to remember it!\n" #~ "\n" #~ "The password will not be displayed on screen as you type it. To reduce " #~ "the\n" #~ "chance of a blind typing error you'll need to enter the password twice. " #~ "If\n" #~ "you do happen to make the same typing error twice, you'll have to use " #~ "this\n" #~ "``incorrect'' password the first time you'll try to connect as \"root\".\n" #~ "\n" #~ "If you want an authentication server to control access to your computer,\n" #~ "click on the \"%s\" button.\n" #~ "\n" #~ "If your network uses either LDAP, NIS, or PDC Windows Domain " #~ "authentication\n" #~ "services, select the appropriate one for \"%s\". If you do not know " #~ "which\n" #~ "one to use, you should ask your network administrator.\n" #~ "\n" #~ "If you happen to have problems with remembering passwords, or if your\n" #~ "computer will never be connected to the Internet and you absolutely " #~ "trust\n" #~ "everybody who uses your computer, you can choose to have \"%s\"." #~ msgstr "" #~ "這是最重要的 GNU/Linux 系統安全性決定點: 你一定要輸入 \"root\" 密碼.\n" #~ "\"root\" 是系統管理員且是被授權做更新, 增加使用者, 變更整個系統設定等等\n" #~ "的人。簡而言之,\"root\" 能做任何事!那就是為什麼您必須要選擇一個很難猜" #~ "中\n" #~ "的密碼. DrakX 將告訴您您的密碼是否太簡單. 就像您所見的一樣, 您並不被強制輸" #~ "入\n" #~ "一個密碼, 但是我們強烈建議如此. GNU/Linux 就像其他任何作業系統一般易於受\n" #~ "操作手誤影響。因為 \"root\" 可以克服全部限制且藉由不小心存取分割,可以\n" #~ "不經意地抹除所有分割上的資料,因此讓成為 \"root\" 身分很困難是極重要的。\n" #~ "\n" #~ "密碼應該是一組字母與數字字元且至少 8 個字元長. 絕不寫下 \"root\" 密碼 - \n" #~ "它使得太容易掌控您的系統(安全性)。\n" #~ "\n" #~ "一個警告: 別把密碼設定太長或太複雜, 因為您必須能記住它!\n" #~ "\n" #~ "您在輸入密碼時, 螢幕上不會顯示出你實際敲入的內容. 另外就是您需要輸入兩次\n" #~ "以便於確定所輸入的密碼沒有打錯. 如果您不小心做出兩次同樣的輸入錯誤,\n" #~ "您將必須使用這個 ``錯誤'' 密碼於第一次您試著以 \"root\" 連入.\n" #~ "\n" #~ "如果您想要一個認證伺服器來控制存取您的電腦, 點選 \"%s\" 按鍵.\n" #~ "\n" #~ "若是你知道您所在網路有使用 LDAP, NIS, 或 PDC Windows 網域認證服務,\n" #~ "選適合的一個給 \"%s\". 如果您不知道選那一個, 向網路管理者詢問相關資訊.\n" #~ "\n" #~ "如果您遇到記住密碼的問題, 或如果您的電腦將永遠不連上網際網路且您絕對相信\n" #~ "所有使用您電腦的人,您可以選擇 \"%s\"." #~ msgid "authentication" #~ msgstr "認證" => [ 'Frisian', 'Frysk', 'fy_NL', '1 ', 'utf_lat1' ], 'ga' => [ 'Gaelic (Irish)', 'Gaeilge', 'ga_IE', '1 ', 'utf_lat1', 'ga:en_IE:en_GB:en' ], #'gd' => [ 'Gaelic (Scottish)', 'Gaidhlig', 'gd_GB', '1 ', 'utf_lat8', 'gd:en_GB:en' ], 'gl' => [ 'Galician', 'Galego', 'gl_ES', '1 ', 'iso-8859-15', 'gl:es_ES:es:pt:pt_BR' ], #- gn_PY not yet done, using es_PY locale instead 'gn' => [ 'Guarani', 'Avane-e', 'es_PY', ' 5', 'utf_lat1', 'gn:es_PY:es' ], 'gu' => [ 'Gujarati', 'ZZ Gujarati', 'gu_IN', ' 2 ', 'unicode' ], #'gv' => [ 'Gaelic (Manx)', 'Gaelg', 'gv_GB', '1 ', 'utf_lat8', 'gv:en_GB:en' ], 'ha' => [ 'Hausa', 'Hausa', 'ha_NG', ' 3 ', 'utf_yo', 'ha:en_NG' ], 'he' => [ 'Hebrew', 'AA Ivrit', 'he_IL', ' 2 ', 'utf_he' ], 'hi' => [ 'Hindi', 'ZZ Hindi', 'hi_IN', ' 2 ', 'utf_deva' ], 'hr' => [ 'Croatian', 'Hrvatski', 'hr_HR', '1 ', 'iso-8859-2' ], 'hu' => [ 'Hungarian', 'Magyar', 'hu_HU', '1 ', 'iso-8859-2' ], 'hy' => [ 'Armenian', 'ZZ Armenian', 'hy_AM', ' 2 ', 'utf_armn' ], # locale not done yet #'ia' => [ 'Interlingua', 'Interlingua', 'ia_XX', '1 5', 'utf_lat1' ], 'id' => [ 'Indonesian', 'Bahasa Indonesia', 'id_ID', ' 2 ', 'utf_lat1' ], 'ig' => [ 'Igbo', 'Igbo', 'ig_NG', ' 3 ', 'utf_yo', 'ig:en_NG' ], 'is' => [ 'Icelandic', 'Islenska', 'is_IS', '1 ', 'iso-8859-15' ], 'it' => [ 'Italian', 'Italiano', 'it_IT', '1 ', 'iso-8859-15' ], 'iu' => [ 'Inuktitut', 'ZZ Inuktitut', 'iu_CA', ' 5', 'utf_iu' ], 'ja' => [ 'Japanese', 'ZZ Nihongo', 'ja_JP', ' 2 ', 'jisx0208' ], 'ka' => [ 'Georgian', 'ZZ Georgian', 'ka_GE', ' 2 ', 'utf_geor' ], 'kk' => [ 'Kazakh', 'Kazak', 'kk_KZ', ' 2 ', 'utf_cyr2' ], 'kl' => [ 'Greenlandic (inuit)', 'Kalaallisut', 'kl_GL', ' 5', 'utf_lat1' ], 'km' => [ 'Khmer', 'ZZ Khmer', 'km_KH', ' 2 ', 'utf_khmr' ], 'kn' => [ 'Kannada', 'ZZ Kannada', 'kn_IN', ' 2 ', 'utf_knda' ], 'ko' => [ 'Korean', 'ZZ Korea', 'ko_KR', ' 2 ', 'ksc5601' ], 'ku' => [ 'Kurdish', 'Kurdi', 'ku_TR', ' 2 ', 'utf_lat5' ], #-'kw' => [ 'Cornish', 'Kernewek', 'kw_GB', '1 ', 'utf_lat8', 'kw:en_GB:en' ], 'ky' => [ 'Kyrgyz', 'Kyrgyz', 'ky_KG', ' 2 ', 'utf_cyr2' ], #- lb_LU not yet done, using de_LU locale instead 'lb' => [ 'Luxembourgish', 'Letzebuergesch', 'de_LU', '1 ', 'utf_lat1', 'lb:de_LU' ], 'li' => [ 'Limbourgish', 'Limburgs', 'li_NL', '1 ', 'utf_lat1' ], 'lo' => [ 'Laotian', 'Laotian', 'lo_LA', ' 2 ', 'utf_laoo' ], 'lt' => [ 'Lithuanian', 'Lietuviskai', 'lt_LT', '1 ', 'iso-8859-13' ], #- ltg_LV locale not done yet, using lv_LV for now #- "ltg" is not a standard lang code, ISO-639 code was refused; #- LTG_LV should be used instead (uppercase is for non-standard #- langcodes, as defined by locale naming standard 'ltg' => [ 'Latgalian', 'Latgalisu', 'lv_LV', '1 ', 'utf_lat7', 'ltg:LTG:lv' ], #'lu' => [ 'Luganda', 'Luganda', 'lg_UG', ' 3 ', 'utf_lat1' ], 'lv' => [ 'Latvian', 'Latviesu', 'lv_LV', '1 ', 'iso-8859-13' ], 'mi' => [ 'Maori', 'Maori', 'mi_NZ', ' 4 ', 'utf_lat7' ], 'mk' => [ 'Macedonian', 'Makedonski', 'mk_MK', '1 ', 'utf_cyr1' ], 'ml' => [ 'Malayalam', 'ZZ Malayalam', 'ml_IN', ' 2 ', 'utf_mlym' ], 'mn' => [ 'Mongolian', 'Mongol', 'mn_MN', ' 2 ', 'utf_cyr2' ], 'mr' => [ 'Marathi', 'ZZ Marathi', 'mr_IN', ' 2 ', 'utf_deva' ], 'ms' => [ 'Malay', 'Bahasa Melayu', 'ms_MY', ' 2 ', 'utf_lat1' ], 'mt' => [ 'Maltese', 'Maltin', 'mt_MT', '1 3 ', 'unicode' ], #- "my_MM" not yet done, using "en_US" for now 'my' => [ 'Burmese', 'ZZ Bamaca', 'en_US', ' 2 ', 'utf_mymr', 'my_MM:my' ], 'nb' => [ 'Norwegian Bokmaal', 'Norsk, Bokmal', 'nb_NO', '1 ', 'iso-8859-15', 'nb:no' ], 'nds' => [ 'Low Saxon', 'Platduutsch', 'nds_DE', '1 ', 'utf_lat1', 'nds_DE:nds' ], 'ne' => [ 'Nepali', 'ZZ Nepali', 'ne_NP', ' 2 ', 'utf_deva' ], 'nl' => [ 'Dutch', 'Nederlands', 'nl_NL', '1 ', 'iso-8859-15' ], 'nn' => [ 'Norwegian Nynorsk', 'Norsk, Nynorsk', 'nn_NO', '1 ', 'iso-8859-15', 'nn:no@nynorsk:no_NY:no:nb' ], 'nr' => [ 'Ndebele', 'Ndebele', 'nr_ZA', ' 3 ', 'utf_lat1', 'nr:en_ZA' ], 'nso' => [ 'Northern Sotho', 'Sesotho sa Leboa', 'nso_ZA', ' 3 ', 'utf_lat1', 'st:nso:en_ZA' ], 'oc' => [ 'Occitan', 'Occitan', 'oc_FR', '1 ', 'utf_lat1', 'oc:fr_FR:fr' ], 'pa_IN' => [ 'Punjabi (gurmukhi)', 'ZZ Punjabi', 'pa_IN', ' 2 ', 'utf_guru' ], 'pl' => [ 'Polish', 'Polski', 'pl_PL', '1 ', 'iso-8859-2' ], 'pt' => [ 'Portuguese', 'Portugues', 'pt_PT', '1 3 ', 'iso-8859-15', 'pt_PT:pt:pt_BR' ], 'pt_BR' => [ 'Portuguese Brazil', 'Portugues do Brasil', 'pt_BR', ' 5', 'iso-8859-1', 'pt_BR:pt_PT:pt' ], #- qu_PE not yet done, using es_PE locale instead 'qu' => [ 'Quichua', 'Runa Simi', 'es_PE', ' 5', 'utf_lat1', 'qu:es_PE:es' ], 'ro' => [ 'Romanian', 'Romana', 'ro_RO', '1 ', 'iso-8859-2' ], 'ru' => [ 'Russian', 'Russkij', 'ru_RU', '12 ', 'koi8-u' ], 'rw' => [ 'Kinyarwanda', 'Kinyarwanda', 'rw_RW', ' 3 ', 'utf_lat1', 'rw' ], 'sc' => [ 'Sardinian', 'Sardu', 'sc_IT', '1 ', 'utf_lat1', 'sc:it_IT:it' ], 'se' => [ 'Saami', 'Samegiella', 'se_NO', '1 ', 'unicode' ], 'sk' => [ 'Slovak', 'Slovencina', 'sk_SK', '1 ', 'iso-8859-2' ], 'sl' => [ 'Slovenian', 'Slovenscina', 'sl_SI', '1 ', 'iso-8859-2' ], 'so' => [ 'Somali', 'Soomaali', 'so_SO', ' 3 ', 'utf_lat1' ], 'sq' => [ 'Albanian', 'Shqip', 'sq_AL', '1 ', 'iso-8859-1' ], 'sr' => [ 'Serbian Cyrillic', 'Srpska', 'sr_CS', '1 ', 'utf_cyr1', 'sp:sr' ], #- "sh" comes first, because otherwise, due to the way glibc does language #- fallback, if "sr@Latn" is not there but a "sr" (whichs uses cyrillic) #- is there, "sh" will never be used. 'sr@Latn' => [ 'Serbian Latin', 'Srpska', 'sr_CS', '1 ', 'unicode', 'sh:sr@Latn' ], 'ss' => [ 'Swati', 'SiSwati', 'ss_ZA', ' 3 ', 'utf_lat1', 'ss:en_ZA' ], 'st' => [ 'Sotho', 'Sesotho', 'st_ZA', ' 3 ', 'utf_lat1', 'st:nso:en_ZA' ], 'sv' => [ 'Swedish', 'Svenska', 'sv_SE', '1 ', 'iso-8859-15' ], 'ta' => [ 'Tamil', 'ZZ Tamil', 'ta_IN', ' 2 ', 'utf_taml' ], 'te' => [ 'Telugu', 'ZZ Telugu', 'te_IN', ' 2 ', 'unicode' ], 'tg' => [ 'Tajik', 'Tojiki', 'tg_TJ', ' 2 ', 'utf_cyr2' ], 'th' => [ 'Thai', 'ZZ Thai', 'th_TH', ' 2 ', 'tis620' ], 'tk' => [ 'Turkmen', 'Turkmence', 'tk_TM', ' 2 ', 'utf_az' ], 'tn' => [ 'Tswana', 'Setswana', 'tn_ZA', ' 3 ', 'utf_lat1', 'tn:en_ZA' ], 'tr' => [ 'Turkish', 'Turkce', 'tr_TR', '12 ', 'iso-8859-9' ], 'ts' => [ 'Tsonga', 'Xitsonga', 'ts_ZA', ' 3 ', 'utf_lat1', 'ts:en_ZA' ], 'tt' => [ 'Tatar', 'Tatarca', 'tt_RU', ' 2 ', 'utf_lat5' ], 'ug' => [ 'Uyghur', 'AA Uyghur', 'ug_CN', ' 2 ', 'utf_ar', 'ug' ], 'uk' => [ 'Ukrainian', 'Ukrayinska', 'uk_UA', '1 ', 'koi8-u' ], 'ur' => [ 'Urdu', 'AA Urdu', 'ur_PK', ' 2 ', 'utf_ar' ], 'uz' => [ 'Uzbek', 'Ozbekcha', 'uz_UZ', ' 2 ', 'utf_cyr2', 'uz' ], 'uz@cyrillic' => [ 'Uzbek (cyrillic)', 'Ozbekcha', 'uz_UZ@cyrillic', ' 2 ', 'utf_cyr2', 'uz@cyrillic' ], 've' => [ 'Venda', 'Tshivenda', 've_ZA', ' 3 ', 'utf_lat1', 've:ven:en_ZA' ], 'vi' => [ 'Vietnamese', 'Tieng Viet', 'vi_VN', ' 2 ', 'utf_vi' ], 'wa' => [ 'Walon', 'Walon', 'wa_BE', '1 ', 'utf_lat1', 'wa:fr_BE:fr' ], #- locale "wen_DE" not done yet, using "de_DE" instead #- wen disabled until we have a perl-install/pixmaps/langs/lang-wen.png for it #'wen' => [ 'Sorbian', 'Sorbian', 'de_DE', '1 ', 'utf_lat1', 'wen' ], 'xh' => [ 'Xhosa', 'Xhosa', 'xh_ZA', ' 3 ', 'utf_lat1', 'xh:en_ZA' ], 'yi' => [ 'Yiddish', 'AA Yidish', 'yi_US', '1 ', 'utf_he' ], 'yo' => [ 'Yoruba', 'Yoruba', 'yo_NG', ' 3 ', 'utf_yo', 'yo:en_NG' ], 'zh_CN' => [ 'Chinese Simplified', 'ZZ ZhongWen', 'zh_CN', ' 2 ', 'gb2312', 'zh_CN.GBK:zh_CN.GB2312:zh_CN:zh' ], 'zh_TW' => [ 'Chinese Traditional', 'ZZ ZhongWen', 'zh_TW', ' 2 ', 'Big5', 'zh_TW.Big5:zh_TW:zh_HK:zh' ], 'zu' => [ 'Zulu', 'Zulu', 'zu_ZA', ' 3 ', 'utf_lat1', 'xh:en_ZA' ], ); sub l2name { exists $langs{$_[0]} && $langs{$_[0]}[0] } sub l2transliterated { exists $langs{$_[0]} && $langs{$_[0]}[1] } sub l2locale { exists $langs{$_[0]} && $langs{$_[0]}[2] } sub l2location { my ($lang) = @_; my %geo = (1 => 'Europe', 2 => 'Asia', 3 => 'Africa', 4 => 'Oceania/Pacific', 5 => 'America'); map { $geo{$_} } grep { $langs{$lang} && $langs{$lang}[3] =~ $_ } 1..5; } sub l2charset { exists $langs{$_[0]} && $langs{$_[0]}[4] } sub l2language { exists $langs{$_[0]} && $langs{$_[0]}[5] } sub list_langs { my (%options) = @_; my @l = keys %langs; $options{exclude_non_installed} ? grep { -e "/usr/share/locale/" . l2locale($_) . "/LC_CTYPE" } @l : @l; } sub text_direction_rtl() { #-PO: the string "default:LTR" can be translated *ONLY* as "default:LTR" #-PO: or as "default:RTL", depending if your language is written from #-PO: left to right, or from right to left; any other string is wrong. N("default:LTR") eq "default:RTL"; } #- key: country name (that should be YY in xx_YY locale) #- [0]: country name in natural language #- [1]: default locale for that country #- [2]: geographic groups that this country belongs to (for displaying #- in the menu grouped in smaller lists), 1=Europe, 2=Asia, 3=Africa, #- 4=Oceania&Pacific, 5=America (if you wonder, it's the order #- used in the olympic flag) #- #- Note: for countries for which a glibc locale do not exist (yet) I tried to #- put a locale that makes sense; and a '#' at the end of the line to show #- the locale is not the "correct" one. 'en_US' is used when no good choice #- is available. my %countries = ( 'AD' => [ N_("Andorra"), 'ca_AD', '1' ], 'AE' => [ N_("United Arab Emirates"), 'ar_AE', '2' ], 'AF' => [ N_("Afghanistan"), 'en_US', '2' ], # 'AG' => [ N_("Antigua and Barbuda"), 'en_US', '5' ], # 'AI' => [ N_("Anguilla"), 'en_US', '5' ], # 'AL' => [ N_("Albania"), 'sq_AL', '1' ], 'AM' => [ N_("Armenia"), 'hy_AM', '2' ], 'AN' => [ N_("Netherlands Antilles"), 'en_US', '5' ], # 'AO' => [ N_("Angola"), 'pt_PT', '3' ], # 'AQ' => [ N_("Antarctica"), 'en_US', '4' ], # 'AR' => [ N_("Argentina"), 'es_AR', '5' ], 'AS' => [ N_("American Samoa"), 'en_US', '4' ], # 'AT' => [ N_("Austria"), 'de_AT', '1' ], 'AU' => [ N_("Australia"), 'en_AU', '4' ], 'AW' => [ N_("Aruba"), 'en_US', '5' ], # 'AZ' => [ N_("Azerbaijan"), 'az_AZ', '1' ], 'BA' => [ N_("Bosnia and Herzegovina"), 'bs_BA', '1' ], 'BB' => [ N_("Barbados"), 'en_US', '5' ], # 'BD' => [ N_("Bangladesh"), 'bn_BD', '2' ], 'BE' => [ N_("Belgium"), 'fr_BE', '1' ], 'BF' => [ N_("Burkina Faso"), 'en_US', '3' ], # 'BG' => [ N_("Bulgaria"), 'bg_BG', '1' ], 'BH' => [ N_("Bahrain"), 'ar_BH', '2' ], 'BI' => [ N_("Burundi"), 'en_US', '3' ], # 'BJ' => [ N_("Benin"), 'fr_FR', '3' ], # 'BM' => [ N_("Bermuda"), 'en_US', '5' ], # 'BN' => [ N_("Brunei Darussalam"), 'ar_EG', '2' ], # 'BO' => [ N_("Bolivia"), 'es_BO', '5' ], 'BR' => [ N_("Brazil"), 'pt_BR', '5' ], 'BS' => [ N_("Bahamas"), 'en_US', '5' ], # 'BT' => [ N_("Bhutan"), 'dz_BT', '2' ], 'BV' => [ N_("Bouvet Island"), 'en_US', '3' ], # 'BW' => [ N_("Botswana"), 'en_BW', '3' ], 'BY' => [ N_("Belarus"), 'be_BY', '1' ], 'BZ' => [ N_("Belize"), 'en_US', '5' ], # 'CA' => [ N_("Canada"), 'en_CA', '5' ], 'CC' => [ N_("Cocos (Keeling) Islands"), 'en_US', '4' ], # 'CD' => [ N_("Congo (Kinshasa)"), 'fr_FR', '3' ], # 'CF' => [ N_("Central African Republic"), 'fr_FR', '3' ], # 'CG' => [ N_("Congo (Brazzaville)"), 'fr_FR', '3' ], # 'CH' => [ N_("Switzerland"), 'de_CH', '1' ], 'CI' => [ N_("Cote d'Ivoire"), 'fr_FR', '3' ], # 'CK' => [ N_("Cook Islands"), 'en_US', '4' ], # 'CL' => [ N_("Chile"), 'es_CL', '5' ], 'CM' => [ N_("Cameroon"), 'fr_FR', '3' ], # 'CN' => [ N_("China"), 'zh_CN', '2' ], 'CO' => [ N_("Colombia"), 'es_CO', '5' ], 'CR' => [ N_("Costa Rica"), 'es_CR', '5' ], 'CS' => [ N_("Serbia & Montenegro"), 'sr_CS', '1' ], 'CU' => [ N_("Cuba"), 'es_DO', '5' ], # 'CV' => [ N_("Cape Verde"), 'pt_PT', '3' ], # 'CX' => [ N_("Christmas Island"), 'en_US', '4' ], # 'CY' => [ N_("Cyprus"), 'el_CY', '1' ], 'CZ' => [ N_("Czech Republic"), 'cs_CZ', '2' ], 'DE' => [ N_("Germany"), 'de_DE', '1' ], 'DJ' => [ N_("Djibouti"), 'en_US', '3' ], # 'DK' => [ N_("Denmark"), 'da_DK', '1' ], 'DM' => [ N_("Dominica"), 'en_US', '5' ], # 'DO' => [ N_("Dominican Republic"), 'es_DO', '5' ], 'DZ' => [ N_("Algeria"), 'ar_DZ', '3' ], 'EC' => [ N_("Ecuador"), 'es_EC', '5' ], 'EE' => [ N_("Estonia"), 'et_EE', '1' ], 'EG' => [ N_("Egypt"), 'ar_EG', '3' ], 'EH' => [ N_("Western Sahara"), 'ar_MA', '3' ], # 'ER' => [ N_("Eritrea"), 'ti_ER', '3' ], 'ES' => [ N_("Spain"), 'es_ES', '1' ], 'ET' => [ N_("Ethiopia"), 'am_ET', '3' ], 'FI' => [ N_("Finland"), 'fi_FI', '1' ], 'FJ' => [ N_("Fiji"), 'en_US', '4' ], # 'FK' => [ N_("Falkland Islands (Malvinas)"), 'en_GB', '5' ], # 'FM' => [ N_("Micronesia"), 'en_US', '4' ], # 'FO' => [ N_("Faroe Islands"), 'fo_FO', '1' ], 'FR' => [ N_("France"), 'fr_FR', '1' ], 'GA' => [ N_("Gabon"), 'fr_FR', '3' ], # 'GB' => [ N_("United Kingdom"), 'en_GB', '1' ], 'GD' => [ N_("Grenada"), 'en_US', '5' ], # 'GE' => [ N_("Georgia"), 'ka_GE', '2' ], 'GF' => [ N_("French Guiana"), 'fr_FR', '5' ], # 'GH' => [ N_("Ghana"), 'en_GB', '3' ], # 'GI' => [ N_("Gibraltar"), 'en_GB', '1' ], # 'GL' => [ N_("Greenland"), 'kl_GL', '5' ], 'GM' => [ N_("Gambia"), 'en_US', '3' ], # 'GN' => [ N_("Guinea"), 'en_US', '3' ], # 'GP' => [ N_("Guadeloupe"), 'fr_FR', '5' ], # 'GQ' => [ N_("Equatorial Guinea"), 'en_US', '3' ], # 'GR' => [ N_("Greece"), 'el_GR', '1' ], 'GS' => [ N_("South Georgia and the South Sandwich Islands"), 'en_US', '4' ], # 'GT' => [ N_("Guatemala"), 'es_GT', '5' ], 'GU' => [ N_("Guam"), 'en_US', '4' ], # 'GW' => [ N_("Guinea-Bissau"), 'pt_PT', '3' ], # 'GY' => [ N_("Guyana"), 'en_US', '5' ], # 'HK' => [ N_("Hong Kong SAR (China)"), 'zh_HK', '2' ], 'HM' => [ N_("Heard and McDonald Islands"), 'en_US', '4' ], # 'HN' => [ N_("Honduras"), 'es_HN', '5' ], 'HR' => [ N_("Croatia"), 'hr_HR', '1' ], 'HT' => [ N_("Haiti"), 'fr_FR', '5' ], # 'HU' => [ N_("Hungary"), 'hu_HU', '1' ], 'ID' => [ N_("Indonesia"), 'id_ID', '2' ], 'IE' => [ N_("Ireland"), 'en_IE', '1' ], 'IL' => [ N_("Israel"), 'he_IL', '2' ], 'IN' => [ N_("India"), 'hi_IN', '2' ], 'IO' => [ N_("British Indian Ocean Territory"), 'en_GB', '2' ], # 'IQ' => [ N_("Iraq"), 'ar_IQ', '2' ], 'IR' => [ N_("Iran"), 'fa_IR', '2' ], 'IS' => [ N_("Iceland"), 'is_IS', '1' ], 'IT' => [ N_("Italy"), 'it_IT', '1' ], 'JM' => [ N_("Jamaica"), 'en_US', '5' ], # 'JO' => [ N_("Jordan"), 'ar_JO', '2' ], 'JP' => [ N_("Japan"), 'ja_JP', '2' ], 'KE' => [ N_("Kenya"), 'en_ZW', '3' ], # 'KG' => [ N_("Kyrgyzstan"), 'ky_KG', '2' ], 'KH' => [ N_("Cambodia"), 'km_KH', '2' ], 'KI' => [ N_("Kiribati"), 'en_US', '3' ], # 'KM' => [ N_("Comoros"), 'en_US', '2' ], # 'KN' => [ N_("Saint Kitts and Nevis"), 'en_US', '5' ], # 'KP' => [ N_("Korea (North)"), 'ko_KR', '2' ], # 'KR' => [ N_("Korea"), 'ko_KR', '2' ], 'KW' => [ N_("Kuwait"), 'ar_KW', '2' ], 'KY' => [ N_("Cayman Islands"), 'en_US', '5' ], # 'KZ' => [ N_("Kazakhstan"), 'kk_KZ', '2' ], 'LA' => [ N_("Laos"), 'lo_LA', '2' ], 'LB' => [ N_("Lebanon"), 'ar_LB', '2' ], 'LC' => [ N_("Saint Lucia"), 'en_US', '5' ], # 'LI' => [ N_("Liechtenstein"), 'de_CH', '1' ], # 'LK' => [ N_("Sri Lanka"), 'si_LK', '2' ], 'LR' => [ N_("Liberia"), 'en_US', '3' ], # 'LS' => [ N_("Lesotho"), 'en_BW', '3' ], # 'LT' => [ N_("Lithuania"), 'lt_LT', '1' ], 'LU' => [ N_("Luxembourg"), 'de_LU', '1' ], # lb_LU 'LV' => [ N_("Latvia"), 'lv_LV', '1' ], 'LY' => [ N_("Libya"), 'ar_LY', '3' ], 'MA' => [ N_("Morocco"), 'ar_MA', '3' ], 'MC' => [ N_("Monaco"), 'fr_FR', '1' ], # 'MD' => [ N_("Moldova"), 'ro_RO', '1' ], # 'MG' => [ N_("Madagascar"), 'mg_MG', '3' ], 'MH' => [ N_("Marshall Islands"), 'en_US', '4' ], # 'MK' => [ N_("Macedonia"), 'mk_MK', '1' ], 'ML' => [ N_("Mali"), 'en_US', '3' ], # 'MM' => [ N_("Myanmar"), 'en_US', '2' ], # my_MM 'MN' => [ N_("Mongolia"), 'mn_MN', '2' ], 'MP' => [ N_("Northern Mariana Islands"), 'en_US', '2' ], # 'MQ' => [ N_("Martinique"), 'fr_FR', '5' ], # 'MR' => [ N_("Mauritania"), 'en_US', '3' ], # 'MS' => [ N_("Montserrat"), 'en_US', '5' ], # 'MT' => [ N_("Malta"), 'mt_MT', '1' ], 'MU' => [ N_("Mauritius"), 'en_US', '3' ], # 'MV' => [ N_("Maldives"), 'en_US', '4' ], # 'MW' => [ N_("Malawi"), 'en_US', '3' ], # 'MX' => [ N_("Mexico"), 'es_MX', '5' ], 'MY' => [ N_("Malaysia"), 'ms_MY', '2' ], 'MZ' => [ N_("Mozambique"), 'pt_PT', '3' ], # 'NA' => [ N_("Namibia"), 'en_US', '3' ], # 'NC' => [ N_("New Caledonia"), 'fr_FR', '4' ], # 'NE' => [ N_("Niger"), 'en_US', '3' ], # 'NF' => [ N_("Norfolk Island"), 'en_GB', '4' ], # 'NG' => [ N_("Nigeria"), 'en_NG', '3' ], 'NI' => [ N_("Nicaragua"), 'es_NI', '5' ], 'NL' => [ N_("Netherlands"), 'nl_NL', '1' ], 'NO' => [ N_("Norway"), 'nb_NO', '1' ], 'NP' => [ N_("Nepal"), 'ne_NP', '2' ], 'NR' => [ N_("Nauru"), 'en_US', '4' ], # 'NU' => [ N_("Niue"), 'en_US', '4' ], # 'NZ' => [ N_("New Zealand"), 'en_NZ', '4' ], 'OM' => [ N_("Oman"), 'ar_OM', '2' ], 'PA' => [ N_("Panama"), 'es_PA', '5' ], 'PE' => [ N_("Peru"), 'es_PE', '5' ], 'PF' => [ N_("French Polynesia"), 'fr_FR', '4' ], # 'PG' => [ N_("Papua New Guinea"), 'en_NZ', '4' ], # 'PH' => [ N_("Philippines"), 'fil_PH', '2' ], 'PK' => [ N_("Pakistan"), 'ur_PK', '2' ], 'PL' => [ N_("Poland"), 'pl_PL', '1' ], 'PM' => [ N_("Saint Pierre and Miquelon"), 'fr_CA', '5' ], # 'PN' => [ N_("Pitcairn"), 'en_US', '4' ], # 'PR' => [ N_("Puerto Rico"), 'es_PR', '5' ], 'PS' => [ N_("Palestine"), 'ar_JO', '2' ], # 'PT' => [ N_("Portugal"), 'pt_PT', '1' ], 'PY' => [ N_("Paraguay"), 'es_PY', '5' ], 'PW' => [ N_("Palau"), 'en_US', '2' ], # 'QA' => [ N_("Qatar"), 'ar_QA', '2' ], 'RE' => [ N_("Reunion"), 'fr_FR', '2' ], # 'RO' => [ N_("Romania"), 'ro_RO', '1' ], 'RU' => [ N_("Russia"), 'ru_RU', '1' ], 'RW' => [ N_("Rwanda"), 'rw_RW', '3' ], 'SA' => [ N_("Saudi Arabia"), 'ar_SA', '2' ], 'SB' => [ N_("Solomon Islands"), 'en_US', '4' ], # 'SC' => [ N_("Seychelles"), 'en_US', '4' ], # 'SD' => [ N_("Sudan"), 'ar_SD', '5' ], 'SE' => [ N_("Sweden"), 'sv_SE', '1' ], 'SG' => [ N_("Singapore"), 'en_SG', '2' ], 'SH' => [ N_("Saint Helena"), 'en_GB', '5' ], # 'SI' => [ N_("Slovenia"), 'sl_SI', '1' ], 'SJ' => [ N_("Svalbard and Jan Mayen Islands"), 'en_US', '1' ], # 'SK' => [ N_("Slovakia"), 'sk_SK', '1' ], 'SL' => [ N_("Sierra Leone"), 'en_US', '3' ], # 'SM' => [ N_("San Marino"), 'it_IT', '1' ], # 'SN' => [ N_("Senegal"), 'fr_FR', '3' ], # 'SO' => [ N_("Somalia"), 'so_SO', '3' ], 'SR' => [ N_("Suriname"), 'nl_NL', '5' ], # 'ST' => [ N_("Sao Tome and Principe"), 'en_US', '5' ], # 'SV' => [ N_("El Salvador"), 'es_SV', '5' ], 'SY' => [ N_("Syria"), 'ar_SY', '2' ], 'SZ' => [ N_("Swaziland"), 'en_BW', '3' ], # 'TC' => [ N_("Turks and Caicos Islands"), 'en_US', '5' ], # 'TD' => [ N_("Chad"), 'en_US', '3' ], # 'TF' => [ N_("French Southern Territories"), 'fr_FR', '4' ], # 'TG' => [ N_("Togo"), 'fr_FR', '3' ], # 'TH' => [ N_("Thailand"), 'th_TH', '2' ], 'TJ' => [ N_("Tajikistan"), 'tg_TJ', '2' ], 'TK' => [ N_("Tokelau"), 'en_US', '4' ], # 'TL' => [ N_("East Timor"), 'pt_PT', '4' ], # 'TM' => [ N_("Turkmenistan"), 'tk_TM', '2' ], 'TN' => [ N_("Tunisia"), 'ar_TN', '5' ], 'TO' => [ N_("Tonga"), 'en_US', '3' ], # 'TR' => [ N_("Turkey"), 'tr_TR', '2' ], 'TT' => [ N_("Trinidad and Tobago"), 'en_US', '5' ], # 'TV' => [ N_("Tuvalu"), 'en_US', '4' ], # 'TW' => [ N_("Taiwan"), 'zh_TW', '2' ], 'TZ' => [ N_("Tanzania"), 'en_US', '3' ], # 'UA' => [ N_("Ukraine"), 'uk_UA', '1' ], 'UG' => [ N_("Uganda"), 'lg_UG', '3' ], 'UM' => [ N_("United States Minor Outlying Islands"), 'en_US', '5' ], # 'US' => [ N_("United States"), 'en_US', '5' ], 'UY' => [ N_("Uruguay"), 'es_UY', '5' ], 'UZ' => [ N_("Uzbekistan"), 'uz_UZ', '2' ], 'VA' => [ N_("Vatican"), 'it_IT', '1' ], # 'VC' => [ N_("Saint Vincent and the Grenadines"), 'en_US', '5' ], 'VE' => [ N_("Venezuela"), 'es_VE', '5' ], 'VG' => [ N_("Virgin Islands (British)"), 'en_GB', '5' ], # 'VI' => [ N_("Virgin Islands (U.S.)"), 'en_US', '5' ], # 'VN' => [ N_("Vietnam"), 'vi_VN', '2' ], 'VU' => [ N_("Vanuatu"), 'en_US', '4' ], # 'WF' => [ N_("Wallis and Futuna"), 'fr_FR', '4' ], # 'WS' => [ N_("Samoa"), 'en_US', '4' ], # 'YE' => [ N_("Yemen"), 'ar_YE', '2' ], 'YT' => [ N_("Mayotte"), 'fr_FR', '3' ], # 'ZA' => [ N_("South Africa"), 'en_ZA', '5' ], 'ZM' => [ N_("Zambia"), 'en_US', '3' ], # 'ZW' => [ N_("Zimbabwe"), 'en_ZW', '5' ], ); sub c2name { exists $countries{$_[0]} && translate($countries{$_[0]}[0]) } sub c2locale { exists $countries{$_[0]} && $countries{$_[0]}[1] } sub list_countries { my (%_options) = @_; keys %countries; } #- this list is built with the following command on the compile cluster: #- rpm -qpl /cooker/RPMS/release/locales-* | grep LC_CTYPE | grep '\.UTF-8' | cut -d'/' -f5 | sed 's/.UTF-8//' | sort | tr '\n' ' ' ; echo our @locales = qw(aa_DJ aa_ER aa_ER@saaho aa_ET af_ZA am_ET an_ES ar_AE ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as_IN az_AZ be_BY ber_DZ ber_MA bg_BG bn_BD bn_IN br_FR bs_BA byn_ER ca_AD ca_ES ca_FR ca_IT cs_CZ cy_GB da_DK de_AT de_BE de_CH de_DE de_LU dz_BT el_CY el_GR en_AU en_BE en_BW en_CA en_DK en_GB en_HK en_IE en_IN en_NG en_NZ en_PH en_SG en_US en_ZA en_ZW eo_XX es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et_EE eu_ES fa_IR fi_FI fil_PH fo_FO fr_BE fr_CA fr_CH fr_FR fr_LU fur_IT fy_DE fy_NL ga_IE gd_GB gez_ER gez_ER@abegede gez_ET gez_ET@abegede gl_ES gu_IN gv_GB ha_NG he_IL hi_IN hr_HR hsb_DE hu_HU hy_AM id_ID ig_NG ik_CA is_IS it_CH it_IT iu_CA ja_JP ka_GE kk_KZ kl_GL km_KH kn_IN ko_KR ku_TR kw_GB ky_KG lg_UG li_BE li_NL lo_LA lt_LT lv_LV mg_MG mi_NZ mk_MK ml_IN mn_MN mr_IN ms_MY mt_MT nb_NO nds_DE@traditional ne_NP nl_BE nl_NL nn_NO no_NO nr_ZA nso_ZA oc_FR om_ET om_KE pa_IN pap_AN pa_PK ph_PH pl_PL pt_BR pt_PT ro_RO ru_RU ru_UA rw_RW sc_IT se_NO sid_ET si_LK sk_SK sl_SI so_DJ so_ET so_KE so_SO sq_AL sr_ME sr_RS sr_RS@latin ss_ZA st_ZA sv_FI sv_SE sw_XX ta_IN te_IN tg_TJ th_TH ti_ER ti_ET tig_ER tk_TM tl_PH tn_ZA tr_CY tr_TR ts_ZA tt_RU ug_CN uk_UA ur_PK uz_UZ uz_UZ@cyrillic ve_ZA vi_VN wa_BE wal_ET xh_ZA yi_US yo_NG zh_CN zh_HK zh_SG zh_TW zu_ZA); sub standard_locale { my ($lang, $country, $prefer_lang) = @_; my $lang_ = force_lang_country($lang, $country); if (member($lang_, @locales)) { $lang_; } elsif ($prefer_lang && member($lang, @locales)) { $lang; } else { ''; } } sub force_lang_country { my ($lang, $country) = @_; my $h = analyse_locale_name($lang); $h->{country} = $country; analysed_to_lang($h); } sub force_lang_charset { my ($lang, $charset) = @_; my $h = analyse_locale_name($lang); $h->{charset} = $charset; analysed_to_lang($h); } sub analysed_to_lang { my ($h) = @_; $h->{main} . '_' . $h->{country} . ($h->{charset} ? '.' . $h->{charset} : '') . ($h->{variant} ? '@' . $h->{variant} : ''); } sub analyse_locale_name { my ($lang) = @_; $lang =~ /^(.*?) (?:_(.*?))? (?:\.(.*?))? (?:\@(.*?))? $/x && { main => $1, country => $2, charset => $3, variant => $4 }; } sub locale_to_main_locale { my ($lang) = @_; lc(analyse_locale_name($lang)->{main}); } sub getlocale_for_lang { my ($lang, $country, $o_utf8) = @_; force_lang_charset(standard_locale($lang, $country, 'prefer_lang') || l2locale($lang), $o_utf8 && 'UTF-8'); } sub getlocale_for_country { my ($lang, $country, $o_utf8) = @_; force_lang_charset(standard_locale($lang, $country, '') || c2locale($country), $o_utf8 && 'UTF-8'); } sub getLANGUAGE { my ($lang, $o_country, $o_utf8) = @_; l2language($lang) || join(':', uniq(getlocale_for_lang($lang, $o_country, $o_utf8), $lang, locale_to_main_locale($lang))); } sub countries_to_locales { my (%options) = @_; my %country2locales; my $may_add = sub { my ($locale, $country) = @_; if ($options{exclude_non_installed}) { -e "/usr/share/locale/$locale/LC_CTYPE" or return; } my $h = analyse_locale_name($locale) or internal_error(); push @{$country2locales{$country || $h->{country}}}, $h; }; # first add all real locales foreach (@locales) { $may_add->($_, undef); } # then add countries XX for which we use locale yy_ZZ and not yy_XX foreach my $country (list_countries()) { $may_add->(c2locale($country), $country); } \%country2locales; } #------------------------------------------------------------- # # IM configuration hash tables # # in order to configure an IM, one has to: # - put generic configuration in %IM_config # This set generic IM fields. my @IM_i18n_fields = ( 'XMODIFIERS', #- is the environnement variable used by the X11 XIM protocol #- it is of the form XIMODIFIERS="@im=foo" 'XIM', #- is used by some programs, it usually is the like XIMODIFIERS #- with the "@im=" part stripped 'GTK_IM_MODULE', #- the module to use for Gtk programs ("xim" to use an X11 #- XIM server; or a a native gtk module if exists) 'XIM_PROGRAM', #- the XIM program to run (usually the same as XIM value, but #- in some cases different, particularly if parameters are needed; 'QT_IM_MODULE', #- the module to use for Qt programs ("xim" to use an X11 #- XIM server; or a Qt plugin if exists) ); my ($is_kde4); # keep the 'packages' field in sync with share/rpmsrate: my %IM_config = ( chinput => { GTK_IM_MODULE => 'xim', XIM => 'chinput', XMODIFIERS => '@im=Chinput', XIM_PROGRAM => { 'zh_CN' => 'chinput -gb', 'en_SG' => 'chinput -gb', 'zh_HK' => 'chinput -big5', 'zh_TW' => 'chinput -big5', }, langs => 'zh', packages => { generic => sub { 'miniChinput' } }, }, fcitx => { GTK_IM_MODULE => 'xim', XIM => 'fcitx', XIM_PROGRAM => 'fcitx', XMODIFIERS => '@im=fcitx', langs => 'zh', }, gcin => { GTK_IM_MODULE => 'gcin', XIM => 'gcin', XIM_PROGRAM => 'gcin', XMODIFIERS => '@im=gcin', langs => 'zh', packages => { common => sub { if_($is_kde4, 'gcin-qt4') }, generic => sub { qw(gcin) }, }, }, 'im-ja' => { GTK_IM_MODULE => 'im-ja', QT_IM_MODULE => 'xim', XIM => 'im-ja-xim-server', XIM_PROGRAM => 'im-ja-xim-server', XMODIFIERS => '@im=im-ja-xim-server', langs => 'ja', }, kinput2 => { GTK_IM_MODULE => 'xim', XIM => 'kinput2', XIM_PROGRAM => 'kinput2', XMODIFIERS => '@im=kinput2', langs => 'ja', packages => { generic => sub { 'kinput2-wnn' } }, }, nabi => { GTK_IM_MODULE => 'xim', XIM => 'nabi', XIM_PROGRAM => 'nabi', XMODIFIERS => '@im=nabi', langs => 'ko', }, oxim => { GTK_IM_MODULE => 'oxim', XIM => 'oxim', XIM_PROGRAM => 'oxim', XMODIFIERS => '@im=oxim', # '@im=SCIM' is broken for now langs => 'zh_TW', packages => { generic => sub { 'oxim' } }, }, 'scim' => { GTK_IM_MODULE => 'scim', XIM_PROGRAM => 'scim -d', XMODIFIERS => '@im=SCIM', packages => { generic => sub { qw(scim-m17n scim-tables) }, am => sub { qw(scim-tables) }, ja => sub { qw(scim-anthy scim-input-pad scim-tomoe) }, ko => sub { qw(scim-hangul) }, th => sub { qw(scim-thai) }, vi => sub { qw(scim-m17n) }, zh => sub { qw(scim-googlepinyin scim-tables-zh scim-chewing) }, }, }, 'scim-bridge' => { GTK_IM_MODULE => 'scim-bridge', XIM_PROGRAM => 'scim-bridge', XMODIFIERS => '@im=SCIM', default_for_lang => 'am ja ko th vi zh_CN zh_TW', packages => { common => sub { if_($is_kde4, 'scim-bridge-qt4') }, generic => sub { qw(scim-m17n scim-tables) }, am => sub { qw(scim-tables) }, ja => sub { qw(scim-anthy scim-input-pad scim-tomoe) }, ko => sub { qw(scim-hangul) }, th => sub { qw(scim-thai) }, vi => sub { qw(scim-m17n) }, zh => sub { qw(scim-googlepinyin scim-tables-zh scim-chewing) }, }, }, 'ibus' => { GTK_IM_MODULE => 'ibus', QT_IM_MODULE => 'ibus', XIM_PROGRAM => 'ibus-daemon -d -x', XMODIFIERS => '@im=ibus', packages => { generic => sub { qw(ibus-table ibus-m17n), if_($is_kde4, 'ibus-qt4') }, ja => sub { qw(ibus-anthy) }, zh => sub { qw(ibus-pinyin ibus-chewing) }, ko => sub { qw(ibus-hangul) }, }, }, uim => { GTK_IM_MODULE => 'uim', XIM => 'uim', XIM_PROGRAM => 'uim-xim', XMODIFIERS => '@im=uim', langs => 'ja', packages => { common => sub { if_($is_kde4, 'uim-qt4immodule') }, generic => sub { qw(uim-gtk uim) }, }, }, xcin => { XIM => 'xcin', XIM_PROGRAM => 'xcin', XMODIFIERS => '@im=xcin-zh_TW', GTK_IM_MODULE => 'xim', langs => 'zh', }, 'x-unikey' => { GTK_IM_MODULE => 'xim', XMODIFIERS => '@im=unikey', langs => 'vi', }, ); #------------------------------------------------------------- # # Locale configuration regarding encoding/IM #- ENC is used by some versions or rxvt my %locale2ENC = ( 'ja' => 'eucj', 'ko' => 'kr', 'zh_CN' => 'gb', # zh_SG zh_HK were reported as missing by make check: 'zh_HK' => 'big5', 'zh_SG' => 'gb', 'zh_TW' => 'big5', ); my %IM_locale_specific_config = ( #-XFree86 has an internal XIM for Thai that enables syntax checking etc. #-'Passthroug' is no check at all, 'BasicCheck' accepts bad sequences #-and convert them to right ones, 'Strict' refuses bad sequences 'th' => { XIM_PROGRAM => '/bin/true', #- it's an internal module XMODIFIERS => '"@im=BasicCheck"', }, ); sub get_ims { my ($lang) = @_; my $main_lang = analyse_locale_name($lang)->{main}; sort grep { my $langs = $IM_config{$_}{langs}; !$langs || intersection([ $lang, $main_lang ], [ split(' ', $langs) ]); } keys %IM_config; } sub get_default_im { my ($lang) = @_; find { member($lang, split(' ', $IM_config{$_}{default_for_lang})); } keys %IM_config; } sub IM2packages { my ($locale) = @_; if ($locale->{IM}) { require any; my @sessions = any::sessions(); $is_kde4 = member('KDE4', @sessions); my $per_lang = $IM_config{$locale->{IM}}{packages} || {}; my $main_lang = analyse_locale_name($locale->{lang})->{main}; my $packages = $per_lang->{$main_lang} || $per_lang->{generic}; my @pkgs = ($packages ? $packages->() : $locale->{IM}, $per_lang->{common} ? $per_lang->{common}->() : ()); @pkgs; } else { () } } #- [0]: console font name #- [1]: unused #- [2]: console map (none if utf8) #- [3]: iocharset param for mount (utf8 if utf8) #- [4]: codepage parameter for mount (none if utf8) my %charsets = ( #- chinese needs special console driver for text mode "Big5" => [ undef, undef, undef, "big5", "950" ], "gb2312" => [ undef, undef, undef, "gb2312", "936" ], "gbk" => [ undef, undef, undef, "gb2312", "936" ], "C" => [ "lat0-16", undef, "8859-15", "iso8859-1", "850" ], "iso-8859-1" => [ "lat1-16", undef, "8859-1", "iso8859-1", "850" ], "iso-8859-2" => [ "lat2-16", undef, "8859-2", "iso8859-2", "852" ], "iso-8859-5" => [ "UniCyr_8x16", undef, "8859-5", "iso8859-5", "866" ], "iso-8859-7" => [ "iso07u-16", undef, "8859-7", "iso8859-7", "869" ], "iso-8859-9" => [ "lat5-16", undef, "8859-9", "iso8859-9", "857" ], "iso-8859-13" => [ "tlat7", undef, "8859-13", "iso8859-13", "775" ], "iso-8859-15" => [ "lat0-16", undef, "8859-15", "iso8859-15", "850" ], #- japanese needs special console driver for text mode [kon2] "jisx0208" => [ undef, undef, undef, "euc-jp", "932" ], "koi8-r" => [ "UniCyr_8x16", undef, "koi8-r", "koi8-r", "866" ], "koi8-u" => [ "UniCyr_8x16", undef, "koi8-u", "koi8-u", "866" ], "cp1251" => [ "UniCyr_8x16", undef, "cp1251", "cp1251", "866" ], #- korean needs special console driver for text mode "ksc5601" => [ undef, undef, undef, "euc-kr", "949" ], #- I have no console font for Thai... "tis620" => [ undef, undef, undef, "tis-620", "874" ], # UTF-8 encodings here; they differ in the console font mainly. "utf_ar" => [ undef, undef, undef, "utf8", undef ], "utf_armn" => [ undef, undef, undef, "utf8", undef ], "utf_az" => [ "tiso09e", undef, undef, "utf8", undef ], "utf_beng" => [ undef, undef, undef, "utf8", undef ], "utf_cyr1" => [ "UniCyr_8x16", undef, undef, "utf8", undef ], "utf_cyr2" => [ "koi8-k", undef, undef, "utf8", undef ], "utf_deva" => [ undef, undef, undef, "utf8", undef ], "utf_ethi" => [ "Agafari-16", undef, undef, "utf8", undef ], "utf_geor" => [ "t_geors", undef, undef, "utf8", undef ], "utf_guru" => [ undef, undef, undef, "utf8", undef ], "utf_he" => [ undef, undef, undef, "utf8", undef ], "utf_iu" => [ undef, undef, undef, "utf8", undef ], "utf_khmr" => [ undef, undef, undef, "utf8", undef ], "utf_knda" => [ undef, undef, undef, "utf8", undef ], "utf_laoo" => [ undef, undef, undef, "utf8", undef ], "utf_lat1" => [ "lat0-16", undef, undef, "utf8", undef ], "utf_lat5" => [ undef, undef, undef, "utf8", undef ], "utf_lat7" => [ "tlat7", undef, undef, "utf8", undef ], "utf_lat8" => [ undef, undef, undef, "utf8", undef ], "utf_mlym" => [ undef, undef, undef, "utf8", undef ], "utf_mymr" => [ undef, undef, undef, "utf8", undef ], "utf_taml" => [ "tamil", undef, undef, "utf8", undef ], # console font still to do "utf_tfng" => [ undef, undef, undef, "utf8", undef ], "utf_tibt" => [ undef, undef, undef, "utf8", undef ], "utf_vi" => [ "tcvn8x16", undef, undef, "utf8", undef ], "utf_yo" => [ undef, undef, undef, "utf8", undef ], # default for utf-8 encodings "unicode" => [ "LatArCyrHeb-16", undef, undef, "utf8", undef ], ); #- for special cases not handled magically my %charset2kde_charset = ( gb2312 => 'gb2312.1980-0', gbk => 'gb2312.1980-0', jisx0208 => 'jisx0208.1983-0', ksc5601 => 'ksc5601.1987-0', Big5 => 'big5-0', cp1251 => 'microsoft-cp1251', utf8 => 'iso10646-1', tis620 => 'tis620-0', ); #- ------------------- sub l2console_font { my ($locale, $during_install) = @_; my $c = $charsets{l2charset($locale->{lang}) || return} or return; my ($name, $_sfm, $acm) = @$c; undef $acm if $locale->{utf8} && !$during_install; ($name, $acm); } sub get_kde_lang { my ($locale, $o_default) = @_; #- get it using #- echo C $(rpm -qp --qf "%{name}\n" /RPMS/kde4-l10n-* | sed 's/kde4-l10n-//') my @valid_kde_langs = qw(C ar be bg ca cs csb da de el en_GB eo es et eu fa fi fr fy ga gl hi hu is it ja kk km ko ku lt lv mk ml nb nds ne nl nn pa pl pt pt_BR ro ru se sl sr sv ta th tr uk wa zh_CN zh_TW); my %valid_kde_langs; @valid_kde_langs{@valid_kde_langs} = (); my $valid_lang = sub { my ($lang) = @_; #- fast & dirty solution to ensure bad entries do not happen my %fixlangs = (en => 'C', en_US => 'C', en_AU => 'en_GB', en_CA => 'en_GB', en_IE => 'en_GB', en_NZ => 'en_GB', pa_IN => 'pa', 'sr@Latn' => 'sr', ve => 'ven', zh_CN => 'zh_CN', zh_SG => 'zh_CN', zh_TW => 'zh_TW', zh_HK => 'zh_TW'); exists $fixlangs{$lang} ? $fixlangs{$lang} : exists $valid_kde_langs{$lang} ? $lang : exists $valid_kde_langs{locale_to_main_locale($lang)} ? locale_to_main_locale($lang) : ''; }; my $r; $r ||= $valid_lang->($locale->{lang}); $r ||= find { $valid_lang->($_) } split(':', getlocale_for_lang($locale->{lang}, $locale->{country})); $r || $o_default || 'C'; } sub charset2kde_charset { my ($charset, $o_default) = @_; my $iocharset = ($charsets{$charset} || [])->[3]; my @valid_kde_charsets = qw(big5-0 gb2312.1980-0 iso10646-1 iso8859-1 iso8859-4 iso8859-6 iso8859-8 iso8859-13 iso8859-14 iso8859-15 iso8859-2 iso8859-3 iso8859-5 iso8859-7 iso8859-9 koi8-r koi8-u ksc5601.1987-0 jisx0208.1983-0 microsoft-cp1251 tis620-0); my %valid_kde_charsets; @valid_kde_charsets{@valid_kde_charsets} = (); my $valid_charset = sub { my ($charset) = @_; #- fast & dirty solution to ensure bad entries do not happen exists $valid_kde_charsets{$charset} && $charset; }; my $r; $r ||= $valid_charset->($charset2kde_charset{$charset}); $r ||= $valid_charset->($charset2kde_charset{$iocharset}); $r ||= $valid_charset->($iocharset); $r || $o_default || 'iso10646-1'; } #- font+size for different charsets; the field [0] is the default, #- others are overrridens for fixed(1), toolbar(2), menu(3) and taskbar(4) my %charset2kde_font = ( 'C' => [ "Sans,10", "Monospace,10" ], 'iso-8859-1' => [ "Sans,10", "Monospace,10" ], 'iso-8859-2' => [ "Sans,10", "Monospace,10" ], 'iso-8859-7' => [ "DejaVu Sans,10", "FreeMono,10" ], 'iso-8859-9' => [ "Sans,10", "Monospace,10" ], 'iso-8859-13' => [ "Sans,10", "Monospace,10" ], 'iso-8859-15' => [ "Sans,10", "Monospace,10" ], 'jisx0208' => [ "UmePlus P Gothic,12", "UmePlus Gothic,12" ], 'ksc5601' => [ "Baekmuk Gulim,12" ], 'gb2312' => [ "Sans,10", "Monospace,10" ], 'Big5' => [ "Sans,10", "Monospace,10" ], 'tis620' => [ "Norasi,16", "Norasi,15" ], 'koi8-u' => [ "DejaVu Sans,10", "FreeMono,10" ], 'utf_ar' => [ "DejaVu Sans,11", "Courier New,13" ], 'utf_az' => [ "DejaVu Sans,10", "FreeMono,10" ], 'utf_he' => [ "DejaVu Sans,10", "FreeMono,10" ], #-'utf_iu' => [ "????,14", ], 'utf_vi' => [ "DejaVu Sans,12", "FreeMono,11", "DejaVu Sans,11" ], 'utf_yo' => [ "DejaVu Sans,12", "FreeMono,11", "DejaVu Sans,11" ], #- script based 'utf_armn' => [ "DejaVu Sans,11", "FreeMono,11" ], 'utf_cyr2' => [ "DejaVu Sans,10", "FreeMono,10" ], 'utf_beng' => [ "Mukti Narrow,13", "Mitra Mono,13", "Mukti Narrow,12" ], 'utf_deva' => [ "Raghindi,12", ], 'utf_ethi' => [ "GF Zemen Unicode,13" ], 'utf_guru' => [ "Lohit Punjab,14", ], #-'utf_khmr' => [ "????,14", ], 'utf_knda' => [ "Sampige,14", ], 'utf_lat1' => [ "Sans,10", "Monospace,10" ], 'utf_lat5' => [ "Sans,10", "Monospace,10" ], 'utf_lat7' => [ "Sans,10", "Monospace,10" ], 'utf_lat8' => [ "DejaVu Sans,10", "FreeMono,10" ], 'utf_mlym' => [ "malayalam,12", ], #-'utf_mymr' => [ "????,14", ], 'utf_taml' => [ "TSCu_Paranar,14", "Tsc_avarangalfxd,14", "TSCu_Paranar,13", ], 'utf_tfng' => [ "Hapax Berbère,12", ], 'utf_tibt' => [ "Tibetan Machine Uni,14", ], #- the following should be changed to better defaults when better fonts #- get available 'utf_geor' => [ "ClearlyU,13" ], 'utf_laoo' => [ "DejaVu Sans,11", "ClearlyU,13" ], 'default' => [ "DejaVu Sans,12", "FreeMono,11", "DejaVu Sans,11" ], ); sub charset2kde_font { my ($charset, $type) = @_; my $font = $charset2kde_font{$charset} || $charset2kde_font{default}; my $r = $font->[$type] || $font->[0]; #- the format is "font-name,size,-1,5,0,0,0,0,0,0" I have no idea of the #- meaning of that "5"... "$r,-1,5,0,0,0,0,0,0"; } # this define pango name fonts (like "NimbusSans L") depending # on the "charset" defined by language array. This allows to selecting # an appropriate font for each language for the installer only. my %charset2pango_font = ( 'utf_geor' => "Sans 14", 'utf_taml' => "TSCu_Paranar 14", 'jisx0208' => "Sans 14", 'utf_ar' => "Sans 15", 'tis620' => "Norasi 20", 'default' => "DejaVu Sans 12" ); sub charset2pango_font { my ($charset) = @_; $charset2pango_font{exists $charset2pango_font{$charset} ? $charset : 'default'}; } sub l2pango_font { my ($lang) = @_; my $charset = l2charset($lang) or log::l("no charset found for lang $lang!"), return; my $font = charset2pango_font($charset); log::l("lang:$lang charset:$charset font:$font consolefont:$charsets{$charset}[0]"); return $font; } sub set { my ($locale, $b_translate_for_console) = @_; put_in_hash(\%ENV, i18n_env($locale)); if (!$::isInstall) { bindtextdomain(); } else { $ENV{LC_NUMERIC} = 'C'; #- otherwise eval "1.5" returns 1 in fr_FR if ($b_translate_for_console && $locale->{lang} =~ /^(ko|ja|zh|th)/) { log::l("not translating in console"); $ENV{LANGUAGE} = 'C'; } load_mo(); } } sub langs { my ($l) = @_; $l->{all} ? list_langs() : grep { $l->{$_} } keys %$l; } sub langsLANGUAGE { my ($l, $o_c) = @_; uniq(map { split ':', getLANGUAGE($_, $o_c) } langs($l)); } sub utf8_should_be_needed { my ($_locale) = @_; 1; } sub pack_langs { my ($l) = @_; my $s = $l->{all} ? 'all' : join ':', uniq(map { getLANGUAGE($_) } langs($l)); $s; } sub system_locales_to_ourlocale { my ($locale_lang, $locale_country) = @_; my $locale = {}; my $h = analyse_locale_name($locale_lang); my $locale_lang_no_encoding = join('_', $h->{main}, if_($h->{country}, $h->{country})); $locale->{lang} = member($locale_lang_no_encoding, list_langs()) ? $locale_lang_no_encoding : #- special lang's such as en_US pt_BR $h->{main}; $locale->{lang} .= '@' . $h->{variant} if $h->{variant}; $locale->{country} = analyse_locale_name($locale_country)->{country}; $locale->{utf8} = $h->{charset} && $h->{charset} eq 'UTF-8'; #- safe fallbacks $locale->{lang} ||= 'en_US'; $locale->{country} ||= 'US'; $locale; } sub lang_to_ourlocale { my ($lang) = @_; my $locale = system_locales_to_ourlocale($lang); $locale->{utf8} ||= utf8_should_be_needed($locale); lang_changed($locale); $locale; } sub lang_changed { my ($locale) = @_; my $h = analyse_locale_name(l2locale($locale->{lang})); $locale->{country} = $h->{country} if $h->{country}; $locale->{IM} = get_default_im($locale->{lang}); } sub read { my ($b_user_only) = @_; my ($f1, $f2) = ("$::prefix$ENV{HOME}/.i18n", "$::prefix/etc/sysconfig/i18n"); my %h = getVarsFromSh($b_user_only && -e $f1 ? $f1 : $f2); my $locale = system_locales_to_ourlocale($h{LC_MESSAGES} || 'en_US', $h{LC_MONETARY} || 'en_US'); if (find { $h{$_} } @IM_i18n_fields) { my $current_IM = find { my $i = $IM_config{$_}; every { !defined $i->{$_} || $h{$_} eq $i->{$_} } ('GTK_IM_MODULE', 'XMODIFIERS', 'XIM_PROGRAM'); } keys %IM_config; $locale->{IM} = $current_IM if $current_IM; } $locale; } sub write_langs { my ($langs) = @_; my $s = pack_langs($langs); symlink "$::prefix/etc/rpm/macros", "/etc/rpm/macros" if $::prefix; require URPM; URPM::add_macro("_install_langs $s"); substInFile { s/%_install_langs.*//; $_ .= "%_install_langs $s\n" if eof && $s } "$::prefix/etc/rpm/macros"; } sub i18n_env { my ($locale) = @_; my $locale_lang = getlocale_for_lang($locale->{lang}, $locale->{country}, $locale->{utf8}); my $locale_country = getlocale_for_country($locale->{lang}, $locale->{country}, $locale->{utf8}); my $h = { XKB_IN_USE => '', (map { $_ => $locale_lang } qw(LANG LC_COLLATE LC_CTYPE LC_MESSAGES LC_TIME)), LANGUAGE => getLANGUAGE($locale->{lang}, $locale->{country}, $locale->{utf8}), (map { $_ => $locale_country } qw(LC_NUMERIC LC_MONETARY LC_ADDRESS LC_MEASUREMENT LC_NAME LC_PAPER LC_IDENTIFICATION LC_TELEPHONE)) }; log::l("i18n_env: lang:$locale->{lang} country:$locale->{country} locale|lang:$locale_lang locale|country:$locale_country LANGUAGE:$h->{LANGUAGE}"); $h; } sub write_and_install { my ($locale, $do_pkgs, $b_user_only, $b_dont_touch_kde_files) = @_; my @packages = IM2packages($locale); if (@packages && !$b_user_only) { log::explanations("Installing IM packages: ", join(', ', @packages)); $do_pkgs->ensure_are_installed(\@packages, 1); } &write($locale, $b_user_only, $b_dont_touch_kde_files); } sub write { my ($locale, $b_user_only, $b_dont_touch_kde_files) = @_; $locale && $locale->{lang} or return; my $h = i18n_env($locale); my ($name, $acm) = l2console_font($locale, 0); if ($name && !$b_user_only) { my $p = "$::prefix/usr/lib/kbd"; if ($name) { eval { log::explanations(qq(Set system font to "$name")); cp_af(glob_("$p/consolefonts/$name.*"), "$::prefix/etc/sysconfig/console/consolefonts"); add2hash $h, { SYSFONT => $name }; }; $@ and log::explanations("missing console font $name"); } if ($acm) { eval { log::explanations(qq(Set application-charset map (Unicode mapping table) to "$name")); cp_af(glob_("$p/consoletrans/$acm*"), "$::prefix/etc/sysconfig/console/consoletrans"); add2hash $h, { SYSFONTACM => $acm }; }; $@ and log::explanations("missing console acm file $acm"); } } add2hash($h, $IM_locale_specific_config{$locale->{lang}}); $h->{ENC} = $locale2ENC{$locale->{lang}}; $h->{ENC} = 'utf8' if $h->{ENC} && $locale->{utf8}; if ($locale->{IM}) { log::explanations(qq(Configuring "$locale->{IM}" IM)); foreach (@IM_i18n_fields) { $h->{$_} = $IM_config{$locale->{IM}}{$_}; } $h->{QT_IM_MODULE} ||= $h->{GTK_IM_MODULE}; if (ref $h->{XIM_PROGRAM}) { $h->{XIM_PROGRAM} = $h->{XIM_PROGRAM}{$locale->{lang}} || $h->{XIM_PROGRAM}{getlocale_for_country($locale->{lang}, $locale->{country})}; } } #- deactivate translations on console for most CJK, RTL and complex languages if (member($locale->{lang}, qw(ar bn fa he hi ja kn ko pa_IN ug ur yi zh_TW zh_CN))) { #- CONSOLE_NOT_LOCALIZED if defined to yes, disables translations on console #- it is needed for languages not supported by the linux console log::explanations(qq(Disabling translation on console since "$locale->{lang}" is not supported by the console)); add2hash($h, { CONSOLE_NOT_LOCALIZED => 'yes' }); } my $file = $b_user_only ? "$ENV{HOME}/.i18n" : '/etc/sysconfig/i18n'; log::explanations(qq(Setting l10n configuration in "$file")); setVarsInShMode($::prefix . $file, 0644, $h); configure_hal($locale) if !$b_user_only; run_program::rooted($::prefix, 'grub-gfxmenu', '--quiet', '--lang', $locale->{lang}) if !$b_user_only; my $charset = l2charset($locale->{lang}); my $qtglobals = $b_user_only ? "$ENV{HOME}/.qt/qtrc" : "$::prefix/etc/qtrc"; update_gnomekderc($qtglobals, General => ( font => charset2kde_font($charset, 0), )); eval { my $confdir = $::prefix . ($b_user_only ? "$ENV{HOME}/.kde" : do { my $kderc = $::prefix ? common::expand_symlinks_with_absolute_symlinks_in_prefix($::prefix, '/etc/kderc') : '/etc/kderc'; log::l("reading $kderc"); my %dir_defaults = read_gnomekderc($kderc, 'Directories-default'); first(split(',', $dir_defaults{prefixes})) || "/etc/kde" }) . '/share/config'; -d $confdir or die 'not configuring kde config files since it is not installed/used'; configure_kdeglobals($locale, $confdir); my %qt_xim = (zh => 'Over The Spot', ko => 'On The Spot', ja => 'On The Spot'); if ($b_user_only && (my $qt_xim = $qt_xim{locale_to_main_locale($locale->{lang})})) { log::explanations(qq(Setting XIM input style to "$qt_xim")); update_gnomekderc("$ENV{HOME}/.qt/qtrc", General => (XIMInputStyle => $qt_xim)); } if (!$b_user_only) { my $kde_charset = charset2kde_charset(l2charset($locale->{lang})); my $welcome = common::to_utf8(N("Welcome to %s", '%n')); log::explanations(qq(Configuring KDM/MdkKDM)); substInFile { s/^(GreetString)=.*/$1=$welcome/; s/^(Language)=.*/$1=$locale->{lang}/; if (!member($kde_charset, 'iso8859-1', 'iso8859-15')) { #- do not keep the default for those my $font_list = $charset2kde_font{l2charset($locale->{lang})} || $charset2kde_font{default}; my $font_small = $font_list->[0]; my $font_huge = $font_small; $font_huge =~ s/(.*?),\d+/$1,24/; s/^(StdFont)=.*/$1=$font_small,5,$kde_charset,50,0/; s/^(FailFont)=.*/$1=$font_small,5,$kde_charset,75,0/; s/^(GreetFont)=.*/$1=$font_huge,5,$kde_charset,50,0/; } } "$::prefix/etc/kde/kdm/kdmrc"; } } if !$b_dont_touch_kde_files; #- update alternatives for OpenOffice/BrOffice if present foreach my $name (grep { /^oobr_bootstraprc/ } all("$::prefix/var/lib/alternatives/")) { my $alternative = common::get_alternatives($name) or next; my $wanted = $locale->{lang} eq 'pt_BR' ? 'bootstraprc.bro' : 'bootstraprc.ooo'; my $path = find { basename($_) eq $wanted } map { $_->{file} } @{$alternative->{alternatives}}; common::symlinkf_update_alternatives($name, $path) if $path; } } sub configure_hal { my ($locale) = @_; my $option = sub { my ($cat, $val) = @_; qq(\t\t<merge key="$cat.policy.mount_option.$val" type="bool">true</merge>); }; my %options = (fs_options($locale), utf8 => 1); my %known_options = ( auto => [ 'iocharset', 'codepage' ], vfat => [ 'iocharset', 'codepage' ], msdos => [ 'iocharset', 'codepage' ], ntfs => [ 'iocharset', 'utf8' ], cdrom => [ 'iocharset', 'codepage', 'utf8' ], ); my $options = sub { my ($cat, $name) = @_; join("\n", map { $option->($cat, $_ eq 'utf8' ? $_ : "$_=$options{$_}"); } grep { $options{$_} } @{$known_options{$name}}); }; my $options_per_fs = join('', map { my $s = $options->('volume', $_); $s && sprintf(<<'EOF', $_, $s); <match key="volume.fstype" string="%s"> %s </match> EOF } 'auto', 'vfat', 'msdos', 'ntfs'); output_p("$::prefix/usr/share/hal/fdi/30osvendor/locale-policy.fdi", sprintf(<<'EOF', $options_per_fs, $options->('storage', 'cdrom'))); <?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- --> <deviceinfo version="0.2"> <device> <match key="block.is_volume" bool="true"> <match key="volume.fsusage" string="filesystem"> %s </match> </match> <match key="storage.drive_type" string="cdrom"> %s </match> </device> </deviceinfo> EOF } sub configure_kdeglobals { my ($locale, $confdir) = @_; my $kdeglobals = "$confdir/kdeglobals"; my $charset = l2charset($locale->{lang}); my $kde_charset = charset2kde_charset($charset); mkdir_p($confdir); my $lang = get_kde_lang($locale); log::explanations("Configuring KDE regarding charset ($kde_charset), language ($lang) and country ($locale->{country})"); update_gnomekderc($kdeglobals, Locale => ( Charset => $kde_charset, Country => lc($locale->{country}), Language => getLANGUAGE($locale->{lang}, $locale->{country}, $locale->{utf8}), )); log::explanations("Configuring KDE regarding fonts"); update_gnomekderc($kdeglobals, WM => ( activeFont => charset2kde_font($charset,0), )); update_gnomekderc($kdeglobals, General => ( fixed => charset2kde_font($charset, 1), font => charset2kde_font($charset, 0), menuFont => charset2kde_font($charset, 3), taskbarFont => charset2kde_font($charset, 4), toolBarFont => charset2kde_font($charset, 2), )); update_gnomekderc("$confdir/konquerorrc", FMSettings => ( StandardFont => charset2kde_font($charset, 0), )); update_gnomekderc("$confdir/kdesktoprc", FMSettings => ( StandardFont => charset2kde_font($charset, 0), )); } sub bindtextdomain() { #- if $::prefix is set, search for libDrakX.mo in locale_special #- NB: not using $::isInstall to make it work more easily at install and standalone my $localedir = "$ENV{SHARE_PATH}/locale" . ($::prefix ? "_special" : '');