language-pack-gnome-zh-hans-base/0000755000000000000000000000000012321561505014024 5ustar language-pack-gnome-zh-hans-base/COPYING0000644000000000000000000004310312321561505015060 0ustar GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. language-pack-gnome-zh-hans-base/data/0000755000000000000000000000000012321561505014735 5ustar language-pack-gnome-zh-hans-base/data/static.tar0000644000000000000000002075000012321556531016743 0ustar usr/share/help-langpack/zh_CN/cheese/effects-apply.page0000644000373100047300000000542012265343461024727 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 给您的照片和视频添加有趣的效果,如让您自己变绿或让照片像游乐场哈哈镜一样扭曲变形。 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 给照片和视频添加特效

您可以给您的图片和视频添加滑稽、有趣的效果:

点击 效果

通过点击其中一个选项,选择您想要使用的效果。

如果喜欢,您可以选择多种效果。比如,如果您选择了 Hulk功夫,视频将会变的有绿色阴影,也会展示出重复的图像。

单击 效果 隐藏效果菜单,返回到正常视图。

茄子 提供 34 种效果,其中 9 种在第一页显示。点击 下一批效果上一批效果 导向至其他页面。

其中一些效果,从左到右:Bulge,Edge 和 Mirror

要取消所有效果,点击 效果 ,选择 无效果

usr/share/help-langpack/zh_CN/cheese/index.page0000644000373100047300000000403612265343461023276 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 茄子(Cheese)可以让您使用摄像头拍照和录像。还可以添加特效哦! arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 <media xmlns:its="http://www.w3.org/2005/11/its" type="image" mime="image/png" src="figures/cheese.png" height="40" its:translate="no"/> Cheese Webcam Application
主要功能
首选项
常见问题
usr/share/help-langpack/zh_CN/cheese/video-record.page0000644000373100047300000000630312265343461024550 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 使用摄像头录制短片,与朋友分享。 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 录制视频

要使用摄像头录制视频:

Make sure that you are in Video mode. If you are, the button in the middle of the window will say Record a Video.

You can switch to Video mode by clicking the button in the main window or by selecting CheeseVideo.

Click Record a Video, or press the Space key. Cheese will start recording a video using your webcam.

要停止录像,点击停止录像或按下Esc键。

视频将被保存为 Ogg Theora(.ogv) 格式。

当您停止录像后,视频将会自动出现在茄子窗口底部的照片集里面。在照片集中,您可以回放视频,将视频上传到社交网络,发布到您的博客或 Youtube 频道,或者通过邮件与朋友分享。

如果您在与使用其他操作系统(如 Windows 或 Mac OS)的朋友分享视频时出现问题,您可能需要将视频转换成其他格式。

usr/share/help-langpack/zh_CN/cheese/burst-mode.page0000644000373100047300000000740212265343461024250 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 2011, 2013 Capture several photos with one button press. Change your pose in between each shot! arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 Take photos in quick succession using <gui>Burst</gui> mode

Use Burst mode to automatically take several photos in a row. It is particularly fun if you change your pose in between photos! To use Burst mode:

Select Cheese Burst.

Press Take Multiple Photos or press the Space key.

By default, four photos will be taken, with a one second delay and a countdown between photos.

任何时候您都可以按下EscCheese停止拍照。

Change <gui>Burst</gui> preferences

您可以修改在每次连拍时拍摄照片的数量和照片之间的延迟时间:

Select CheesePreferencesCapture.

Edit the preference settings:

Countdown

Countdown from three before the photo is taken.

Fire flash

Your screen will flash when a photo is taken.

Number of photos

The number of photos that will be taken in a single burst.

Delay between photos (seconds)

The delay between the last photo and the start of the next countdown. If Countdown is disabled, this is the delay between photos.

usr/share/help-langpack/zh_CN/cheese/photo-take.page0000644000373100047300000000602512265343461024242 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 用您的摄像头拍照而不是录像。 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 Take photos using a webcam

Webcams can be used to take still photos as well as videos. To take a photo:

Make sure that the mode Photo is selected in the Cheese menu.

Click Take a Photo. Alternatively, you can press the capture button on the webcam or the Space key.

There will be a short countdown, followed by a flash, and the photo will appear in the photo stream.

The photos in the photo stream are automatically saved in the /Pictures/Webcam folder in your home folder. They are saved using the JPEG (.jpg) format.

如果您在点击拍照后想取消拍照,请在倒计时结束前按下 Esc

To take multiple photos in rapid succession, use burst mode.

usr/share/help-langpack/zh_CN/cheese/photo-view.page0000644000373100047300000000423012265343461024264 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 照片和视频会自动出现在照片集中。 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 查看您拍摄的照片或视频

您拍完照或录完视频后,照片或视频将出现在窗口底部的照片集里面。

如果您要看到照片的更大尺寸,或要播放录像,双击文件即可。该操作将通过默认图片浏览器或视频播放器打开它们。

照片集里所有的照片和视频都保存在主目录的图片Webcam视频Webcam文件夹中。

usr/share/help-langpack/zh_CN/cheese/pref-fullscreen.page0000644000373100047300000000347012265343461025264 0ustar langpacklangpack00000000000000 Ekaterina Gerasimova kittykat3756@gmail.com 启用和禁用全屏模式 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 全屏

要启用全屏模式:

或者,点击茄子全屏

要禁用全屏模式:

选择 离开全屏

您也可以通过按 F11 启用和禁用全屏模式

usr/share/help-langpack/zh_CN/cheese/introduction.page0000644000373100047300000000511112265343461024703 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 关于 茄子 的使用介绍。 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 使用介绍

Cheese is a webcam application that lets you take photos and record videos using your webcam. You can take multiple photos in quick succession using the Burst mode and apply special Effects to add a personal touch to them.

茄子 默认以 照片 模式启动,准备让您 拍摄照片。您需要切换到 视频 模式来 录制一段视频。

Cheese 可以操作绝大多数网络摄像头,但有些老的摄像头可能不支持。

usr/share/help-langpack/zh_CN/cheese/legal.xml0000644000373100047300000000050712265343461023136 0ustar langpacklangpack00000000000000

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

usr/share/help-langpack/zh_CN/cheese/pref-image-properties.page0000644000373100047300000000664712265343461026407 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 调整饱和度、对比度、亮度和色度,让照片和视频效果更好。 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 我的照片和视频看起来不正常

如果您的照片或视频太暗或颜色看起来失真,请尝试调整下它们的饱和度、对比度、亮度和色度。

Select CheesePreferencesImage.

Move the sliders to find the best settings for your webcam.

单击关闭,查看照片和视频是否看起来好一些了。

<gui>图像属性</gui>的各个选项(从左到右)分别是:应用亮度、对比度、色度和饱和度
亮度

增加亮度将会让照片和视频更亮。然而,如果您在暗室,增加照片亮度可能会让图片看起来噪点更多。

对比度

设置较高的对比度将增加暗色和亮色的差别。如果图片看起来有漂洗过的感觉,请尝试增大对比度。

色彩值

改变照片的色度将会给照片上色。如果照片看起来颜色不对劲(比如,太黄),请修改色度。

饱和度

减少饱和度,会让照片看起来色彩变淡。如果颜色太鲜艳,请减少饱和度。

usr/share/help-langpack/zh_CN/cheese/pref-resolution.page0000644000373100047300000000512312265343461025322 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 视频或照片的分辨率决定了内容中包含多少的细节。修改分辨率会影响到文件的尺寸。 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 改变摄像头的分辨率

分辨率更高,图片质量一般会更好,但是高分辨率的照片和视频占用的硬盘空间也会更多。尤其是高分辨率的视频文件,会占用很大的硬盘空间。

如果您想让照片占用较少的磁盘空间,可调低摄像头的分辨率。如果您想要更高质量的图片文件,就增大分辨率。要改变摄像头的分辨率:

Select CheesePreferencesWebcam.

从下拉菜单中选择其他分辨率。一些摄像头只支持一种分辨率,所以您可能无法选择。

Press Close.

usr/share/help-langpack/zh_CN/cheese/pref-flash.page0000644000373100047300000000411412265343461024213 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 拍照时禁用屏幕闪光。 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 禁用闪光灯

当您使用茄子拍照时,电脑屏幕会短暂变白。这会提供额外的亮光。

To disable this feature, select CheesePreferencesCapture and uncheck Fire Flash.

usr/share/help-langpack/zh_CN/cheese/photo-save.page0000644000373100047300000000447312265343461024261 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 将照片或视频保存到另一文件夹。 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 保存照片或视频

默认情况下,茄子将照片和视频文件保存到您的主目录下的图片视频文件夹。

要将照片保存到另一位置,请在照片集里右键点击它,选择另存为。然后,选择您想要保存该照片的位置。

或者,通过文件管理器打开想要保存照片的文件夹,然后将照片从照片集拖入该文件夹。

照片的一份新副本将保存到新位置。原来那份将留在图片Webcam视频Webcam文件夹中。

usr/share/help-langpack/zh_CN/cheese/photo-delete.page0000644000373100047300000000515512265343461024563 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 移除不想再保留的照片和视频。 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 删除照片或视频

如果您不想再保存某些照片或视频,可以永久删除它:

茄子窗口底部的照片集里面找到您想要删除的照片或视频。

右键点击,选择删除。或者,单击想要删除的照片或视频,选中后按下 Delete 键。

此时,程序将询问您是否真的要永久删除它,单击删除确认。已删除的照片将无法恢复。

如果您不确定是否要永久删除这些照片或视频,您可以右键点击它,选择移入回收站。这会将它移动到计算机的回收站文件夹。

茄子没有自己单独的回收站文件夹,您无法在茄子软件中来访问计算机上的回收站文件夹。

usr/share/help-langpack/zh_CN/cheese/pref-countdown.page0000644000373100047300000000415612265343461025144 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 移除倒计时可以立即拍摄照片。 arccos (L.Q) boyermoore@gmail.com 2009 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012 Wylmer Wang wantinghard@gmail.com 2012 禁用拍摄照片前的<gui>倒计时</gui>

By default, Cheese counts down from three before taking a photo. You can disable this feature by selecting CheesePreferencesCapture and unchecking Countdown.

usr/share/help-langpack/zh_CN/totem/index.docbook0000644000373100047300000015605712316541440023703 0ustar langpacklangpack00000000000000 ]>
<application>Totem 电影播放机</application>手册 2003 Chee Bin HOH 2009 Philip Withnall Totem 电影播放机是 GNOME 的媒体播放器,默认运行在 GStreamer 上,但也能运行在 xine 上。它支持多种音频视频解码,其中也包括 DVD。其功能包括 TV-out,全屏播放,字幕等等。 GNOME 文档项目 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. Chee Bin HOH GNOME Documentation Project cbhoh@gnome.org Baptiste Mille-Mathias GNOME Documentation project Update documentation baptiste.millemathias@gmail.org Philip Withnall Update documentation philip@tecnocode.co.uk Totem Movie Player Manual V2.0 August 2006 Chee Bin HOH cbhoh@gnome.org GNOME Documentation Project Totem Movie Player Manual V3.0 February 2009 Philip Withnall philip@tecnocode.co.uk GNOME Documentation Project 本手册描述的是 2.26 版的 Totem 电影播放机。 反馈 To report a bug or make a suggestion regarding the Totem Movie Player application or this manual, follow the directions in the GNOME Feedback Page. Totem Movie Player totem 介绍 Totem 电影播放机 是 GNOME 桌面的媒体播放器,基于 Gstreamer 多媒体框架和 Xine 库,您可用它播放电影或者音乐。 Totem 电影播放机提供如下功能: 支持多种视频音频文件。 多种缩放级别与纵横比,以及全屏视图。 定位和音量控制。 播放列表。 字幕支持。 完整键盘导航功能。 完善的插件设置,包含字幕下载器、YouTube 浏览器和光盘刻录工具。 Totem 电影播放机还有一些附加功能,如: GNOME 视频缩略图生成器。 GNOME 音频预听。 Nautilus 属性标签页。 入门 要启动<application>Totem 电影播放机 </application> 您可以通过如下几种方式启动 Totem 电影播放机 应用程序 菜单 Choose Sound & Video Movie Player . 命令行 要从命令行启动 Totem 电影播放机,请输入下面的命令,然后按回车 totem 要查看其它可用的命令行选项,请输入 totem --help,然后按回车 当您启动 <application>Totem 电影播放机</application>时 当您启动 Totem 电影播放机,显示下面的窗口。
<application>Totem 电影播放机</application>启动界面 Shows Totem Movie Player main window with sidebar opened on playlist. Contains menubar, display area, sidebar, elapsed time slider, seek control buttons, volume slider and statusbar.
Totem 电影播放机界面包含下面几个元素: 菜单栏。 Totem 电影播放机菜单栏里的菜单包括您需要的全部功能。 显示区。 显示区显示影像或者音乐可视化效果。 侧边栏。 侧边栏可显示播放文件属性,并显示为播放列表。它也可以用于多种插件,如 MythTV,Youtube 和视频搜索插件。它们可以通过单击侧边栏顶部的下拉菜单选择。 时间滑块。 时间滑块指示正在播放的电影或者歌曲已播放的时间。同时您可以通过拖拽进度条上的时间滑块或者点击进度条上的某个位置来跳转或回放影音文件。 播放控制按钮。 播放控制按钮能够让您转到下一个或上一个曲目,并能暂停或播放影音文件。 音量按钮。 音量按钮能够调整音量。 状态栏。 状态栏显示正在播放的电影或歌曲的状态信息
用法 打开文件 To open a video or an audio file, choose CtrlO Movie Open . The Select Movies or Playlists dialog is displayed. Select the file or files you want to open, then click OK. 您可以从另外一个应用程序中,如文件管理器,将一个文件拖拽到 Totem 电影播放机窗口中。若把文件拖到显示区,那么该文件会取代现有的播放列表并立即开始播放。若拖拽文件到侧边栏中的播放列表处,那么该文件会添加到现有播放列表。 Totem 电影播放机将会打开文件并播放电影或音乐。 Totem 电影播放机会在窗口的标题栏及侧边栏上的播放列表中显示电影或音乐的标题。 如果您试图打开一个 Totem 电影播放机无法识别格式的文件,那么将会显示一个错误信息。大多数情况下,该错误会是因为未安装合适的解码器造成的。关于获取解码器的信息,可在如下网站获得Totem 电影播放机 网站 您可以在 Nautilus 中双击影音文件,以便在Totem 电影播放机窗口中打开。 打开位置 To open a file by URI (location), choose CtrlL Movie Open Location . The Open Location dialog is displayed. Use the drop-down combination box to specify the URI you would like to open (it lists URIs which have previously been opened) – or type one in directly – then click on the Open button. 如果粘贴板中已有一个URL,它会被自动粘贴到组合框中。 播放电影( DVD 或 VCD 光盘) Insert the disc in the optical device of your computer, then choose MoviePlay Disc . To eject a DVD or VCD, choose CtrlE Movie Eject . 暂停电影或音乐 To pause a movie or song that is playing, click on the Shows pause button. button, or choose CtrlSpace Movie Play / Pause . You may also use the P key to pause or play a movie. To resume playing a movie or song, click on the Shows play button. button again, or choose CtrlSpace Movie Play / Pause . 查看影音文件属性 To view the properties of a movie or song, choose View Sidebar to make the sidebar appear, and choose Properties in the drop-down list at the top of the sidebar. 定位影音文件 要定位影音文件,可以使用如下方法: 快进 To skip forward through a movie or song, choose Right Go Skip Forward . 快退 To skip backwards through a movie or song, choose Left Go Skip Backwards . 跳转到某时刻 To skip to a specific elapsed time in the movie or song, choose CtrlK Go Skip to . The Skip to dialog is displayed. Use the spin box to specify the elapsed time (in seconds) to skip to, then click OK. 微调框允许使用更符合人类习惯的说法,您可以输入“小时:分钟:秒”、“分钟:秒”或者”秒”这三种格式,来定位播放位置。 转到下一电影或歌曲 To move to the next movie or song, choose AltRight Go Next Chapter/Movie or click on the Shows a seek next button button. 转到前一电影或曲目 To move to the previous movie or song, choose AltLeft Go Previous Chapter/Movie or click on the Shows a seek previous button button. 更改缩放系数 更改视频尺寸 要更改显示区域的缩放系数,使用下面的方法: To zoom to fullscreen mode, choose F11 ViewFullscreen. You can also use the F key to toggle fullscreen mode. To exit fullscreen mode, click on the Leave Fullscreen button or press Esc, F11 or F. To change the size of the original movie or visualization, choose Ctrl0 ViewFit Window to Movie and choose a scale ratio. 更改视频纵横比 To switch between different aspect ratios, choose A View Aspect Ratio . 调节声音 To increase the volume, choose Up Sound Volume Up . To decrease the volume, choose Down Sound Volume Down . 您也可以使用音量控制按钮:点击音量按钮并用滑块来选择音量大小。 让窗口总是在最前端 To make the Totem Movie Player window always on top of other application windows, choose Edit Plugins . Select the Always on Top plugin to enable it. The Totem Movie Player window will now stay on top of all other windows while a movie is playing, but not while audio or visualizations are playing. 要取消窗口总是位于前端的设置,请禁用插件总是位于顶端。参见 以获取更多信息。 显示或隐藏控制面板 To show or hide the Totem Movie Player window controls, choose CtrlH View Show Controls , or press the H key. You can also right-click on the Totem Movie Player window, then choose CtrlH Show Controls from the popup menu. 如果显示控制面板选项被选中, Totem 电影播放机 窗口会显示菜单栏,时间滑块,播放控制按钮,音量滑块和状态栏。如果显示控制面板选项未选中,程序会隐藏它们只留下显示区域。 管理播放列表 显示或隐藏播放列表 To show or hide the playlist, choose ViewSidebar or click on the Sidebar button, and choose Playlist on the top of the sidebar. 管理播放列表 You can use the Playlist dialog to do the following: To add a track or movie To add a track or movie to the playlist, click on the Add button. The Select Movies or Playlists dialog is displayed. Select the file that you want to add to the playlist, then click Add. To remove a track or movie To remove a track or movie from the playlist, select the item or items to remove from the playlist, then click on the Remove button. To save the playlist to a file To save the playlist to a file, click on the Save Playlist button. The Save Playlist dialog is displayed; specify the filename as which you want to save the playlist, and click Save. To move a track or movie up the playlist To move a track or movie up the playlist, select the item from the playlist, then click on the Move Up button. To move a track or movie down the playlist To move a track or movie down the playlist, select the item from the playlist, then click on the Move Down button. 选择或取消重复播放模式 要启用或停用重复播放模式,选择编辑重复模式 选择或取消随机播放模式 要启用或停用随机播放模式,请选择编辑随机模式 选择字幕 要选择字幕语言,选择查看字幕,并选择需要的字幕语言。 要停止显示字幕,选择查看字幕 默认情况下,Totem 电影播放机将会把字幕语言设定为与计算机当前所用语言一致。 如果找到一个字幕文件,与当前播放视频的名称相同,并具有如下扩展名,asc, txt, sub, srt, smi, ssaass,Totem 电影播放机 会自动载入并显示视频字幕。 如果文件包含的字幕文件与正在播放的视频不同名,您可以右击播放列表里的视频项目并从快捷菜单中选择选择文本字幕 读取正确的字幕文件。您也可以通过查看选择文本字幕菜单找出要使用的字幕。 使用字幕下载器插件,也可从 OpenSubtitle 服务下载字幕。参看 获得更多信息。 截图 To take a screenshot of the movie or visualization that is playing, choose Edit Take Screenshot . The Save Screenshot dialog is displayed. Choose a location and insert the filename as which you want to save the screenshot, then click on the Save button to save the screenshot. Totem 电影播放机会在保存截图左侧显示将要保存的截图预览。 创建截图画册 To create a gallery of screenshots of the movie or visualization that is playing, choose Edit Create Screenshot Gallery . The Save Gallery dialog is displayed. Choose a location and insert the filename as which you want to save the gallery image, then click on the Save button to save the screenshot. 您可能在截图宽度标签下指定自已画册的截图宽度,默认宽度是 128 像素。 您可以指定画册里截图的数量。默认地,截图数量是基于电影长度估算而得;尽管通过取消选择估算截图数量复选框,这个数字可能被无视。在截图数量微调框处输入新的数字。 插件 Totem 电影播放机有许多以插件形式实现的功能——仅当需要时才加载的软件模块。 启用插件 要查看已安装插件的列表,选择编辑插件。此时会弹出配置插件对话框。左侧是所有已安装插件的列表,右侧是当前选中插件的描述。对于有配置选项的插件,在右侧会有一个激活的配置按钮。 要启用一个插件, 仅需选中插件列表中名称左侧的复选框,插件会被立即载入。如果载入插件发生错误,将会随即显示一个错误对话框。 要停用一个插件,取消选择插件旁的复选框。即使Totem 电影播放机关闭,插件仍会保持启用或者停用的状态。 总是位于前面 当启用,总是位于前面插件将会强制 Totem 电影播放机在播放电影时窗口始终位于所有其它窗口的前面,但这不不包含音频或可视化效果播放时的情况。停用窗口一直在前功能,只需停用插件即可。 Coherence DLNA/UPnp 客户端 Coherence DLNA/UPnP 客户端插件允许 Totem 电影播放机 在本地网络上播放 UPnP 媒体服务器(如 Coherence 服务器)目录上的多媒体资源。 Coherence DLNA/UPnP 客户端插件启用后,选择 F9查看侧边栏 或者点击侧边栏按钮显示侧边栏。从侧边栏顶部的下拉列表里选择 Coherence DLNA/UPnP 客户端即可显示 Coherence DLNA/UPnP 客户端侧边栏。 树形列表将显示所有可用的媒体服务器。点击服务器将展开显示该服务器提供服务的媒体类型,单击媒体文件夹会展开可用多媒体文件列表,双击媒体文件将会加入该文件到 Totem 电影播放机的播放列表中并播放它。您可能有选择地右击一个文件并且选择播放或者队列菜单,立即播放文件或者分别把它加入到播放列表。 如果媒体服务器允许,那么从文件的右键快捷菜单中选择删除允许您删除媒体服务器上的文件。 屏幕涂鸦 屏幕涂鸦插件允许您在播放电影时使用Gromit 程序在电影图像上面绘图。当然您必须启用插件之前安装 Gromit 程序 — 请查阅您的操作系统文档中有关如何安装 Gromit 的信息。 随着插件启用,按快捷键 CtrlD 开关 Gromit 程序。当 Gromit 程序启用时,您的指针会变成十字。在屏幕上绘图,就要在您松开鼠标左键之前,一直按住您的鼠标并且拖拽您的指针。再次按 CtrlD 关闭Gromit 要清理屏幕上的涂鸦,只需按下快捷键 CtrlE,或者关闭 Totem 电影播放机 Jamendo Jamendo 插件允许您收听在 Jamendo 服务上以创作共享协议下发布的音乐。 配置插件 Jamendo 插件可以被配置。当插件启用时,点击配置按钮,这时将会显示 Jamendo 插件配置对话框。在这里,您可以选择是否下载 OGG 或者 MP3 格式的歌曲(推荐开源格式 OGG );搜索时检索到的专辑数(如有较快的网络连接,可选择更多的专辑)。 一旦完成,点击确定 显示 Jamendo 侧边栏 启用Jamendo 插件后,选择 F9View侧边栏 或者单击侧边栏按钮显示侧边栏。从顶部下拉列表选择 Jamendo 即可显示 Jamendo 侧边栏。 音乐搜索 Jamendo 侧边栏顶部的搜索框中输入您的搜索条件。您可以通过艺术家或者标签来搜索。单击搜索按钮即可开始搜索。 搜索结果将以树状视图显示在侧边栏的搜索结果页中,并且可以用侧边栏底部的箭头状按钮浏览详细信息,如果您点击一个专辑,该专辑将会展开它的曲目。再点击该专辑,曲目会被收起 选中艺术家,您可以点击 Jamendo 专辑页按钮打开 Jamendo 网站上的专辑页面。从专辑的目录菜单中点击专辑或者选择添加到播放列表,将用这个专辑里的所有曲目取代您播放列表并且通过 Jamendo 的网站从第一首曲目开始在线收听该专辑。单独双击一首曲目将会用这首曲目取代播放列表。 流行专辑和最新发布 查看Jamendo侧边栏下的流行页面将从 Jamendo 取回一份流行专辑列表,可以做为搜索结果播放。查看最新发布页类似地会从 Jamendo取回一份最新专辑列表。 本地搜索 本地搜索 插件允许您在 Totem 电影播放机中搜索计算机可播放的影音文件。启用这个插件,选择 F9查看侧边栏或者单击侧边栏按钮显示侧边栏。点击侧边栏顶部的下拉菜单选择本地搜索显示本地搜索侧边栏。 在侧边栏顶部的搜索框中输入您的搜索条件并点击查找。您的搜索条件可能包含 * 之类的通配符,* 号匹配任意字符。例如搜索 *.mpg 将查找所以扩展名为 .mpg 的影音文件。 可以利用侧边栏底部的后退前进按钮浏览搜索结果。并且您可以通过微调框跳输入数字页码跳转到指定页。 发布播放列表 发布播放列表插件允计在您的本地网络上发表播放列表,允许其它计算机接入并播放它们。 配置插件 The Publish Playlist plugin can be configured. Click on the Configure button when enabling the plugin, and the configuration dialog will be displayed. Here, you can change the name which will appear for your playlist share. The following strings will be replaced when playlists are published: %a Replaced with the program's name: Totem Movie Player. %h Replaced with your computer's host name. %u Replaced with your username. %U Replaced with your real name. %% Replaced with a literal percent sign. 当您网络中传播播放列表时,如果您希望加密您共享列表,可以勾选使用加密传输协议复选框。 一旦您决定了,单击关闭 发布播放列表 插件启用后,您无需明确地发布播放列表;他们会像一个 Zeroconf 站点一样自动地在网络上可用。 浏览网上邻居 查看网络中其它人的播放列表,从侧边栏顶部的下拉列表中选择Neighborhood。如果播放列表已在网络中发布,侧边栏中会列出。双击一播放列表即载入并在您的计算机上播放。 字幕下载器 字幕下载器插件允许您从 OpenSubtitles 服务中查找并下载字幕文件。 字幕下载只能用于本地电影文件;不能用于音频文件、DVD、DVB 流媒体、VCD 或 HTTP 流媒体。要为正在播放的电影搜索字幕,选择查看下载电影字幕后,便会显示下载电影字幕对话框。 在对话框顶部下拉列表中选择您所期望的字幕语言,然后点击查找按钮搜索当前电影字幕。字幕的查找是根椐电影的内容,而不是根椐字的文件名或者标签。 在对话框的中间,搜索结果以树状视图列出。现在,字幕只能通过重新载入电影才能使用。因此在您选定您希望下载的字幕后,点击带字幕播放按钮后下载字幕并且重新载入电影。 下载的字幕文件会被缓存(默认放在 ~/.cache/totem/subtitles) ,所以再次播放这个电影时字幕不需重新下载。当下载了电影的新字幕时,先前下载的字幕会被删除。 缩略图 缩略图插件,设置 Totem 电影播放机的主窗口图标为当前播放电影的缩略图,并前当新电影被载入时更新图标。 如果现有电影的缩略图不存在(或者您正在播放音频文件),那么主窗口图标会重置为Totem 电影播放机标志。 视频光盘录制 视频光盘录制器插件使您能够将现有播放列表的内容运用Brasero刻录到 DVD 或 VCD 光盘。 To burn the current playlist, choose MovieCreate Video Disc. A Brasero dialog will be displayed, giving options for converting the movies to the appropriate format and burning them to disc. For more information, see the Brasero documentation. YouTube 浏览器 YouTube 浏览器插件允许您浏览并搜索YouTube,并在Totem 电影播放机中直接播放。插件启用后,选择F9查看侧边栏或者点击侧边栏按钮显示侧边栏。从侧边栏顶部下拉列表中选择YouTube标签以显示YouTube侧边栏。 要搜索 YouTube视频,在侧边栏的顶部搜索框中输入要搜索的条件,然后点击查找按钮。搜索结果会以树状视图在下面列出。更多结果会自动地在您向下滚动列表时载入。 要播放视频,双击搜索结果列表,或者从它的目录菜单中选择添加到播放列表。当视频被播放,会在YouTube侧边栏的Related Videos页自动载入相关视频列表中。 YouTube 视频能通过它的目录菜单选择在浏览器中打开菜单打开。这样会在 YouTube 网站原始位置打开视频。 D-Bus 服务 D-Bus 服务插件使Totem 电影播放机实现在 D-Bus 会话总线上广播正在播放曲目的消息通知。应用程序,如 Gajim,能够监听到通知并做出相应的应答,例如,更新您的即时通信状态显示Totem 电影播放机中正在播放的视频。 首选项 To modify the preferences of Totem Movie Player, choose Edit Preferences . 常规 网络 连接速度下接列表中选择网络连接速度。 文本字幕 自动载入字幕文件:选择该选项,当电影播放时自动载入和电影文件名相同的字幕文件。 字体:这个选项改变字幕显示所使用的字体。 编码:这个选项改变字幕显示所使用的编码。 显示 显示 当新视频载入时,如果您想Totem 播放器依照该视频尺寸自动调整窗口大小,那么请选择调整大小选项。 当音频文件播放时,如果您想使屏保开始起作用,那么请选择屏保选项。在屏保开始起作用时,一些集成扬声器的显示器可能会停止正在播放的音乐。 视觉效果 可视化:选取该选项会在音频文件播放时显示视觉效果。 视觉效果类型: 从下拉列表中选择视觉效果的类型。 视觉效果尺寸: 从下拉列表中选择视觉效果大小。 颜色平衡 亮度: 使用滑块调节亮度。 对比度: 使用滑块调节对比度。 饱和度: 使用滑块调节饱和度。 色调: 使用滑块调节色调。 您可能会使用恢复默认按钮来重置色彩平衡控制到默认位置。 音频 音频输出 音频输出类型下拉列表中选择音频输出类型。 关于 <application>Totem 电影播放机</application> Totem 电影播放机由 Bastien Nocera (hadess@hadess.net)编写,Julien Moutte (julien@moutte.net) 和 Guenter Bartsch (guenter@users.sourceforge.net)编写 GStreamer 后端。 查询更多关于 Totem 电影播放机信息,请访问 Totem 电影播放机 网站 To report a bug or make a suggestion regarding the Totem Movie Player application or this manual, follow the directions in the GNOME Feedback Page. This program is distributed under the terms of the GNU General Public license as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. A copy of this license can be found at this link, or in the file COPYING included with the source code of this program.
usr/share/help-langpack/zh_CN/totem/legal.xml0000644000373100047300000000672112316541440023030 0ustar langpacklangpack00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. usr/share/help-langpack/zh_CN/gnome-system-log/log-close.page0000644000373100047300000000157512300453751026024 0ustar langpacklangpack00000000000000 Remove the log you are currently viewing from the side pane. Ekaterina Gerasimova kittykat3756@googlemail.com

Creative Commons Share Alike 3.0

Close log

Close the log that you are currently viewing by pressing CtrlW, or by clicking FileClose. This removes it from the side pane until you open the log again.

usr/share/help-langpack/zh_CN/gnome-system-log/log-view.page0000644000373100047300000000214612300453751025664 0ustar langpacklangpack00000000000000 Open and view logs. Ekaterina Gerasimova kittykat3756@googlemail.com

Creative Commons Share Alike 3.0

Open log

Open logs by clicking FileOpen. Your opened logs will be displayed in the side pane, to the left of the main area. You can view a log in the side pane by clicking it.

You can expand some logs. This will show you a list of dates. By clicking one of the dates, you can view only the log lines from that date, instead of the whole log.

The logs you have open when you quit the log viewer will be opened when you start it up again.

usr/share/help-langpack/zh_CN/gnome-system-log/introduction.page0000644000373100047300000000267712300453751026665 0ustar langpacklangpack00000000000000 Introduction to the GNOME System Log. Ekaterina Gerasimova kittykat3756@googlemail.com

Creative Commons Share Alike 3.0

介绍

Log File Viewer is a graphical, menu-driven viewer that you can use to view and monitor your system logs. Log File Viewer comes with a few functions that can help you manage your logs, including a log monitor and log statistics display.

Log File Viewer is useful if you are new to system administration because it provides an easier, more user-friendly display of your logs than a text display of the log file. It is also useful for more experienced administrators, as it contains a monitor to enable you to continuously monitor crucial logs.

Log File Viewer is useful only to those who have access to the system log files, which generally requires root access.

usr/share/help-langpack/zh_CN/gnome-system-log/index.page0000644000373100047300000000044112300453751025236 0ustar langpacklangpack00000000000000 Log File Viewer Help
Working with the <app>Log File Viewer</app>
usr/share/help-langpack/zh_CN/gnome-system-log/log-search.page0000644000373100047300000000326312300453751026160 0ustar langpacklangpack00000000000000 Search the text in the log that you are currently viewing. Ekaterina Gerasimova kittykat3756@googlemail.com

Creative Commons Share Alike 3.0

Search log

To search the log you are currently viewing:

Show the Find bar by pressing CtrlF, or by clicking ViewFind. The bar will be shown below the log.

Enter your search term into the field and press Enter to see the first result.

The search is case sensitive.

Use the Find Previous and Find Next buttons to browse through the results.

If you can not see the result highlighted, try scrolling to the left.

Press Esc to hide the find bar once you are finished with the search.

You can only hide the find bar if you are currently focused on the search field. The bar will hide itself if you view another log.

usr/share/help-langpack/zh_CN/gnome-system-log/pref-font-size.page0000644000373100047300000000237712300453751027011 0ustar langpacklangpack00000000000000 Increase or decrease the size of the text. Ekaterina Gerasimova kittykat3756@googlemail.com

Creative Commons Share Alike 3.0

Change font size

You can increase, decrease and reset the font size that the log is displayed in:

Increase font size

Click ViewZoom In, or press Ctrl+

Decrease font size

Click ViewZoom Out, or press Ctrl-

Reset to default size

Click ViewNormal Size, or press Ctrl0

usr/share/help-langpack/zh_CN/gnome-system-log/log-copy.page0000644000373100047300000000172512300453752025667 0ustar langpacklangpack00000000000000 Copy text from the log. Ekaterina Gerasimova kittykat3756@googlemail.com

Creative Commons Share Alike 3.0

Copy log

Highlight the section of the log that you want to copy with the cursor and press CtrlC, or click EditCopy.

You can press CtrlA, or click EditSelect All, to select all the text in the log which you are currently viewing.

usr/share/help-langpack/zh_CN/gnome-system-log/log-filter.page0000644000373100047300000000646012300453752026203 0ustar langpacklangpack00000000000000 Include or exclude shown lines using regular expressions. Ekaterina Gerasimova kittykat3756@googlemail.com

Creative Commons Share Alike 3.0

Filter log

The log viewer allows you to filter log content based on regular expressions. To set up or manage a new filter:

Open the filter manager dialog by clicking Filters: Manage Filters.

Click Add to add a new filter, or select an existing filter and click Properties to edit it.

Fill in the form or edit the fields that you wish to change:

Name:

The identifier for the filter

Regular Expression:

What the filter will filter for

Highlight:

This option emphasizes the line containing the regular expression

Background:

This is the font color

The default font color is black, which does not emphasize the text.

Foreground:

This is the highlight color

The default highlight color is black, which shows solid black lines as a result, so it would be wise to change it.

Hide:

This option hides the lines containing the regular expression from the shown log

Click Apply to save the new filter or save changes to an existing one

Back at the filter manager dialog, click Close to apply the changes.

Check the box next to the name of the filter that you want to enable in Filters:. If you want to view only the filters which have Highlight enabled and are checked, check Filters:Show matches only.

If there is a conflict between a hidden and a highlighted filter, the line many show as an empty white line.

If you uncheck a filter while viewing only matches, the log will show the lines without any formatting, regardless of whether they were hidden or highlighted before. The filter should reset when you check a highlighted filter.

usr/share/help-langpack/zh_CN/evince/duplex-4pages.page0000644000373100047300000000243212307647151024664 0ustar langpacklangpack00000000000000 04-Page Booklet 打印 4 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

4 页的小册子

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

按此顺序输入页码:4, 1, 2, 3

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

单击 打印

usr/share/help-langpack/zh_CN/evince/reload.page0000644000373100047300000000167412307647151023457 0ustar langpacklangpack00000000000000 如果您查看文档时有其他程序对其进行了修改,您的文档将会被自动重新载入。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

为什么一直在重载文档?

If the Document Viewer detects that the document you have open has changed (perhaps because another program has modified it), it will automatically reload the document and display the most recent version for you.

如果您查看时文档被删除,文档将保持打开。

usr/share/help-langpack/zh_CN/evince/annotations-save.page0000644000373100047300000000235512307647151025477 0ustar langpacklangpack00000000000000 怎样保存您的注释。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

保存一份注释过的 PDF 的副本

要保存您的注释过的 PDF 的副本以供未来使用 文档查看器 或其他 支持注释 的文档查看器查看:

FileSave a copy

选择一个文件名以及要保存文件的文件夹,然后单击 保存。该 PDF 将保存在您选择的文件夹内。

Annotations are added according to the PDF specification. Therefore, most PDF readers should be able to read them. The Okular document viewer does not support them. Adobe Reader is known to work.

usr/share/help-langpack/zh_CN/evince/singlesided-9-12pages.page0000644000373100047300000000427512307647151026111 0ustar langpacklangpack00000000000000 09-Page or 12-Page Booklet 打印 9,10,11 或 12 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

9 至 12 页的小册子

如果您有 9,10 或 11 页的 PDF 文档您应该加入适当数量的空白页以使其变成 12 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 PDF。

使用 PDF-Shuffler 将空白页合并到您的 PDF 文档末尾。

要打印文档:

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

按此顺序输入页码:12, 1, 2, 11, 10, 3, 4, 9, 8, 5, 6, 7

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 单面

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

打印 菜单中,选择 奇数页

单击 打印

当所有的页都被打印后,将页面翻转然后放回打印机。

单击 文件打印

选择 页面设置 标签页。

打印 菜单中,选择 偶数页

单击 打印

usr/share/help-langpack/zh_CN/evince/synctex-beamer.page0000644000373100047300000000352212307647151025131 0ustar langpacklangpack00000000000000 同 LaTeX 的 Beamer 类一起使用 SyncTeX。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

Beamer 和 SyncTeX

Beamer 是一个用于创建放映幻灯片的LaTeX类。

您可以在一个 Beamer-LaTeX 演示文档中执行与对其他使用 SyncTex 一起编译的 TeX 文件 搜索 相类似的向前和向后搜索。然而该搜索将会把您带到相关的框架(幻灯片),而不是相当的文本行。详细的区别如下。

usr/share/help-langpack/zh_CN/evince/duplex-13pages.page0000644000373100047300000000634112307647151024747 0ustar langpacklangpack00000000000000 打印 13 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

13 页的小册子

单击 文件打印

选择 常规 标签页。

范围 下,选择 页面 并输入:1

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从右到左

单击 打印

一旦页面打印好了,取出纸张并放回打印机,注意正确放置它(第 2 页将会在背面上打印)。

再次单击 文件打印

选择 常规 标签页。

范围 下,选择 页面 并输入:2

选择 页面设置 标签页并在 页面顺序 菜单中,选择 从左到右

单击 打印

单击 文件打印

常规 标签页里,在 页面 中输入 3。

页面设置 标签页里, 在 页面顺序 选择 从右到左

单击 打印

一旦第 3 页打印完成,将纸张放回打印机并注意正确放置它(第 4 和 13 页将会在背面上打印)。

再次单击 文件打印

常规 标签页中的 页面 选择框中输入 4,13。

页面设置 标签页里, 在 页面顺序 选择 从左到右

单击 打印

再次单击 文件打印

页面 中输入 8, 9, 10, 7, 6, 11, 12, 5 并将 页面顺序 设置成 从左到右

单击 打印

打印 16 页的小册子更容易。您可能希望在您的 PDF 文档后增加 3 页空白页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 3 页的 PDF。

使用 PDF-Shuffler 将空白的 PDF 合并到您的 PDF 文档末尾。

按照下列步骤来打印一本 16 页的小册子。

usr/share/help-langpack/zh_CN/evince/toolbar.page0000644000373100047300000000444012307647151023645 0ustar langpacklangpack00000000000000 显示,隐藏 和 编辑 工具栏。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

工具栏
显示和隐藏工具栏

单击 查看工具栏

默认的工具栏仅包括基本工具:

可用来在页面之间 移动 的 上一页下一页

一个调节 缩放 级别的工具。>

页面选择 工具。

如果您倾向于不同的组合您可以 编辑 工具栏。

添加,移除和重新安排工具栏中的工具。

显示 工具栏。

单击 编辑工具栏

工具栏编辑器 包括不在工具栏中的项目和分隔符。

在工具栏中添加新项目:

将它们从工具栏编辑器中拖动到工具栏上。

从工具栏中移除项目:

将它们从工具栏中拖动到工具栏编辑器上。

要重新安排工具栏中的项目:

将它们拖动到工具栏上的新位置。

当您结束编辑工具栏后,点击工具栏编辑器窗口中的 关闭

usr/share/help-langpack/zh_CN/evince/duplex-6pages.page0000644000373100047300000000451012307647151024665 0ustar langpacklangpack00000000000000 06-Page Booklet 打印 6 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

6 页的小册子

单击 文件打印

选择 常规 标签页。

范围 下,选择 页面

按这样的顺序输入页码:6,3,4,5,2

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

单击 打印

一旦打印完成了,将第 2 页的纸张取出,将其放回打印机,注意正确放置它(第 1 页将会在背面上打印)

单击 文件打印

选择 常规 标签页。

范围 下,选择 页面 并输入:1

选择 页面设置 标签页。

页面顺序 菜单中,选择 从右到左

单击 打印

打印 8 页的小册子更简单。您可能希望在您的 PDF 文档后加上 2 页以使其变成 8 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 2 页的 PDF。

使用 PDF-Shuffler 将空白的 PDF 合并到您的 PDF 文档末尾。

按照下列步骤来打印 8 页的小册子。

usr/share/help-langpack/zh_CN/evince/singlesided-13-16pages.page0000644000373100047300000000433612307647151026166 0ustar langpacklangpack00000000000000 打印 13,14,15 或 16 页的小册子 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

13 至 16 页的小册子

如果您有 13,14 或 15 页的 PDF 文档您应该加入适当数量的空白页以使其变成 16 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 PDF。

使用 PDF-Shuffler 将空白页合并到您的 PDF 文档末尾。

要打印文档:

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

Type the numbers of the pages in this order: 16, 1, 2, 15, 14, 3, 4, 13, 12, 5, 6, 11, 10, 7, 8, 9

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 单面

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

打印 菜单中,选择 奇数页

单击 打印

当所有的页都被打印后,将页面翻转然后放回打印机。

单击 文件打印

选择 页面设置 标签页。

打印 菜单中,选择 偶数页

单击 打印

usr/share/help-langpack/zh_CN/evince/presentations.page0000644000373100047300000000336312307647151025104 0ustar langpacklangpack00000000000000 怎样放映幻灯片。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

幻灯片
Starting a presentation

要开始放映模式:

Open a file

单击 查看放映(或按下 F5)。

幻灯片将全屏播放。

在幻灯片中移动

Use the spacebar, , , or left mouse click to go to the next slide.

Use the , or right mouse click to go to the previous slide.

您也可以使用滚轮在幻灯片中向前或向后移动。

使用 Esc 退出放映模式。

Supported presentation file formats

下列文件格式可使用放映:

动画书归档 (.cbr and .cbz)

设备无关文件格式 (.dvi)

DjVu (.djvu, .djv)

OpenOffice 幻灯片 (.odp)

便携文档格式 (.pdf)

PostScript (.ps)

usr/share/help-langpack/zh_CN/evince/duplex-12pages.page0000644000373100047300000000237012307647151024744 0ustar langpacklangpack00000000000000 打印 12 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

12 页的小册子

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

按此顺序输入页码:12, 1, 2, 11, 10, 3, 4, 9, 8, 5, 6, 7

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

单击 打印

usr/share/help-langpack/zh_CN/evince/print-select.page0000644000373100047300000000224312307647151024613 0ustar langpacklangpack00000000000000 仅打印指定的页面,或某范围页面。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

仅打印某些页

仅打印来自文档的某些页:

单击 文件打印

在打印窗口中的 常规 标签页里的 范围 部分选择 页面

在文本框中输入您想打印的页码,使用逗号分隔,表示一段页面可用短破折号。

例如,如果您在 页面 文本框中键入 “1,3,5-7,9”,第 1,3,5,6,7 和 9 页将会被打印。

usr/share/help-langpack/zh_CN/evince/synctex-support.page0000644000373100047300000000201212307647151025403 0ustar langpacklangpack00000000000000 怎样添加对 SyncTeX 的支持。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

安装 SyncTeX

为了添加对 SyncTeX 的支持,下列软件包需要被安装:

texlive-extra-utils

gedit-plugins

gedit, 启用 SyncTex 插件:

单击 编辑首选项插件

单击 SyncTeX

usr/share/help-langpack/zh_CN/evince/singlesided-3-4pages.page0000644000373100047300000000417612307647151026024 0ustar langpacklangpack00000000000000 03-Page or 4-Page Booklet 打印 3 或 4 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

3 或 4 页的小册子

如果您有 3 页的 PDF 文档您应该加入一页空白页以使其变成 4 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 PDF。

使用 PDF-Shuffler 将空白页合并到您的 PDF 文档末尾。

要打印文档:

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

按此顺序输入页码:4, 1, 2, 3

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 单面

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

打印 菜单中,选择 奇数页

单击 打印

当所有的页都被打印后,将页面翻转然后放回打印机。

单击 文件打印

选择 页面设置 标签页。

打印 菜单中,选择 偶数页

单击 打印

usr/share/help-langpack/zh_CN/evince/default-settings.page0000644000373100047300000000236612307647151025472 0ustar langpacklangpack00000000000000 Save current settings as default for new documents. Sindhu S sindhus@live.in

Creative Commons Share Alike 3.0

Change default settings

When a document is opened for the first time, default settings, such as zoom and page view preferences, are applied. Any changes you make to these settings are saved for the document.

You can save the settings which you are currently using as default for all new documents by selecting Edit Save Current Settings as Default or press CtrlT.

The new default settings do not override settings of previously opened documents, they are applied only to documents opened for the first time.

usr/share/help-langpack/zh_CN/evince/singlesided-17-20pages.page0000644000373100047300000000435512307647151026166 0ustar langpacklangpack00000000000000 打印 17,18,19 或 20 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

17 至 20 页的小册子

如果您有 17,18 或 19 页的 PDF 文档您应该加入适当数量的空白页以使其变成 20 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 PDF。

使用 PDF-Shuffler 将空白页合并到您的 PDF 文档末尾。

要打印文档:

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

Type the numbers of the pages in this order: 20, 1, 2, 19, 18, 3, 4, 17, 16, 5, 6, 15, 14, 7, 8, 13, 12, 9, 10, 11

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 单面

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

打印 菜单中,选择 奇数页

单击 打印

当所有的页都被打印后,将页面翻转然后放回打印机。

单击 文件打印

选择 页面设置 标签页。

打印 菜单中,选择 偶数页

单击 打印

usr/share/help-langpack/zh_CN/evince/duplex-8pages.page0000644000373100047300000000244312307647151024672 0ustar langpacklangpack00000000000000 08-Page Booklet 打印 8 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

8 页的小册子

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

按这样的顺序输入页码: 8,1,2,7,6,3,4,5

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

单击 打印

usr/share/help-langpack/zh_CN/evince/commandline.page0000644000373100047300000000426012307647151024471 0ustar langpacklangpack00000000000000 Command line evince 命令可以打开任意数量的文件,并处在指定的页面和模式。 Phil Bull philbull@gmail.com Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

命令行

To start the Document Viewer from the command line, type evince. You can open a specific file by typing the filename after the evince command:

evince 文件.pdf

您可以通过在 evince 命令后输入以空格分隔的多个文件名来打开多个文件:

evince 文件1.pdf 文件2.pdf

文档查看器 也支持处理网络上的文件。举个例子,在 evince 命令后您可以直接给出文件的网址:

evince http://www.claymath.org/millennium/P_vs_NP/pvsnp.pdf
打开某个文档的指定的一页

您可以使用 --page-label 语句来打开某个文档的指定页。例如,要打开文档的第 3 页,您可以输入:

evince --page-label=3 文件.pdf

The page label should be in the same format as the page number displayed in the Document Viewer toolbar.

以全屏模式打开某个文档 evince --fullscreen 文件.pdf
以放映模式打开文档 evince --presentation 文件.pdf
以浏览模式打开某个文档 evince --preview 文件.pdf
usr/share/help-langpack/zh_CN/evince/openerror.page0000644000373100047300000000155712307647151024224 0ustar langpacklangpack00000000000000 打开某个文件时出错。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

为什么我无法打开某个文件?

If you try to open a document of a format that the document viewer does not recognize, you will get an "Unable to open document" error message. Click Close to return to the Document Viewer window.

usr/share/help-langpack/zh_CN/evince/annotations-disabled.page0000644000373100047300000000141012307647151026277 0ustar langpacklangpack00000000000000 注释只能被添加到 PDF 文件中。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

不能添加注释?

注释只能被添加到 PDF 文件中。如果您的文件不是 PDF 格式的,添加注释的选项将会变灰(禁用)。

usr/share/help-langpack/zh_CN/evince/textselection.page0000644000373100047300000000261212307647151025074 0ustar langpacklangpack00000000000000 当您复制文本时,粘贴的文本也许和您选定的并不一样。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

为何我选定的文本没有被正确复制?

如果您用 文档查看器 从一份文档中选中并复制一段文本,然后将它粘帖至另一个程序,文档的格式可能会改变。它同样可能包含同原来不同的字符。这通常发生在从 PDF 文档中复制多列文本时。

发生该问题是因为一些文档格式处理文本的方式。在文档中的实际文本与显示出来的并非一致。这就导致了复制的结果与期望的不一样。

不幸的是,并没有能真正修正这个问题的办法。一次少复制些文本,或把文本复制到文本编辑器也许能最小化这个问题。您可以找到文本编辑器通过单击 活动应用程序附件gedit

usr/share/help-langpack/zh_CN/evince/opening.page0000644000373100047300000000322712307647151023644 0ustar langpacklangpack00000000000000 怎样打开文档。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

打开一个文档

您可以使用下列方法中的任意一种打开文档:

文件管理器 中双击文件图标。

Double clicking opens PDF, PostScript, .djvu, .dvi and Comic Book Archive files in the Document Viewer by default.

右键单击 文件管理器 中的某个文件图标,单击 打开方式文档查看器

如果已经打开一个文档查看窗口,您可以:

文件管理器 中把一个文件图标拖到文档查看器窗口中。新文件将在新窗口中打开(假定该文件是文档查看器支持的文件类型)。

从菜单栏中选择 文件打开。在打开文档对话框中,选择您想打开的文件,然后单击 打开。文件将在新窗口中打开。

usr/share/help-langpack/zh_CN/evince/singlesided-5-8pages.page0000644000373100047300000000426112307647151026025 0ustar langpacklangpack00000000000000 05-Page or 4-Page Booklet 打印 5,6,7 或 8 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

5 至 8 页的小册子

如果您有 5,6 或 7 页的 PDF 文档您应该加入适当数量的空白页以使其变成 8 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 PDF。

使用 PDF-Shuffler 将空白页合并到您的 PDF 文档末尾。

要打印文档:

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

按这样的顺序输入页码: 8,1,2,7,6,3,4,5

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 单面

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

打印 菜单中,选择 奇数页

单击 打印

当所有的页都被打印后,将页面翻转然后放回打印机。

单击 文件打印

选择 页面设置 标签页。

打印 菜单中,选择 偶数页

单击 打印

usr/share/help-langpack/zh_CN/evince/license.page0000644000373100047300000000356412307647151023633 0ustar langpacklangpack00000000000000 Legal information. License

This work is distributed under a CreativeCommons Attribution-Share Alike 3.0 Unported license.

You are free:

<em>To share</em>

To copy, distribute and transmit the work.

<em>To remix</em>

To adapt the work.

Under the following conditions:

<em>Attribution</em>

You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).

<em>Share Alike</em>

If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.

For the full text of the license, see the CreativeCommons website, or read the full Commons Deed.

usr/share/help-langpack/zh_CN/evince/bug-filing.page0000644000373100047300000000406012307647151024224 0ustar langpacklangpack00000000000000 怎样以及在哪里汇报问题 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

汇报一个 <app>文档查看器</app> 的漏洞

文档查看器 是由一个志愿者社区维护的。欢迎您参与。如果您发现一个 问题您可以报告 漏洞 。为了报告漏洞,请点击 .

这是一个用户和开发者都可以对漏洞,程序崩溃和请求的功能增强进行归档的漏洞追踪系统。

要参加此系统您需要一个使您可以访问,汇报漏洞和做评论的帐号。您也需要注册以使您可以通过电子邮件获得关于您汇报的漏洞的状态更新。如果您还没有帐号,您可以点击 New Account 链接来创建一个。

一旦您拥有了一个帐户,请登录,然后点击 File a BugCoreevince。在汇报漏洞之前,请阅读 漏洞汇报向导,并请 浏览 以确定此漏洞是否已存在。

要汇报您的漏洞,请在 Component 中选择相应的部分。如果您不确定您的漏洞属于哪一部分,选择 general

如果您要求新的特性,请在 Severity 中选择 enhancement 菜单。填写摘要和描述后点击 Commit

您的汇报将会被给与一个 ID 号,当它被处理后它的状态将会被更新。

usr/share/help-langpack/zh_CN/evince/bookmarks.page0000644000373100047300000000131612307647151024172 0ustar langpacklangpack00000000000000 您可以像书签一样使用注释。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

书签

文档查看器 没有书签系统,但是您可以使用类似书签的 注释。

usr/share/help-langpack/zh_CN/evince/editing.page0000644000373100047300000000172512307647151023631 0ustar langpacklangpack00000000000000 您不能用 文档查看器 来编辑文件。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

我可以在文档查看器中编辑文档吗?

文档查看器 无法用于修改文档。您需要使用适合于您想要进行修改的文件类型的编辑程序。

PDF 和 PostScript (.ps) 文件通常不希望被编辑,但也有 PDF 编辑软件可用。举个例子说,试一试 pdfedit。

usr/share/help-langpack/zh_CN/evince/print-2sided.page0000644000373100047300000000177712307647151024521 0ustar langpacklangpack00000000000000 双面及每面多页打印。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

双面及每面多页打印布局

您可以在每张纸的两面进行打印:

单击 文件打印

转到打印窗口的 页面设置 标签页,从下拉列表中选择 双面 该选项。

您也能在纸张的每 上打印多于一页的文档。请使用 每面页数 选项。

usr/share/help-langpack/zh_CN/evince/forms.page0000644000373100047300000000227112307647151023331 0ustar langpacklangpack00000000000000 使用可填写表单。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

表格

填写一份交互式表格时,您可以通过在一个区域上用鼠标点击而在不同区域间跳转。当您完成填写一块文本区域时,请按下 回车

您可以在一个可滚动的列表框中通过在列表框上点击和滚动来选择。

可能表格的有些部分您需要在打印表格后手动填写。比如说,您可能在某些地方画圈,或者是在一个或多个地方签名。如果您想通过电脑做此事,您可以试一试 Xournal。

usr/share/help-langpack/zh_CN/evince/duplex-7pages.page0000644000373100047300000000420312307647151024665 0ustar langpacklangpack00000000000000 07-Page Booklet 打印 7 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

7 页的小册子

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

按此顺序输入页码:7,2,1

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从右到左

单击 打印

单击 文件打印

选择 常规 标签页。

按此顺序输入剩下的页码:6,3,4,5

选择 页面设置 标签页。

页面顺序 菜单中,选择 从左到右

单击 打印

打印 8 页的小册子更简单。您可能希望在您的 PDF 文档后加上 1 页以使其变成 8 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 PDF。

使用 PDF-Shuffler 将空白的 PDF 合并到您的 PDF 文档末尾。

按照下列步骤来打印 8 页的小册子。

usr/share/help-langpack/zh_CN/evince/finding.page0000644000373100047300000000304012307647151023614 0ustar langpacklangpack00000000000000 在文档中查找词语。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

在文档查找文本

单击 编辑查找 或按下 CtrlF/ 可显示一个搜索框。

输入您想搜索的词语,搜索将自动开始。

查找上一个查找下一个 按钮让您从一个搜索结果跳到另外一个。

要隐藏搜索条,请单击文档中的任何地方。

如果您搜索的词语在整个文档中都没有出现,将会说 没有找到。不管怎样,如果它在文档中出现了至少一次,有消息将会告诉您在每一页上您找到的词语出现了几次。这是很显然的如果您从一个结果跳到另一个结果或在文档中滚动。

只有在 PDF 文档是可搜索时。有些 PDF 文档是不可搜索的是因为它们的文本是编码成图片存储在文档中的。

usr/share/help-langpack/zh_CN/evince/singlesided-npages.page0000644000373100047300000000462012307647151025750 0ustar langpacklangpack00000000000000 打印超过 20 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

n 页的小册子

n 是 4 的倍数。

如果您的 PDF 文档的页数不是 4 的倍数,您应该加入适当数量(1,2 或 3)的空白页以使页数成为 4 的倍数。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 PDF。

使用 PDF-Shuffler 将空白页合并到您的 PDF 文档末尾。

要打印文档:

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

Type the numbers of the pages in this order: n, 1, 2, n-1, n-2, 3, 4, n-3, n-4, 5, 6, n-5, n-6, 7, 8, n-7, n-8, 9, 10, n-9, n-10, 11, 12, n-11... ...until you have typed n-number of pages.

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 单面

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

打印 菜单中,选择 奇数页

单击 打印

当所有的页都被打印后,将页面翻转然后放回打印机。

单击 文件打印

选择 页面设置 标签页。

打印 菜单中,选择 偶数页

单击 打印

usr/share/help-langpack/zh_CN/evince/print-order.page0000644000373100047300000000332412307647151024450 0ustar langpacklangpack00000000000000 使用逐份和逆序选项使页面按照顺序打印。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

使打印出的副本有正确次序
反转

打印机通常首先打印第一页,最后一页最后打印,因此当您拾取打印页时,页面会以相反的顺序结束。

要反转顺序:

FilePrint

在打印窗口的 常规 标签页,在 副本 下选择 逆序。最后一页将首先打印,以此类推。

逐份打印

如果您要打印多于一份的文档,输出结果默认将会按照页码来分组。(如:所有副本的第一页出来,然后是所有副本的第二页,等等)逐份打印将会让每一份副本以它的页面组合在一起一份一份地打印出来。

要逐份打印:

单击 文件打印

在打印窗口的 常规 标签页,在 副本数 下选择 逐份

usr/share/help-langpack/zh_CN/evince/duplex-16pages.page0000644000373100047300000000254112307647151024750 0ustar langpacklangpack00000000000000 打印 16 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

16 页的小册子

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

Type the numbers of the pages in this order: 16, 1, 2, 15, 14, 3, 4, 13, 12, 5, 6, 11, 10, 7, 8, 9

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

单击 打印

usr/share/help-langpack/zh_CN/evince/duplex-15pages.page0000644000373100047300000000206512307647151024750 0ustar langpacklangpack00000000000000 打印 15 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

15 页的小册子

打印 16 页的小册子更容易。您可能希望在您的 PDF 文档后增加 1 页以使其成为 16 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 PDF。

使用 PDF-Shuffler 将空白页合并到您的 PDF 文档末尾。

按照下列步骤来打印一本 16 页的小册子。

usr/share/help-langpack/zh_CN/evince/introduction.page0000644000373100047300000000127312307647151024725 0ustar langpacklangpack00000000000000 Evince 文档查看器 介绍。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

简介

Evince 是一个文档查看器。您可以查看的文件类型可参见 列表。

usr/share/help-langpack/zh_CN/evince/duplex-3pages.page0000644000373100047300000000336412307647151024670 0ustar langpacklangpack00000000000000 03-Page Booklet 打印 3 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

3 页的小册子

单击 文件打印

选择 常规 标签页。

范围 下,选择 页面。按此顺序输入页码:3,2,1

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从右到左

单击 打印

打印 4 页的小册子更简单。您可能希望在您的 PDF 文档后加上 1 页以使其变成 4 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 PDF。

使用 PDF-Shuffler 将空白页合并到您的 PDF 文档末尾。

按照下列步骤来打印 4 页的小册子。

usr/share/help-langpack/zh_CN/evince/synctex.page0000644000373100047300000000212312307647151023674 0ustar langpacklangpack00000000000000 对 SyncTeX 的支持是可用的。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

SyncTeX 是什么?

SyncTex 是一种让您在 TeX 源代码文件和输出的 PDF 文件之间同步的方法。

视频演示 Press Ctrlclick to sync.
usr/share/help-langpack/zh_CN/evince/movingaround.page0000644000373100047300000001223212307647151024711 0ustar langpacklangpack00000000000000 导航,滚动和缩放 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

在文档中移动

您可以使用下列办法之一在文档的每页中移动:

使用鼠标滚轮向上或向下滚屏。要移动页面只需移动鼠标:

右键单击页面,选择 自动滚屏

将鼠标指针向窗口底部移动可向下滚屏;越远就越快。

要停止自动滚动,单击文档中的任何地方。

使用文档窗口的滚动条。

使用您键盘的向上和向下键。

可用您的鼠标拖挪页面,就像您正在抓住页面那样。要这样做:

移动鼠标到页面上,按住鼠标中键即可拖挪页面。

如果您鼠标没有中键,同时按住鼠标左右键,然后拖动。

快速翻页

您能够使用下列方法之一在文档的页面中移动:

单击 工具栏 上的 上一页下一页 按钮。

使用“转到”菜单:

GoNext Page

GoPrevious Page

按下键盘上的 CtrlPage UpCtrlPage Down 按键。

转至指定页面:

工具栏 的“选择页面”工具中输入页码后按下 回车

如果您想到文档的开头或结尾:

单击 转至第一页。您也可以按下您键盘上的 CtrlHome

单击 转到最后一页 或在键盘上按下 CtrlEnd

要一次移动十页,按下 ShiftPage UpShiftPage Down

默认一下即移动一页。如果您想可以使用鼠标滚轮或拖移在页面间移动,单击 查看连续

放大和缩小

单击 查看放大 或使用键盘快捷键 Ctrl+

单击 查看缩小 或使用键盘快捷键 Ctrl-

您也可以另外做下列之一:

按住 Ctrl 键时,可用您的鼠标滚轮来缩放。

从上面窗口中的下拉菜单中选择想要的缩放百分比。

适合页长 选项将使文档页面适合于整个窗口的 高度

适合页宽 选项可以使一个文档页面填满正的窗口的 宽度

如果您想一次看两页,两页并排,像书本那样,单击 查看双页

您可以使用整个屏幕来查看文档:

单击 查看全屏 或按下 F11

要退出全屏模式:

按下 F11Escape

或者单击屏幕顶部的 退出全屏 按钮。

usr/share/help-langpack/zh_CN/evince/develop.page0000644000373100047300000000215012307647151023635 0ustar langpacklangpack00000000000000 Improve the Document Viewer. Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

Help develop

The Document Viewer is developed and maintained by a volunteer community. You are welcome to participate.

If you would like to help develop the Document Viewer, you can get in touch with the developers using irc, or via our mailing list.

usr/share/help-langpack/zh_CN/evince/password.page0000644000373100047300000000201012307647151024034 0ustar langpacklangpack00000000000000 处理密码保护的 PDF 文件。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

有密码保护的文档

如果您尝试打开一个有密码保护的 PDF 文档,将会出现一个窗口,要求您输入文档密码。请输入密码并单击 打开文档

有两种类型的密码:

查看该文档需要 用户密码

既要查看又要打印该文档时则需要 主密码

这些密码由创建该文档的人建立。

usr/share/help-langpack/zh_CN/evince/translate.page0000644000373100047300000000331512307647151024200 0ustar langpacklangpack00000000000000 Localize the Document Viewer. Tiffany Antopolski tiffany.antopolski@gmail.com 2011 Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Help translate

The Document Viewer user interface and documentation is being translated by a world-wide volunteer community. You are welcome to participate.

There are many languages for which translations are still needed.

To start translating you will need to create an account and join the translation team for your language. This will give you the ability to upload new translations.

You can chat with GNOME translators using irc. People on the channel are located worldwide, so you may not get an immediate response as a result of timezone differences.

Alternatively, you can contact the Internationalization Team using their mailing list.

usr/share/help-langpack/zh_CN/evince/duplex-14pages.page0000644000373100047300000000450112307647151024744 0ustar langpacklangpack00000000000000 打印 14 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

14 页的小册子

单击 文件打印

选择 常规 标签页。

范围 下,选择 页面

按此顺序输入页码:14, 3, 4, 13, 12, 5, 6, 11, 10, 7, 8, 9, 2

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

单击 打印

一旦打印完成了,将第 2 页的纸张取出,将其放回打印机,注意正确放置它(第 1 页将会在背面上打印)

再次单击 文件打印

选择 常规 标签页。

范围 下,选择 页面 并输入:1

选择 页面设置 标签页。

页面顺序 菜单中,选择 从右到左

单击 打印

打印 16 页的小册子更容易。您可能希望在您的 PDF 文档后增加 2 页以使其成为 16 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 2 页的 PDF。

使用 PDF-Shuffler 将空白的 PDF 合并到您的 PDF 文档末尾。

按照下列步骤来打印一本 16 页的小册子。

usr/share/help-langpack/zh_CN/evince/noprint.page0000644000373100047300000000466712307647151023707 0ustar langpacklangpack00000000000000 作者也许在该文档中设置了打印限制。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

我无法打印某个文档
Possible reasons for printing failure

无法打印某个文档也许是因为:

打印机问题,或者

PDF 打印限制。

打印机问题

您的打印机没有正确工作有很多原因。举个例子,可能是缺纸或者没墨了,也可能是打印机没有连接或已坏。

要检查您的打印机是否正确打印:

在顶栏上点击您的名字并选择 系统设置

在列表中单击您的打印机。

单击 打印测试页。应有一张页面发送到您的打印机。

If this fails, see Printing help. You may also need to see your printer's manual to see what else you can do.

PDF 打印限制。

有些 PDF 文档设置为防止打印。作者能够在编写文档时设置这种打印限制。文档查看器 默认情况下将略过这种限制,但您应当检查下限制是否还没有被禁止:

按下 AltF2 以打开运行程序窗口。

在文本框中输入 dconf-editor 并单击 运行。将打开配置编辑器。

使用侧边栏浏览到 /org/gnome/evince

确保 override_restrictions 选项已经选定。

Go back to the Document Viewer and try to print the document again.

usr/share/help-langpack/zh_CN/evince/convertpdf.page0000644000373100047300000000340412307647151024354 0ustar langpacklangpack00000000000000 您可以通过“打印”到一个文件来转换某个文档。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

转换文档为 PDF 格式

您可以转换下列格式类型的文档为 PDF 格式:

设备无关文件格式 (.dvi)

PostScript (.ps)

This works by opening the file in Document Viewer and "printing" the document as a PDF file.

单击 文件打印 并转到 常规 标签页。

选择 打印到文件 并选择 PDF 作为 输出格式

选择一个文件名以及要保存文件的文件夹,然后单击 打印。该 PDF 将保存在您选择的文件夹内。

您不能在 PostScript 或 .dvi 文件中选择文本,但是通常情况下您可以在 PDF 文件选定文本。将 .dvi 或 PostScript 文件转换为 PDF 格式也不能使文本可选定。因为在文件里并没有保存文本 (仅是看上去像文本的图片而已),所以无法重新恢复并放在 PDF 内。如果需要,您可以使用 光学字符识别 (OCR) 软件来从该类文件中提取文本。

usr/share/help-langpack/zh_CN/evince/formats.page0000644000373100047300000000304512307647151023656 0ustar langpacklangpack00000000000000 PDF,PostScript 和很多其他格式。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

支持的格式

文档查看器 支持下列格式:

动画书归档 (.cbr and .cbz)

设备无关文件格式 (.dvi)

DjVu (.djvu, .djv)

OpenOffice 幻灯片 (.odp)

便携文档格式 (.pdf)

PostScript (.ps)

可缩放矢量图形 (.svg)

标志图像文件格式 (.tiff, .tif)

其他图像格式 (.gif, .jpeg, .png)

在有些 Linux 发行版,不是默认所有格式都是支持的,所以您可能无法查看所有上述的格式。

对于一种格式的支持被称作 后端。如果您得到“无法打开文档”的错误,您可能想要检查对应于格式的后端软件包是否已经安装了。

usr/share/help-langpack/zh_CN/evince/synctex-compile.page0000644000373100047300000000176312307647151025333 0ustar langpacklangpack00000000000000 怎样同 SyncTeX 一起编译您的 TeX 文档 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

同 SyncTeX 一起编译 TeX

将这一行 \synctex=1 加入到您的 TeX 文件前言部分将会使 SyncTeX 的同步功能生效。

\documentclass{article} \synctex=1 \usepackage{fullpage} \begin{document} ... \end{document}

另一种方式是,您可以在运行 pdflatex 命令时加入 -synctex=1 选项:

pdflatex -synctex=1 您的文件.tex
usr/share/help-langpack/zh_CN/evince/convertPostScript.page0000644000373100047300000000262512307647151025721 0ustar langpacklangpack00000000000000 您可以转换一个文档为 PostScript 格式。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

转换文档为 PostScript 格式

您可以转换下列格式类型的文档为 PostScript 文件:

DjVu (.djvu, .djv)

便携文档格式 (.pdf)

标志图像文件格式 (.tiff, .tif)

This works by opening the file in Document Viewer and "printing" the document as a PostScript file.

单击 文件打印 并转到 常规 标签页。

选择 打印为文件,选择 PostScript 作为 输出格式

选择一个文件名以及要保存文件的文件夹,然后单击 打印。该 PostScript 文件将保存在您选择的文件夹内。

usr/share/help-langpack/zh_CN/evince/printing.page0000644000373100047300000000234112307647151024033 0ustar langpacklangpack00000000000000 如何打印,及关于打印的常见问题。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

打印文档

要打印文档:

单击 文件打印

从列表中选择您的打印机

单击 打印

下列文件格式可启用打印:

设备无关文件格式 (.dvi)

DjVu (.djvu, .djv)

便携文档格式 (.pdf)

PostScript (.ps)

标志图像文件格式 (.tiff, .tif)

usr/share/help-langpack/zh_CN/evince/duplex-11pages.page0000644000373100047300000000416612307647151024750 0ustar langpacklangpack00000000000000 打印 11 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

11 页的小册子

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

按此顺序输入页码:11,2,1

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从右到左

单击 打印

再次单击 文件打印

选择 常规 标签页。

按此顺序输入剩下的页码:10,3,4,9,8,5,6,7

选择 页面设置 标签页。

页面顺序 菜单中,选择 从左到右

单击 打印

打印 12 页的小册子更简单。您可能希望在您的 PDF 后增加 1 页空白页以使其成为 12 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 PDF。

使用 PDF-Shuffler 将空白的 PDF 合并到您的 PDF 文档末尾。

按照下列步骤来打印 12 页的小册子。

usr/share/help-langpack/zh_CN/evince/synctex-search.page0000644000373100047300000000471312307647151025146 0ustar langpacklangpack00000000000000 文档查看器gedit 之间切换。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

使用 SyncTeX 进行搜索

在您 使用 SyncTeX 编译您的 TeX 文件 之后,您就可以进行搜索。SyncTeX 同样支持在以包含的文件中进行向前和向后搜索。

usr/share/help-langpack/zh_CN/evince/print-differentsize.page0000644000373100047300000000260612307647151026200 0ustar langpacklangpack00000000000000 将文档打印到不同大小,形状或方向的纸张上。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

打印时改变页面大小

如果您想改变您文档的页面大小(举个例子,打印 US 信封大小的 PDF 到 A4 大小的纸张上),您可以为该文档改变打印格式。

单击 文件打印

选择 页面设置 标签页。

纸张 分类栏下,从下拉列表中选择您的 纸张大小

单击 打印,您的文档就应当开始打印了。

您也可以使用 方向 菜单来选择不同的方向:

Portrait

Landscape

Reverse portrait

Reverse landscape

usr/share/help-langpack/zh_CN/evince/shortcuts.page0000644000373100047300000001446112307647151024245 0ustar langpacklangpack00000000000000 查看所有的键盘快捷键的列表,然后学习如何创建自定义的快捷键。 Phil Bull philbull@gmail.com Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

键盘快捷键
默认快捷键
打开,关闭,保存和打印

打开一个文档

CtrlO

打开当前文档的一个副本。

CtrlN

用新文件名为当前文档保存一个副本。

CtrlS

打印当前文档。

CtrlP

关闭当前文档窗口。

CtrlW

重新加载该文档 (实际是关闭并重新打开该文档)。

CtrlR

在文档中移动

上翻/下翻一页

方向键

一次向上/下移动页面的几行。

Page Up / Page Down

跳转至上/下一页

CtrlPage Up / CtrlPage Down

Go to the beginning of a page (beginning of the document if View Continuous is selected).

Home

转到页面最后 (如果选定 查看连续,则是文档的结尾处)。

End

跳转至文档开头。

CtrlHome

跳转到文档结尾。

CtrlEnd

选择和复制文本

复制高亮文本。

CtrlC

选择文档中所有文本。

CtrlA

查找下一个

显示可以让您在文档中搜索词语的工具栏。当您按下时搜索框会自动高亮,并在您输入即刻就开始搜索。

CtrlF

转至下一个搜索结果。

CtrlG

转至上一个搜索结果。

CtrlShiftG

旋转和缩放

顺时针旋转 90 度页面。

CtrlLeft arrow

逆时针旋转 90 度页面。

CtrlRight arrow

放大。

Ctrl+

缩小。

Ctrl-

创建您自己定义的快捷键

在 gconf 中启用 /desktop/gnome/interface/can_change_accels 标志:

按下 AltF2。运行程序对话框将打开。

在文本框中,输入“gconf-editor”。

在配置编辑器中选择 desktopgnomeinterface

在窗口右侧中 can_change_accels 的方框中打勾。

您可用下列方式添加/更改快捷键:

打开 文档查看器

将鼠标指针移动到您想创建或更改快捷键的菜单项目之上并稍作停留。

在键盘上输入您想要的快捷键,比如 CtrlShiftT

关闭 文档查看器

重复 1-3 步骤。

取消窗口右侧 can_change_accels 的方框中的勾。

下次 文档查看器 启动时您自定义的快捷键将会被保持。

注意这也适用与很多其他的 GNOME 程序。

usr/share/help-langpack/zh_CN/evince/annotation-properties.page0000644000373100047300000000275212307647151026553 0ustar langpacklangpack00000000000000 怎样自定义注释的作者,颜色,风格或图标。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

自定义注释

右键单击文档中的注释图标。

选择 注释属性

注释属性 窗口中,您可以更改您注释的作者,颜色,风格和图标。

注释属性将只运用到您更改过的注释之上。每个注释可以有不同的属性。

我能永久改变默认的注释属性吗?

默认的注释属性(作者,颜色,风格和图标) 仅能在所述的特定注释上进行更改。因此如果您想将您所有的注释图标设置为 红色 而不是 黄色,您就必须一个一个的将注释的默认颜色从 黄色 改为 红色。暂时没有办法为的注释属性保存为不同的默认设置。

usr/share/help-langpack/zh_CN/evince/duplex-10pages.page0000644000373100047300000000444612307647151024750 0ustar langpacklangpack00000000000000 打印 10 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

10 页的小册子

单击 文件打印

选择 常规 标签页。

范围 下,选择 页面

按此顺序输入页码: 10,3,4,9,8,5,6,7,2

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

单击 打印

一旦打印完成了,将第 2 页的纸张取出,将其放回打印机,注意正确放置它(第 1 页将会在背面上打印)

单击 文件打印

选择 常规 标签页。

范围 下,选择 页面 并输入:1

选择 页面设置 标签页。

页面顺序 菜单中,选择 从右到左

单击 打印

打印 12 页的小册子更容易。您可能希望在您的 PDF 文档末尾增加 2 页空白页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 2 页的 PDF。

使用 PDF-Shuffler 将空白的 PDF 合并到您的 PDF 文档末尾。

按照下列步骤来打印 12 页的小册子。

usr/share/help-langpack/zh_CN/evince/forms-saving.page0000644000373100047300000000341712307647151024621 0ustar langpacklangpack00000000000000 确保您保存了表格,否则所有您输入的信息都会丢失。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

保存表格

在您填完您的表格后,您可能希望以两种方式保存您的表格:

保存一份可在未来被修改的拷贝(该表格依然是可交互的):

FileSave a copy

选择一个文件名以及要保存文件的文件夹,然后单击 保存。该 PDF 将保存在您选择的文件夹内。

要保存一份不再可以修改的表格(如将通过电子邮件发送该表格或在线提交该表格):

单击 文件打印 并转到 常规 标签页。

选择 打印到文件 并选择 PDF 作为 输出格式

选择一个文件名以及要保存文件的文件夹,然后单击 打印。该 PDF 将保存在您选择的文件夹内。

加密文件的副本不可以保存或打印。

usr/share/help-langpack/zh_CN/evince/duplex-npages.page0000644000373100047300000000362312307647151024761 0ustar langpacklangpack00000000000000 Print a booklet over 16 pages. Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

n 页的小册子

n 是 4 的倍数。

如果您的 PDF 文档的页数不是 4 的倍数,您应该加入适当数量(1,2 或 3)的空白页以使页数成为 4 的倍数。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 PDF。

使用 PDF-Shuffler 将空白页合并到您的 PDF 文档末尾。

单击 文件打印

选择 常规 标签页。

范围 中,选择 页面

Type the numbers of the pages in this order: n, 1, 2, n-1, n-2, 3, 4, n-3, n-4, 5, 6, n-5, n-6, 7, 8, n-7, n-8, 9, 10, n-9, n-10, 11, 12, n-11... ...until you have typed n-number of pages.

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从左到右

单击 打印

usr/share/help-langpack/zh_CN/evince/print-booklet.page0000644000373100047300000000170312307647151024773 0ustar langpacklangpack00000000000000 怎样打印小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

打印小册子

如果您正在打印一本小册子(可能在每页的中部被装订),从以下列表中选择您将使用的打印机类型。然后选择您的小册子的页数。

打印机允许单面打印
打印机允许双面打印
usr/share/help-langpack/zh_CN/evince/annotations-navigate.page0000644000373100047300000000216412307647151026335 0ustar langpacklangpack00000000000000 怎样浏览注释。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

注释导航

如果您已经在您的文档中创建了注释,您可以使用 清单 标签页来显示在文档中的所有注释。清单显示有注释的类型,页码,作者和日期。

要快速导航到某个特别注释的位置,单击页码左边的箭头。您将看到本页上的注释清单。单击您感兴趣的注释,文档查看器 将导航到在文档中的该注释位置。

usr/share/help-langpack/zh_CN/evince/annotations-delete.page0000644000373100047300000000122412307647151025775 0ustar langpacklangpack00000000000000 您不可以移除注释。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

移除注释

您目前无法在 文档查看器 中移除注释。

usr/share/help-langpack/zh_CN/evince/convertSVG.page0000644000373100047300000000244412307647151024245 0ustar langpacklangpack00000000000000 您可以通过“打印”到一个文件来转换某个文档为 SVG。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

转换一个文档为 SVG 格式

您可以将下列格式类型的文档转换为 SVG 文件:

便携文档格式 (.pdf)

This works by opening the file in Document Viewer and "printing" the document as an SVG file.

单击 文件打印 并转到 常规 标签页。

选择 打印到文件 并选择 SVG 为 输出格式

选择一个文件名以及要保存文件的文件夹,然后单击 打印。该 SVG 文件将保存在您选择的文件夹内。

usr/share/help-langpack/zh_CN/evince/index.page0000644000373100047300000000335212307647151023313 0ustar langpacklangpack00000000000000 <media type="image" src="figures/evince-trail.png"/> Evince Document Viewer Evince Document Viewer Phil Bull philbull@gmail.com Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

<media type="image" src="figures/evincelogo.png">Evince logo</media>Evince document viewer
读取文档
幻灯片和其他支持的格式
打印
注释和书签
交互式的表格
常见问题
高级
小技巧
SyncTeX
参与
usr/share/help-langpack/zh_CN/evince/legal.xml0000644000373100047300000000102712307647151023151 0ustar langpacklangpack00000000000000

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.

As a special exception, the copyright holders give you permission to copy, modify, and distribute the example code contained in this document under the terms of your choosing, without restriction.

usr/share/help-langpack/zh_CN/evince/invert-colors.page0000644000373100047300000000145612307647151025015 0ustar langpacklangpack00000000000000 反转颜色可以使读取某些文本更容易。 Phil Bull philbull@gmail.com

Creative Commons Share Alike 3.0

反转页面颜色

要对换黑色和白色,单击 查看反色

这样做可使文本阅读起来更容易,特别是在某些视觉减弱的条件下。

usr/share/help-langpack/zh_CN/evince/synctex-editors.page0000644000373100047300000000334012307647151025345 0ustar langpacklangpack00000000000000 您可以使用哪些编辑器来编辑 TeX 文件? Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

支持的编辑器
<app>gedit</app>

向前搜索(从 gedit文档查看器)和 向后搜索(从 文档查看器gedit)都支持。

Vim-latex

gedit 的插件包含一个可以使 SyncTeX 与 Vim 一起工作的 python 脚本(evince_dbus.py)。为了同 文档查看器 一起使用 vim-latex,您需要遵循下列步骤:

将 evince_dbus.py 复制到某个在您的可执行文件路径中的目录并给它可执行权限。

编辑您的 ~/.vimrc 文件并加入以下几行。

let g:Tex_ViewRule_pdf = 'evince_dbus.py' let g:Tex_DefaultTargetFormat = 'pdf' let g:Tex_CompileRule_pdf = 'pdflatex --synctex=1 -interaction=nonstopmode $*'

现在您可以在 vim-latex 中通过键入 \ls 来使用向前搜索。向后搜索目前还没有被支持。

usr/share/help-langpack/zh_CN/evince/annotations.page0000644000373100047300000000401412307647151024535 0ustar langpacklangpack00000000000000 怎样创建和自定义注释。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

添加注释

注释是在 PDF 文档中添加的笔记或评论。您可以使用 文档查看器 添加注释。

当您在打开一个文件时,在窗口的左边应当有一个侧边栏。如果没有看到,单击 查看侧边栏 或按下 F9

在侧边栏的顶端,有一个包括如下选项的下拉菜单:缩略图索引注释(针对某些文档一些选项可能 变灰)。

要创建一个注释:

从下拉菜单中选择 注释

现在您应当可以在下拉菜单下看到 列表添加 标签。

选择 添加 标签页。

单击图标以添加一条文本注释。

在文档窗口中您想添加注释的地方点击。您的 注释 窗口将会打开。

注释 窗口中输入您的文本。

您可以调整注释的大小,在注释的任意一个下角边单击并按下鼠标左键,然后移动。

单击注释上角上的 x 可关闭该注释。

usr/share/help-langpack/zh_CN/evince/documentation.page0000644000373100047300000000223612307647152025056 0ustar langpacklangpack00000000000000 Contact the Documentation Team. Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

Help write documentation

The Document Viewer documentation is maintained by a volunteer community. You are welcome to participate.

To contribute to the Documentation Project, feel free to get in touch with us using irc, or via our mailing list.

Our wiki page contains useful information.

usr/share/help-langpack/zh_CN/evince/duplex-9pages.page0000644000373100047300000000646212307647152024701 0ustar langpacklangpack00000000000000 09-Page Booklet 打印 9 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

9 页的小册子

单击 文件打印

选择 常规 标签页。

范围 下,选择 页面 并输入:1

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从右到左

单击 打印

一旦页面打印好了,取出纸张并放回打印机,注意正确放置它(第 2 页将会在背面上打印)。

再次单击 文件打印 并选择 常规 标签页。

范围 下,选择 页面 并输入:2

选择 页面设置 标签页并在 页面顺序 菜单中,选择 从左到右

单击 打印

再次单击 文件打印

在打印窗口中的 常规 标签页的 页面 中输入 3。

页面设置 标签页里, 在 页面顺序 选择 从右到左

单击 打印

一旦第 3 页打印完成,将纸张放回打印机并注意正确放置它(第 4 页和第 9 页将会在背面上打印)。

单击 文件打印

常规 标签页的 页面 选择框中输入 4,9。

页面设置 标签页里, 在 页面顺序 选择 从左到右

单击 打印

单击 文件打印

页面 中输入 8,5,6,7 并将 页面顺序 设置成 从左到右

单击 打印

打印 12 页的小册子更简单。您可能希望在您的 PDF 文档后加上 3 页以使其变成 12 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 3 页的 PDF。

使用 PDF-Shuffler 将空白的 PDF 合并到您的 PDF 文档末尾。

按照下列步骤来打印 12 页的小册子。

usr/share/help-langpack/zh_CN/evince/duplex-5pages.page0000644000373100047300000000607212307647152024672 0ustar langpacklangpack00000000000000 05-Page Booklet 打印 5 页的小册子。 Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

5 页的小册子

单击 文件打印

选择 常规 标签页。

范围 下,选择 页面 并输入:1

选择 页面设置 标签页。

布局 下,双面 菜单中,选择 短边缘(翻转)

每面页数 菜单中,选择 2

页面顺序 菜单中,选择 从右到左

单击 打印

一旦页面打印好了,取出纸张并放回打印机,注意正确放置它(第 2 页将会在背面上打印)。

再次单击 文件打印

选择 常规 标签页。

范围 下,选择 页面 并输入:2

选择 页面设置 标签页。

页面顺序 菜单中,选择 从左到右

单击 打印

单击 文件打印

在打印窗口中的常规标签页里的页面中输入页码。

页面设置 标签页里, 在 页面顺序 选择 从右到左

单击 打印

一旦第 3 页打印完成,将纸张放回打印机(注意正确放置它(第 4 和 9 页将会在背面上打印)。

单击 文件打印

常规 标签页里的 页面 选择框中输入 4,9。

页面设置 标签页里, 在 页面顺序 选择 从左到右

单击 打印

打印 8 页的小册子更简单。您可能希望在您的 PDF 文档后加上 3 页以使其变成 8 页。要做此,您可以:

使用 LibreOffice Write 创建一个空白的 3 页的 PDF。

使用 PDF-Shuffler 将空白的 PDF 合并到您的 PDF 文档末尾。

按照下列步骤来打印 8 页的小册子。

usr/share/help-langpack/zh_CN/gnome-system-monitor/index.docbook0000644000373100047300000011645712300454132026661 0ustar langpacklangpack00000000000000 ]>
系统监视器手册 V2.2 2009 Paul Cutler 2004 Sun Microsystems 2001 2002 2004 Bill Day GNOME 文档项目 对此文档之复制、颁发和/或修改必须遵循自由软件基金会 (Free Software Foundation) 发布的 GNU 自由文档许可证 (GFDL) 版本 1.1 或更高版本,该许可证没有固定的部分、没有封面和背页文本。您可以在 此处 或在随本手册一起分发的 COPYING-DOCS 文件中找到 GFDL 的副本。 本手册是以 GFDL 许可分发的 GNOME 手册集合中的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. Sun GNOME Documentation Team Sun Microsystems Bill Day
billday@bellatlantic.net
Paul Cutler GNOME Documentation Project
pcutler@foresightlinux.org
System Monitor Manual V2.2 March 2009 Paul Cutler pcutler@foresightlinux.org GNOME Documentation Project System Monitor Manual V2.1 February 2004 Sun GNOME Documentation Team GNOME Documentation Project System Monitor Manual V2.0 November 2002 Bill Day billday@bellatlantic.net GNOME Documentation Project Procman Manual V0.11 January 2002 Bill Day billday@bellatlantic.net GNOME Documentation Project 本手册描述系统监视器2.24.4版 反馈 要对系统监视器程序或本手册报告错误或提出建议,请查看 GNOME 反馈页的指导。 系统监视器为用户提供了一个图形界面用来监视 CPU、网络和内存的活动状态的图形界面,并提供了结束系统进程的途径。
System Monitor gnome-system-monitor procman 介绍 The System Monitor application enables you to monitor system processes, usage of system resources, and file systems. You can also use System Monitor to modify the behavior of your system. The System Monitor window contains three tabbed sections: Processes 显示活动进程和进程之间的相互关系。为每个单独进程提供详细信息,并使您能够控制活动进程。 Resources 显示以下系统资源的当前使用情况。 CPU(中央处理器)时间 内存和交换空间 网络使用情况 File Systems 显示 启动 启动系统监视器 您可以用以下方式启动系统监视器 系统 菜单 Choose Administration System Monitor. 命令行 执行以下命令:gnome-system-monitor 当您启动系统监视器时 当您启动系统监视器后, 将显示以下窗口:
系统监视器窗口 Shows System Monitor main window.
系统监视器 窗口包含以下组件: 菜单栏 菜单栏上的菜单包含了使用系统监视器所需的所有命令。 显示区域 显示区域包含系统监视区信息。显示区域包含以下标签页: Processes 包含了以表格形式组织的进程列表,最近几分钟的系统平均负载列表,以及一个终止进程按钮。 Resources 包含一个CPU 历史图表,一个内存和交换区历史图表,和一个网络历史图表。 File Systems 包含当前挂载的文件系统的表格。
使用说明 显示进程列表 要显示进程列表,请选择进程标签 进程标签中,进程以表格形式组织。表的行显示进程信息,列代表进程信息的字段,比如进程所有者的名字、进程当前占用的内存大小等等。默认情况下,进程标签从左至右显示以下列。 进程名称 状态 %CPU 优先级 ID 内存 要了解如何改变在进程列表中显示的列,请参考 父进程和子进程 父进程是生成其他进程的进程。生成的进程是其父进程的子进程。默认情况下,系统监视器不显示进程依赖关系。要了解如何改变默认显示,请参考 进程优先级和 Nice 值 进程按照优先级的排列进行:高优先极进程先于低优先级进程运行。子进程通常继承其父进程的优先级。 进程优先级用进程的 nice 值进行设定,如下: nice 值为 0 表示进程拥有常规优先级。 nice 值越低,优先级越高。 nice 值越高,优先级越低。 要了解如何改变进程的优先级,请参考 为进程列表排序 要为进程列表排序,请执行以下步骤: 选择进程标签以显示进程列表。 默认情况下,进程按其名称在字母表中的顺序列出。要以反字母表顺序列出进程,单击列首部的进程名称 单击任何列首部即可以此列信息按字母表或数值顺序排序进程。 再次单击列首部,即可以反字母表或数值顺序排列进程。 修改进程列表内容 您可以用几种方式修改进程列表中显示的内容。 显示所有进程 要显示所有进程,请执行以下步骤。 选择进程标签以显示进程列表。 Choose View All Processes . 仅显示当前用户的进程 要仅显示当前用户的进程,请执行以下步骤: 选择进程标签以显示进程列表。 Choose View My Processes . 仅显示活动进程 要仅显示活动进程,请执行以下步骤: 选择进程标签以显示进程列表。 Choose View Active Processes . 显示依赖关系 要在进程列表中显示进程间的依赖关系,请执行以下步骤: 选择进程标签以显示进程列表。 选择查看依赖关系 如果选中了依赖关系菜单项, 进程将以下列形式显示 进程名称前的三角符号表示此进程为父进程。单击该三角符号以显示关联的子进程。 子进程被缩进排列,并与其父进程一直列出。 如果依赖关系菜单项示选中: 父进程和子进程将不加以区分 所有进程以字母顺序列出 显示进程内存映射 要显示进程的内存映射,请执行以下步骤: 选择进程标签以显示进程列表。 在进程列表中选中进程。 选择查看内存映射 内存映射对话框以表格形式显示信息。内存映射表上方显示进程名称。内存映射对话框从左至右显示以下列: Filename 进程当前使用的共享库地址。如果此字段为空,则此行显示的内存信息描述的是内存映射表上方显示其名称的进程所占用的内存。 VM Start 内存块起始地址。 VM End 内存块结束地址。 VM Size 内存块的大小。 Flags 下列标识符描述进程可能具有的内存块访问类型。 p 该内存块为进程独占,其他进程无法访问。 r 进程拥有此内存块的读取权限。 s 该进程块与其他进程共享。 w 该进程拥有此内存块的写入权限。 x 该进程拥有此内存块中包含指令的执行权限。 VM Offset 虚拟内存的内存块偏移量。 Device 共享库文件所以设备的主、副设备号。 Inode 共享库装入内存的设备 inode 节点号。 单击列首部即可以此列信息按字母表或数值顺序排列数据。再次单击列首部可按反字母表或数值顺序排列数据。 点击关闭按钮以关闭内存映射对话框。 改变进程优先级 要改变进程优先级,请执行以下步骤: 选择进程标签以显示进程列表。 请选择您想要改变优先级的进程。 选择编辑改变优先级。将显示改变优先级对话框。 使用此滑块改变进程的 nice 值。 nice 值设置进程的优先级:nice 值越低,优先级越高。 要指定一个小于零的 nice 值,非 root 用户需输入 root 密码。 单击改变优先级按钮。 结束进程 要结束一个进程,请执行以下步骤: 选择进程标签以显示进程列表。 选择您想要结束的进程。 选择编辑结束进程,或者单击结束进程按钮。 默认情况下,将显示确认警告对话框。要了解如何显示或隐藏确认警告,请参见 单击结束进程按钮以确认您想要结束进程。系统监视器强制程序正常退出。 这是一种比较好的结束进程的方式。 终止进程。 要终止进程,请执行以下步骤: 选择进程标签以显示进程列表。 选择您想要终止的进程。 选择编辑杀死进程 默认情况下,将显示确认警告对话框。要了解如何显示或隐藏确认警告,请参见 单击杀死进程按钮以确认您想要终止该进程。系统监视器强制进程立刻结束。 通常您只有在按照中描述的方法无法正常结束进程时使用终止进程。 监视 CPU 使用 要监视 CPU 使用,请选择资源标签。 系统监视器以图形格式显示 CPU 使用历史。以图表下方,系统监视器也以百分率形式显示当前 CPU 使用情况。 监视内存和交换区使用 要监视内存和交换区使用情况,请选择资源标签。 系统监视器以图形格式显示内存使用历史。在图表下方,系统监视器也显示下列数值: 总内存中占用的内存 总交换区中使用的交换区 监视网络活动 要监视网络活动,请选择资源标签。 系统监视器以图形格式显示网络使用历史。在图表下方,系统监视器也显示下列数值: 每秒接收数据及总数据量 每秒发送数据及总发送量 监视文件系统 要监视文件系统,请选择文件系统标签。 系统监视器以列表格式显示挂载的文件系统,该表显示以下列。 设备 块文件地址 目录 设备挂载点(访问目录) 类型 文件系统类型 总量 总容量 空闲 未使用空间大小 可用 可用空间大小 已用 已用空间大小(及占总大小的百分率) 首选项 要配置系统监视器,请选择编辑首选项首选项对话框包含以下标签区段: 处理器 Behavior Update interval in seconds 使用此选值框指定您想要更新进程列表的时间间隔。 Enable smooth refresh 选中此项以平滑刷新。 Alert before ending or killing processes 选中此项则当您试图终止一个进程时将弹出一个确认警告。 Divide CPU usage by CPU count 选中此项以将进程列表中每个进程的 CPU 占用百分数按 CPU 号分开显示。 Information Fields 使用下列选项选择显示在进程列表中的字段: Process Name 选中此项以显示进程名称。此列可能也包含表示与进程相关的应用程序的图标。 User 选中此项以显示进程所用者的用户名称。 Status 选中此项以显示当前进程的状态:眨眼或进行。 Virtual Memory 选中此项以显示分配给进程的虚拟内存大小。 Resident Memory 选中此项以显示分配给进程的物理内存大小。 Writable Memory 先中此项以显示进程可写内存的大小。 Shared Memory 选中此项以显示分配给进程的共享内存大小。共享内存是可被其他进程访问的内存块。 X Server Memory 选中此项以显示进程使用的 X 服务器内存大小。 % CPU 选中此项以显示进程当前使用的 CPU 时间百分率。 CPU Time 选中此项以显示进程已作用的 CPU 时间。 Started 选中此项以显示进程开始运行的时间。 Nice 选中此项以显示进程的 nice 值。nice 值设置进程的优先级:nice 值越低,优先极越高。 ID 选中此项以显示进程标识符,也即 pid。pid 是一个唯一标识进程的数字。您可以使用 pid 在命令行操纵进程。 Memory 选中此项以显示进程当前占用的系统内存大小。 Security Context 选中此项以显示正在运行进程的安全上下文。 Command Line 选中此选项以显示用以启动此进程的命令行,包括参数。 资源 Graphs Update interval in seconds 使用此选值框指定您想要更新系统监视器图表的频率。 Show network speed in bits Select this option to use bits instead of bytes for displaying network speed in the System Monitor graphs. 文件系统 Behavior Update interval in seconds 使用此选值框指定您想要更新文件系统列表的频率。 Show all file systems 选中此项以显示所有文件系统,包括临时和系统文件系统。
usr/share/help-langpack/zh_CN/gnome-system-monitor/legal.xml0000644000373100047300000000672112300454132026006 0ustar langpacklangpack00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是以 GFDL 许可分发的 GNOME 手册集合中的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. usr/share/help-langpack/zh_CN/gnome-system-monitor/figures/gnome-system-monitor_window.png0000644000373100047300000026010212300454132034050 0ustar langpacklangpack00000000000000PNG  IHDRP 5&sBITOtEXtSoftwareShutterc IDATxw\IǟMOHB ""X`vϊg]ϳ+{A HGPѻS_' gݝ>35Bh@]`0^9F$@$9Ʈ;m`06~ȼ{H Ǎ2re0 SJDUL̠HCЧ]][$ =nĐA)R_1 SNir _bzw&4*w/AH/g cW@潕k@B*~ERʏk H"n@~unJFokg-ʑ ddR ,Iȳކ]kҪgG&]=7 p]@0ܺ jT+1l䰱2JeD ˗\6G{C˲33eZ-h4ZVJc$bkȲ^F$(kI@ʤ/i  Ryd9;?KTM1bme4OS6"clhe@GEg  !@.]aoڒ*>Hk&@ּ ֠YC!7[lzC!7m5i~ Bãm%"A\ddH sk\^.;NEqX .0\ 8zg>' "D] Jlrs.6KEM2 , DM.YT׳ɕyY1;1c\ꕉ>ɷgS.j{n+#{2(6T ˜8fɖ4#sZ=ml@KW71{ %! 0Em:j. nj)!M΂wߕ8VVV<>1T  yҼ"eVu,Gf&T4H@tArPnheHBvB Uԛ,H|WgS">IIo(g) eBb!iىG^BZH#22yI(4GYPdhenHL)<.ĝY[24bxb3$Q|EK3tW~"W&>kHP^ p)!g)w_miݿZFij 滟";m|JJM4w]\jЭq{ Skc!hu^dO?dnSfޡh ߺɮ0aV8ֵ3uiI37;< @ҭ,qc>Jxn/bܖlԦąoM;0{yeYT`}ؐru0<))J4 g缧9@|]dU|BARZFAt-\H&ZTs^̐K"icY dS2+zs:x3mm!sgdʋiP%s&{GxgX U9*c5 .}YTZyVդ~yttq}͗e@4J.hJ dF%ц{YY,ӡݦr嫊r~ b8.[̈́J I͵R\ҘyFȺ:ԃ#y#RDVVZp >.˻s^\.*l._3-̑=m m- ؍_$:Nioe"/xYsJ-0;+Bu1 ,>WqH4U2T-"<'M5$BwCDʗG4t av!g5:Չwcl~$?-Bk nM2ur$1}=熜H,(\_\MyTܵ'9 (o OّtV\)K_ߎ)yi.twx)O_,V0&U|ͥix|"I IB+Zxҕ<'L=+E7s*Y=/n]p4]1;`L-XU-l>UoN|QV΄mI|0ףk^gBP0?LW:Z54<%ÉG4+ΪX ^CE+:h3G4]!knkf֥4Z,xMn\TܽwNv EJ]|h3c;7 wȢFzv]sYJ}(\EKI}ԓsT,xxb0 <ɠ?^MZuVk2wG}t`0\i أjT,E+ @N~ݔM/;mG1 㦗Kzd8`0?.%9iٴ %`0_^ʅ41 3QXa0 `~ ZN<]uGOoD}.p9H*i6)6Uy[كAqdv"R2T&IҢ‚B) ?vXϖ =mE<|v{5t~DwJP$egKG\ƿ 'ON94Gr]ͼJBIjGrUѳ]3O(mg l-K%];כ(](3?sͶnW3c_%PN;(PmCpqI T p2oGքuY–=_?/zcVʉz_͍36YΔRـVdǖK6LKq7ulg#)E [__eq~(ǯVzwd@e_^_zNN >qg?H>E|xmm<>_O' :q.v}Iua֭_:f}ۦ#亿jZL X+vg3) d$%LWS}xݍJ]=? ׌KҽDxzciz6 ᆱi50ӊ[:&m7\Y_x6e~U*6eW1p<;4m{VK^=.qZK 6Nj n,@wvP1Tx޽SܚRKno8y&#?Px(5o_{tjWFйn6~s"mʮmXs?ϖnkx[\ӫ[ЈSCjw^~ڲ: w H;˵W -U|kxy~=\kt? q-%C{;j hizwZvUtb!*5:2kT@M.@y5G'6cTl!N/>~׉SGea~#c0_wH.Hj=gt Iu{ݹc\YI!G[NV^dpuҍ1iSvn4ᑴj_N|f5hhHB iA>®.}Z^73knNT`W8^SBt;?e鞋{2PV=OXUW6mvR3M"Nyf_$bִ\{,ކ)/r2+$zқ.>֛ɳjJ~ ΨÞq:3;njdB5Y6ɴd={I-dB8nS^TY_r _!jɤ*|޿5k|`0&nZZG1^me\{FH!--ζש]ՙ]GPFX]hyf- %)#yzG4qԊa3uӭU#?wK=(2%8P_=/UԔq|0\FAT#R_]ydR?T9`SN*p yLR%LJSH!*zN0j;:VLCW{ z[?mah2f<<ߒu5c-@=2e4); ylwS\shbaTe֌k/Oj`Us }<:o♚rHVY2*uvt΄ r-e¨B<|a)`0Ț]w"cj9i5sҸM}k9 HxP{d}= N(wVyݵ>M3+ ,_Nozt=~FƔ/Zy!k+z8;xSM=ACjCu~ط+ְH3v6Z\KZsFxd%SRq+HL(P"],>Z2nf~_ ?HI+T܊rztЛwaBwqnk-y5ȣW4w_j.|cӆ P<Y3_id  iu7{fu|:* C BCںv0a/7,ȾxAk2;[&B 3. ' zIYgZ xMC1lЗ 7i |BإEm*^>s^2oiq\>ǾTO+ҳ1w]F&!Ma/^<`lӛCw u\g)*2BLJZ#Znҕ%);6.?lByv o]]޼ s|JT{e@&Ͷ;!AUZ^1TYdOB̚ir =6mr1/Uʨ~|Z|]ϳuiyDػ֋pk:fy2KS Ht,b_Ɩ5Fj{Y/jy[IP6p84\mUFA6/í3+מ;{Kѡvlf{U}GD"‡ F-HCj=vw.binꓵ'E^;}n֨W J*oKb Ûa Eԭu8%7hnڙiӶi鐿aT|1Hl@rA 5ţwy)Ȳl&05'+! IDAT?r LC*T*ShV!IZ#Jj2f3t]ꌛ+ B۽6a4/Wd(Ǫ %\$OWb/6°#av{<_ ʺnV2w&5:`Na^ǵy*\}Bc~ArD@p-9<ѩ{B~4 I3Q?B!Ws{7zmK"<ٓ?x;3,[5G={qi~U~KDCΈҵ-@Rl1zif{p>6kJe7!-B]OBP$UA(¸F~v'Us)Of:6+N;_vY٤1I42\=`vwuP8H߷{QX0 W̌wQ.$ =0%3KT~ {o~::9iS3|`0Jrrr޼zS?Hggeǽi[֙$woVǧ4]_ `<U5STX p8 Fu1i˷g7߬j_ l ^ADO(DӺ݋dOR3x$̌D\\vi߲zBG|`0JJ_MOR긟n?}עB3e*< goߵQ҆ %3#E¿\"$])-߾ǚ`01HhZW(M#FHW7jӎA'\Rc`nk _GDuIbC ,x  e i0!cD<6> e^zfFe^FT]"]]zm}*QF-[П %$Y,lNGx 3V-K $쬌LYP24н^]<ڹK{GP`# ,uyNJFŎ>̬mklN=Ǻhoޘ>SN]gEHoEKRi2\hTφK\I[5؍a*eŇǷ7O6vtM [jOph>k+{-7siȻϪGDgְvE]P`a0̯#xtΕIFLQ107322426161sO(;u,1CʟnsζO4]:pW9^Ӷ-~ΞF{XZB@:S@5RI~>ifi)ir_1q 7;5{ť{KnK' Zﺹ>ȑs뷮iġ+{۲ܛ=|OEkz0&TeIc[&IU}j0vxʀ}l5IU4 :G4Y|bCj]56^Wylв>463^^tJ~O!j#oe@=yX hM;~Ɔ~J6Cqp%X6hVt۝a `0T*]`aBugr=Y?nFC4%K//ߪ\/γ Ξy9:iwpVv{WVL鋵GWl4*z]V _(e عriRZ#O.T)b,o{fi7V9O *ޯ,#xTyj*j:|Uz̨ä\c;yȪ~M ir^Byx( GiuY+PZ˕H.(!=m[2H]:HkZqY4-osmTOg.hJag>na0̯ zuXzp?Lzu2T.oLv6@Oyqvزu빣yI'$`<ֻwFLBsN}$)ȕ)ȗ<SXoՍN8FM.:`]a&< e7^\hj"U֫c/s{g˜w&bwfW7LM{س>ڬS BL)sְ5Z +R-ld\X;IkoH;ߡӼy->pBG s@V+Z?mH_PAsÿ`w0,;-ڱmRVmכCywm{+>,fP  @koΛ;㻻ژxM9qUBZͼ8w;uSjsvG%ޛnлĴlkR \55Iz<㜬Όl尽6v?aL"OYr#rcE]1 ZX {jhp^=z6|kE ц%TXz2EBHsxN]!hɃVAoR=̓["l jueɄލZp-7R?By&b~lK_{o!_;=9iYqђ)fn#=5s>퍩O i"t D-3NѨH.&iر7|& -q:ƋcYarD4p;YvXgSfjJPޙQw )f5WMmNVcEȟ$I4+:7zLF]y~a3 &4qY%b׎Ӧ^JZ\W% %iJQJ$)?G  igP608$m],}w٢ ; v&vu8~Sp7-g>o%ۘ u:i -]Z}#{1d`1e_ء%Gz"oŌy *hENMf{s@qCAӶ>*zmQ*$&pǖ 9Ho}̌|m֒KTmH}mn;ݧѤKmzavgZ/4}] :Koj!WFɆi,{$~Ҧνs&Wro @rn>|=,N4- Vl}╉4"@~uͨ7-zu߳U܍ YEL$o]G k״qjIH#I @$LBV󽚪ϬXym|>XФ^޴HTO'6u<5`Fy<9e\Pfj 4PŌQmJ^+!}8 aO# 9hn.7ln hiӃߣjв>)Ѷ$ґ;<Nzf @?ߺ(sx%7I7q~9r˗N/lbzuƌ =d?1fcBmIFvt$ 3ι9<9lp j^IrC9op`~!)ϙ}@ k ٸ< d5,EgzWNc6r^q, 3 "$%!c{ ph6xAu`tk&bM3eY!Ӯ_ #yȖ1vgv_AVB- w5>3?̸!;FzEin=&/$PLgV#s޽9\:lb@&Y5&^ZYrU [}`0?UE&=7Uۈ97RAwC&Bsjq꘴B_k zf qڙm| #L>| E/C%:o UI_ZJ%7^ (Zw DbMԋ+Tfz%<щ9FBT";G7eBt%3q2|}yDAج [}`0?@Qg WfVIy? XSeb9[ A߾x`0X~~ իoR%?s - $"ɧ/o\a[]`0oB.yOMGO {TͫG~]0 bzza0 g$IMX0  n ``0  `0X0 `0 < `a0 `0,x `0 < ` 1M.yD,|qN3e_kÊ6!k^˥=y4MMs7XRť*S5Zn0UP4\ċX#'})knLZْOi?ʨͽ;LwK r"ZUͲFu'4zĮX>1,x_!/BVǻ5:˨ނ3-9(Qnξr+LTU~H(*kї'ScnG[ 41@+^L A.iM0 8DY4;;8~7kd:{|` #ﻕ&Q^4&ux߼llllݻO-#m]\}Yܢ{aJBW 07kҩtm]|jzf BQXuY` 'J}sisPd|*NtHK[H,4p{մdq=MEb½'/) k2n,`# E]_.FG`~HӦii!"kBY",p+Y̆bȴ֬g/~z̀vVv`0s0Xsq6?cO+ !|BB۷oF(9qQoFe+-ܚ ²%Iڭ{3/eN~'~*>fn+w-~Rw /^5M},`W /H=s~xV$ #]WBE'fpy/V/a6mhL^NRbBK-zކLED jO=Y-F.h[:t#=L@^Y, :3%R~/Σ9_\MûRз z=>M,h:̐.sN,hOB~㓤ZM>5xm3 0"ԆKhSuuKBC6= ~w3fʟNLMܺ .t޵1]6a8 4'vCTJx\&tّwoQ9=k;UmwVhA|{٣\ o̙{YP|ɁzY5) ˟:)ǽWlWVk GTE 4 EbH,49%LʘΣL=p.s0ho+Ksߩԯ;M6ɧwm޴iӦMLilai֮[3%Ȅk]LF48ljzA i _œ ^݌c{ b&AEO&)s ch%A k-:\p)UHP.@HEgH^b#<ZI;Orm #}o֏;G+Q4(v5/ܧ\>ł/}}RHj׻pkLeuk?cتM-k;F/#yVmʞ6~IT i}Hwu"Ҋy2Cr߫ HI)f;/mk+K@VC,("7jɔ=s>X6{􋓰"!zbyo%_7;AAC9Ӫa}w6țvaIyʏ]-_/گ4 ?աL.${NHӳa67@gP! IDATX!?}>v][$JZZ+U4FW [ڴmnPgu`peARlgU(ze4d񳳼oO%2 @LIo)dZɈ(Hˆ3^vL2 P(Tgo!"Ϋpd (Ls2)$v>ei_)Җ:3"L}:>Hbmp~Y@#-V=5qX\oAR?NژDR1?qO]}DS<><8իL~N\ K@TITr@C} fUgs-*Nt]t QUXdvǷ e8}؂v-6lOc\ʄ:NԳW{ɚ+HS#)@+g;0~)`U{*$ ɨÒd kɡkYm-S&՞а$?e7ٷbx31x<DAJ ONjC6 #O#䙘r ݖ(Dz%lTSVsRrŐt Ȝu #yqW%("lT^`a#MRm\uע\@,>>jI':[v>&9Q\`#f~e2n$1 (p}Ws yeBjeWi_Z6&'a_wW{cc kolʙBx׀_PerDRTшni߶ż\ݯ߱t-V/pTnLPށ09]lr?C\ *$hh|vn&$Aͺu#덽Zt’әԝ̎LFVi/ޠx32d_rW%Є񑼸 Dz2wM p7"!Ӟÿx酶(s*ui{~4όs 7Z^ՙ:\з l]7I2[uHIWUvI*Jpt8T=qّ\R}݊D1o;)I} z_rWϨ ,PYڤC-?=eJS-AR[GhmHV??_ ?*ѿ~'en^2o0r0䎥+:4 ˑ^j_F XQ m{nB+I\;b`hW W86$@KcFyڰ]:и ^e.CIn\ XՠYKv>sXuQ/@Ƃg*ܛ'}w$fZNZpDs9^F;pB䥭 sVp!D5g ]o'i*1o*f+V{5n޿lJYE:U{P/(> Cˎ97ތ}mX.k^c`npxnߵźMn&kU885m9"C5]]#H+9& }S]1i񯗃pYu@i_pF cH?6AIB+C]yNf^T+M~k/lt'`WUrtE1al>!L uO h~+Gsj7,4㙭NACTU1oߴwpܜ%xa'< L0000000< L0000000< L0000000< L0000000< 36&> K?~X\\jNEVw/3M- x6;a޽=p`u M"(|EQEjk޽Mto<rӆ=\knnUGW |AAQN'''qbL(o盚#h; u(k8 H Bg##:a<}Т5ÜsoEѼ.rr?LkxcaNqvv(+Cyl6J%;neJn'5 MM-e3HӻΧ"۵ɋ $ͳp:CcfH8wFcFZZOFniN~&}|1Ԕ[z/NEQEO]k+قVrW?*י)uxZȘsp;9+_-䷛'~~N3R75E6Ax(fH]u٫-v˟PS9[;2=ҏ~Pw ^67LkV (p (Ur>+ORԷ_q-e6&#G3f1]{pHP,Rp˄#RvВ"+Qyif{?_^N> OB][C}ܖy`'[F(tV0u.wɯٗ/{&%S2ٝĄĄ6 yvflx WMx#zӋ7'\g.'JSPr>U hm;njYfCM/mu{}teŗ"rJn 6-i6(Yۣ'% ;'4k+3T 5w=L (+1/vx%RÁ'8aslp__7tFc[8"b0/]O'YP2wU]G(}<=H1/49w^'_Be^tD= F nV6_M?dI{y%2G>'r{B6yc9`__@SYPEq26vooUǭ)zyĖ'lwz6J{ Z&z/z!v1SPW^%{?l^ EgfuӡՏF|6#HLJ*cwCF.f?o&@QAэ}ϴO3X2je{zbp ̽5b>9yeDVqm/2IAIȴ/@'t72rd fYsx8ZSVt垯G؁*2xt=|Y̊J1@m5@QM\EXjO=(s49%LT#br +|};t^1_룚(*-/eU#%|."5~{6pॉgܯN HcCGC-nE>J$*bWf:P,?t;y|S#%Mu1 R!D,i"E%eD@Pu?Cxl6EEduz*3PhtJ52Tacu"=h0Gajdä0X3n=rȾ:m.EROwI؍Ax{GՂC__`__xAI{J+x:d\laIמ# k+ƇLs332vlK{\5?-L(\H4W\eƫsݑԦ9rD@9(pu<%||F=p}Ñb;xh%R~}`+IT%?EQDP~3ex蹍'|*$ڍNv6i9b/{x(4'ǭfP)>e⋧H@եaMA N8z+4ɥp鑼&c[U ­ڢߩ%QB8)q`1'Yh'YRlME|~@vόna[7m_>EY u$ghs~ ؠ:xJ96der\[\“խL([v1+@ٻ(`geCU)6>>BPp0Yj%_eO6~S0݆(J] sι<ȘڰK>:"6 b̪Nwa{_:CAmgYho_`x57nczGeR]^@mZA1jSER-4)h1/sEoz_EmϏ >q>qpih>+2?!͐jK,>_4aү< >OZ❺FTqxꔋSx0Rq.T=,/{-7RyUe fqDK/¾$C6ԛUMK5ۜ3'߻s^Z%07j$kUx ?W|} 8$PQQӴQ7Wo5귘30vM]$e@ץ7& Jr.3hxAo9}x+뙇l7& ufLpٙ-64IʩP+7z_>a{b3eɺ JWJflqhEs&mVwtxIS(lj%1.vwt/(v_Ù-}]1KO^͐QVUuBd_f<EQAW2xzw+fe\ߔ.'jq*:b}515(y P\7]45Oiz-ww>S?o`MlRo-//'~K<ƗEx\.̔˙Vr*t<>څ.䔕|Yˎ&[~cbA1_4Ч^mz-ϨvQqN$'^W5H|rB .[ "}K_:rQ[yh s\.'@QTr||g㣄;_\|W>#"|.m˴Z ]wT^_;ekCFELp^,q9u,{}ys+_xAէlk~b2GݚZ0鹛NnJV8T&z[Hy{_+mωh'{)@CQ8G_Vm9n| \^e WBx T_{( ׯT UrU$UwŒ%F!nuC-*5qv3>G*LZ"B&E;x{i9Ne~~O O MEQ)4g`fE'20\LD$@S-(@V6-,D\'۞l$Tl岭=p]WD8"8]wj}豁qNrA߸qS{qT-ug׵C/pN ~{eӱB 苷X*-"Bm OHJ7%#,JR[J$&jՔZS/mw*3=oQɇ/s+>)pUmcDŽv}(NtLWǝqZ=z Nzjc5"JNn3#^v&f& L BU `=Nk]RDNr{-9}EA>,>uU~Q~_luQٛjD7=__ŬѤ>-^a\1$a>#qJ?#2ʪ8(UZ $?ϱm49<-n{LZK^kJ=u$$+7*=':\81!_>+GRQ/8Y:B%4nETJ-D. bT (%- "xn?Reއ5L0;(OpL04`aNQvvx*``````=< >qA /xHKKcp<2'㟀cxuuu|>@ PTU1F<ElvQaAqanUe9Œ765w0b`````|6rs?1Ksĩ]d$0qvL\ Z Ft<5Ԗ??? []jGIw;5pśKZ9+<>a,w= r:t|Qtt:niI }6y{_)4wMP{]aɑZZ:hi {su!RAtu's9N%MПT+ wMoBuLܐP$QX/NKxIir\|8 if@y}:r37eeBպVї˿ѺN75A+.:tzݟJOMVpGh=*cdeLHd2@$)xDBaϧc|{W'5ۇ HrޭN8k 6}c޺Tg#e? f l x%瓯>ꤳxkX{S3FI40[v'gM o[7O1iđzD_r #e|[G<=]W>wx3)n8Ƹ?,(H~K]LIGŞ=]fI_(SliXɘ y'|hr)111Z.w+U@ (.cVVf3%]u Ԓ$q:wh`x5\osZbufm36'C{3 FO+PsgÆtn&{ca)Wǖ۝`_P[ԣގ 5Zkqeqj`0==V:OpMֺkfӦ[!;=kt><[OWNkLR(Y>/.:(yZZZZZڛoXw@<ͫu <74=Iu(խ*4<?AFvΛ_DL5Io۱KyռzRPx٧CMĬ6Y9ܴ )/=,m"[|ku/a޷2lZRz''-BLqUm]]]}Ü%#d߾)kghmgsʋ9¸T7Bӵ-ǯo5\} z=DNջN? =|giodfeg&_.,(j#fۅ\~a҅:60={A᳗\JJjj@SrU!Ϻzxa f}.rwd  Ywq؈6 kl2IzZ sl+:;3|e =#&u=㯮u9iTޚl@W38Z`tXzHPo튈h4&*J!HTZNZ'2cP{Sy$v섩t:]`]I|@u| R'L##%7 ς[(تxYr<æjS~ tWNݎ (N|ކd#;U)QGZvEZo{[G߾}S͡iq~vOs>Kv` UVW1'/޺ 퇒2&*/-పjٜ Aڝ{^}gu从Ԥ4ae#M*v3LS|v* %:]9TSM:YazvA%Tӝ ՕzZܚ}Zc.?)6s3$L20mR$Ν,$ʯ䁰$`1A.Etvv,P%fF$O..&*Mwv|b*z* bLg쾿'>>49JcUcY3 ĺ)~ڱp̙u*ʳ-:K {P+VpO tcvnoVk_Fp\Ouc-nC ..nnnU&˪ǑD555h4VW}aARzjvEDUɮ*`@CէH+(ZLVNZy8t|۬8Q%Mmmmmmm-i2W=}4TKg8]JohvaHS5xLL]a>< |nM犑C8z` n/ Ǽ~ g҄[y9c7/sR'w IUƧ/'wrzɝNVFRES1UeH7?8Z<ETߖ \s~ڽ;T>E.JJV)u0 ɓ n2&j9xEJtv뉒z=cwv2;s|_:% G5MLLDEEKJJQVp8:::jjj:::)))666N> <-F*'vݎjP48>t.|;g@4i,EPog#Y(}d8mq q0q UB-LCffFݑ1%P@j=w*؛ e^ظ=荿_h'}~t5`}*䷑:()JN RǬҧp^^uޝtm@Uee5͖Y$p=@"-g/l"e:~jg@hO+oWym]` }B`o`'+e2}(Qo=RmC*Ӆ} uJӓS8;Ae-tExů M\(Eߠq.5g`+xdV>iCs^% 4B;G (GT,= xH$VUUꪩIJJp8*ҙ:~}bDƽ)ϛwwRduyxX;M6hZTyCQ$ff\4t84dIL-oO6қ~ezG|'=jFLJu{zT!6қ:a;BMAa|rWF;ANh]3%gFA)Y|l\O'v ; TJۊ9$y+Ov Y'yc) v,ܜ] 1YWnU rӐ$1q:W8(@]3?p$\>nrMJ v2JCoV dw]؍d֕@Q;Eݨ߲ O!]058ذܾkOyY)\uQ]ա?21̌ IIɚ@QTAAK. EpxÝG]wڍNHM!m;NW[W~}҇-ѭwߋZz(,CI~53+EcȘI3ಯv }$pwgV7Fƶܽ &zGF8: 4jĐ*O؟;s*iN!NETF{xGʯbފiy9St:]ZZZ @ Ů([I &Qcp[FWYDP~מJ)I ]qO/"//bЂ$dNDN5Y#Ikcuzv ExԮy`՜|f1000~[Nւ,C{nB4ܙM78=!M7O ?w iVTT`50000000/z%Xb````tZ/^s2{IL00000:5ݻܢiS ?ɿ]~; yx㺧Y1LM{iأ_6P>E+;70.~ښ>ط`d ӕV{ޮn3ς_xcu1p6A+3 ȈV`0vA8McoC*iQID<pBћk"B׌S/i:mVDQW)2~nڌ)o~u MI.Fl֜ ( ?xqCoeX;NN>Yn٥%C=;I c]+3aY"1Kt;IF>WjxYGh5V_Ӵ(v_7W90Ak3GE1mö|Gȧs?NC<"\ffաsnl#ghTܲJ@"HDBE%͇oC*\bgmm8{KBDjޞYzŻ([:fش7巄1zlס6Ǥ;h]n.C֧{>n;2y;Y[[zQ8ύl;fO:rI.mmj2vĕLu ;6 &Pݧsdm3pu^tdw)>:nm`0ݏet0`0L/Uig3yh}Pm'>zѣGI^:Cvn=z:#|>^օCG]KԀŌSj: 5}ztE;^;y;kȱ7(4dՓ)LHvgARu\bdG U936CR 깜zNkjkk1wtMvx&ṳ[ռY}3 !3B nF1 5]aEPHDd$hn5/#2GZ>zQ+k4a/5g8?unwdz]99{bd7lSo/i:xo:s:ovIe|:2 Yu L:"!kL{FD~5KndqUc# \,, fZ4 օ>P3\iV$@m ~6eӧ"VTYpEg^}nOV}&[Le4܏\ lvD 1gj5'JTu)a "Z'6n:[ њ9dmD5T}Yd0=G{|\.TPHX$ˡ IDATJFʞ4^z%$CXp=]r{9ZeP6;/)aI܇cq^n?ztyV:_዗n:`w*EurBµ*'TҪZԑ:~iy̳Wxƿ n=c2g$9kD%,r4RWѱjV,=`xc"b;7}ҧ:A&PuGMnn0˜UHCVOSQT5w2o*"*Yp3 hOt8ۻhfZ^]PE*i R"RvPsަkr޽ϯe:ZV'#txك ;}"d?]AuQ%*(Ij)K@US$taW{׺H=2.-(^J9x3o:l{:]~@GɊ'õ?6%(L8ur CgY0 FCby|y&Iv<3'KtXruNmUU +<]g__a?`ow@DGnq%u\~iyM Zyy-'SxDlwmU6_Æݤ̢wMHl>U#@є?xQ)J]>gV.w\ PydggT~5C5]:<NP;Ft]ˋϠ1 iiVj;jDŽ׷yA{/r8ynr zaD}%J^upy}uyV%9y㻫-lE,_>V?JIJk7Q@fX8೹gXe<+! (jdSzw6o҂ ž~zorrҢcr莣;klDG%yzLTyB| IC6Պ6B QHCC@mveAjhՇyo04F!gl:[UU&t85Wnq]Քe^YՎ./c5(+e#K+;>+Ǯ?DUZbu0p]Ǯ}P gofh=RW޹(#B-遢(pŹ=]ֽ .L ,c,Tl!=vw=^:dMiH9^s NM^D((̚? O RB& ʯ %IBSD*ܧr>UjJk2rsjuiԦT>Ro?HITbJ8']uIOz쿔c?Mȏ /#Ʀ`+TGoOO{ek,ZQ]3; ކAi28|NCpKPu]R@rg_髗mKRh'7OQPPW$E/3zc,ԥx2#J@VN}mјRw|W_<}F0w&Vծ I^Yp)]2R*ʩVkFOz)?X֋uޤ;4Wđ L{S1tիWwU'f8k]ܳԔKz$J}y*&x81]sU;cOҔnJNg'TZM1Itdzz^oje>\+p3U of~Q rw:d%և%u5ſY?]gdV~W{QYRrѨw@F1xwo2ӣc!2TF8[l*'?^DL.zԶq{wDʸ;Jr>]y8Cؤ2>ȽGW.$ br?T0r#t+/mdQmmEƚiA]=od澹{@V /k3͞: d 5/aoE*+k(A%qjjjjS5n ÃxW]YQQYoBIZJ5uF!/i4jR{2IqJ3aS??&,Ui`'վ;NLNy *?Z ˽r 2OKu[Vj'nsR,h߽y. ߼y^BޅϞ,6_N*oJ7ZbW}CFzjҙРղVԾ2{xivAFS?Ś<+}.c λa/?I+.~+4[jޚPwE y5a-RD`:d~[*B73 Ȋ.u(mEQ|;}%Wor&s$aX}kRz@紩=Vm$whiM!bC i_)X3- J+E,cO8uHf{dy*g6|Z뭷VDw6>x6< DEj*(,GY%jPw:gņT!G*]v(yE:x*8q}%u$nGLJFoܺ@Rgz5(d0iځk'O6yEOߏ/pLJdHycRrtO֎wn)+*7:#]7O|]@$&Pmԧ|7B*N6ok^ ŞNc xnߵźMbvdؘhKk/?f?9w -E*۟kgq+qj]bNlo5E>NU4v¤ vr5*₿Y >:O\ WDKh= rB7B}>9@xmgֻXQ(B3j@.n'+>/Yo\YP( @wFt[Xp I:+w/7BP9~…+vtoHP3QإǝTdSTivpM2iV=R^TMQyK.ůoӒqVF]v#{7:j-`X}6Y['BcgބeM]5z/^n9 yVeʅSG 31j;}VgPuKbnSijlj*kjjjSNj+xtMp~NMUWךb EL&[E-Q3HL&.< 446e=~]\M7u פ$%jk[[[{I ϧ]O;ms}JgW.(ց;;ܼil>I;%0SWi aΤ{I&L ? 4"ZŐ֦͑ ?^jN^^ރA@L0U< AP_M!Gډ@:d%3]Dhz{-9jd't0ޮ !G/AZ W)4^tBԮ~PO&u{h(ۓY(Vo襜Sքv. Nv,V~|zH1S܆̘ʮ{cTMOj,$uW_<1{x )^3hOa fcvS헩.ע|G+ H>{YpwMtXh`vh4 KsnMeݱgH]%y%+ֲYuL3QUK|kʍLƆܸz`N[- x/štP蜗ѭ&o:63[Q^{)_֮ғ+yaԾ;mnd q_^]m ꙜN͵ӅZn?x뺫6L&+jXz$Hy8T[Uac֭Vs5"2|ʐq>iFP'^E+[ UԶt1`R~N)x|n ?e br2G+/9LIBo'}:rx=QgX=~HG;%M?Ҽ 5cF"lT?־li[DhOiHN<5z>Dop"Ff1~"IbZkZwt*$߿XAihQ*!Ee;Q ce4>αRسi.pWް" Z: C=\EGl$'=IlJp&[igcxAJv(%~+/医7 {oQQQss ’ 6Qv &,,`|!% 0[{.@#Cn E@$}N]2oCj ?SUWWWWWWS$bص/غslT%p.@ ss^%_s!FPYbARܚӒyM* yUx`ާ)M Qbnii3fJMPY JRNߨU){9*[bt2gwE~PO! ;mlSquUT$E/#Jd2 MIGq_6AxHur y֒ 9TtTBW֖?tDeWўW_}Y^C-ϻ{~.eqih#0ߓdiv6TBRҴ;TT,Jkj4#7\"/WP J̚?^GPsYjI[r)McBrȳMHať/SwFQ5g譨޶Vοs8Q%mh)0" x`击9z^0r;YN}6MKRs0Ι/؎Td㐀rjɭCE(rڳ/n<0݅n}{3xK ˳Ӌ9kJ;'$&6rH6M:;;x|kkTgg'fN?ޔ %q[@"[ ߳T[~ ^n¶S WGbZJb?*r|pSqE$f,hCXpsތKIe <>p{m2VSWDV,3^~3;D'jn]Ýf7m; ZV܃25'E) }? "N[w)&VuB lG!eۥzz;Eǝ\N'(ܔyp60N%z 8&uŊsŽl4[9m\)Cñd'Lh_2ŦH󣎬"ЗOX>}mͦEKZMp55uG[+8a򧆈NyF\\0`D*..Hfw%v͇hT8Tdw\iq'w1[ U:Ö䨌h>uYn.05/QPP&|yz(q1ѓ/9L'巶og0U##EdIII. Վ+ا0 IDATP?(i: (JT<zl}+ZPr*/H9Z. O= hGe<~z222?~%-a$kIeuPP(ۋ>٪w0XS_,QPPP+2=3 *x(((((ࡠ~h F-Fx((((((ࡠWmwmh[y9!4gsy(((((SzԮC7ϔV$*[QF-R]MxSl.zbbZ9 ƚ0OXW#'qzM"RM0O㮎p:;z]b/:Nve԰JKoZ[Nܩ` ]|B:(}} Mcܒ(.2>:sQ]1oZAEk [5G/[1M(ȥg,3ztCZZf5=Twi;zٵvW7 NJ{ ݍ%wߣv <@ ,/yXqMP%m:vcLgyy÷%.U]ݜ{ևFLGǬqN\}QQ_ vi46^afX,$$3"O#vC,)Jf%tg클:3wI[MrO|i_5 /콯?o*nOE]LP^ss\ةX '+Qb|QS> <NQS$boBB?A8]W~O |⫏j LYqn0b3;ӓ ;wSExLԬFsegRŽy$mZbp}JgW.豶[)yN̼v1V"j:bq t䥲s+Ix3ӛxuƠ6Z 4;Kc?Ə[=@YAfƅj[W{`5'˷]=LS2zt5RWCq,d.Ԣ\*`"H$bҶRھ@GOc̣AuisgkyA;f{UaQM(7 V彼πx*YqgwNECwѳ{:y/ӹm- qBO&/tWv,oғ]d1L񯣉[\z o.3P ,&x[oQmg!VNc$DJ=|b֗OD=/b[ydO3hXP(б |⽐jSIzЭP^qaK4U%푞;4ǽۤ/NkM NŠ$#C0d[49GyT7xiln &܁b$:>{f|rlWm.Qu(n(zmm<*timE! NDZ:[< 钻b*jo#'*P+ċ'h彩bp#m+w-z6elr. @XÖ=$2 8.d0im6ʕ)rbWώ4crD%s5]VcY$|Tz݋CKb{*dmV; 7k ݚTyՄ]{V{Rw\'=p/WK 4k ^^_Q确#N+lͣVwI߶q $5iZ c^ae3ao)xB7qN ,3XYFI^e~8Bvd>{`> f)NR6B%wUwlir[)M GZ\_q.r <ЀKmgAmEtbU;fy:8>OLdDe%0ut6y`.:TT25w x)ĩv {Xa:z¯WZc3N"yjPsN :V`@4i*}y ґ/OB$${8^DZ~$N3xj'F ޠ/zt:A5k lsi W};PE*Ȗd2)C:̯3YƳ>%]BKIB^ ;mrË⚪}O8VNBc5G9:4#;,'A" |wN->ouۂxU3hf3""x~M&QeJ37j-~yt_%ԫ{fl濍@Ao&B'bƚjmi A1O,=3j;nk;8M1]Ko"J27:?`WUn;V`dT~NPf캿'3%h\ }qb;['f~=x ~iod۟vӰO_}:]u]?-y{K1kyjƍ[6͌0paH ?@2zMD q=<#bQeOȟ;gx/s^x8mpT[@Pjޡ-5Rx!q^϶rɦӶ1C 7:loID 3nant -fY-Зo,Аb? cǭ/\mnj)s=ZȔDKϷ.ߚ o^IֱW:9.ڵNA.b'}&?Y{ḡ 2iM.?t45rx hZ^bAP އYbGPL. ͨeçl!EiT6|՘wS!zNQ5d[ %eay]L/_X%8?}*Gnt2е['lij~SO}>z X{QRuU>V'U_:mb:~ObBcgބeM]5Fc;zTdXڛ|zҩv&'fa~DY丕b='M1sX;Iu+7Mp~NMUW։ךb EL&[ږF aL4R&d! OףvuVN6@JLXW]>F_ 6|7/?Xn\ȹ{%v;/_|d6eŬ^!D-Oef^i+O܅\;%0SWi a0d^`҈kCF7G.[Z[̱aAgc\%GoKq۬o8 ܆t;{vqٕ# ;w˄xveMkFw\?~r}}̎s*2U%=xZhRj:bq t䥲s+Ix*ԧTq-k' Q N4i f4UW^KBBao-ii)ZXQddclɟ%3kԵmwu1U;M1Q#+h-޼`P$b0BKiV: kвq[qaK4U%푞;4ǽf+#5gcNDqFj[|iF* J#+]GTmF5$9:jZF n71-~e!^Bou^-vk,YAG21,붟ŨBO~M&Ɋ R^6ֵٰR 1꿍ow c>Xe8Kc_mKᕭm U*j[:0)?^yC<h<ix46nncD~pc{~`jtAuX\aVwd7UvX41c/ڍ0BIӚa @yirmΊ޺;VQswOƅ'NTC/wp"Aa ? +aҘ\ˣV12ma`bU K h5xǽl,?C/:ŭrN?}ƋumRIzăp p,.Os`3AT۠5Smrlzܷۛ]b-Ȼ2kgܔ}OU/ vce޾bAFn߽N򯏏O(Xlط{*X:#,HL;0jgPy"љ*ď~C[{߈r+t'Il-kΩ¨/ AvЁWoZ}%IcN1lOu-O[Uxb~wN ,3XYFI^e~8BvR&X<'oẎ;{+h-m8ֽ-:r%2qe `HR xs IDATh"hn̔$XF{2@xV?$㌣q0-ӕ1`p؏jwup}|^Rf !h`RCڗ-m =^w)Mi7F6 Nd<|H݌R"CdQ9ILkM @cS Az /kb#ͷk=c8hkysmф73,~< ?Ps(Nf4I&#:J|Hzrp@d_NX4]?QἷsɹC0,$G̖LqZEA~?' Z:Ĭi+=վ{R~Ӛc@w奜q^uƞY\wR8Hxb#($0H1 !կj]yϭ~Zw^$qhZqb&1kNO, ɩ)H1]>FUR K"HӟӾ'鑡aqGnxY\SU}w45S %W0UoeHUI OS,f.+FqYv-JRue.QSsT&ĈX+we3;᳻"db'rd:9;`bDQy)BS:qBvئnCUT$wii-z*Ԯ湱qMİ?,Xa} V8K%0[_7i-]uϞ$J))"w ۻ}OuٚŵlgzG\qdXc~ѼB$47S >jAh .u"HgyjOCCgW֖= ZDf_O", ;P*# GZCυ}{IfNJ~ NfW_P߿#dٰS'(.<De *c}Ie4Z;J*RTjiBuO*BUt~ j55?f.VXIefلb%LfM&$,ǭ u!9Kz2r7M[w,ݐuRf:m4'5t}dXu`W\>tGW#/u pr'oxqq]QT3u>O^tt謫)A9F+^z* `击9z^Yb&kΞ].hƌw2p۪J sٺRH7qH@LV9!"nQqK}7}ZVZBu7=ҙx'3a 3Bf. 4/"_uԛ;b6 Vt i~4Pcc%2W짶#@d5|1{/Ɍ|<|ٌ`ŭτDb8q;7o ssl1+|Rm .NW3ƶyMXGXx+AȔxVlOb؄xY߭Y;+mz:C~QOzWxC'A`bZDP[}eH.{7Yw6xGp!-00zϹ]v4R]zj{.!#b}hL@^&nmn䶕=kډ|G`%:g4I)D地#E}h-VN[6|c=Wp!$ׅLi#eDO5Ge$yaQ_/=phsS#\MMqJ'G$'NC·c>\G{~"|}ڬOv9r?~\wB,N%9*cy,O|cօ[}-m:f>B[36>:r0= 2t_/0#v*giH'NLI[WrtXbFPZ 5kd*y?,kɯ=4OWGdUuuP|;L7~45uinw A]gƑ ܳۂ# [r-#jRrW\:~BJGhN6@JLXW]>F?3kmmTɺ·%bXvY\Lզ n^{ƹ[C),:|>:dՠo ™5^;ۋWdތ[1֮wygz؍Q#68i¯||T&{V_^k9&$IPq?}-rEX9*Vj,Nf- [s|if?Szm>NQS u#Hb=߄؀H{qVQg:߮Zw?/mIPm\|NT-05e7vٙTqswyb~ծ/u46(*KeVb*4#pgMP+jiZ;N v FW;( R1w[^rն&  &X}М:g ȦY߸RɑgJ1$iCE+Xƻ'6͵Ri6Ѽ; [q1T1w9a Psyt="t5.ml-/(~l*,`旷q@𣼗7܀Q/Xe k5.1 ?m- qBO@$/tn'n|]cb#8Kd[diF|CjsFzN['$&׭\UsDT.魜2c bWϱ"Fme+'[b"_X1뻚a=ز/'hb> B:;Yba7W_a* [ 2N;l f=sF}ii)ZXQddcl˔V?g A޵8Ą;X,3\'8zoЌO}zj-P1S%dthy#uQlw"A/f _QydӦZ33>z Jl¼ ?whq/Mܧ>8 e+ L0 6N *Mh`d6-bɜ:v.+wt40ekU.DLW5]Vc13{L'MNٽ8D)1xm  7k ݚTc@zHý#W'uR(|?p/WK 4k ^^_QĪ *[j-x##)z6AjIRs8fEV6[7XQ*tLѡAWb1e^W -4jG{~b>~@(0ew?~ĚSBOp:()ѕZ;2}۩}F[]|?_`q=a0+)NR6B%wUwlir[)M GZ\_q.r <ЀKmgAmEtbk@ִ8SPu"&y\Lǟ7ӞVSi"IJIHYD-EKld U))41#D}kys=<{HcjXlfWlwrѴCHthPӊä.}ITir~2c+=XU@CK7bɴfaDEIP*gD52~-$%z}gwN47XU<%zi2~? \jOߵxC[Z< -e Q^Dljb1<}#CUN5}-uY9ٍ*d7s%fsYu;: ';z>E[B^AAAAAA^ZťaT~P5X^ a6-jfras)EƼ{Uߚd7j'gE6ijPNAтZV&(o``W3[-é>U#6q%})″ݳ2DXN0:;4n  OLZRP{/:ji(로_NJ|_V/t0o>'݂\pRN[jzW MOg0Y2UqϚ/U86O'ouiHQY^Dhx3۱Nb,c7J:Vz#..y+̔\)][EQz;$\8z&)W=3lј䴌W)Vm~n/`u"U999UT$-GHپbzaqvAߨ*e*\@ ]:w]\%n, u[9~;- d=FH9ByiU0rv3$,q;b^sx}[cّw:􂊚obeJm9뒟W-!!'b6ھk#DAI)wJw}jY|@k񦙾;O'({ X"AWHUDqI^忷j+6ffM+ 7qԫ! 7 A5}ClYN ɫ G\VM#z֧~\%YWbɂ"4hN]#O<\iA:v;Ckq;\C>bCƭ>5o0l 7V)~akyОg@+XP؁aV -+'fUά?Vw{o=lܲ·.V%ѥp}u Vp؊:\'D@[XsJm?},IZk%5kϱ%$9Z5l<'8U /SXN$ӹeq\Zz͸3z9Jvi!a+l jgC2_gp#̢lpT<ѬRe%ga=qڐCsOQk"FYι^OGAAsxs/8Dة6ϱ.hiD,퉍ޔt79j*T+eO2ZG్xjÉ"Tl0 ~KgVRcDexiOXrnFA-bчE/>fcI|KB PPFq;}oU^q"uSx򠠠ǿ\Jւ;  @>_D- PPPPPPPCAAAAAA9a,B[SyX9|{* uEU mT*CEYiiIiД GuN.O$lnadv:CJTMUi|GmmmiHkkzYYڮ1<Lj1yL(͊5?d2L7~!cJ/;<]}oV4c= Ж\W>xCZѹiJJ*4T&пRPFG;/lcȬK?o L׵p]@l3ԗ=boƬM=xL&{]yBSL& N5jq얭l0ufO4\!d#E]iDL&n:}{~L& .v fdHyMXӞ 0\,܇Xӊ5^%KMq`2@Q&4r9Yc|oR^оeo IDATg{ftKTLR6Dm0"l-6 OwÁ1-q |ZCⶥJI ;1=s싆!(q&~ Kt>6OP=irqgv+!e;]nǻ@ѷ'7k BKgr_ޜ~s =Չ4Fܣ~i8o#Vg@NޚOW0E+ܼ}&`0n.n.ps_,,zِvd} 2b֖\Lҩt&]<وBPtGz jɌZo7BBOX\E ҝvb&C)gnQAG }=q7PS[X&zY7 5yd}an=E90-2,e^{ LVR_P2rxS5ĭNsNXHog ^tcAlhv Z~Xzˀ/4D /:߿|CSaЩ+=M%O:I^dg8bNO{:۪Cbu\E53ViDc̥|~3J_&qʪCek}' `wƈ8t2vj_>"C&MlO}K}9YWL&凘/BJXeb~I#%z)ƆeOH ^"FG'$,̅.g/kygP ʋb1 M]矜Q[FxwYpCy|`c=Y-)IpF<<<$‼Hs"e*;R‹i}s؉ߙA&ǻ~T )30[}e4Ua@!q3Kd}x?m){!Jr,:nn`܉x%0Y6AJ/8qYhW;';ҀY>{[\`/qFiuSxf_,xGH<Op #,$(,$urOz*0{jKM2Y}$ I:O3uɧ୶zWS]™XLs TARBVjָKDzA%K9-u[Ž8G LgUv%VUc0%R,tVd"s|3*@I4ekajAt8g梕yJBV6LLd+]cc?y+VI< XaD^mf$gǏ5m9<!.UZrбRLO  ]mCcL^C!|̕Gy8p>΍Ҽ 2Ktcµn֥-QՉzA]gZw=-hC&pKK]tU?+Q760D4W6c&" <+`H݃̏\h!*o=vz 'onJ`Rtψ#gbOFMC2T/SёM`~,i~> Ű_M>@MC7Pl`һ[`-ܚ+dL|xVs9YW4A-x]i̮IiJ1sҏeϊhC0w/N"C6NoXe"/@"8YUJC#$#L^pi_c!:dVFO:#L_6r {JC 6x<+@[t]EEEEEEq|_eq{Y1#;[&~98줾}T R! LZ0B4 /.#-BI:1մ1Ξft: AX/CT%Uj^Y`>wxA5~Ǯ>26op8 .΋"ӘNo?3p>Nܳb: TE&xp g}|wZlS`NM)90xǾ+SPR,>qW֪1<y9. %A$4LZSCC+IϹ\c WKhHgsC]]K,1Z#vxCCpXaLz ϙ?HPs59qѾj3ԌDF א"$n0d&c8Ecۦͧ.)ўyashe.\ IdRtIP咽z<{f؝"jb*MN yHttNS^mS̖|E}wY~6ҟ{GHn/WE)R2;l2:”מ<%y{_bce1 QQѮ5)\ HKK*4%Pg:4mݗ %02g53Ҁ(5m '>qWX6 G& srAN|Ү}f D|ζV<9&vReA? }սz-[Yp6/Ljиhom2Hs,k&jNJ98n(πE\@י}o8ٸ~^$i|tf >2pܼuw[Pn'v$R<=Ӡ9=xDz &}eMdч2KGnf u:|zԃj7f$ÏЗOX:a- g%/s=ph}]-܌sԛoLjOsteX #%%u8x{d]Ҝsep~x%fhלƬMkv:ّkOgDʞ5j{ _0aˢV!ms.E'F/>6iz߃CyQ|ꂃnjw~pEL81Ɩ9-mnfoonndi5*BCRr5բD".i"FVV%z !PC<%QC*_S"?r}'laO}˚r*M`'ŢN!CvyVEk1n((R׋a:O%t\ݾ G)o .(? p|pI}KʨPP~CXxxoUw}=/3rOwOF^gSVC~_,CNg5(((((ࡠ2P9ԃ(((((h  .xZ清U~hA2`Cs.[Ρ20Kʫ4՜q|(33~=/$b~LUo5fb1Lm2 HgCYAn֫?Hq,úo\? :UeQ|EAvzS3}KVy1o*B+yWJ/3P( 2Clo\[bi͵)=/u6a3O=PA߆l!a Egm%(a3e>Y1mBfzA͗"f c |]N171즦?':?6|P{iˏ3Ggݚ/roRz t:)sˉ-.\z0-)At еB蝂nsXB#nj]v;m>aaL?z~kNbk7gv0+͛=㋘n8)ۓq~zuˎ>85^Kchq; :^azKMRzi%;fl?U~k7ޘ >n|e_E>mVTƷ_*d.-H.8p*c&y/;%1 kzI[*Z0rpw|+BN]ÏE08(}VgSQʑ́nn?ץvu HӔKJ_DzR)>eᤚႻ/ Fh)➖S0HcJUbܘ&$5lEfD:O2_i}%ʭ:yUcx,} ,̀8"0na`Xy6=RBWzR ^3[G D:ϿeP776ʭ6e=^<~>D'őN+hIvp;xG]݆*xk*-dw Mt\n1FYԼ%oV]f.[ z]d-nyINe ;qrꚚ|_$_:9u(ϲШ:\ n)؇[c g!%v72;ͅH}LqKhJ~ԩ 6888S8m^WOnaTsZ(!gM.E@E-5՛zp:~P< 2o}rknسn"j<؍FD6_cT1mqL *#~5}C3#q<,T|;|[[GTx…}^K7I:\4e o&Bu^qtɬޯg>/F]8bȵ~pK.[w+܃" ;]zӱRϖEwm^uuxvSdbdistc/TY|ᝠДfB-vnpt-g?ȪܭÁ! -2(evj"ݖ^9PxaBP0^zqmoHWkć ݖ'Fg[ b:o>nWҩ9d1lٴ0zW>I \>j+ŧ5jE zJw6, ͧ&k=N]qi$1;άٰG;w/KV6p8Q[ߪ!+'-" ׁ.>b|Ӽ\ǨJI/XOޢ;LMFRFH S}? ~ת:2*f 6-T*u1 cH23<*r^v -6=*L&qԑVA_+WX XP"Jl鄾#p#9Ź[TQdf0@W}ةܠ\:RGbۙ&I;,2[>IABW@$-UḾ`'n|݇#Μ>V(mד4.Q{hLN3U? TĀ!,mLZ/գPt'Iy7{]܅Q:|PJ!g['l8vXEز!TnAh[]Xv2x 7?,1P(aVrcv_8ӷE_F)EN\b0Lin;R^B-NFm} 6<K$Ǐ;wVD͛j,' .@UfzM{E[JZX@Q ,V͵_a @2ց`uV*Țgq%ofBF$s (77V]^B](? 5;&Rv}qs x"U3GZLV^UYi&?4qz'%HYm p Jbb1کT2:DA2QGWOec Y~`m3v%X ]ԆpY<>.7Q DY/7Rg2T;u.a!޾#0&efy ȏȒ}~CWvoP =ڲ%VYC!*8HSN$)YP;3~¥ѣLZY7XV$pl-'}]nbˋI.!GՎ,.j}"ń ﰍoaAG-}Y}!5ヰ,vw%,v?Ҽ l#b.PnZȄߡs[֭G=T,4%}x筲"$$̆ ?+y?'<%0\f 8;b.3;/"I]6 陓twt}gp֖(; `yJhhiXW3[-é>U#e+yK!r]8OLZRP{/:ji(*`{#Q޺XXgh7`%M,>!F` +evVBB^T/nh.8zbDz-I5=+3iy͜έ:Uqޚ/U86O'o4o ,/F"ud1'-ErlոX>]4bg_$-j׉")Sɨ? IDATUyz],ZsccIF\ 7%rdK2k}FF}7b½pnnYSC[*Z_eX+8lcNB"h s9&`ƶO}>T\$Q֚u]aD6Зo,Ps'xVHzۂ^\28y.-Mf\l?Kӯϛߝtr7%S 3J ,,IB-WؐΆe6ϩN3fQw68UY *hVV)̒i8mHա9ΧO\5ct<8'tn7bز?^C q'6v3{S~ss$KPQ^I8om/iͽyQ@Mj3.DU-3GuBFK<Om{8Qa ?|Jy^Jq>KMR u3 ?o>'#o] -c<4`6/$-\=g$-Y#*BAvTyŵKWLڂ7]Oә;NhFAA`ǿ\JւK*PPPPP PCAAAAAeKsx/"GAuFx((((((ࡠ'WqQPPPPo\:4ePTPPPPPu]^yuj^##St 2Nob_YhMP=қ|ޏ'Q $/+Gܼ|:t)Z :^%SL=Өh 0OW4?\D_.{[UK5qMDG0܊VcT2w9=ƃ&V+QtU2L&˛x?u7s+YͱhK]+Gfh!4%% M*JJJFG; ~K?o L׵p]i=PL&U mw(+.d2zS/M5dd֘VH52L8I`;Kd 3~ѧ W7RzKIen+l|늑=>uE8da~.׌[Q>JO&4rn?û5U^a₅S-saF;,"N V\f!s68FYJ׽`-:vgڧ0c[T2rO-uwؓA vҋ#Oz,3P|ŨnG|ͺ{:Њ5i:wBo? ,-_7u=%%%91NSRFGx\C#UOS.)-lH;t>B1ks3reqiz RZ>e|^u+ ҝvb&C)gnQnT̨v#(EUt˭vtXP([>'shOM(]pRHGiœ( Ewj@{{a1Bh\n{4{Um ۇ {NFP(mVxs6GC[S(ܒf1B9/ǁ/Z0-2,e^{ LVR_P2rxS5ĭNsNXHog ^tcAlhv Z~Xz@izsWsAK5m`=w5/ rVRz::}p+-Hj? ӈƘK4Vg3GeUUU)VLiͩT mHs^6FUšSqz)2d2Ydhɺd2,?|ɿR}C3[x\GX ",}v[|%wBFm7vCv̬ab-C>lkoD{*aA䃗֊%%ձYp׋ݸg:F_BTY{3#+++_k433EIƇgeeee7љĂՎ 7n8}:B9q֭+3wePz0*tw`O%G>i .]6} "Bm '>,l_53EOȘ.TONبq#yhh;O,g= FX:{ة.kOViJ0.7////// !p~8 As)cU-/n0R`g{TU䕴-(zՁAIBoIv$2s:nn`܉x%0UfQK_~ >LON/8qYhW;';ҀY>{[\`/qFiuSxf_)xlmncK:r"/2KK~T}rS[W[j}l%aL嚾u!2dIB" 1\+`O>o{*̌CMxڄc44LgƜ6J׮7kXf}_Q߶Y{MyMW"˨^e8gXMEfLCMNu\T3~ھ'ϸ?,h*̫d男Pr^*lf9;9+ft^Rnߎ?0MqRՀH }pdAhhdv"mEMW'썹٤\ZEu\r rVo՘㱸 g8u3*QhIV vAL&eUL\Ήl#xo\f"ukߝny6`!=S/<}uߒ̦ &V~'}]kXRɨo$[_߆b$~'B.ΪJg2.aJX|UUZ¹4ʦ ߱9eĊ,y @,N^a.Zy;}V(8qVuuEߵ0u\ΊRDy/SNySi\cZ=I=*tmK:_wf&RrA%O IQŰ"|vf3jG4T3*Gn8X BCNUjBalxą0کmm`PiLR;YWpٱgha h˾e}.w>W ?>o]yÕ??o8L!9~NkXI|~7yu¤V=3Cvw)psnd!Up}fQ}yFFyRİaM63`+IeFcG[N6+O]Q<,h1;λy/  ,/.'-*DiV;yi^7,bm_Je$"Cƙ Y w6kpn('E{5΍ڋȴGBza!Xm(k/{; 1ﻵҼ 2Ktcµn֥-QՉzA]gZw=-hC&pKK]tU?+Q76OR˜F:7{]Bd!o'[L j5؃2 IkIho3jd*l*b&ydoOsmjnގ%]`~\l<37~b 1-nơRkFLzל"d0xnW2&>y+9,WR +)( /K"65P 4O9#gE4RCUuguV) a7s!n6rbfSq,0ǫ@"C6NZe"?0X, HFDP9L/V<ѫ^k:5Sa yMDM}YӞՓ%D<'6Ue]g-Oh!ߙO\|FdGe:.3|S " 4r_rGe#VJ>..︋͎yϬ7ʶ _PMGc~G7R3Je7OOOo("+kttϞ j T3w#k|K뷞KFb$^GK=.=v81s Kȭ|th[{`pc Rԁ QuȀ?||A;_< 'alF͝(t?YWۚ&joTuLLܰ.4%, ATU.i {Bp@=ߣIQ` N|5U7_WVgݿ_u5547*|Z7c憺/YbF exCeW&KRvҟ3 IәW2 YAw?IMLqSԓWׄW(Gq>uuyAbWYhooKҬׯ_*@Chn}AyI|v泃 -eo2EmtY|П{GWZFޑ/5Ղ~iͦϊJr<);ha<+.~ϐ+S4ϫ;XVR;C^gдu_n6N|Ү}f Du+w9yz6:DUbr?&' h$Wu.7\To;- h֋=yD1iMl-|yM4'$m8kG#$zokMGz+h,#x.qMpr8w{d[f5aZm^ʙ"%3EqѴ%1\s,k&jNJ98n(;h\y5mG7멽$2;<&%e*yzA 4[0{M eMdч2KGnf u:|zԃj7f$ÏЗOX:a- g%/s=ph}]-܌sܫ L)#G%͉8W}&_X J7̖9Yt~#'֞yk&=IkR($Ca GE3+lC\L=/ؤY~ E 36M?0{&TuD"Y)nrT(/ Juy{vHK֕Cġ٭+xKjXaUD~|Nuž5% 0Tf17OEBRݓ=bܨQP(TVR(mo.n#o7S^OZ?pI}KʨPP~CXxxoUw}=Mk FlJPPPPcW/^e(ݩp9 ?*x(((((ࡠ ~i ᡠ ^凖9naZP X\s桠 LRX%c[,egiӍ&ohl(+z"zX+ĢӺAg~1,av@A>2NobFu۪Z4-o:L8`!BPNUfր}=w'}?R @M[oM᜸yq] ןy1d!ҎMFPtF_1Dc9ӧP(a㜃_xf0^ О}v qlaREjnxS({ǼM2ѢP(f6+pZ#>-lt3m B1`׍nAS[?h4M,1 댴[sE#_Ub]jW\SOc1N'xn9e?ӰL~Q)mTGHv_=f$tdۡh۵5lǙ~2\,vcoB}jܼiۿ ^=7^'ͬ]H胃]㵄[>v@^zawXp=ibKEQ {n!QX!mU3dE)a;J% a~"+B8QLEZڴ,#^^aYpwnSKۼֹ \^By0?1вGcF 'GTrds2{cNK 8 )}c5SP}I5Gw_RָĽڄu/ڻ˸(6]H "݁ݭīآbǵ;؁HtoNT/~]gfyv89g !kv\xY^MY֐zeʜ&S,l/iu/' :`I6'2q8׈^[ d•ǖZR>d<l2Mn;dN\u~| mێ9 Qj+2^b-<)۟gʹJ,%-JY~u痐? ޲Gi*&˖S1hbJs咽ZPE}C&5o'9zC]n_ظjվl ^;_ZMPA+5voTپՍ ,D=ij70Ђ_ E+2[h 37% gMy( Ral4.Rky.n^Z/b ^L);jf!}}d,V 8sOgxu MKZ=/ ݗrx\D"t4T\ Sm~!/?'NriGSr$ݛ+`I YWc6:gakљ9K >v ь7Fl&~>to}?7Љ{:0?8 :_ܴ}agc~)zg]^Ryi! IDATx$<Aoo)sP2R4niח:sqn#',n8z䡍c#6m SĭP*B%. \3z 8Ǻ͝=9z{!뚪@m+~'fsEGRMle|SQGRyQ|Vv[($Y ($Csʦwmc;)T+VXYoO2OyqHoTwrV%-J[$2FDE_Y:}AÎ6*?Y⥹]7uxklW'>ROaaѿUASd|Eq8R)lobju ą.9!HsZqm vчov p WFwbt򝣏vs63n6jh˸s^gj/:ΝGt3ʊR6ca}-R{fFMRZh* ֝}n;C@CƽߺVLf0vT[L#9Jb;b,# EvRٓڴ0NbJ6=wv5]̹Dw1r*^n^2>F|̐ļJG/J~ML. M< ymbSçO٠ՒçOY7}"Ūp4 ')dEIq9ԛG/,pFĝF9[>}q/5u٣ ;f5T)?Y9;K6aCkzGz89{x/No#O_Ƅ[+95zKWi5udCmj{MwXdޗr,Ԯ哭cNI_T,GGS}}u^rJs_/_=kLHdX6%5W*2jifdsI/kng~)I&t'OB&UFLYtaNs#cs{8tTTyzv&<*H Ȓ^KÇW /9Ywx}` ?lhVz{aiӤE^nT<φkou53,er ;S)dlEdf|~x?djѥ8[a/U3ӧdĤ>Dޚ9eZ Uw~$y]$Z,2"H8xe@|!Mp xw3G.Q~FV,󐣧UW T\8-JxUcLO7׮`@]ܱ%fS\0juńuэ wG^Xx ̓ 0kZ7᭗;6nxK_Y|lmQ=)^3m\VRx"-p]\t|ʥ+QJe>ke&tQ-^.ڳv˷Á%HcojMZX`YsCEʲ,0̶Gs@1!u{> ~Yw>:{5! 0J:aFRqI+FnWɺo_Vߥֻh*I_.=K̖QrylV?Se4h{4V;ǎk>byX!bJ@;L=>갩] y\:OK"۟z皗8ZDޗl994 59տm3Զ7Yt);OW٢ q&6cRըjD?NkAR<;3䲬𣩍8ۀ8͒wS&ͺlF7kK1ņ_,nZ`ڐC,lT]v ٕ;/we^FԷ"2lэwD啼"&#.}~ӲߡK:u[>лiL)MgڰG˖ZN 6t2Q% 5n,<<<<<<<,h~罏_?xrGc>0흏':-gպPNe˦dbE!K~ Z&Z>/>=gMheT=Ξ\?.XÓ}84,%@D%r'B8ڶgYC]O)ed˞ΠB#s堒^fkٚj9 !ATף=/^dhXThi=oӫ2{Z5Y9oe'q}ߧGYyVnk/QFlʊ~ý=M{Uhmu[ho$Ž}xndž1ҾVS\^.^:]J]i>}"μ[+>M4uv{PeqBwy$}VUb9YY˩k;ϿRBww%XynVffV>U"4<5# VKnBIM P̻ o{rẠOQ-Zn{ZM('ǠضK|1M𦅇zV*sK7(Ջ{2x݀6J ~sŶ7B^|z {jT GMhmUc5*6b9dEiU##"""FKYRǥ4dيO>Ǽ VJ ?xteB; qaw @&~N]ۤi9'ʟ 8,.)΅[ޛkfjx3NIxe}9TKIuOLI{uJZNiy]82*2@׿+8HZ"`iMѣ|:/k"CkWo00]{,f-`Mjn[׎5(ٺuUV7kffq 2f;v1=Kf*RIKW鼕YۥkOz VJUvCZTū4?I7G5>˲F۩ߪ ;ؙݐ. z ذz@e}^JȆI% ݠ /mܲ-#= ._0hܜ슬yif^?~^\iБ{ǨV'yocժsHikkvY;v&t-D -:hg# gs:wu6Osn]kK7ůק#:O  -NЅݼ{)^=u©3p'{sroݸޱK7HLX8%~*ؼoeY7Յ3%Nh_wd\ &s_kٮF*Zgx*?Uʂ:fZac!ݖ{/8JGb }O"4(~g at-}FzGh/ʵ+efv7vRϗK u՛ԄRCR-OcPգbvCO}j?.ޔ |v޿۲w1 g1⋱TG Y?q?B&<BB◎=_{BGx!&<B?Ix_: \% B&/Yc]8r̴@y!jf+v 8?vqu8 J>ڻA1T8{g |`_sM[}3_K?$Ǒ18lեXP( <>K k?W.e .U'Or1*}C{kK;cd)XJC5P(4s>'IM)t'av(F8M=SP(iwO@t= BS֣8ɒ~Yc{Y B[/De}o\2lƖ#n~]VfW>b̹̿m3߹U[f $y;׍5{7P[TϙnZk\nը oRbNo=9i}ƪcIP{ o 'oviO1d]Z f/?yUjF9 ^cX*rqЕoe yuoavקG_0$` ^Uo_XSv~J~87c}g{ϖU ǭX%\(9y|nscPhi:fΏʊy22R=/"ʹr]ԛ+,b '=fw}kVϭpdSNez Nvƪ$Ⱦx'6uPc;sm}/&kX:gKw]|ZJRh]e]"cwmֲJPVʕ <Ҭn#N>{xJ–nbeccce:o#8"6?owGs_X(ZyXz'Yѻ]̄BЬ2f/9Tr$90`etZ"E~J!$_9qGR'wR=׽:pӿg/rou|tjU'ё)cGwD7^x~O4yqӌ/msζ7` j>n+fq1G^>dr#m8e~'.D>xn 1 ;9ܜ[l*ehRfOak.:t=ڽ^9q]W neZTU?dO{a"՘x7 vUWԳ Rn )xn3y\6m7ԡ@ѡ%***SRJ_#/asދ;Q z(!d!#Biv:Efv83Bm켡M8w7:3 贐RhlrQPJ M}huJ]k15|`{ܦG(p%VہJ=ZXwAW݂Ŕn`fddٰYķ%TkQe>gކWaeQߧK?LžH%Ex1-o/WLz}q?Wk/\vqcKTnR&ah 5!+1 5yZ3@޲~G&K58Ԯ;7~?;rݲ'7$*|rv~bt6rÞkN]yH o}oE\ᰰ[~j5N(_W Bc:wkZ^]T͙Q3}:MC vc^蓮vyULYS L~=ҢgGcumW25n`\e㨝::#!,k_ eAFٯ> *QJuA}=%&&&&&ܟ`}2J.1ͅ53!4웚oD ~w 5bZ:x1Yqz[)ɢ0e܎q^z>Uʖ|t ;t]3У//+f`Ҿ*Kl}a!5\92Anޓ΍.2%{:cUCc<};C ;k%?5}ޑ'ѱ|VEZ YrH rad|rr+W(j9Y,)6" 4|sv՛?-LáIaΌ%tc씠3f6.۰x\%}&='ipʈaD|Gn?SV{ޤٿXp;ؔ0g~&kFn=wp_eotgۘxg_.Lr[-g1.t;+My~e3o1J[O ~C\N5>1`#3ԈrrWMސ";w{-,Gٛ5k>F {>C͸vV.e|݄7ڔO j]}<`Zf׸}k|lRWJgO_7?R񃲞Q:rf#K=ܲ`j9xyTg;,h|yɴN[YW`mӱ3z4INPӟH?rY] Dwmܲ-#= ._0hܜ슬yNJh R(?سG.l̩~mc|/WU+<<&g7K3zFh~՛mwCpG61>3og1}%kG7W6Z[yN=~>!Z8&tx} z<>){Ȼwߊl?''֍tĄU_q_+s2=C#wU5,KfZ v yD ,eAݑM<[:S7cdZ,u2 ~b&Y>ݩKJT̚ ׸]4%z<ڴ󒀦ZzӞS.r,P3,)ͬ0Vď[7_ا6~N_&ϛRBM 6,xu܉۰8k%&}ILRB!fe 1 ˲,R9}VLx!7aa,HbI 1B/2331!!?r Lx!j.]*r^ffV>}CBnVɖकUd1==}}=}=}Zz"*͛Oղeǎ.{zxZ%s~i\&drEQ4EQ0 OC!T $lyʴ6>ssՊWsAm߹cLimc,߈53AO}KwUad7.X;!ڪݞJX,% ~|Cdv]GwJٶKsuS q&QG=M)ttjCfzN5֯uڞw uSc\5IiBH}i;k?WU{`]ޞ>]luʂI y tz?mvi=lT%B_m#b y,RRXw~IpTv(ME[)˖S1h*|ҜzjIC K50p>Q}ȷ2 SfajoԻV_r W:Y ij70PqǺq97lxii7Ű^Qu_|z6|>naPldFs~uQ`2}׽+xuX[Ltwtc~@[4|}jdH١U3;yL#KEf}ZVVЬe7^xFGkz4<.I&Z7oxܟO[Unkse]jY}A*vo?u?h!Oҽr͝ %n|e1fӡ{`cbؾmY~~k'mxСC'sKKe˽̜e\ B&QW˥7,˖q{>_̫ݻwzS=^jjĄi-z]e>NͲp0Ox FԔ`?hp84E j}?c~h!ѲcVJ+烃7oLߝ#IJ/E˲^vvm 9yg%@a I M6]r }[Y}*,3#u4U|eX'`?@kq+'5hjj^8ޫe 'n޴ye>51>>!.ށg/rZ"ÓV?pB%^\Nj--N:n޼I SRik陚[$&$]!#}{z]I+~EhL&|w):Q-wW`?@lq+/5ܻwiժyp~|_ }?nų4B5pZ)#®@:vPR_IAx !TFxجefdWٸLMMq8lQ~Q-;~@ ׯ_ŷnӶ$/ Lx![223?'lfhbbjb+yBUWr4'7'6&s}ZHS#)I3#"utd2&<He]k1 MQT qt8Fn޲ &<0 C˲5ZZ999$ZY!TsIrj|S~!Pu aC0Ud!@j?}1>ad#`W!>s]6͝1 K0^~<+g%%RQwr`1*WT)%`YI£G"B),5]n:\)q\mSe%HJ~m]J/!J 7Ѳt$<n#)( M.J*Iۺjw#63秽հ2WEC** Kc|12L'˗1tah_D,V੩dbR4vJ ÓgD#uWYÄB~x-'0y$tnhPV_1|e1CrHXI[%*\J,f>dYm C0$ZjD(ijrDr?2Sβ7D./K6g-LK|to=Y4,=$Y;(&<(v{I&/DO-ږ\-<ۑԲmH`)B wehDJ W@Zrd l)C\&JaXyNTaj::J 1ߠnc3M-~{c(! u;rg,m֑D<%HqVJ(V!$HװuSK87.4$"VXe@QU!Y"[p STJEْ<:cebVTd,Bǰ$uzFDݡq]uҜ\ʖד@X*ӳQɄIʽ-TݾNhe!ScYS/HK8Cvm놦u z.kJ^QsS}<'=]MObĄ%m,MQiOt UA.`C0+IbstL< uxϬӝs4f-N~!!ձrrdX!uy}~H ˺ut% o2ʹB2tjQI?4 9_Rrri%M ee=#.#JjaYhqfHK3, jD&J 7ds tIi#<B% \jkiL*KYBģ{-*7<Hj-[O#u,/+=GCssTP3kң]=iщ2v 8$AIt-=u %v|]3QEE\ۙ،b\lYOd˫06B oo\k)\95% _EO)b9@jZ{hl˲,%@S dj kqsU7}ri,'gh˘*+6&<c>2K4 _+dH#8&?-\/ r0J-/8*ڵ<K}-q)BganպVm7E(il]B}bi0)e_/\"b8; sbiH3%U(Lx!T>c] BUF$"PS#<N]]]/PV񕕈/ Tiffany Antopolski tiffany.antopolski@gmail.com 2011 Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Commandline

To view commandline options for gnome-sudoku: gnome-sudoku --help

To view the version number of your gnome-sudoku: gnome-sudoku --version

Print debug information

This command may be useful when your are filing a bug and need to post debug information: gnome-sudoku -v

Profile information

This command is useful if you are filing a bug about slow performance. It will show the perfomance of different functions that run, and possibly reveal which specific function(s) may be responsible for poor performance. This information attached to a bug could make it easier to fix the problem, but this command is used mostly by programmers.

gnome-sudoku -p

When you exit the application, the terminal will show you performance statistics.

Step through <app>GNOME Sudoku</app>

This command is mostly used by programmers to step through the code: gnome-sudoku -w

usr/share/help-langpack/zh_CN/gnome-sudoku/notes.page0000644000373100047300000000347312270236020024470 0ustar langpacklangpack00000000000000 Thomas Hinkle tmhinkle@gmail.com 2011 Chris Beiser ctbeiser@gmail.com Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

注记

Notes, or pencilmarks, can be added to any cell. They allow you to mark possible values for a cell, or store other data that might help you. Notes will store all characters in order, but will remove repetitions of characters.

To add notes to a cell:

Select the cell

Click on the part of a cell that is above the line that appears when you hover over it. Alternatively, type N.

Type your notes

Press Enter or click outside of the text box.

You can also take notes in the bottom of the cell by clicking in the bottom of the cell or by typing M. However, this area is used when you click Show All Possible Numbers. If you plan to use this area, you should not use Show All Possible Numbers.

You can add a number to the notes at the top of the square by typing Ctrl1 through Ctrl9

usr/share/help-langpack/zh_CN/gnome-sudoku/strategy.page0000644000373100047300000000715412270236020025202 0ustar langpacklangpack00000000000000 Radoslav Asparuhov rasparuhov@gmail.com 2011 Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

Strategy

There is only one possibility for each cell in a Sudoku puzzle. The following strategies will help you systematically discover the solution for every cell.

Strategy 1:

Choose the row with the most numbers in it.

You should choose the row or column with the most numbers. For simplicity, these instructions are written as if a row had the most numbers in it.

Determine which numbers in the row are missing.

Choose one of the empty cells in this row. Determine which of the missing numbers are in that column or in that 3x3 box.

Using notes, enter the missing numbers which are not in that column or 3x3 box, into the the upper field. These numbers are candidate solutions for that cell.

Go to the next empty cell of the chosen row and repeat the above method. Repeat this for every row and column, starting at those with the most numbers and continuing through to the least. Always look carefully for the numbers and don't forget the 3x3 boxes.

This strategy will help reveal the cells which have only one possible choice. When revealed, you can fill those cells in with that choice, and repeat the strategy again until the entire puzzle is solved.

Example use of strategy 1.
Strategy 2:

Find the number which appears most often.

Now look at the left vertical alignment of the 3x3 boxes and locate the column(s) in which this number appears.

In this alignment, go to a 3x3 box which does not contain this number in any of its cells. Using notes, enter this number in every empty cell of the column in which this number does not appear. If the number appears in the row of one of these cells, do not enter it in that cell's notes.

Repeat the last two steps for the center and right vertical alignments.

Find the next number which appears most, and repeat until you have done this for all 9 numbers.

This strategy will help reveal the cells which have only one possible choice. When revealed, you can fill those cells in with that choice, and repeat the strategy again until the entire puzzle is solved.

Example use of strategy2.

If neither of the above strategies solves the puzzle on its own, you can alternate strategies. You can also combine the strategies.

usr/share/help-langpack/zh_CN/gnome-sudoku/toolbar.page0000644000373100047300000000163412270236020024777 0ustar langpacklangpack00000000000000 Chris Beiser ctbeiser@gmail.com 2011

Creative Commons Share Alike 3.0

Toolbar

To show or hide the toolbar, click SettingsShow Toolbar.

The toolbar, located under the menu bar, lets you perform common actions with your mouse. To use a toolbar item, just click on it. The buttons, from left to right, are New Game, Undo, Redo, Hint, and Track Additions.

usr/share/help-langpack/zh_CN/gnome-sudoku/index.page0000644000373100047300000000307412270236020024444 0ustar langpacklangpack00000000000000 <media type="image" src="figures/logo.png"/> GNOME Sudoku GNOME Sudoku Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

<media type="image" src="figures/logo32.png">GNOME Sudoku logo</media> GNOME Sudoku

Gnome Sudoku is based on the popular number-based logic puzzle in which one must fill a 9 X 9 square with the correct digits. The unique puzzles can be played on screen or printed to take along. All games persist across sessions and you can resume any old game at any time, as well as replay any game you've already won.

Game Play
Useful tips
Printing
Advanced
Get Involved
usr/share/help-langpack/zh_CN/gnome-sudoku/keyboard-shortcuts.page0000644000373100047300000000555112270236020027173 0ustar langpacklangpack00000000000000 Chris Beiser ctbeiser@gmail.com 2011 Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

Keyboard shortcuts

This is a list of the keyboard shortcuts you can use in Sudoku.

Starting and exiting

Is there a word that encapsulates both starting AND restarting? Didn't include restarting here for the sake of brevity - Chris

New game

CtrlN

Reset game

CtrlB

Close the sudoku window

CtrlW

Hints and Notes

Hint

CtrlH

Track Additions

CtrlT

Clear notes from the top of a cell

CtrlJ

Clear notes from the bottom of a cell

CtrlK

Add a number to the top notes of a cell

Ctrl#

Remove a number to the top notes of a cell

Alt#

Other

Print displayed puzzle

CtrlP

Undo

CtrlZ

Redo

CtrlShiftZ

Open Help

F1

Switch to fullscreen mode

F11

usr/share/help-langpack/zh_CN/gnome-sudoku/highlighting.page0000644000373100047300000000176212270236020026004 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

高亮

You can turn on highlighting to automatically highlight the current row, column and box in different colors. This can make it easier to see which values cannot go into a current square. To toggle highlighting, click SettingsHighlighter.

Sudoku with highlighting.
usr/share/help-langpack/zh_CN/gnome-sudoku/print-inprogress-game.page0000644000373100047300000000220512270236020027564 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

Print your game

You can print the sudoku are playing to a file or to a printer.

To print the sudoku you are currently playing:

Click GamePrint.

Select your printer.

Click Print.

If you don't have a printer in the list, see Set up a local printer.

usr/share/help-langpack/zh_CN/gnome-sudoku/print-blank-puzzles.page0000644000373100047300000000303112270236020027261 0ustar langpacklangpack00000000000000 2011 Tiffany Antopolski tiffany.antopolski@gmail.com Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Print blank sudokus

To print one or more blank puzzles:

Click GamePrint multiple sudokus.

Select the total number of sudokus to print from the drop down menu.

Select the number of sudokus per page from the next drop down menu.

Select difficult level of the games you would like to print.

Games that have already been played are not printed by default. If you don't care about repeating games, select Include games you've already played in list of games to print in the Details category.

Games that are printed are not marked as played by default. You can choose to Mark games as played once you've printed them. under the Details category.

usr/share/help-langpack/zh_CN/gnome-sudoku/documentation.page0000644000373100047300000000215212270236020026202 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

Help write documentation

The GNOME Games documentation is maintained by a volunteer community. You are welcome to participate.

To contribute to the Documentation Project, feel free to get in touch with us using irc, or via our mailing list.

Our wiki page contains useful information.

usr/share/help-langpack/zh_CN/gnome-sudoku/develop.page0000644000373100047300000000207512270236020024773 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

Help develop

The GNOME Games are developed and maintained by a volunteer community. You are welcome to participate.

If you would like to help develop GNOME Games, you can get in touch with the developers using irc, or via our mailing list.

usr/share/help-langpack/zh_CN/gnome-sudoku/rules.page0000644000373100047300000000210212270236020024456 0ustar langpacklangpack00000000000000 Thomas Hinkle tmhinkle@gmail.com 2011

Creative Commons Share Alike 3.0

Game rules

In order to complete the puzzle, you must fill each cell with a number between 1 and 9, inclusive, such that no number is repeated in any row, column or 3x3 box.

In a solved sudoku, each row, column, and 3x3 box contains all the numbers 1 through 9.

Each puzzle has only one solution.

Outline of a row, a column and a 3x3 box using highlighting option.
usr/share/help-langpack/zh_CN/gnome-sudoku/basics.page0000644000373100047300000000423312270236020024577 0ustar langpacklangpack00000000000000 Chris Beiser ctbeiser@gmail.com 2011 Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Basics

Sudoku can be played using the keyboard, the mouse, or any combination of the two.

Using the keyboard

To select a cell, use the arrow keys to move the blue outline onto it.

To put a number in a cell, select the cell, and then press the number.

To remove a number from a cell, select the cell, and then press the Delete key, the Backspace, or the 0 key.

Using the mouse

To select a cell, move your mouse over it and click.

To put a number in a selected cell, click on the center of the cell, and then click on the number you wish to input.

To remove a number from a selected cell, click in the center of the cell and then click Clear.

usr/share/help-langpack/zh_CN/gnome-sudoku/statistics.page0000644000373100047300000000341412270236020025525 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

Statistics

To view the statistics about the current puzzle, click GamePuzzle Statistics.

Very hard puzzle statistics box example

GNOME Sudoku ranks puzzles based on the number of cells that can be rapidly filled.

The puzzle statistics box shows:

the overall difficulty

the number of cells which can be filled by elimination, starting from the blank grid (i.e. only a 2 can go in this box, so it must be a 2)

the number of cells that can be filled by the process of filling, starting from the blank grid (i.e. only one cell in this row can be a 2, so it must be a 2)

the number of times in solving the puzzle that the program used the trial-and-error algorithm to solve the puzzle

All sudoku puzzles can be solved without ever having to guess. When the statistics box says that Sudoku used trial-and-error X number of times, it does not mean that a human would have to use trial-and-error to solve the puzzle.

usr/share/help-langpack/zh_CN/gnome-sudoku/license.page0000644000373100047300000000356412270236020024763 0ustar langpacklangpack00000000000000 Legal information. License

This work is distributed under a CreativeCommons Attribution-Share Alike 3.0 Unported license.

You are free:

<em>To share</em>

To copy, distribute and transmit the work.

<em>To remix</em>

To adapt the work.

Under the following conditions:

<em>Attribution</em>

You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).

<em>Share Alike</em>

If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.

For the full text of the license, see the CreativeCommons website, or read the full Commons Deed.

usr/share/help-langpack/zh_CN/gnome-sudoku/legal.xml0000644000373100047300000000050312270236020024277 0ustar langpacklangpack00000000000000

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

usr/share/help-langpack/zh_CN/gnome-sudoku/trackers.page0000644000373100047300000000665112270236020025157 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011 Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Track trial-and-error solutions

Trackers can be used to keep track of trial-and-error solutions. Tracked moves are entered in a different color to help make the moves visually distinct from moves made earlier in the game. This feature is particularly useful when solving difficult games.

Using the tracker:

You can toggle the tracker interface in one of the following ways:

Click ToolsTrack Additions.

Click Track Additions in the toolbar. If the toolbar is not visible, click SettingsShow Toolbar.

You can make untracked moves if no tracker is selected.

To create a new tracker click Add. From this point on, any number you enter will be part of the selected tracker.

You can create as many trackers as you want by clicking Add.

You can apply a set of tracked additions by selecting the tracker and clicking Apply.

You can clear a tracker by selecting it and clicking Clear.

一些数独玩家认为绝不应使用试错法解决谜题。这些玩家不应使用这一特性。

Video Demonstration Click ToolsTrack Additions. You can make untracked moves if no tracker is selected. To create a new tracker click Add. From this point on, any number you enter will be part of the selected tracker. You can create as many trackers as you want by clicking Add. You can apply a set of tracked additions by selecting the tracker and clicking Apply. You can clear a tracker by selecting it and clicking Clear.
usr/share/help-langpack/zh_CN/gnome-sudoku/bug-filing.page0000644000373100047300000000401612270236020025355 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany@antopolski.com 2011

Creative Commons Share Alike 3.0

Report a Problem

GNOME Sudoku is maintained by a volunteer community. You are welcome to participate. If you notice a problem you can file a bug report. To file a bug, go to .

This is a bug tracking system where users and developers can file details about bugs, crashes and request enhancements.

To participate you need an account which will give you the ability to gain access, file bugs, and make comments. Also, you need to register so you can receive updates by e-mail about the status of your bug. If you don't already have an account, just click on the New Account link to create one.

Once you have an account, log in, click on File a BugApplicationsgnome-sudoku. Before reporting a bug, please read the bug writing guidelines, and please browse for the bug to see if it already exists.

If you are requesting a new feature, choose enhancement in the Severity menu. Fill in the Summary and Description sections and click Commit.

Your report will be given an ID number, and its status will be updated as it is being dealt with.

usr/share/help-langpack/zh_CN/gnome-sudoku/save-resume.page0000644000373100047300000000271312270236020025570 0ustar langpacklangpack00000000000000 Thomas Hinkle tmhinkle@gmail.com 2011 Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Save and resume
Saving your game

Your games are saved automatically every few minutes and whenever you change games or close the application.

Resuming your game

Whenever you start Sudoku or click New, your saved games will be listed in the puzzle selection screen. You will see a miniature image of the saved puzzle, the date you last played it, and how long you have played it. To open the puzzle, just double click on it.

If you'd like to stop playing one game and begin another, just select New and begin your new game.

Resuming previous games.
usr/share/help-langpack/zh_CN/gnome-sudoku/hints.page0000644000373100047300000000352212270236020024460 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

提示

To show possible values for all cells click:

SettingsShow Possible Numbers.

To ask Sudoku to show a cell that is easy to fill:

Click ToolsHint, or Hint in the toolbar.

These features work based on the logical possibilities given the current board and not work by looking at the solution. This means that if you made an error in an earlier move, these features may show incorrect possible values.

A cell which usually has only one possible solution based on the current state of the board is outlined with flashing red. In the case of a puzzle that has no cells that have only one possible solution, a cell with two possible solutions or the least amount of possible solutions will be highlighted. Clicking Hint multiple times may not always point you to the same cell.

You can edit the possible numbers by clicking in the bottom of the cell.

These features can make easy puzzles too easy, so you should use this mode sparingly.

usr/share/help-langpack/zh_CN/gnome-sudoku/translate.page0000644000373100047300000000324112270236020025326 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011 Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Help translate

The GNOME games user interface and documentation is being translated by a world-wide volunteer community. You are welcome to participate.

There are many languages for which translations are still needed.

To start translating you will need to create an account and join the translation team for your language. This will give you the ability to upload new translations.

You can chat with GNOME translators using irc. People on the channel are located worldwide, so you may not get an immediate response as a result of timezone differences.

Alternatively, you can contact the Internationalization Team using their mailing list.

usr/share/help-langpack/zh_CN/zenity/list.page0000644000373100047300000000467412320470032023223 0ustar langpacklangpack00000000000000 Use the --list option. 列表框

Use the --list option to create a list dialog. Zenity returns the entries in the first column of text of selected rows to standard output.

对话框里的数据必须指定行和列,可以由标准输入提供,每一项都必须由换行符分隔。

If you use the --checklist or --radiolist options, each row must start with either 'TRUE' or 'FALSE'.

列表框支持以下选项:

<cmd>--column</cmd>=<var>column</var>

Specifies the column headers that are displayed in the list dialog. You must specify a --column option for each column that you want to display in the dialog.

<cmd>--checklist</cmd>

指定列表框的第一列包含一个复选框。

<cmd>--radiolist</cmd>

指定列表框的第一列包含单选按钮。

<cmd>--editable</cmd>

指定显示的项可以编辑。

<cmd>--separator</cmd>=<var>separator</var>

指定当列表框返回选中项时,使用什么字符。

<cmd>--print-column</cmd>=<var>column</var>

指定选择列上显示什么,默认是“1”,“ALL”用于在列表上显示所有列。

The following example script shows how to create a list dialog:

#!/bin/sh zenity --list \ --title="Choose the Bugs You Wish to View" \ --column="Bug Number" --column="Severity" --column="Description" \ 992383 Normal "GtkTreeView crashes on multiple selections" \ 293823 High "GNOME Dictionary does not handle proxy" \ 393823 Critical "Menu editing does not work in GNOME 2.0"
列表框范例 Zenity list dialog example
usr/share/help-langpack/zh_CN/zenity/warning.page0000644000373100047300000000147412320470032023710 0ustar langpacklangpack00000000000000 Use the --warning option. 警告框

Use the --warning option to create a warning dialog.

The following example script shows how to create a warning dialog:

#!/bin/bash zenity --warning \ --text="Disconnect the power cable to avoid electrical shock."
警告框范例 Zenity warning dialog example
usr/share/help-langpack/zh_CN/zenity/file-selection.page0000644000373100047300000000371212320470032025142 0ustar langpacklangpack00000000000000 Use the --file-selection option. 文件选择对话框

Use the --file-selection option to create a file selection dialog. Zenity returns the selected files or directories to standard output. The default mode of the file selection dialog is open.

文件对话框支持以下选项:

<cmd>--filename</cmd>=<var>filename</var>

指定文件选择对话框在第一次显示时,选定的文件或文件夹。

<cmd>--multiple</cmd>

允许在文件选择对话框里选中多个文件。

<cmd>--directory</cmd>

在文件选择对话框里只允许选中文件夹

<cmd>--save</cmd>

设置文件选择对话框模式为保存对话框。

<cmd>--separator</cmd>=<var>separator</var>

指定用于分隔返回的文件名列表的字符。

The following example script shows how to create a file selection dialog:

#!/bin/sh FILE=`zenity --file-selection --title="Select a File"` case $? in 0) echo "\"$FILE\" selected.";; 1) echo "No file selected.";; -1) echo "An unexpected error has occurred.";; esac
文件选择对话框范例 Zenity file selection dialog example
usr/share/help-langpack/zh_CN/zenity/color-selection.page0000644000373100047300000000253112320470032025337 0ustar langpacklangpack00000000000000 Use the --color-selection option. Color Selection Dialog

Use the --color-selection option to create a color selection dialog.

The color selection dialog supports the following options:

<cmd>--color</cmd>=<var>VALUE</var>

Set the initial color.(ex: #FF0000)

<cmd>--show-palette</cmd>

Show the palette.

The following example script shows how to create a color selection dialog:

#!/bin/sh COLOR=`zenity --color-selection --show-palette` case $? in 0) echo "You selected $COLOR.";; 1) echo "No color selected.";; -1) echo "An unexpected error has occurred.";; esac
Color Selection Dialog Example Zenity color selection dialog example
usr/share/help-langpack/zh_CN/zenity/entry.page0000644000373100047300000000265312320470032023404 0ustar langpacklangpack00000000000000 Use the --entry option. 文本框

Use the --entry option to create a text entry dialog. Zenity returns the contents of the text entry to standard output.

文本框支持以下选项:

<cmd>--text</cmd>=<var>text</var>

指定在文本框中显示的文本。

<cmd>--entry-text</cmd>=<var>text</var>

指定显示在文本框的文本域里的文本。

<cmd>--hide-text</cmd>

隐藏文本框中文本域中的内容。

The following example script shows how to create a text entry dialog:

#!/bin/sh if zenity --entry \ --title="Add new profile" \ --text="Enter name of new profile:" \ --entry-text "NewProfile" then echo $? else echo "No name entered" fi
文本框范例 Zenity text entry dialog example
usr/share/help-langpack/zh_CN/zenity/forms.page0000644000373100047300000000424012320470032023363 0ustar langpacklangpack00000000000000 Use the --forms option. Forms Dialog

Use the --forms option to create a forms dialog.

The forms dialog supports the following options:

<cmd>--add-entry</cmd>=<var>FieldName</var>

Add a new Entry in forms dialog.

--add-password<cmd/>=<var>FieldName</var>

Add a new Password Entry in forms dialog. (Hide text)

<cmd>--add-calendar</cmd>=<var>FieldName</var>

Add a new Calendar in forms dialog.

<cmd>--text</cmd>=<var>TEXT</var>

Set the dialog text.

<cmd>--separator</cmd>=<var>SEPARATOR</var>

Set output separator character. (Default: | )

<cmd>--forms-date-format</cmd>=<var>PATTERN</var>

Set the format for the returned date. The default format depends on your locale. format must be a Format that is acceptable to the strftime function, for example %A %d/%m/%y.

The following example script shows how to create a forms dialog:

#!/bin/sh zenity --forms --title="Add Friend" \ --text="Enter information about your friend." \ --separator="," \ --add-entry="First Name" \ --add-entry="Family Name" \ --add-entry="Email" \ --add-calendar="Birthday" >> addr.csv case $? in 0) echo "Friend added.";; 1) echo "No friend added." ;; -1) echo "An unexpected error has occurred." ;; esac
Forms Dialog Example Zenity forms dialog example
usr/share/help-langpack/zh_CN/zenity/text.page0000644000373100047300000000410312320470032023217 0ustar langpacklangpack00000000000000 Use the --text-info option. 文本信息框

Use the --text-info option to create a text information dialog.

文本信息框支持以下选项:

<cmd>--filename</cmd>=<var>filename</var>

指定一个加载到文本信息框里的文件。

<cmd>--editable</cmd>

显示的文本允许编辑,当对话框关闭后,编辑后的文本显示到显示器上。

<cmd>--font</cmd>=<var>FONT</var>

Specifies the text font.

<cmd>--checkbox</cmd>=<var>TEXT</var>

Enable a checkbox for use like a 'I read and accept the terms.'

<cmd>--html</cmd>

Enable html support.

<cmd>--url</cmd>=<var>URL</var>

Sets an url instead of a file. Only works if you use --html option.

The following example script shows how to create a text information dialog:

#!/bin/sh # You must place file "COPYING" in same folder of this script. FILE=`dirname $0`/COPYING zenity --text-info \ --title="License" \ --filename=$FILE \ --checkbox="I read and accept the terms." case $? in 0) echo "Start installation!" # next step ;; 1) echo "Stop installation!" ;; -1) echo "An unexpected error has occurred." ;; esac
文本信息框范例 Zenity text information dialog example
usr/share/help-langpack/zh_CN/zenity/password.page0000644000373100047300000000234712320470032024105 0ustar langpacklangpack00000000000000 Use the --password option. Password Dialog

Use the --password option to create a password entry dialog.

The password entry dialog supports the following options:

<cmd>--username</cmd>

Display the username field.

The following example script shows how to create a password entry dialog:

#!/bin/sh ENTRY=`zenity --password --username` case $? in 0) echo "User Name: `echo $ENTRY | cut -d'|' -f1`" echo "Password : `echo $ENTRY | cut -d'|' -f2`" ;; 1) echo "Stop login.";; -1) echo "An unexpected error has occurred.";; esac
Password Entry Dialog Example Zenity password entry dialog example
usr/share/help-langpack/zh_CN/zenity/intro.page0000644000373100047300000000177212320470032023377 0ustar langpacklangpack00000000000000 Zenity enables you to create the various types of simple dialog. 介绍

Zenity enables you to create the following types of simple dialog:

日历

文件选择框

Forms

列表框

提示图标

消息框

错误框

信息框

询问框

警告框

Password entry

进度框

文本框

文本信息框

Scale

Color selection

usr/share/help-langpack/zh_CN/zenity/error.page0000644000373100047300000000143712320470032023373 0ustar langpacklangpack00000000000000 Use the --error option. 错误框

Use the --error option to create an error dialog.

The following example script shows how to create an error dialog:

#!/bin/bash zenity --error \ --text="Could not find /var/log/syslog."
错误框范例 Zenity error dialog example
usr/share/help-langpack/zh_CN/zenity/info.page0000644000373100047300000000150012320470032023164 0ustar langpacklangpack00000000000000 Use the --info option. Info Dialog

Use the --info option to create an information dialog.

The following example script shows how to create an information dialog:

#!/bin/bash zenity --info \ --text="Merge complete. Updated 3 of 10 files."
信息框范例 Zenity information dialog example
usr/share/help-langpack/zh_CN/zenity/legal.xml0000644000373100047300000000672412320470032023216 0ustar langpacklangpack00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. usr/share/help-langpack/zh_CN/zenity/calendar.page0000644000373100047300000000415012320470032024006 0ustar langpacklangpack00000000000000 Use the --calendar option. 日历对话框

Use the --calendar option to create a calendar dialog. Zenity returns the selected date to standard output. If no date is specified on the command line, the dialog uses the current date.

日历对话框支持以下选项:

<cmd>--text</cmd>=<var>text</var>

指定日历对话框里显示的文本。

<cmd>--day</cmd>=<var>day</var>

Specifies the day that is selected in the calendar dialog. day must be a number between 1 and 31 inclusive.

<cmd>--month</cmd>=<var>month</var>

Specifies the month that is selected in the calendar dialog. month must be a number between 1 and 12 inclusive.

<cmd>--year</cmd>=<var>year</var>

指定日历对话框中的年份。

<cmd>--date-format</cmd>=<var>format</var>

Specifies the format that is returned from the calendar dialog after date selection. The default format depends on your locale. Format must be a format that is acceptable to the strftime function, for example %A %d/%m/%y.

The following example script shows how to create a calendar dialog:

#!/bin/sh if zenity --calendar \ --title="Select a Date" \ --text="Click on a date to select that date." \ --day=10 --month=8 --year=2004 then echo $? else echo "No date selected" fi
日历对话框范例 Zenity calendar dialog example
usr/share/help-langpack/zh_CN/zenity/usage.page0000644000373100047300000001742012320470032023345 0ustar langpacklangpack00000000000000 You can use Zenity to create simple dialogs that interact graphically with the user. 用法

When you write scripts, you can use Zenity to create simple dialogs that interact graphically with the user, as follows:

您可以创建从用户那儿获得信息的对话框。例如,您可以提示用户从日历对话框中选择日期,或者从文件选择框里选择一个文件。

您可以创建向用户提供信息的对话框。例如,您可以用进度条来显示一个操作的当前运行状态,或者用一个警告框提醒用户。

When the user closes the dialog, Zenity prints the text produced by the dialog to standard output.

When you write Zenity commands, ensure that you place quotation marks around each argument.

For example, use:

zenity --calendar --title="Holiday Planner"

Do not use:

zenity --calendar --title=Holiday Planner

如果您没有使用双引号,可能会产生不可预料的结果。

访问键

访问键允许您用键盘来执行一个操作,而不是用鼠标点击菜单命令或对话框按钮。每个访问键有一个标识符,是一个在菜单或对话框选项上的带下划线的字母。

Some Zenity dialogs support the use of access keys. To specify the character to use as the access key, place an underscore before that character in the text of the dialog. The following example shows how to specify the letter 'C' as the access key:

"_Choose a name".
退出代码

Zenity returns the following exit codes:

退出代码

描述

0

The user has pressed either OK or Close.

1

The user has either pressed Cancel, or used the window functions to close the dialog.

-1

发生了一个有异常。

5

对话框因超时而关闭。

常规选项

All Zenity dialogs support the following general options:

<cmd>--title</cmd>=<var>title</var>

指定对话框的标题。

<cmd>--window-icon</cmd>=<var>icon_path</var>

指定显示在窗口框架上的图标,有四个图标也可以用下列关键字 - 'info', 'warning', 'question' 和 'error'。

<cmd>--width</cmd>=<var>width</var>

指定对话框的宽度。

<cmd>--height</cmd>=<var>height</var>

指定对话框的高度。

<cmd>--timeout</cmd>=<var>timeout</var>

指定超出时间(秒)后对话框自动关闭。

帮助选项

Zenity provides the following help options:

<cmd>--help</cmd>

显示简短的帮助文本。

<cmd>--help-all</cmd>

显示所有对话框的完整帮助。

<cmd>--help-general</cmd>

显示常规对话框选项的帮助文本。

<cmd>--help-calendar</cmd>

显示日历对话框选项的帮助文本。

<cmd>--help-entry</cmd>

显示文本输入框选项的帮助文本。

<cmd>--help-error</cmd>

显示错误框选项的帮助文本。

<cmd>--help-info</cmd>

显示信息框选项的帮助文本。

<cmd>--help-file-selection</cmd>

显示文件打开框选项的帮助文本。

<cmd>--help-list</cmd>

显示列表框选项的帮助文本。

<cmd>--help-notification</cmd>

显示提示框选项的帮助文本。

<cmd>--help-progress</cmd>

显示进度框选项的帮助文本。

<cmd>--help-question</cmd>

显示询问框选项的帮助文本。

<cmd>--help-warning</cmd>

显示警告框选项的帮助文本。

<cmd>--help-text-info</cmd>

显示信息框选项的帮助文本。

<cmd>--help-misc</cmd>

显示其他杂项的帮助文本。

<cmd>--help-gtk</cmd>

显示 GTK+ 选项的帮助文本。

杂项

Zenity also provides the following miscellaneous options:

<cmd>--about</cmd>

Displays the About Zenity dialog, which contains Zenity version information, copyright information, and developer information.

<cmd>--version</cmd>

Displays the version number of Zenity.

GTK+ 选项

Zenity supports the standard GTK+ options. For more information about the GTK+ options, execute the zenity --help-gtk command.

环境变量

Normally, Zenity detects the terminal window from which it was launched and keeps itself above that window. This behavior can be disabled by unsetting the WINDOWID environment variable.

usr/share/help-langpack/zh_CN/zenity/scale.page0000644000373100047300000000374712320470032023337 0ustar langpacklangpack00000000000000 Use the --scale option. Scale Dialog

Use the --scale option to create a scale dialog.

The scale dialog supports the following options:

<cmd>--text</cmd>=<var>TEXT</var>

Set the dialog text. (Default: Adjust the scale value)

<cmd>--value</cmd>=<var>VALUE</var>

Set initial value. (Default: 0) You must specify value between minimum value to maximum value.

<cmd>--min-value</cmd>=<var>VALUE</var>

Set minimum value. (Default: 0)

<cmd>--max-value</cmd>=<var>VALUE</var>

Set maximum value. (Default: 100)

<cmd>--step</cmd>=<var>VALUE</var>

Set step size. (Default: 1)

<cmd>--print-partial</cmd>

Print value to standard output, whenever a value is changed.

<cmd>--hide-value</cmd>

Hide value on dialog.

The following example script shows how to create a scale dialog:

#!/bin/sh VALUE=`zenity --scale --text="Select window transparency." --value=50` case $? in 0) echo "You selected $VALUE%.";; 1) echo "No value selected.";; -1) echo "An unexpected error has occurred.";; esac
Scale Dialog Example Zenity scale dialog example
usr/share/help-langpack/zh_CN/zenity/message.page0000644000373100047300000000111512320470032023657 0ustar langpacklangpack00000000000000 Error, Info, Question, Warning Message Dialog

For each type, use the --text option to specify the text that is displayed in the dialog.

usr/share/help-langpack/zh_CN/zenity/notification.page0000644000373100047300000000201312320470032024717 0ustar langpacklangpack00000000000000 Use the --notification option. 通知区域图标

Use the --notification option to create a notification icon.

<cmd>--text</cmd>=<var>text</var>

指定显示在通知区域的文本。

The following example script shows how to create a notification icon:

#!/bin/sh zenity --notification\ --window-icon="info" \ --text="There are system updates necessary!"
通知区域图标范例 Zenity notification icon example
usr/share/help-langpack/zh_CN/zenity/question.page0000644000373100047300000000146112320470032024106 0ustar langpacklangpack00000000000000 Use the --question option. 询问框

Use the --question option to create a question dialog.

The following example script shows how to create a question dialog:

#!/bin/bash zenity --question \ --text="Are you sure you wish to proceed?"
询问框范例 Zenity question dialog example
usr/share/help-langpack/zh_CN/zenity/index.page0000644000373100047300000000143412320470032023346 0ustar langpacklangpack00000000000000 Sun Java 桌面系统文档小组 Glynn Foster Nicholas Curran Yasumichi Akahoshi yasumichi@vinelinux.org

GNU Free Documentation License (GFDL)

Zenity 手册
Dialogs
usr/share/help-langpack/zh_CN/zenity/progress.page0000644000373100047300000000404412320470033024104 0ustar langpacklangpack00000000000000 Use the --progress option. 进度框

Use the --progress option to create a progress dialog.

Zenity reads data from standard input line by line. If a line is prefixed with #, the text is updated with the text on that line. If a line contains only a number, the percentage is updated with that number.

进度框支持以下选项:

<cmd>--text</cmd>=<var>text</var>

指定显示在进度框里的文本。

<cmd>--percentage</cmd>=<var>percentage</var>

指定进度框开始时的百分比设定。

<cmd>--auto-close</cmd>

当达到 100% 时自动关闭对话框。

<cmd>--pulsate</cmd>

指定进度条跳动,直到从标准输入读到一个 EOF 文件结束符。

The following example script shows how to create a progress dialog:

#!/bin/sh ( echo "10" ; sleep 1 echo "# Updating mail logs" ; sleep 1 echo "20" ; sleep 1 echo "# Resetting cron jobs" ; sleep 1 echo "50" ; sleep 1 echo "This line will just be ignored" ; sleep 1 echo "75" ; sleep 1 echo "# Rebooting system" ; sleep 1 echo "100" ; sleep 1 ) | zenity --progress \ --title="Update System Logs" \ --text="Scanning mail logs..." \ --percentage=0 if [ "$?" = -1 ] ; then zenity --error \ --text="Update canceled." fi
进度框范例 Zenity progress dialog example
usr/share/gnome/help-langpack/xchat-gnome/zh_CN/xchat-gnome.xml0000644000373100047300000010002012270536237026337 0ustar langpacklangpack00000000000000 ]>
<application>XChat-GNOME</application> 手册 2005-2006 Brian Pepple 2006 Joachim Noreiko Brian Pepple 在由自由软件基金会发布的1.1或者后续版本的《自由文档许可》(GFDL)条款的许可下,你可以复制,发布和修改本文档。固定章节、封面文字和封底文字不在此列。 你可以在这个 链接 ,或者在与本手册一起发布的 COPYING-DOCS 文件中找到一份 GFDL 的拷贝。 本手册是 GNOME 手册 的一部分并按GFDL协议发行.如果你想单独发布这一部分,请按照协议第6节的要求在发布时附加一份GFDL的拷贝。 公司为了标识它们的产品和服务而将很多名称声明为商标。在GNOME文档和GNOME文档计划的成员中,这些名称会以大写或者首字母大写的形式标识出来。 本文档及其修改版皆在《自由文档许可》的条款下发布: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. Brian Pepple Fedora 项目
bpepple@fedoraproject.org
Joachim Noreiko GNOME 文档计划
jnoreiko@yahoo.com
XChat-GNOME 手册 2.1 2006-12 Joachim Noreiko jnoreiko@yahoo.com GNOME 文档计划 XChat-GNOME 手册 V2.0 2005-11 Brian Pepple bpepple@fedoraproject.org GNOME 文档计划 本手册描述的是 XChat-GNOME 0.16 版 反馈 报告关于 XChat-GNOME 和本手册的 bug 或者提建议请参考 GNOME 用户指南 中的“反馈 ”章节 XChat-GNOME IRC(互联网中继聊天)客户端的用户手册
XChat-GNOME xchat-gnome 指导 XChat-GNOME 是GNOME桌面的一个互联网中继聊天(IRC)程序。 XChat-GNOME 提供如下功能: 通知区域图标插件 端到端(DCC)的直接传输 端到端(DCC)的直接聊天 遵从 GNOME 用户界面准则 从这里开始 启动 <application>XChat-GNOME</application> 你可以按以下方法启动 XChat-GNOME 应用程序 菜单 选择 互联网 XChat-GNOME 互联网中继聊天. 命令行 从命令行启动 XChat-GNOME,键入 xchat-gnome,然后按 Return 查看其他可用的命令行参数,键入 xchat-gnome --help,然后按 Return 当你启动了 <application>XChat-GNOME</application> 当你启动了 XChat-GNOME,会出现下面的窗口。
<application>XChat-GNOME</application> 主窗口 显示XChat-GNOME 主窗口,包含标题栏,菜单栏,显示区域和滚动条。菜单栏包含聊天、编辑、网络、讨论、转到和帮助 。
XChat-GNOME 窗口包含下列元素 : 菜单栏 菜单栏的菜单包含你在 XChat-GNOME 中需要的所有命令。 服务器窗格 服务器窗格显示了当前连接的服务器和频道。 用户按钮 用户按钮显示了当前频道内的人数,单击用户按钮会显示用户列表。状态为“离开”的用户被标识为灰色。 讨论区域 讨论区域显示被选择频道的讨论。 在讨论区域底部的输入框中打字可以在当前选择的频道聊天。
使用 连接到IRC服务器 连接到IRC服务器,选择 IRC连接连接 对话框会出现。 选择你想连接的服务器。 然后点击连接 查看 DCC 文件直传信息 要查看 DCC 文件直传信息,选择IRC文件传输 编辑文本 你可以用以下办法编辑文本: 要剪切选定的文本,选择编辑剪切 要复制选定的文本,选择 编辑复制 要粘贴文本到当前光标处,选择 编辑粘贴。你必须在粘贴之前复制或者剪切。 要清除当前频道讨论区域的所有文本,选择 编辑清除 重新连接服务器 要重新连接 XChat-GNOME 到IRC服务器,选择 网络重新连接 关闭和服务器的连接 要把 XChat-GNOME 和IRC服务器断开连接,选择 网络断开连接 保存频道记录 要保存频道记录,选择 CtrlS讨论保存副本 离开频道 当你离开一个频道,你就不再是聊天的参与者,并且不能在频道里聊天,但是讨论内容依然留在窗口。 要离开一个频道,选择 CtrlQ讨论离开 关闭频道 当你关闭一个频道,这个频道会从服务器窗格移除。 要关闭一个频道,选择CtrlW讨论关闭 浏览频道 要查看前一个频道,选择 AltUp转到前一个频道 要查看后一个频道,选择 AltDown转到后一个频道 浏览服务器 要查看前一个服务器,选择 CtrlUp转到前一个网络 要查看后一个服务器,选择 CtrlUp转到后一个网络 离开 XChat-GNOME 要离开 XChat-GNOME, 选择 CtrlQIRC离开 设置 要设置 XChat-GNOME,选择 编辑设置设置 对话框包含下列项目: IRC 设置 常规 输入 昵称 你希望在IRC使用的昵称。 输入 真名, 它会在/whois 请求中显示。 当你离开IRC网络时,键入 退出消息 可以让别人看到。 当你退出频道但是并不断开到服务器的网络时,输入 退出信息你想在你退出频道时显示给其他人的信息。 当你的状态是“离开时”,输入 离开信息 ,可以在别人想联系你时显示给他。 高亮 一些特殊的词会在其他聊天的人说到时显示为高亮,另外你的昵称总是会高亮显示。 使用界面 选择 使用系统终端字体 可以使用和系统终端同样的字体。 选择 使用这种字体 打开字体选择对话框。 选择 显示颜色 启用在讨论区域显示彩色昵称。 选择 显示时间戳 选项可以在讨论中显示时间戳。 颜色 文本颜色 使用 内建方案 下拉列表来设定 XChat-GNOME 如何显示文本和背景色。选择下列选项: 使用 白底黑字 设置成白底黑字。 使用 黑底白字 设置成黑底白字 使用 自定义 来创建自定义颜色方案。 下列选项只有在 内建方案 设置成 自定义才有效。 单击 前景色 按钮来显示颜色选择对话框,为 XChat-GNOME 的讨论区域选择前景色。 单击 背景色 按钮来显示颜色选择对话框,为 XChat-GNOME 的讨论区域选择背景色。 单击 前景遮罩 按钮来显示颜色选择对话框,为 XChat-GNOME 的讨论区域选择遮罩的前景颜色。 单击 背景遮罩 按钮来显示颜色选择对话框,为 XChat-GNOME 的讨论区域选择背景遮罩的背景颜色。 mIRC 颜色 选择你想要的颜色按钮,会出现颜色选择对话框。 颜色只有在 内建方案 被设置为自定义。 其他颜色 选择你想要的颜色按钮,会出现颜色选择对话框。 颜色只有在 内建方案 被设置为自定义。 文件传输 & DCC 文件传输 使用 下载文件到 按钮选择存放下载文件的文件夹。 使用 移动已经完成的文件到 按钮来选择一个你想把下载完成的文件移动到的文件夹。 如果你想发送前把文件名的空格转换成下划线,选择 发送前把空格转换成下划线 选择 在文件名里保存发送者名称 可以在文件名里保存发送者名称。 DCC 设置 选择 自动接受 DCC 直接聊天请求 可以自动接受 DCC 直接聊天请求。 选择 自动接收 DCC 文件传输请求 可以自动接收 DCC 文件传输请求。 选择 从服务器获得IP地址 选项来使用你的DNS来解析IP地址。 选择 使用IP地址 选项并键入你的IP地址来使用静态的IP。 节流 使用 单独发送 KB/s 微调按钮来设定单独最大发送速度。 使用 全局发送 KB/s 微调按钮来设定全局最大下载速度。 使用 单独接收 KB/s 微调按钮来设定单独最大下载速度。 使用 全局接收 KB/s 微调按钮来设定全局最大下载速度。 网络 IRC 服务器 要添加一个IRC服务器,单击添加 按钮来打开 网络设置 对话框。 要编辑 IRC 服务器,单击 编辑 按钮来打开 网络设置 对话框。 要删除一个 IRC 服务器, 单击 删除 按钮。 脚本和插件 脚本和插件 要启用或者禁用一个插件或者脚本,选择 启用 选项到适当的状态。 要添加新的插件和脚本,单击 打开 按钮来打开打开文件对话框。 要移除插件或者脚本,选择合适的选项并单击移除 按钮。 网络监视器 使用网络管理器来控制连接状态 自动离开 在屏幕保护启动时更改您的状态为离线。 声音通知 当一个词(包括你的 nick )高亮显示时或者当你收到一条私人信息时声音提示。 通知 在通知区域显示一个图标来通知您 xchat-gnome 的事件。 如果 通知 设置里的 总是显示通知区域图标 被选中,就可以最小化到通知区域。 屏幕菜单 在一个词(包括你的昵称)被高亮显示时或者收到私人消息时显示一个通知窗口。 URL提取器 在一个窗口中显示聊天中所有的URL。 网络设置 XChat-GNOME网络设置 对话框允许你设置IRC服务器,它包含下列标签: 网络设置 常规 键入 名称 设置服务器名称。 选择 自动连接到网络 选项可以在 XChat-GNOME 启动时自动连接到一个网络。 选择 使用安全套接字连接 (SSL) 选项来使用安全套接字层打开连接。 选择 不断重连直至连通 选项来不断尝试重连直至连通。 使用 字符编码 下拉列表框来选择XChat-GNOME 使用的字符编码。 如果 IRC 服务器要求的话,键入 S服务器密码 用户和频道 用户信息 选择 使用全局用户设定 选项来使用常规 中的设定 选择 使用用户设定选项来为特定的服务器设置 昵称真名 自动加入频道 单击 添加 按钮来添加一个新的频道。 单击 编辑 按钮来编辑选定的频道。 单击 移除 按钮 来移除选定的频道。 频道名应该以一个 # 号开头。 服务器 服务器 单击 增加 按钮来增加一个新的 IRC 服务器。 单击 E编辑 按钮来编辑选定的 IRC 服务器。 单击 移除 按钮 来移除选定的服务器。 指定自定义端口使用(/)作为分隔符,比如 "主机/端口" 关于 <application>XChat-GNOME</application> 想获得更多的关于 XChat-GNOME 的信息,请访问 XChat-GNOME Web page 报告关于 XChat-GNOME 和本手册的 bug 或者提建议请参考GNOME 用户指南中的“反馈 ”章节。 本程序在由自由软件基金会发布的1.1或者后续版本的《自由文档许可》下发布。你可以在这个 链接 ,或者在与本手册一起发布的 COPYING 文件中找到一份 GFDL 的拷贝。
usr/share/omf-langpack/xchat-gnome/xchat-gnome-zh_CN.omf0000644000373100047300000000152012270536237025047 0ustar langpacklangpack00000000000000 (Brian Pepple) (Joachim Noreiko) (Brian Pepple) XChat-GNOME 手册 2005-11 XChat-GNOME IRC(互联网中继聊天)客户端的用户手册 user's guide usr/share/help-langpack/zh_CN/rhythmbox/index.docbook0000644000373100047300000021516512317327147024602 0ustar langpacklangpack00000000000000 ]>
Rhythmbox 音乐播放器 2002 Mark Finlay 2002 2002 Mark Humphreys 2005 2006 Baptiste Mille-Mathias 2006 Victor Osadci 2008 Dean Sas GNOME 文档项目 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. Mark Finlay GNOME Documentation Project
sisob@eircom.net
Mark Humphreys GNOME Documentation Project
marquee@users.sourceforge.net
Baptiste Mille-Mathias GNOME Documentation Project
baptiste.millemathias@gmail.com
Victor Osadci GNOME Documentation Project
Victor.Osadci.GNOME@xhtml.md
Dean Sas Ubuntu Documentation Project
dean@deansas.org
Rhythmbox Music Player Manual V0.0.2 October 2002 Mark Finlay GNOME Documentation Project Rhythmbox Music Player Manual V0.0.3 August 2003 Mark Humphreys GNOME Documentation Project Rhythmbox Music Player Manual V0.0.4 October 2005 Baptiste Mille-Mathias GNOME Documentation Project Rhythmbox Music Player Manual V2.0.2 April 2006 Luca Ferretti GNOME Documentation Project Rhythmbox Music Player Manual V2.0.3 May 2008 Dean Sas GNOME Documentation Project This manual describes version 0.11.5 of Rhythmbox Music Player. 反馈 要报告关于 Rhythmbox 音乐播放器或本手册的错误或提出建议,请遵循 GNOME 反馈页中的指导。 Rhythmbox 是 GNOME 桌面的全功能音乐播放器。
Rhythmbox rhythmbox Music Player 简介 Rhythmbox Music Player is a music player and library for tagged files that supports various music formats. Rhythmbox 音乐播放器 目前的特性包括: 播放您音乐库中各种格式的音乐文件。 通过元数据读取显示关于歌曲的信息。 以有组织的视图显示歌曲。 从音乐库视图中拖曳以创建静态播放列表。 根据条件创建自动播放列表。 在音乐库和播放列表中搜索歌曲。 收听 Internet 电台。 读取音频光盘,并从网上获取音轨标题等信息。 将播放列表刻录成音频光盘。 Transfer music to iPod, MTP and USB Mass Storage music players . 入门 要启动 <application>Rhythmbox 音乐播放器</application> You can launch the Rhythmbox Music Player in the following ways: Applications menu Choose Sound & Video Rhythmbox Music Player. Command Line Type rhythmbox, then press Return. 运行助手 The first time you launch the Rhythmbox Music Player, an assistant will help you import your music. On the second panel of the assistant, press the Browse button and select the folder where your music is stored. Rhythmbox 音乐播放器窗口 概要 Rhythmbox 音乐播放器窗口允许您浏览并播放您喜爱的音乐。显示了 Rhythmbox 音乐播放器的界面及其主要组件。
<application>Rhythmbox 音乐播放器</application>窗口 Show the Rhythmbox Music Player window showing the different parts on the Rhythmbox Music Player interface. Callouts: Menubar, Player area, Browser, Side pane, Statusbar.
表一描述了 Rhythmbox 音乐播放器窗口的组件。 <application>Rhythmbox 音乐播放器</application>窗口组件 序号 组件 描述 1 菜单栏 Contains menus that you use to perform tasks in Rhythmbox Music Player window. 2 工具栏 提供对播放器功能的访问,并显示关于目前正在播放的音轨的细节。 3 时间滑块 显示音轨的读取进度;您可以使用它跳转到音轨的另外一个部分。 4 Side Pane 显示各种源列表。 5 浏览器 允许按照流派、艺人和专辑名称浏览并过滤音乐库中的音轨。浏览器还提供了搜索功能,以便只显示与您条件匹配的音轨。 6 音轨列表 列出属于选中源的音轨。 7 状态栏 Displays informations about the source selected in the side pane.
The Side Pane The side pane is where you can access your music library, internet radio, your playlists and audio CDs. The side pane can contain the following sources: The Rhythmbox Music Player library, where all of the imported tracks will appear. The iRadio source, with all internet radio stations. Podcasts. All playlists (normal and smart). Audio CD's inserted into the computer's CD drives. Portable players like iPod plugged to your computer. The DAAP Music shares discovered on the local network. Music stores like Jamendo and Magnatune. The display of the side pane can be toggled on or off by selecting ViewSide Pane . 播放器工具栏 工具栏区域可访问目前正播放音轨的细节。如果没有正在播放的音轨,则此区域不显示任何内容。音轨播放时,将会显示音轨的名称、时长、艺人和专辑名称。 同时,还会显示一个滑块,表明目前音轨播放的进度。当滑块获得焦点时,可以使用键盘上的箭头键快进或快退。 Shows player area 如果您使用的鼠标带有滚轮,当鼠标指针指向音量按钮的时候,上下滚动滚轮即可调整音量。 状态栏 The statusbar contains additional information about the number of songs and the duration of the source selected. The display of the statusbar can be toggled on or off by selecting ViewStatusbar. Shows statusbar <application>Rhythmbox 音乐播放器</application>的小巧界面 Rhythmbox 音乐播放器自带一种小巧界面。此界面允许只访问 Rhythmbox 音乐播放器的菜单栏播放器功能。 To switch to the small display, select View Small Display. Shows the Rhythmbox Music Player in small display mode
使用 Rhythmbox 音乐播放器 播放音乐 To play a track, choose Control Play, or select the track and press the Play button on the toolbar, or simply double-click on the track to start playing. When the track ends, Rhythmbox Music Player jumps to play the next track in the list showed in view pane. 通过使用音乐库,您可以快速播放一个艺人或一张专辑中的全部歌曲,只需在库浏览器中选择相应的专辑艺人项。 下一曲/播放/上一曲 The Next and Previous buttons can be used to skip between tracks while playing. If a track is currently playing, the previous button will restart the track. Pressing the Play button will start playing the current track. Shows buttons Previous, Play and Next in toolbar. 重复 选项重复将使得 Rhythmbox 音乐播放器在到达播放列表的最后一条音轨时从头开始播放音轨。 To activate repeat, choose Control Repeat, or press the button Repeat on the toolbar. Shows repeat button in the statusbar. 随机 选项随机将使得 Rhythmbox 音乐播放器以随机顺序播放音轨。 To activate shuffle, choose Control Shuffle, or press the button Shuffle on the toolbar. Shows shuffle button in the statusbar. 音量控制 The volume control is located in the right hand of the toolbar. Pressing the loudspeaker icon will show the volume slider. Sliding this up and down will increase and decrease the volume. The loudspeaker icon will change to reflect the relative volume. Shows volume slider in toolbar. 在鼠标指针指向喇叭图标时,也可以使用鼠标滚轮调整音量。 库源 库是 Rhythmbox 音乐播放器主要的来源,该数据库包含了您导入到 Rhythmbox 音乐播放器中的全部音轨。请注意,库只保存了音乐文件的访问路径,而不是文件自身。 The Library can not only contains music files which are physically on your computer (in your HOME Directory for instance), but it can also contains music files available over remote network services. Some examples of supported network services are : Public FTP Authenticated FTP NFS Windows Share The files imported in the Library are displayed in the track list with the information (like the Artist name or the Album name) stored in the tags embedded on the tracks. Rhythmbox Music Player uses these tags to display the tracks in an organized manner. Tags can be modified by choosing MusicProperties and filling in the details on the window that appears. 在库中添加音轨 To add tracks to the Library, you can follow these different methods: To import only one track, choose MusicImport File from the menu, then select the file in the file selector and press the Open button. If you want to import several music files located in a folder, choose MusicImport Folder from the menu, then select the folder in the file selector and press the Open button. All the music files located in the folder and its sub-folders will be imported. Drag and drop files from the file manager (like Nautilus) over the Rhythmbox window. 如果您启用了目录监视功能(参见),存储于所选目录下的所有音乐文件都将被添加到库中。稍后添加的新文件也会被添加。 从库中删除音轨 要从库中删除音轨,但仍想要将其保留在磁盘上,请从菜单中选择编辑删除。音轨及其属性(如评分或播放次数)都将从 Rhythmbox 的数据库中删除。 To delete a track from the Library and also from your disk, choose EditMove to Trash. The track will be removed in the same way as previous, but the file will be moved in to the file manager Trash. 使用搜索查找音轨 Rhythmbox comes with a search function, which enables you to find and filter tracks by using a search term. Enter some text in the search entry, and as you type, only the tracks that match the text entered will be displayed. The search function does the lookup in all of the tags of the tracks stored in the Library. To perform a more precise search, you can choose to lookup only in specific tags Artists, Albums or Titles. 使用浏览器查找音轨 浏览器是另外一个方便找到音轨的方法。浏览器使用2或者3栏的视图从而让你可以在音乐流派,艺术家和专辑间导航,并只显示符合选定条件的音轨。 First, to display the Browser, select View Browser. Select artist, album and genre, and as you choose, only the tracks that match your choice will be displayed in the track list. The criteria on the columns apply from the left to the right. 你可以使用Ctrl键同时在同一类型中选择几个标准。 You can also find from a selected track in the track list, all of the tracks with the same genre, artist or album name. Select a track in the track list, right-click on it, and choose Browse this Genre/Artist/Album. Then the browser will filter the tracks using the criteria chosen. 电台源 Internet 电台可用于收听网络、本地或 Internet 上的流式音频文件。
<application>Rhythmbox 音乐播放器</application>中的 Internet 电台
添加电台 To add a new station to the Internet Radio tuner, choose Music New Internet Radio Station, then enter the URL of the Internet radio, then press the button Add. 查看并更改电台的设置 你可以查看和编辑互联网电台的设置,使用菜单音乐属性 你也可以改变电台的属性,选定某个电台,右键单击,然后选择属性 当打开某个电台流的属性时,你可以修改它的名字,流派,也可以修改流的地址,并对此评分。 删除电台 To remove a radio station from the radio stations list, choose Edit Remove; you can also right-click on the station and select Remove.
播客源 Podcasting (播客)是在全网络播放音频内容的新方法。通过一个XML飞递源,当一个作家发布一段节目时,播客订阅者将被通达到。 Rhythmbox Music Player enables you to subscribe to podcast feeds, so when a new episode is available you'll be informed, it will download this episode and it will play it. You can find more information about podcasts and podcasting by visiting the definition of Podcast on the site Wikipedia.
播客界面 The Podcast interface with some registered podcasts
播客管理 添加播客 要注册一个播客,选择音乐新播客飞递源,然后在新窗口中,输入播客的URL地址。Rhythmbox会取回节目清单,最近的一段节目将被下载到你的硬盘中。 要添加新的播客飞递源,你也可以右键单击播客源,选择新播客派递. 删除播客 要删除一个播客,在浏览器的播客飞递源名字上右键单击,选择删除播客派递,然后选择仅删除派递,如果你想保持播客的节目片段;或者选择删除派递及项目,如果你想删除派递及所有相关的节目片段。 更新种子 To know if new episodes have been published for a podcast, right-click over the podcast name in the browser and choose Update Podcast Feed. If new episodes were published, they will appear in the episode list. Rhythmbox Music Player checks regularly, on its own, the podcast feeds list to find out if they were updated. 你也可以通过右键单击播客源,选择更新所有飞递源检查所有的播客。 访问播客种子属性 To access to the Feed properties, right-click on the Feed name, and choose Properties. On the Basic tab you can view the podcast Title, Author , the Last Updated date and the Description. On the Details tab you can view the feed Source, Language and the Copyright properties. You can view the properties, and also edit the rating. 片段管理 下载播客片段 要下载一段节目到你的硬盘,右键单击该节目,选择下载,Rhythmbox将开始下载该节目到你首选项里设定的位置。你可以在状态栏查看下载进度。 播客默认下载至你主文件夹中名为播客/的文件夹。要改变位置,查看 读取播客片段 要播放播客片段,请先选择您想要读取的片段,然后选择控制播放;您还可以直接单击播放按钮。 节目读取之前必须先已下载,参见以了解如何下载一段播客节目。 删除播客片段 要从播客删除一条节目,右键单击该条节目,选择删除,然后选择仅删除节目,如果你要在硬盘中保持该条节目,或者选择删除节目及内容,如果你想从硬盘中删除文件并同时从清单中删除节目。 After you delete an episode, it will no longer be available in the list of episodes, even if you update the podcast. 显示播客片段属性 To access to the episode properties, right-click on the episode, and choose Properties. On the Basic tab you can view the podcast Title, Feed, the publication Data and the Description. On the Details tab you can view the podcast Source, Duration, the Bitrate, the Last Played Date, the Play count and the Rating.
播放队列源 Play queue is a source designed to temporarily store the next tracks you want to play. When you add a track to the Play Queue, Rhythmbox Music Player will automatically switch to this source, after the track has played. Once a track has been played, it will be automatically removed from the Play Queue Source. Once the Play Queue is empty, Rhythmbox Music Player will play the source which was played before. Add a track to the Play Queue To add a track: Select the track you want to play, in any source. Choose EditAdd to playqueue. 删除播放队列中的音轨 To remove a track stored in Play Queue: Select the track you want to remove in Play Queue source. Choose EditDelete . 播放列表源 Playlists are sources which are created from the tracks available in the Library source. They enable you to gather tracks following a particular 'genre', a specific group of artists, or even tracks that are of a particular 'mood', or whatever you want. Rhythmbox Music Player has 2 kinds of playlists: Static Playlists Smart Playlists Rhythmbox 可让您将播放列表中的音轨刻录为 CD。 静态播放列表 静态播放清单是通过从音乐库视图中拖曳而创建的播放清单。 创建静态播放列表 To create a new playlist, choose MusicPlaylistNew Playlist. An empty playlist without name appears in the side pane. Enter a name for the playlist and press Enter. 向播放列表中添加音轨 To add tracks to a playlist, select tracks from the track list from the library and drag and drop your selection over the playlist icon in the side pane. 你也可以从浏览器中根据流派,艺术家或者专辑拖放到一个播放清单上,所有属于选定类型的音轨都将加入到播放清单中。 You can create a playlist with tracks in one action. Select tracks from the Tracks List, or directly one or more categories from the browser (Genre, Artist or Album) and drop the selection over the Side pane. It will automatically create a named playlist. 从播放列表中删除音轨 To remove tracks from a playlist, first select the tracks to remove, and then you have two methods: Choose EditDelete. Right-click over the selection and choose Delete. This operation deletes the track only from playlist and not from the Library. 删除静态播放列表 To delete a static playlist, select the playlist to delete, then you have two ways to delete it: Choose EditDelete. Right-click over the playlist and choose Delete. This operation deletes only the playlist and not the tracks stored in the playlist deleted. 智能播放列表 Smart Playlists are playlists built from criteria, so tracks are added to it dynamically; all of the tracks matching the criteria will be added to the playlist. 创建智能播放列表 To create a new playlist: Choose MusicPlaylistNew Automatic Playlist. Edit the playlist criteria through the query editor. Once your criteria have been chosen, click New to create the query. 编辑智能播放列表 Editing a smart playlist lets you modify the criteria set for this playlist. To edit a smart playlist, select the smart playlist, choose MusicPlaylistEdit, and edit the criteria. Once done, choose Close. 删除智能播放列表 To delete a smart playlist, select the playlist to delete, then you have two ways to delete it: Choose EditDelete. Right-click over the playlist and choose Delete. 使用队列编辑器 选择要适用的标准。如果你需要多于一个的标准,单击添加按钮,将出现新的一行,你可以设置新的标准。 如果你想限制播放清单中的音轨数量,限制:,选择怎么限制。你可以限制音轨数,总的大小(MBGB),或者时长(以分钟表示) Once you finish setting the criteria for the playlist, choose New; the playlist query editor window will close, and the playlist will display the tracks matched by your criteria. 音频光盘 源 Rhythmbox Music Player can also handle Audio CDs; it can play CDs and also let you burn your own. 播放 When an Audio CD is inserted, it will appear in the side pane, and the tracks on it can be displayed in Rhythmbox Music Player's main window. If you are connected to the Internet, the CD details will be retrieved and displayed. 要播放和暂停,或向前或向后跳过,使用与从音乐库播放一样的控制方式。 导入音频光盘 If you wish to keep the tracks of your Audio CDs on your computer, you can import them. To import Audio CD tracks, choose Music Import Audio CD, it will start Sound-Juicer, an application dedicated to importing Audio CDs. To know more about Sound-Juicer, you can read the Sound-Juicer manual. 要自动把从 Sound-Juicer 导入的音轨添加到 Rhythmbox 的库,你必须配置 Sound-Juicer 解压音轨到 Rhythmbox 的库地址,同时必须打开 Rhythmbox 的库监视功能,参见Sound-Juicer 首选项 以及 Rhythmbox 库首选项. 创建音频光盘 Rhythmbox 使你能够用储存在 Rhythmbox 音乐库中音乐创建自己的音频光盘。 To create an Audio CD: Create a playlist, static or smart (see ) and add tracks. Choose MusicPlaylistCreate Audio CD Insert a blank CD. Click the button Create, the burning process starts. 便携音乐播放器源 Rhythmbox can detect when an portable audio player is plugged to your computer, and is able to read tracks stored on it. Rhythmbox Music Player should be able to deal with most portable audio players including Apple iPod, MTP players and Mass Storage players. When you plug in a portable audio player, an icon for the Portable Audio Player is added to the side pane. This source works in the same way as the Library source. If Rhythmbox Music Player does not detect your device as a portable audio player, you can create an empty file named .is_audio_player at the top level hierarchy of the filesystem of your player. DAAP 共享源 DAAP is a network protocol that allows you to share the music stored in Rhythmbox. DAAP stands for Digital Audio Access Protocol. As DAAP is a standard protocol for music sharing, you can listen and share music not only with other Rhythmbox users, but also with other users who use DAAP compatible software, like iTunes. When you start Rhythmbox, it will look for all DAAP shares published on your local network (your home or your office, not the whole Internet) by other users and will display them in the side pane. If sharing is enabled, at the same time Rhythmbox will publish your library and your playlists. In this way, you can listen to music stored on your friend's computers and they can listen your music. To disable the Rhythmbox DAAP sharing feature, see in the preferences. 通知区域 概要 通知区域是一个 GNOME 的特性,当程序运行时,它会在面板上添加一个小图标,这让你可以从托盘控制 Rhythmbox 音乐播放器,当 Rhythmbox 音乐播放器界面不可见时接受信息。
在通知区域的<application>Rhythmbox 音乐播放器</application>
获得信息 工具提示信息 当你把鼠标移动到Rhythmbox 音乐播放器的图标上,你可以看到音轨的艺术家,名字和时间位置。 通知窗口 每次改变音轨或者下载一段博客节目,Rhythmbox 音乐播放器可以通知你,它将在桌面上显示一个包含相关信息的通知窗口。
<application>Rhythmbox 音乐播放器</application>的通知窗口。
The notification window can be disabled by deselecting the Show Notifications option from the context menu of the icon in the notification area.
控制 Rhythmbox 使用在通知区域中Rhythmbox 音乐播放器的图标,可以向程序发送下列的命令。
通知区域(显示菜单)
Play — If selected, plays the currently selected song. Previous — Skip to previous song in the selected source. Next — Skip to next song in the selected source. Show Window Player — Choose whether or not the Rhythmbox Music Player window is visible or not on the desktop. Show Notifications — Choose whether or not the Rhythmbox Music Player will notify you about track changes and various information. Quit — Quit the Rhythmbox Music Player. 如果您使用的鼠标带有滚轮,可以将鼠标指针移到音量按钮上面,上下滚动滚轮即可调整音量。 单击鼠标中键可以快速切换播放/暂停。
自定义 Rhythmbox 音乐播放器 This section describes how to customize Rhythmbox Music Player to suit your requirements and preferences. 设置您的首选项 使用首选项对话窗口,你可以自定义你想要Rhythmbox 音乐播放器的外观和行为。要显示首选项。要打开首选项对话窗口,选择编辑首选项 常规 Choose the way the Browser View will be displayed. You can choose to use three or two panes and what the panes should display. Choose the Visible Columns you want to display in Rhythmbox Music Player. This option affects the following sources: Library Audio CD Portable Players Playlists DAAP Music shares Music 库地址Rhythmbox 音乐播放器监视发现心歌曲的某一文件夹。当你用文件浏览器(比如 Nautilus)添加新的音乐文件到该文件夹或者它的下属文件夹时,Rhythmbox 音乐播放器会探测到,并自动添加到库中。 避免把你的文件夹设置为库的地址,因为这样极费CPU。 要禁止监视功能,不要选择监视我音乐库中的新文件即可。 如果你想监视多于一个的文件夹,使用配置编辑器,添加到/app/rhythmbox/library_locations清单。 播客 The Download Location of Podcasts is defined by default to the Podcasts/ folder in your home directory. If this location doesn't fit your needs, select another folder in the drop-down list or choose Other to make the File Selector appear. 选择 Rhythmbox 音乐播放器检查播客片段更新的频率。 共享 Rhythmbox 音乐播放器可以将您音乐库的内容在您的局域网上共享,以便与其它 Rhythmbox 音乐播放器和 Apple iTunes 用户分享。 选择共享我的音乐可以允许您网络中的用户查看并读取您的歌曲。 共享音乐名中输入您想要在网络中出现的名称。 Last.fm 配置文件 The Last.fm profile plugin collects information about the songs you listen to and sends it to the Last.fm website, building up a profile of your listening habits. With this profile, you can: consult statistics, such as most played songs or most played artists. receive recommendations about artists that you might like. 为了使用 Last.fm 插件,你必须拥有一个 Last.fm 账户。如果还没有,使用Last.fm signup page创建一个。在 Last.fm 插件配置窗口的用户名密码框中输入你 Last.fm 账户的详细情况。 Last.fm 配置文件的配置窗口也会显示状态信息。如果你的 Last.fm 配置页显示你的配置文件没有被更新,在此显示的信息将帮助你发现问题所在。 快捷键 键盘快捷键 播放器快捷键 快捷键 动作 Ctrl p 播放/暂停 Ctrl Left 跳转到上条音轨/回到音轨开始处 Ctrl Right 跳转到下条音轨 Ctrl Up Increase playback volume Ctrl Down Decrease playback volume Ctrl R 启用/禁用重复播放 Ctrl U 启用/禁用随机播放
常规快捷键 快捷键 动作 Ctrl A 全选 Shift Ctrl A 全部不选 Ctrl J 跳转到正在播放的歌曲 Alt S Jump to search field Alt Return 显示音轨属性
窗口快捷键 快捷键 动作 Ctrl Q 退出 Rhythmbox 音乐播放器 Ctrl B 显示/隐藏浏览器 F9 Show / Hide the side pane Ctrl K 显示隐藏/队列侧边栏 F11 切换全屏模式
多媒体键 Rhythmbox 音乐播放器 支持多媒体键盘上的按键,前提是您必须在桌面环境中已经配置好键盘。 窗口快捷键 快捷键 动作 Stop 停止 Pause / Play 暂停/播放 Prev 刚刚播放过的音轨 Next 下一音轨
Linux 红外遥控 Rhythmbox 音乐播放器包含 Linux 红外遥控(LIRC)支持的插件。目前支持下列命令字符串,您必须使用“rhthmbox”程序名: 窗口快捷键 命令字符串 动作 play 开始播放 pause 暂停播放 playpause 在播放和暂停之间切换 shuffle 切换随机播放 repeat 切换重复播放 next 跳转到下条音轨 previous 跳转到上条音轨 seek_forward 播放中的音轨快进十秒 seek_backward 播放中的音轨快退十秒 volume_up 增加回放音量 10% volume_down 减少回放音量 10% mute 播放静音
usr/share/help-langpack/zh_CN/rhythmbox/fdl-appendix.xml0000644000373100047300000006472512317327147025232 0ustar langpacklangpack00000000000000 Version 1.1, March 2000 2000Free Software Foundation, Inc.
Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
GNU Free Documentation License 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other written document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of copyleft, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The Document, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as you. A Modified Version of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A Secondary Section is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The Invariant Sections are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The Cover Texts are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Transparent copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not Transparent is called Opaque. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The Title Page means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, Title Page means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). C State on the Title Page the name of the publisher of the Modified Version, as the publisher. D Preserve all the copyright notices of the Document. E Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H Include an unaltered copy of this License. I Preserve the section entitled History, and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled History in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the History section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K In any section entitled Acknowledgements or Dedications, preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M Delete any section entitled Endorsements. Such a section may not be included in the Modified Version. N Do not retitle any existing section as Endorsements or to conflict in title with any Invariant Section. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section entitled Endorsements, provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version . 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled History in the various original documents, forming one section entitled History; likewise combine any sections entitled Acknowledgements, and any sections entitled Dedications. You must delete all sections entitled Endorsements. 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and dispbibute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an aggregate, and this License does not apply to the other self-contained works thus compiled with the Document , on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License or any later version applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. Addendum To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
Copyright YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled GNU Free Documentation License.
If you have no Invariant Sections, write with no Invariant Sections instead of saying which ones are invariant. If you have no Front-Cover Texts, write no Front-Cover Texts instead of Front-Cover Texts being LIST; likewise for Back-Cover Texts. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
usr/share/help-langpack/zh_CN/rhythmbox/legal.xml0000644000373100047300000000672412317327150023730 0ustar langpacklangpack00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. usr/share/help-langpack/zh_CN/rhythmbox/figures/rb-toolbar-shuffle.png0000644000373100047300000000667312317327147030002 0ustar langpacklangpack00000000000000PNG  IHDR/ObKGD pHYs  tIME *tEXtCommentCreated with GIMPW #IDATx{TǿXct4JcG=MZQHS5H4*ۭǦz&֤!><"(]>fvaAef9g;P w7~^ryx;£| A/]'vɛ(7d Ay@ #ʣp9p[` (,5#eю_= kyșk8w4n[,=(dhQP<ɣ'NC߾6EH`ثq1Cߵ9"/NbAШP)[T"eh*8瑞C hKЯU**ϯR+a1^C Rcy#)PDȃж((P]-%-VX,VFI)g(ۂKXj-:Dl2ا8xswOAx,l6nȒ@,eV2`qxuttrnH1 =.nḷܼeߓY! E7JJ|1‚ ى#c'CVVlxX|e#̶().88No4ջ<<תt:wa\I\Rzwˑ3`{[^266 ^_0@lΠ( q***Qi38Յo.3 ٙ#w1`/̙Ϟ=FBB0tP,[ ǎԡP*)$GeEF#5va2gh*@vLX8o_4~bӧqg:>m},Y+Wqqq R_ry";;}Azz:~A>a]+DgF~;c'&ef %ؘzǦ͟c Ǝlv8'xߺUd#G-WLdd8G0 Ӥ8KHc~=8v;'-Mnxc/o0r9e#)WكݻxŠi@f[hQetRtdYh1#3c1?,,O`;L&\jV3鬱pď|%,KeeoY+͙]ݻ7rssjѧO۷r"MP(N_ 3c1~%4 !y+,̦i$&<#|o_$-X]Vj{J#G#3r&M J)#Ga͆ .zATr4Z_yV,_ mH(Nl.^ȔI ğ֭5@np^QR*|K1+CIۯoq23>4RSJ*8|c9s6 1118<σeYtp ((jjARRR)`Viڀ-mW;f`U*4=X,Vlܴ*PΈolb"y[Y1APwOj"33ɘ5kѹsg-W |%`,BnݺbؘV ZVV7Idd/DSVYm46?9rk7dIz~jS^Ům۾M&OXoꖒI<#""P(0 Z-݋ݻ#''V֭CTTT*<qʕA 5eBBB@LG1Fm4bCzt:Y8\dB1N YOTWW7mLTUUH(,,Uűqx1z<<<*[%⟑e YZJRĵkװpBzzl jII ] #׈BTd`?pرhĜ4Ija?9z,}qe%oȭ[eTl]\*< ^SNaȐ!|2r`Xp83 x EXT*Yy)JvA A%ؾel> nΖGs'6' a3~* 1nÇo?OPy/">> Ày,_[nENNN Er<\T>?h,/h`Df) Wz%Z-6r+4+,2nۆ;sGBD mي&U*tzW:]b.Ꚗi45߅T*u*lޖ^ ;uTW1Br-/܇k\汛-x1LKQR)(a؅}tB0UPxgBʴbem.m9WEi-M`1xqvyfer+>Wiii?.`WA!f3CPfO*H\vvtvu,uq>uHog~zFCI vo3c1:\imrreT>q]6z¹n귐3rp=tľ>Tή)im+qH0 @{W;-sP@} ML>yLzh f3LB&A!A&;5lݟAP(8P j^ጹOִ\5kFERZr m{~]+dō@w#BU*8DEFxUTva\ҲO C(hgn(JQi RP{aB磫ԅ)no+R={wv^Zȯ{H$d2ή&#^a<+>蒰|Bir_q<+qJ ]dſ.unɰ\ҚL&lnXAvMxQN}Hd//eR$WΕ_@Bl$&{\X!1@ld/Fg`mm⾿q#,S5[7'DX>ƫ_.펼QQ`iPOVF>#$梔6&:͘z.&gqe;DDѾBASXP;ИN``&Tr\Ĉq"~/:<C$'C[ڐ`",ɴehs VMZ}01QO"z9TU'#_]&8**#ki_]OjbLlVXC~TR*\FΊ5~۴>'-'4b /ms moI;kN iDZ@ ?wgOuIENDB`usr/share/help-langpack/zh_CN/rhythmbox/figures/rb-notification-area-menu.png0000644000373100047300000002435412317327147031240 0ustar langpacklangpack00000000000000PNG  IHDRZdbKGD pHYs  tIME 0zqtEXtCommentCreated with GIMPW IDATxwIwX( "Rc ͊XPQ䢠x?W)"XQT@ tXe+۲%dC6dlx̙3sfW7Ap毈@a މNT ^:eA,*^v)N {DtYtU@Jx1Gr~aYںAN @BJn@ Edp jggYheV9Pas3qRż Bh@Mgb>]Ne/J8hC0} {+xa8 T ٻ~p8K;^BXXؙ{?C h(Z!h4KUP,G bi^+Bm6UTHk.Es{3`޽+qqgCS P+ uh $@Uo;w}:==LZZYf~MV[v-øuЕՖo_ڲڴd\UŜ[kx?M\\\rERR'baZߊĄx 8pAA#(,,$!>iM6Pm+(MI)(XPR* ?<5jj'GLL4^UWvqZ[qmOEe%o>Qѱ%'/lܸ|mڹ=`2 2/ ?3xhRxk7;Xf_M.j95ltWˆhpW_Kw,3зw/v;7|ǶYv{|:){Qr #¹],3F(8)Ah6 >Sɏh`]у1$cjPCPD<1__ڶm\mwާvݥGnFVZMcҽ{Wn4]i21Ӆ7BCѽ+qd? ҃< 4ohCY<}cH TB9nţt' Nw?p!Zl]:3jmr|OؼyO+/ ;'._h`0Q5 E#<<UU)))%44 CtVaPt (J0B@ BlV$HEѿ"nujlZ[%&&0kqy4j˷nEJJ2/Ğ=XgX٧dd[;˚Fbf^̄'dч\|eL^<;njZ+مָI"wZz _2?$WCtGRf*U={}n_}i\خ-YY3lظWh CFPQQ b2nŏ>cPw-Csaf/dW@,iLf3[4c옻xm[\3%sA4:Ty.٭. .hMo't)(4E EQKQ@S"TSƨhi.0|4Fdz rmF.lDZc?^ W;iFk?ofҳ-f}=:](cy֋HBڈ=ʪkXR˾ǕכJF7J^3}A9x0גD]q 6iQRz%XU4MՂjw`/ySgv/6Kmthϥ;k.Q6efL&DFFEhh(!!!ׇ؅'N_@YYף3mՄDdPP4,Yjye(J95f1?LRb"O{̾x14MK#;;8Z"b|04 Sa };>JHWZlmZZ %% 7!?N /`mu .XLVq2e{G2Xz 3^ƍNyzǖd@YYIogmc3񱔗[/-[gdмy2Č1oB{WwGQz6MkNٴW:]ڑrEA~ݰ0~Z7Ni_&l PU,bjJTj}rZj?}<]XztMLtwX&)ڵ8ziK4>M?ڟ.((!11&d|Gbobn}~+4M#;;ƴ><,K /Cy'г F?u-jŌY-bZxO9l8|,0uJ>_' N$5޽坝e_8 m/c رct:rssQUUUX,Ijj*F4iB^^>>t3 D_HPh+kI f*h?LD%('mWve_̱#>kSWINJ"7/V-ә?pE˥˳{k˸09k?O*,hxYHnd=t 4YIII %>Z}Dʅ-8qoߜJo QU~\I^Wc0(++3ILHm[yp>;wN\l,/Bn9;JkrjeN尛4iJkf-yy5m9A4``&i f35BBB(..QTT)֗!-?T'*Yx?MBѻGerrC~}!Ąx#udz=QQ:1c08NWU>'>iZ޹hӻge˾d]; ztNvERtv_RK~C=yQmtf:RXx)w8$5Yh$22.ytk7p2:cQ l}*!t:faaiS9ߣQb"1!!@&ɬ\ڲanڼ-.X_XEmZ6,K7>a}kۖ Nv|s©bPVVF*MNY:)L&fjO#:C.™^G$ -Ac˪Ha{N83|(#]`'+gK' k= fT:lS*MEeй5ɧZ@5lX+{myU`@+qcH|fWa0dWud=߶bp(l:۶aA (u U< DWɹvAɶʄ@upXd:뫚ZKzvYFjtS Xtr]Nu=+)8DZNe@cyKJIeЍ7{2#G U Wtf+2{~һȪh]m,Pmvle57:JIQ>ׯE4n6¾o>_e St@n^Kxߣt/td?[B^=]>Щ eto,{QkşI4`4`Ov9+wѮq;Turw䞺[ȺszEIMM%2d4;~FiYHBmcrW)2ѫvGxqαW$%Ҧ]{E֭g'U{%99cҲ!rU[wmErww;ƕUFPʅtXŚ?NDD$5X,tĽOB 6 m@:o6ms&%%RpYY4k&-Kh8)!hLJԽ>/< *߭Ul7g[ڵ,ሮJxH[\X:Gq9︍s#c))SqPi;(W}4U)AD'":ADt AD'z}r|m5`OyyiM՜ti'AD%3fάl'+knY"0 («_qifΚWS1I&)4>^g==N@֭ {˻˪U57TK$곳(I$yرjI2I]@QPMtր &n&䯛6#d"@#((Ngk;:`eTW' %l޼cgT .$e ^g&PZZJTd4uL|LRӻ}hZ>Z"I&|"Et3<7yt:Q2j1I$Oꋥ5H2Iq/jH{*>i/_g>[[?مHr5,Z0"/FI&).}:ga>- t% 55gb]0dȍH2ItvT 7gD7 m۴U[.$EtCQ7nlw/[x6$4qχdddLR)=wt5偸=K_IПϒLRD0}<ׅnfDP?}M$YU$ b tI$> ":A  ":A 9H:t<]kѢ"_ʘ9kOw"'J?.!6nLHX]D4{倄RxntI=] dϬ!<|W!&N|'Nh4ܷ DEFcXx ~.4O?p oCq$&$ƛo;vdNI(Ȉ(É`괗zR_y2]>Nk3^!Ck(J=t^W5«ン!zN޽8.K=t'&&I/L1*<_C^ CT:v:]Zc7ޜnlAvz6jՒƎŗjf{^2y w|&6g~O,]1"t?em$Kkñ-{"8G ϧyw*Oכ|~O8KLH4Az|~O8m}:ADt  ":A 3zsH8p~QDWt"7*rN AD'":ADt AD'":ADt sStr¸}*?ݮ-/ðs9uzu^jڎUW˄DtW|pTejk]V׋]h>O˪cV8%zUngϫEYg{KتKnOy׶ھ(K7-I."⸠E<,]}d_uu޸p\Ko휶= 2䲸Dطw79ǏϡUz}Ip@[@sLm.D6V}x9}{9QXG\l,`ЭUm\Mu6>rc1=gw׺ӻ}}[ѣܹ)))5ر#@u6:X_Yꍻnc=R{s<9'ghO>EW}I˳Lt\5oہ 6P0]wUl޵vǐëe"gjk\\1OT cjsE]l}-ejj*cgUK& .>]C;&n_z2HIDATF<r%,o-fI.we_pӐhќ7ڴH{9Ipy]j[k狥m?ӱxtr%4uOmˠfoAk'&..Wv%(gط ysI]Jns˝Z:olj~< {|q)I.5j'utĞ eo |Ǘ}U=$ҧ@zoI.Epu)zyGNӇh59m@4M jR!:M  ":A ¹Q O1TjKN }DztB݉{7*kf!;zj x<9߯g' m۟H;_T5f_r8_S|B9? ٟ'|sn6oIc/}{9 w'_5\wQ,$O5_9̝<2_Jj9]6ФI/^s!y-y49cO@I܉9̝Ncs=4mڔ[nIEeo?+KF]׶"$0xV4d0g޼5K6i_d/'ʙϓx<殊3`@pw":I!| M%̝cND'IzoaIN A NDt ጦ^~w9v('TK \Tip*E''\O'":A  ":A ) й{m^*.P|d!'#//Ν;3ppvDdchyIM=pV¢XB (\&]VmQ\cV =eժҲۧ1e O X<9 &,:دM +Q8DWe-܈)SXj 3V/NGXw{\ť DbHG$YpFFLRI1e :t+ɡm۶aSvQ8cRNZx}|r"G|r9m@F5 gdd|ƫd|yekb.CpPnYݭ7Y}$kNjsI׶mzN :^Ao]Y1oXΟd'_%YpZ,;w_UzN:lZbPѩE./wD&Sn醖lav8|B WTXK5k~dBq/.Ctt ߝ?!И^5z^m1|NAIImi`"#"<=YIOoϫ~ ٷJ7_HN{8PPcb~w gK\%65H\U*2r1Y#g),9v,je$Yp-]\!'oYi?e\sLݺ2x~dX{JFAp==~2Y;^|e"8LƗĂ "&!;ɩЎsMItN=/N,f:RlmGU `W#KPbkKS|,€xo[^]}|sƒ2qL@)m[vUSbtٶd:,?3yr  N tOTKi hkS^ֲ& ۻΩ.Jtlpfy  ]ìW8;D' Yvi:=$IENDB`usr/share/help-langpack/zh_CN/rhythmbox/figures/rb-window.png0000644000373100047300000017452312317327147026215 0ustar langpacklangpack00000000000000PNG  IHDR/y )bKGD pHYs  tIME +UCq IDATxy|eO}_PJ) rxʪ@EX+6yyI|3DDDDDDDDDDDD /`!H^ϫz /DDDDD|"y`FAb(+$Wt#qӁF%ѹTHf^ ^0-=EDDDDt[ AL2,`1?2^䝮bO2zDS-zu nb \Ttj{nun_ɱ}(\rV #Z&pQl ̻$H|P '"""?Ǵ9ϸv1m38|.@3b_FF!zz[s&Aő=SA I$I?~uoFPD<J%h""""C*̺M(y9K>?mTZDDYM[8۩,;u%7AD8b@@վLy/s u&x\DADkk+ PSSn(T hiaȸ4+(0Z[aȽCNx Ӆ(iӲ-M\=&fN ǧBVaДޙ flktQ٬[?7n{b0GQu w"Qt38h{ d14/o0 Z\_يF&য়~BTTT?jh4(Jt:45CڊSPn;>$2x!" ת1gb-zeuqVl7ڇG>t_)pĢ! ɑx7QUeD|n+_pXoǡ3-o,z$_6”Qݷ 7TA78VDblߗw py:{.g=PZQ[Cp |`&: { Q0u?ʖ_n] ]A!v*ƠSƍ[= ]t(5A|׹3O%?W3_וk}0`A.g7Fhbk_t*^}iHbD߿111hPSSX(J,~σJ DĆ A 0֪BkJHpj/YO A:,-'֩{tTQfoYm p5mJsA߶(oٶ MTظj8UQ$ ^ۃi1.w&yvm1m]j$^1`D=Y%t<;| ^DQ[we,u&=ovM"{ 1 \th g(a~u\$%%!77={ @XX!I;I WȣZ*D^i#NTڠZM5PG&M50풋҆C~BrYfL ࣵp1N}l׭F{5f ղC;uX<@)]-[^+|L혧;c ȌuέhTCMC`@(|Wyȋ9rXyPeΖ]N 2{X.c; ƍQRRb*``@BBJKKЀC!:: M-@8"WS3% =S?luY%ޣ*)!I o:}ps)@#d-r!9e;j06̏Ć +jF@0pĺrs\i{[o}1/ՍTQKƾM"9kjYҴ+cXγʜGO`>Y!DQĸqP[[fiJ""O8XT| HK%S. cqifVUۢ;^oeF6mTqPi#lbjRD}#A0b{CPϳ/~eW0զ4B{=U*%(.w/p81/y+rGә(^%,@ 47@7 y"6,95g[p|fߩSƇlIAz*"%}$IDޡ}/cƌCUUzM+A1" ř3QT }S&m "h:W̚ @u8SjG`@\K% x;QEe-# aY2e]m&7C`p׵ -VؘhH'KWuF??q~r.y0b e]o)om>&ԿҊNA"":Ӳ~|xu/_68ng^>cY<8ܩSZ=TVA*q LGXA PPPސD 1!J f B=i/d_%I“MoJyXTB7CH}[y1?pw*OI]P1?+w#k^DYN@Jü0#Aۏl9eW$"pe¾{}G;v[Ng(`9EN& j$ QC zͭ-E^>{!<9:] v8w?XŜ,߉ֶֺ[y=M!Dhb]޶#.[Vwbu.܁3?w:23L7 /- \Nc0)[~gk[h71 (12-z A Z7 y_+syE 2 GXXT*!BCCQ]] V `TVVB!<'pp [ z(}>ZL~WT[Цڀ)/ʵ/ zRrermj@ցKЙp{흹ɱou.f~Tbh@q 1uXOLFLy76y$Rr6?^UuKJ" EDu^*О^:dv6BڟP}tg13@I2yZp0HPh`^E@,I3KnyGm> Px3pP5s?LbßviT=py>ƺ/\ ƶG KCgB_|ā6s:$ .7I寧" 2 M !.""sR Sp Z|V{~XelTP~ I1|&9lH"":(pk{~mNL~%bݷq206n._*?#gGpG:S_M3> \M3v!""Ns|$$!5Cv@c/ )+s ~ &MZݶ^73>_F| xxIPhd|?LyYӺ>k76o[`!Zٶh]YVwdunu]L8|̽z~%3=ޯ̬`o_7|n__~)p5x٧7ξu5jYs{X瓐ᰮ7n{,C7htH()K-CDDKG';/l@l={nƮ={1i+ga괙hlҡ 5rizC>SP+5Z+ƿyH4w/ /WﵨjYr}'Oˬ뚛w'No!_£poCrY>,k>RK?\P|CM!""u]*{u<.ȕ:PZZؘh_ 2<&5?qu\ؘhuΛrK r.7 I2ɢ~e웕ͦf7"Y!bM=UW{}he6[^ʵ\]ooaǎ]{h qUWX牺¥gM&O8hݗvo:8j_ÂA{V]?>`kq#i|2D*$k7}-I2ˌT*QU[pkڢ7QPP ?}"kAJԯID2_{i^Ov Z,D] Pə4ruôK.'/ƲϿĕWDhh*חIvnoZruUT 1)a9=l>N4[v uuw{VSR_|*F?>/!""e/I8GWY{$'B1e#[5#7{aW`ؐd#APx~ul>\Xݩ> cgB1ȱP[rU ?@ym|2D*@r~$Sl~-nZyسo ;jz.w8(Hn/d3/yɺZZ[RL˕J%4鹧jvX3i&N οa6l:rXlPൗvMH5Mع{/^mUrPG9jwpm΋UK*ݪw!*} $Mq| o\>iQ|( IHNo^ɣHN60:yp3[U``Ͽnė~ة_j,WrZ_Zgu9Y3-4"sV ve^J}U-nAW P?@cۙr *OkrKo z pld٧w>^}Q{ݼٸMO}QZڷ׎+{3cWaw0]֢wA0y% 7m޺UEZDB /bKg&J4eBPp'q}`˶4p@٣}yfzb%?BDU<x\ %""<&쳱P"""/%"bBDD߻D/Og(/l-"k!Jw~F4=ED~abMG\^=DD_د.(^o%{U/JDD'cM(+ >٦JB\B_p!VbP|Va+AA=MYW\."""bBDVXp6QGĸ > ^T*465aÆԞig I pnI $s"""bBDy8Cmk0©ؼgtYPT~7)ENEDDǜ`Zo_bӋ+(FmE1ܩ8Rkof\uUX`P(Q^^_wqfϞ'|aaaXx1V|CG@l T*O*^E'PV}}`deyU1"";?/iN6ќnx&* ys1h`1,@1(1.3RW$$aO>t)rr+/D.ȱx:1Z*L4PJFF^hhh0%MJZ0yW0 [tE׈cG? 'O2V[v%p,OɓqwFPPxb|g/& 1!AB-0jz- bC@@2)oVW1ه1jD'Ɠ//'~[G^J%4 ʳڹ{)p)-+ZxK\ `N3!֧1?]{0<ǧ_t:oHJJDHHiaCk^Vr}U.PP 3?|0o*,"gU49bFVVQ]]m L1/FXXF˗8DDD^Mc^i'x _^g8 X̃#,^7FNiYbbe_1f }`ZEiwG/>7vpC$*(4芫EEFbq߷+qWbQ60u~y#>Ka׮]Cjj* ~jm8]ǵ^L@^^]4QQ~Zƍ!c"NmH ={BXrGY L: ~@Tڝ!$8!!y](U;Qr.IYY9s)hub n~6X5o{Ž3#99 K_L$]ަ?݀-[III0 jhiiAss3ܶoO3u)(( V0n$""*Tu`7#vT&==(OR 5B<(aaaFhH.? =KG+0))=P^^!..6qqqpңW*4°p}N⹗t`nۋ;oW͚eqd#55  DFF"33r N<=z 22Rtya@~ QDDD]~~UU5'RTT9/rsZ>\/-hbG_/lncp@[ٻƍݾj5҂6[sԄ<,"=S둛gz~(rsPW_e?$Q4]](h4T*>Czz:|M_D\\Z-DQ4q1.6zp\0vBCRoKDD],|m|/pkq](RQ#o㉇ˋvzzmi>xȶ%;Rƣ!!!x`/(1=ã#.֯W_z;a/f^i<3;sp?&?xKJNJbŦK!;t~pզQXd yfL<$---C葜{zbcc#/DDDP(jר4+ Ï~O=DQħ_>{NzblBV+{ QW0ƣփ;Kց :o))X7s{]Ǟ?SV#CJ۽6mLZ32y1i\73ctO"J\T믘4i{$s޼y[xr Q'MaP(P*gEbyxDTd$c-l|z/٫"EFFE5_;z,{Wsv}Gi?x]*߾},pq}Iӕt⟝4JKd'[K0e]WT̽ři}qe~g* '[o7|]w͛` t F#**ڠnIDD/Kpp0zHAozp>|!""¡1;+;٘ ,ˍcQݶ MZxW]Jz k3WW7\n{TGAZ`C0;]?R4i+ _쏗_z֬Y+WBT`0?3dsX\lߞZHDDԝp0$!((J AAw9kԔAakNv}c@.$11a `٣&*K=b^0;UD/. W]1wfΜ>}@lwUUUbDDD^ `SZ-bcѴ}@KDFF". f zH? n> 'S'ÈEhhCSE(J@T999<]ȇT*Z-j5DQFuv΍ ::z@Q0`huxʘ/nTW^W?Ð!CPYY R QMGaj5A<ýwň|BBВ$us6lʽ]/tE4^y?_{b=65wv&OX$%&@95UuM8rŕ(>S&4Z`DUJj'`@DDለgsJź)ctZ\1\0v4QQKdvk̎m9X:.V`'-'MDD ^&M۶nFm]Ϸ]~?&_Ďw'kw{&OƏ;щxYH홆/۶nBEYQvUJpŗ#g;w[r|M.;@DD ^w2Gwɶ [[ nږ< Ȉ냗GXYm3>|K@S9"!DD@}dv५ JDD}(ǎMx""8N'"| kWsձ l>N!""/DDd]GX""bBDDm[N>*kL y6FD8tҭtbh^蓒(CTAeظ vTx1""bBDD&<7:ŨA},뷻Svu^]`- 16KGDDducUuMn \@$45껤|DDD ^@t-39. qQٹ~U>"":wy䴱T@eY[˭DD2 z42( `MGr$r?DDԇJ!(@G'KK6-[Uv|DDzkoŃ N: | v Pm jt'8Od&}ls#"*9a_wb wt:deDVv6?u8[oqqn?up=Fɝu_iۘTy'nvE|oX.(Z;AפU~{%r|s,|eQׯi{Xk(-+s{}#>?m S\dGN#"JԽ^c#]ך&KWx|DD]eﮭ2=7x[?xu|~n{9ɍ|q{ږQ/oQzIq4uuk6-/t:70v$#9ƌ4ć/Yo0|䎄*(t؎R.(;.ԋ*=9ixL xg \:[>"2D &&ֳ_*^?$$etvj+P(p5Wټf]F#/lPYVh3u%[ןH7ފ@|wп_?477@Vtf4%%(++ǐ,a[7xGvT#/ƾn_o7j5J7WisIk58fחy< ~ \}JU5O8eOʱêoVhDَp41AyrڙAsm;ghB1qv?RAX,?x0Bn:Ja p+ ut뿝Wڰz}OD3":U}sʹα<,x5lݺf˗!66r0+ضmZZ[1qx6۶}'n۰_Фa׶M8~</klj¸cGr25+Ã/5 +\Nk@lT8bYR8煈`]qxL~+~G sRSRP^no]N:mѩW.{Z&x=lrEXx8T*"~\eeٷ? iil98t0 j'\>; \^{vt꘽<@v ^kW_^?rϼ ƎA8uw{PT”ɓpYY)5! \6eeHMbg9G/6Z"4l^h Q#HPM<SMFĆ;ǹr^jKlh&?i*/r)b(8<=g)dQt>l?"qa|%!| v[O]JQ;C"F,*;}wl۹@g=*ڗ7h ?\#/rWtj:oDxwJql?"1 `йJwu[QRvcCx` z_hmo6,""&"$Ne\W <_]KV|Ȉ&bBDt?$QX~\ȑO IDAT_j2s\蜡WH*Էx%}o-YjD ^- Qx| ?:,D1x9d:ԷP7h꽼dq , O3)323-';tHL8S蜣W$p1jq G`I!騪k‘S/DZT5A BR"T`$F =9z%":< H#|0G*Waxm"/DD`S CDUԷ j'Q lUNxb(n؇* v"""" 궲D~Y|ʘ>Hm@$ Bu(3[!.[RJ]b""""+ .=iqX.TApiih54\/Dd;ѹ7Y3-* w4} v:! (8uӯAttW纘SOnvйöm _y#ATB$HQ ɔVT"-.Flԭ4=_Kks\DQ z"Q7UVR^ Y, Brt/ MI)PVR3g*T2>tNg@ Lض$ԙ+rt:v.PPk׉Z*F}Ş%"f% P*6$ųM AϞ X:RA ,4MF*.j/~?ܛ֢ogPy"ScuG/$f$Iij'OYׂh4TUU#11V$|Kg .6mMFJ13.WD>o\ ^bDDݔl>Ũ Qh(APB fQ@`CS0(>:+P)MHhF&{ ^.(^sG $Q7z`-y@P(Q-;! b+jOag\>l!4jm{BK|$Q74+ɹz쉚:DGE=MVp u+='Hd^Йҽ _ ;X oe+uSo,A0Ş@$&CTq$ r'Ʀnp(RĈ!Ft>ThF7@j ֖?NbзoauS ():^[$KN!>!Vtull6B.FaX04Ϩo.ESK%$$ӥNVv^s/ODt;EXr?A< 8 k_c'!$8 MJ6 d$FAR%|7\Dj6ѹ+>!LΔt2YPTKSVˆnE B*uǜNSVsG?":4aAPBPA/4 U (85Mn)F%/D\&IHIMCTt=J6(!!OSbPJ)^""@L6)k) FN!~AgxMEڵ)T4 uHbһ" BQNMauSH}]Vfg1xq^u(Y9c'PF@Đ42$]6HDD eDOC}k [K|$dDs AI[~É>E|DmAr3&N`u3bf! >f* bfp΋Gϼvbx>>.z KDDh5w Ta> \]&Oű*C(^Z}-Ulh""n$, o@X@ԾD6:Ǟr8js"뱧u3ZM4'ކ^?9t'#.D ^sh|&֑84o>ʈf#<3W Lyq99 袷zZmA]?6>Q7hmoTPڐJ1CbPހk*9.)^cF*dDDDT61 fTQR}9 M @4`#Gx` (؀D ^6ʏEm;gkO♳;A7`г!ȽI/z>DtFA f;E ½pL[AeuX?9 C2sK^Fؽ} *+ R)UKqѻO_[p8m݄2*wMߙM7z,""\"+ʢ\AEA<ܸ冶RJ)--M+MsGIHҜmZJy=O03|?0ÆD^%Bo}Ғ2ޟ@{c+Yp@ F!Vq‚<?"!a][΂<< `6/|>8xp?D.. F_4!^:0t(MrT_JG} HBilNI0hm bPa-^߱#`aJ*3]b9ǎ'>E_2! /w盵_,ƀ5kPa!$N) QZ\.mBû)⾸B"qcU"\B!wN}ꌌf- 6^ _\M˒v >:Xj*F8o ˱rL<! /w#yuE9swĉ;VBu3fӧiCB!^~2 1 ˑv+Ks}n:ݑu^Bڕ`! /]Ķ ]\ { uu+LankR:,^O$HT"W)2}CC;8ߞ~=lǜyN=WBnkQrYA"Ko79~,Ӑ?7{DzCp Kߕ;2|{}w1SSěo)PT q4|0md8o8Ŷm0q ,[90g5_ϘFYOKA[){Qn`oLrBH/{ǡ#py)BCak &j}+Jkؗ__$)Fs!m1Wb"kffK1uuu:}&ؼKv |4!s 1?+ Ŷᄒk‹.X 0n~ݿ:z\7w<Վ\Xs?8ǡrYڱ4BHgfc֪ /M3`xlT\H3', $tNuo0%cw'O#"NwfYy5<;Y2;vƈ krQ]]E '\]]1tHv2ƌƎlP{ֻ9dgTT"ڢ,/߳yLb ~5IxU;̬Cq>G's7׼:qf|c \:uRA5~'!Ch͋apZKCow`k5)-yuJ6B5VȅmyyՔJ%p^>q`&;OԪei 4lSbo? >Àeo׽{7|@QQ1^\Oy&Xg%qӧOs $:ploXDdO۶bKb:t(N>!CڶߕaK k` 3 0-H{`mw{b: \-Ok?!PxqA [__@iYt 2 ."nwfw$,168~'x@ڪayIܯ\~硡!())X.]9xbrdJt9,{} Jqloذz> 9/~Y:t(XL;[ePp4k՚4GYYuZ5c!kQ}K:.^ӫ'`=McǮ=1" sξ2;%2}gK :8_ɾukP5ȻM_o=z \HI!qvw8Tڕɇ菱#`Xn],1>Z#4Ii󬶸ߋ2ZUkW͝s/jNF!þI܍M/lϝx;=1 Y _8 AƲ>mv8TWj((8B \nH=O.F#UBàOᯏ68L X{ Ar#?A]ybZ ]j+PZ| erqPP)*x _pE͝~,"N^T*Tju0ݟ_ ۢuI"#|,ke:`h.xzx[{Sf'ֱy9WqNYg``(U*H]]gF`v(丙 iD>1fxwk;Z*dEW^-!/"5O;6!trϴż`pƇ @9^j|vqQ+iC;.2/b!Xk>V}YU{ B:zx`mv"iG_;gm B]Eʃm4(+/0[COBHG6Fssqquͩ=z==&XDrW(3=eEW*0h,G`t >x$J-ǁ8p Fy8v7D"‹Vǣ=)5!횲AY{_MWQI~Mf-+0 a0r̃5[aÆcXr%&M͍ !t^fܔmSt/ynCB.!1v_VV/^k|iqR\tZ-[Z@.pcҥXb 5!#N8巋Qҙ) <>kq3BHNNjo=8x ZL"Re|dd$   i!}]of_wECr+B_ !bY /\p ~v5ȖKrrEV n=oL/ .>o>=<7k ,6斱/-˷0 lNsdyBqTmuiבvvScox1={\ k.:Bڋ+^g4ձ‹Vܹs7_͛Vxơ5j rp5ƍ2TB.eYi@ loh0\=,מ4:BZ[)cbi!G\{>/iS DZj[9g-XV@ir*e<Ũl^ a ni4T8R3h`b !!&eC]+j8\8 (/-@e c.Q !,lΜ{˷~\Ϟ= E=4jBC!4ՙU1 ,X Vh̝p)BښZl:""3zޣ`T"~4(j۴<\V`6бBQx>rZ<1kЂ^4fT)Rw 0 +֘yq?JkP^_JiKucJ/` >'mDZ-.㦥d0BSxaY}h+5/sj _ cַё'c.9AR1Bȝcf(qe7/+..b-աsܴit\m  !N[MŴft͹8Fq`?ht$)B T*p!WFlhJ >U?/CE(pq8X 9-8F!wʆ{s8tRзo,FeuސЮ[7#apA0|63pZJZZҜubzu$P!حYŒ&:\[Q{MBړIS@(P(]\ǭEjp1%/>^1FZFmtq?{{hM{ 4hi 0'eB?dEWZWt}Z,kYaV/-[5/F#3D̅ k# 0F_~sWcvZkiv0b׼t7e1 )ͽ%!Šzӂ`9-*5^2iuN1]eY$%*yiX~ݹRHԷR@0 )dĞa[g~{B鉺$a<1_Zy]dy(*ehcjsC !V /uuuh^:08Ψҥ//@E x84( N(/ͷk~VFaA& 2V_p!Aˍ7!נj8ほuϗ%>%>FDZ8-} GFnXR>FBXX+8"#Gpj>Tj5vpB޸q#ʐg}h|\xv/?W"--/p+;;OFff&6ڳgƍgJLLi"Ë~Kƞ|K! -ڪEiytݶB`C!<<G3СCa[:aaǎͥ /~444`ʔ)RJ\.Gnn.FEO?X,?6n܈@.G DLL +Wđ#GyW0C˘ӭ[7OƞuYbxWw52uT={n޼b:Mcccq9ڹV1hxPQQ?wƖ-[oO>\9MÎ)`F43Z2p@@rr2tpN鰯k.ֽg>w\$$$wb {1 +r N7l L<?y9sÇw2:F#sٻtMw@@Se'4kZVB>:[UbWEE~i 6 ?, \ke0,-ki$2s53t r3C7nJ {G1c^}Ucƍr,`&s(Jz>BJj[zLK׵f|稭ڵk1k֬V- ҥ~FR鷫 <33S !m6a̘1x뭷.?CL:Ɯl\Y|~yޠu=qذavF1z/BH⟃[\j62~~~puu?{1`ݺu?~<ѣG#::zLK5j(;ӪaCСCFuo̘1:sLy>'NGH )Y ֚a.ߺu+֬Y>#}3 G`!]sߢ"~FC$vJ;)!\j^.^oE/qY\zaaah4jPTF6zCsjgzRZt).]j4mժUibnYk8Z{޼yM5-%&&F˝9K,3f/{N%%%8rIrw3Wᬑ2u=YjFf(!!Dž ۷oǖ-[ɓ׿QFI;)!^,;y<?t,B @$AT"Is|>l@7oBZӐ!C͛7cv-cٲe HH'`-X1?44}d=0fi^[}\rƌXr% eW\Ν;֭{vZ@}}=~wD"<裴#ة3:gϞ())ҥKѿ̙3yyy bWFDDwJlXb75##m5{饗b pt`bkakAћSx[VwQoneni+ؚdGDD`ڴi())]@̀-&)) uuu?A\!K;{{{ @"À0g^o6Q[[ Fq5}WL5,TBڒ^ _s{\#gkΝÔ)SݤbXz5Pxc~t1X|Wpqqc0j(hZr(J-??~>4xzÍ%B:={b?60!^Dz,W31bѯ_?T*d2^S>plVUs!B!‹YϟGdd$|>XŊ+a|ǘ>}:V^ FyVvv6[" "+Z0j6F!B ?݋>}hi_c0 FRX,n\|>pp!B!PxۨC}~=zqoUUU(((@EEj5j.f+P!B!hQ{0Xdddh0 R)AII ?nws1B!B1ԢsOņg}ϟG@@X,_|`É6B!w/h#B:iB /xx8r+MLHDLT/x{y=!B!8% AdnW^Bfd U,D OwDB .B! /# OwpZ0.`x Pp!B!ܙ 0|>|>*!6#13Փ6 !Px!Bڏ+?LB(4i$6}OСCѻwodffWWWK.P(P(-*Wzz:bccjn'N !!AƺunE!22/`BVVr9jkk榟ŋi&&MyBqM m8B Xŝ ɓ'DDD{O>izRLPnݺgANNRB$&&QQQO^ ooo̟?˺qF̜9ӨkŊ|W^X,X,1eL&Ν;q%xz6ZK/aΜ9ظqcݼyňuxbڵ)5\a>.x1FXȠACYGbD/Oxhq"ߜ<]X)XrjIԬV-J0O0x,]2(5F?,~yXwJX>.b!">.yȯP_+Wb ?pnިG\ww /V$pЀ}p9z˗/c…:t(vڅ/2y9r;`̘1(**B\\^ n QPP???|4h /+++[ ??+V@qqq˪[^Rt/Bt;v yyyCAA***̖SW;S[[g;BڹP\(3]Lj{C/pssCNN*++ѽ{w̚5 +V0՟ \ܹkAAA=z4x C&>O<޽;|}}*JlO2QQQxZ\֠ 5 VBCC***_?˗kU~e PЀ}R*PFdffsέq?>9Th\uWi!3PXe˵!DYF?N w1[_uk\׬׬xfTa[e4ߤl=X@L*"}kN1hz&WqB>h4 2@#GmXvZ_2 `|>|~tȐ!رcCͽXn}4 @[bʕ0`F٤k[f K~-d2iӦ6w }􁻻;b?ࡇ¡Ccƌa̙F>|'Nv^rGM}i+hج̜[]`Nm`i-ܕgW7f篿Z\MOc1wh[̢#*Ufݼ +0,B́!fyхd 2<O! ӧ#992 j1x`/XtatuQφ bqd5T>믿Fѯ:111h4'>>lǏoWe=\>8]c9H5p?'Q["@7_4oTYro>cwF[ԬjVWk0^_\)V@`\v7 !vBH / @ՂZ 8p{=ZV0{B!ѿBxNrڰ^+`D"gAXX<<%%E,˖-Cbb"|||pY( DGGc߾}www_FAvv6|A7=YzB!B ..i&,^}E׮]!Xg{EEE4 p8pmZ|[B!I‹.;v VL&}ݧ?n8deeh4(..Çq#::ڮҜ;HiBH8kE FM$ ၌ T*ȑ#(ȿgѳG7?o醖dB!AhZP(08y$d2J%222G _>@LR)1Xl} }l4kaBIz7mBH;mKEX;#%K`SPP*dddĉ(((b}A`c0|p\p\X!B!xhpq:u `ƓO>cG`ƴI􂋋F T+B!Bqnx1#q3f xbjjrTVVb׮]9|C!K(vm~c~'$bԨQ8wB!}3B!] qPP(Buu5J% Q]]~ Z?JҨ<˲oB!|><|>|>R,c6 > @$...i LB!BH+]=D"l fXB _@>u(,Ņ3G-. ZmseM$7l jj*~xg1~ps0zߡ#M4$ɐ'VcɆ͝l-c8B( 1 E?q HʼnC{r,||M~h4Ä|REHx.k G]M5k,,[vB<ՕhhP`H U.E7M6grZo|uI;!) ikkͱ-tGO[v-ʰvZˬZ sᅬ_|}V^@bb"pQY!N%M9h4j # u@Yi1ΞՕ6dړƩg5]L#l2 bW sx\AEY *w6 2Ml{\+$3"H?,ؾ}~ڄ PWW3g`ȑxx衇m69vBښ*=>( >#L{{"atY&a:..bJO .aؿ}vJȅ:BVLÅa?K}^ii@&99Y?"=d2J%v  8}0^eػ @R>>>Ji_!L B=QS+A`qjͤoUJxyWX]Ш(ı?瑺wd_t8X[v̿=tVyYэrUF(r< _ʼnBqV .of-|0 0ͩ GqqC%<<A~!<:ox', _uDDD ,, !!!HNNƖ-[˫j۷O<@rZKyE.\ȆEv\BMQ?sPV>Ξpwwn[4srQN@ t2/BPOҦL;ӿt1ksnݺaزe /^ Xp!.\hqb;v@aa!r9ziT۷_~{iG 1w?ώ^4J |}׮݄~@,[\ZsZgL}B!BH"t#="}bq(*!h[P j5psss}lbǶB!B/66)ȼҲR\ɾ|ܼFz> p= ,-Yi.\!B;9%>>q#P\w . *k!'/nn.Ĥ)>|]0Xy\33YMp6Q_ B̜Rjqy-t@NI{ո@ 9jhX%*pXkpzscכk:{P'}B!BNNy8j6vڍ8wJ,WW!}0ɧc 4o\1sAB!ҁËFCV׿cqFA&o߾Xt)|}}!0 BajB l-ؘ[B !B!0j^ *++k.\~999VEvv6֯_(̝;B X5ıSR1B!B(CZFVVRRRpeQQQ L#??QQQի"""УGH$uknNI!BFA]]4 ѫW/C,c FAtt4P(P(fM6 6653rne콟5#B!w$h4r"//HMMʼn'wgbeeeDhh(B!J%X/mÍ= cO@5_JJ |Mڵ P__/… x׌7o͛ѣGӗF!B'χT*Edd$BBBпd23r,BՂa~~~;$ )SԨX 6Fz_~O=?"((YYYMˬYl2ЗFiƞ}/s?~ڵk駟bϞ=X DX P>o&}i_뒒0fD"4777C=m۶Qx!qަ?{wU3 "l jRʵ4LbW%-B4ߵb^255喩%\ D(" l 0N8;;|ޯymy<|99Z5u_\>v={C믿.]W_o`k85z߫U|VVV lmmacc;;;aF`bb###/@mi҉'ЧO{ #Fkuh[N 60 V-u_ҬRGkCTTe,Yɓ'cʕ?>֮]e˖ <9r 5(XIm-zizj~-!HFDlf5IR~O!hkQGn\~ vƍ5 8}4 p"j4%ϓN/x~SuPgM!ޟTWijP7N nm%׷;''YXX@,###Cp"j l&iKPۯM2Ln߾ wwwf.5(C(VV?+ꨫun}[+** ̄i[É 5B܏ ɓ'ƕ<gΜA`` 3ӏMVw4yU-|ݶ+0 `k8O/H򉱾i׷w|(..ꫯ b;wJdvf௮Fuu5娮F͟ZmpO}Pmkk www$&&'ܸqck8>/(hĩ֡mФsxgeaUk.2""}R] _GdaU 0yyy yyyz&O/EEEKX[É LAdhhEEE~3g`h"jTգU)u4+~Cqq0テX,ƤI !!xеkWt 8qN&MACD ^ڵ+uݻ75pQhYUPuGtH:`ݸ|29K.)5FyU5Wjf'mvrqq#[É  [0؉]䆷yڰ5'"""-VE3#0nBrL"6P2x!"6^' xzW|Q?Qbaaۿ |m3,,,(DDmK*qtt1ۅQۨ?BDD\.kj9֟lyiڣy1L"jWdYp9L4"VZ2xiBg+|D!vc/@O  7.;VWˑc_fVX2xinJsmKF>N#'r 4AA#5XV2x!T = CDFOotnu$"֟-;r{0u큽ĭ%"ÖV}^ 1x-/DDDD^o`Tң'N)\e'^)Bl\'=/DDDDlrn9 q,A 9@JzaK+/;0DDDD@7Rq1f:VN]&!"""";>ʼcPʚjTWWZJdeYK+˃B&=⧘0.|N1:wƐ);Y>2 6FDDDDn*'so3VO#\CLܖ޽{()-EU&&ưN >>^`@V1m}rMrE Fvqޜty_XEHwÓ_7;1߉fu_}{;? ^Z9QkÿE q\|=Y&0r9N?%8ƦoA$4bVn}U^{:4]r-mմuUZS7g{|wt.u<}kF}em]<-[yqݯ0`{K[v2xinJa5poUNZ=,XWbn0z-3k8vDThJ~NBW (?'SxԐc5[nƆo6֭ ^5k:i/R嵮y^[ۡ%{7Թ5BALF~NVE-gB G[KBBҫ>_-.nnb\= ŷ ~aawY88uBII0𯿣6Do {K?jM}WWY)ﳺgUu_R}Rw{UՔ'^S׿7\[>xe 6o aK>k+VDZ|7mYז۴Tw싯 l}d^д.u]yy&Х%z*,[&yo v[>_럘_3 wq"TWlTr.nUWWǘ+IqVVV .''mk}Qu:F=n>8tܺcDs/|-9wgW.uՠqҥcn?lhk໭ѣ?6ocX] \}My=)^;r770DjYv΅Z8鵁Jݿu+Ӕ33SS?ú _cǶxj`aH$ˆ ޳O?5I/lU]sVVV´:,--7GǬ`Ҧsg~CF-dɽs/uM7s *r3`A*-X'Oc]zb[MдϚ4$H>F9SR!#3 /*?%5:51ʪO׋.,-UչMۏ}Ӗxf IDATd|08ilڼU!xдkkqWWХN]-x(++téA Ŝ!'~YNŎ*g|}UN;:B&itWwb{ҵ}֤tD U>^φ_>Sq -2vlGC};w\̪u=iU{NN. 5/`XRthc v]nW>4{*~ ٱQO zU$lmAC,X=q"zc]"7W#!v.zWh* uHc{w5r󢬛N=W|r; ! OӧrMª˅AX8v"^.\]\Gܾ-/U8tW{al>ªzr >+kwJS؟+2Ν<Ԡ 9~ع ff-.SRO ]y9Nn< ;b~eqѫgFPeUUbUϵT;$E]U?'uP{–o5n[K1i$ŋqF ㌍ѳgzmWzorN]8qˏ2[7v{vun ׷: D>/|RuiQ-y1>|΁̚*> ^[ W>7cVcY/zu$$o1ۀ 0TPPu֡Ba\&.}ʭq--Y[y,|7n皦vY;Vϐ֬;>tA maR}wt]ܹsܹ3`ccrܸqgϞ׭clWKZRRw 3先꽌?`[0DGG#99ɶPho-/DzTU[ƀOScǎ3g/_۷o7vjZ^***PQY y9U}&{`L믿bD Ð!_gffQF믿6h֏wwbsPQRQYJNDDMEEz-SVV&PUUرc  bHDly!"2c ݻwp=HR 5u-/!U4xxx Nꎫ}""/Ե8uӧrilllУG$%%z{Lիmơ "jWb6fB͏O#G}u?}̙3W^H$0_UUdEDD ^=/DRYYYO>8^mڴ 1WUUaӦM}jb V%{^JKKaÆpvv p8pn1x!""zD@@rUUU8x <`퍀f Q+f$ "4j(n1x!jN"H<,Q{н{w 6Yaذa޽;3 g8~8>s|2 jjj]]#jKѹsfΝ;#<<@D:˗#''Aw}[oXdIoCP:~B~gŕ+W8:>}:;0}t?kkkk׮7oNNJK4Սt Ԍоddd`ʔ) w}QTT._]) ziHHH@MM ƌổtٳg7Ycggٳgɠ勊0b 2>6o OOFvL"ax5̌&4c ,Zw}u X4"%555lmiajj OOO̙3)))(**",, 666ppp@DDIIIDXb)S ,Xo!ܹ3,Xב̝;vvvD`` ^FO'+++X[[  _3PyݺuׯЯ_?؊ ,Y]t5$ ϟ/LץOѻwoxyy 1e888SLAii)3mڴ "&MzdZLL NL'/D JsXzu*--Ŏ;**q%c رcHJJBVVvvNNNxa{R L pO:d`֬Y´3f 66(..FZZƍ'Lץ@BB222'OƝ;wpudffxw ۈĺuTNSx컶M'/DNUQEV}o3RHLLΝ;! paXVVVJxuVkKbܹضm[Mp̟? >ooo̟?:[YYĉJ7o1p@$%%|Ν( G9r$ _3Ж02zx)3ge_~~~;bРAs}xba999سg> .DLL 3̚5KcYp1o 0=/$j`'On%*.swwG^^r0nkSLѽ{w\p'N^G>}O7 ( u^}U"--Mkٳ {577gkVL+++ 555U^Cꋬ,WT{ri ‰' ǎ:[Z1x!j/ʟy;X#HTJQ{R̄#Ӆ7n܀D"a@@@JJJ4dee!//EEE :vGGG=zP"+"""btQ... Jzzߥ,5C ")))۷E]GFP]] Z PYY ظq# 6 5rA]$([QE[Z0iR)-[VzeBDEE#Jп߿ٷ%99vѥKdffbڵT_K.(Ӵlyy9LL:ĚH3 ˈ-[b$&&bРA:ʁѣ[oaڵppp۷gyUO!!! >d28;;oE޽qqq8v>c6 >/T/}b1&M\X XvuuOS42>*mٶm J\RaÇի/_΄klmmqE})#sM^%%%z_Ӳ3CA}aÆ ƈ#`mm OOOڵKBUckk+ЁjIp.@iSK8YCċS0Z1|ӘWMhki%0g^jгgO3k5g!n)ՐWנ+.aBSV);a΂s+Yc(P pTs o#2@ݖMYiƈ =ԣG1x!"""""/DDDDDD ^QG%Qc"Q–"""""bBDDDDDyin޼B@UU*{xx0ш 5]6nU///gjZ7XD"|*Jn<ƌ777H$/6XGy1b a3wCYf?L&3xrboN,鈮b~>Nx['$xS>]ѧc^a*`bbHn˪U~K2}]ka zNc~ԩS穨Yaaa9s&6o sss$&&_իWaii)|6~-Nhϟ_5\#Xky TfׅUVjw>2cH  ~-ѿ#55Ugƍݻ7ѵkWL/r97 [v-\eErrp;BCapvvƈ#T*Epp0҄uaD.]0{lf̘[[[XXX`x---aee% :t`kA:+WD޽;w`',X <,GURؾ};D"Əȴݻwcܹ:ƌ}/wL)Z/D,pQ{Xz/n<ӧO#(( .dggcѢEذa222pe̚5 ?.\ 0uTa}YYYqE!&&{EZZ|}}1qDٳ+lDDD //ϟGRRd2>KݶD"DEEڵkx"D"-ZbfB\\rssyГNex }:Ξ= /Xl{1XYYaܹ駟t/ub1cy…8~x_KKKA"`֭BBB'ˎ7hueݻرc>Sz 77GKKKH$̛7111j]/n…={6:uri8=DV|&&&~Hx]AZ333Dm۶a͚5xe˖aРAZ}I$:u֭[ &@$r9*++u/u:?7n܀`k׮oƼy! ٿ?,,, (/C[>++٨܄qnnnχ\.WY'Z~0Gӧ'O\B AI7y @HHBBBP^^> ӦMիW^*_$[PPPmJ}Kmw^z%DGGg Ν;#G@$ڵkxd^޺u j PKUWW_|Am`ddH0Ԁ׳Lv L)/GQQ磦ݥ'z&vè9섖M{{{rdffj\'/b߰tR!Ct>ƕ  *++W_|LIIիJo!22z_Ӳ CEE V3041a,X׮]OH$~Gܹs8|L&ؘ ZJ>TTŤȾ }3_?** k֬/cժUرcƎ JXhY-/T/uॢoMM[jU2jyj]ajj OOO̙3)))(**",, 666ppp@DDIIIDXby IDAT)SөIMMEAAΝ ;;;XZZ"00P/ `aa i<[[QQ%KK.D"~)z ///@aa!Laʔ)(--eF5bcbb0uTᳵe322PQQ>}x d2\pZ[mz?UԽLyu*--Ŏ;*jl\t Xxr8vBB"W^޽{!ɘ(H{)$''#$$f͘1Eqq10n8a.EFF pB05<<<LxaڬYp1 &`Μ9_g011iw4yzA$!%%}5zxx0s@nPSSLfPbnnH᎔}O<xB~ڴi8~8{TWW#//.--pMG.IR!22U0i$-[2"**k͒b ׯ_ڵk'.Xp}hZeee_כ_~qq @jx뭷۷njjطo<׸l2b.r塰>1yyyڵkBk\JJ x ̛7O՞P*))Mbb@EDS]gm۶ UUUJӇV\0OOO ˗/gµPx"`aa}{y&V^ׯiYGGGXXXC{xoKT|ذa1bX[[vҫPU t```<={6 [[[9r{E.\PcwA,cҤIuPmpi& z¨Q2{0 |p77Kx藝xqX q5ri["[~jгgO/Q |888(<&P999˃[Mq3ԬBDzvl݄9 zRfέt6g!ş>@<:Ý?(P A/BunQ_|K-@ƈ =ԣG1x!"""""/DDDDDD ^QG%Qc"Q–"""""bBDDDDD1x!"""""bB|m"""" LrE8p׮] BCCSO@Eyݻwyߐ:`x!T\p(--śo0СCHLLT}2-/T/=RRRЭ[7֭[ž߽{W.бVԩSGIIIsMQZ W{UV1q[^u9::ݻwUV1USSۚ"88Gpp0RSSy6n܈޽{]vɓ/r97 [v-\eErr2b6:t3FTׯR)&gφ'tٳg:헪m\3^^^puu!Z}>1clmmaaa^kﶴ0tЁ]ꀊ \{||| ܹɓ'X`_NV~ᕔY{n̝;WleeuEEE˗Q]]DeB-Iii)[7M離֔)Ӷ<ۃ … Xh6l؀ \|f066ƅ pL:UX_VV~w\xQm޽{___L8{}pu 瑔L>@R"QQQv.^HEX,ƬY\SY7xDLL Pa3@ɓ8s >C+ _g7Dxx86mڄhaZ~~A8p.\ 8)))Ld/TUUaƌpttT"UArKE]*aLh"=FGsLLL`ddK.޽{С u}o>]-_b6mnܸ(aqY鍍Ųec sO?~#' .[}ZZZ"../Fnd0L8QV^(Riueݻرc>Sz 77GKKKH$̛7111j]/Տ:u̙3´iӦ!66Vu۸vqUtӦMc"PrDDD ;;wnQQ2~ fTFLC"`۶mXf {=cٲe4h @_DC0660Bخ[n&L <=G.?rRСCq 6h)v?pm̛7HHHPZ9!!A}Peߡyhue%;;555Vޜ0 *]/Տ?aaax0f.'''護Bpp0rssnbBMgիWg]mÇQQQsss '+{{{rdffj\(//Ǘ_~Y oXtpСC:^VV ꫯD>`HKKCee%7G\bׯir0a,Xk׮xi}Ɗ+ܹs_|Əh4ƁO(:t}񑟟/<8??Km؝;wGo߾ Pii)oߎ 0F|i `ڎ*Z >>>ԩo.tH$!CХKV_˗/СC1zhׯ۶a`ԩ}Yj۝b ?#GĘ1cЭ[6666|2BCC₡C۶mW_}RׯiY///8;; èQXA}_ c }?Pr9|}}ѿK,iK-Z:uBnйsg8q۷o9 )) w揉7f̘\.\՞Ν wwwSp"@iSK8YCċS0Z1|#Ne"5Q|X@D8]ODDDMC& [֭[>bA6*\;YcƾS3ٟK[wl݄9 >JksX 3s|12>/DzPͧiH ZjՕ ۀx1x!"""""bBDDDDD ^1x!""""JnDDDDԦ先1x!"""""/DDDDDD ^5>HȠn>Un0tu>5%>*ѣ8p222`aa mbF "HXNsT3.WwxM󗸸8;wNa\HHHLLľ}pUbܸq,\iڵ+͛ӱR\\xMY0`fF3wiTٳg{ Caa0}СHNNFQZZ`|7Lzb _|O>1cK)* 6T3C]+.-, 3gƌW2aڠ"1Ǐ?sss;wϟod>3CAKɇ 1CZ5Ͱaðf |?iӦ1-/ԠҦQU@GU%D]EЀKy}&(\sAJJ  2@RRD"VX@bʔ)tjyRSSQPPs le+++X[[ 3ˇn:~~~ׯBKlEE,Y.]R_|ݻ72e `gg)SD4111:u<8z(.^jiuॢ ɓ'1sLbؾ};EMr!˫ ~4D>ӣJKKcƥKŋ?r;vBB"W^޽{!ɘ(H{)$''#$$f͘1Eqq10n8a.EFF̚5 Dݑr%%%Xn5<<<L6Z* YU>U]CJEbb"v HLÇcŊT*o[*,__sŶmۘ-N8TyDRRNw0zh[yّ#G2C|K09s-[`t ŋ ={'Xp!bbbQMtM3k,;vLtR!)) 2 ^^^8q#묪¤I HD'yzٳ'z 8q"ͭM>"Z1UA>k \tG~OC'On%{/|8wwwA. 㜜a%҂yyy!::p- EZZrKKKٳg*/knnhVL+++ 555U^Cꋬ,QcO.6fqvvVz.]'|2 RTȣɓ'#++ f%/t 555dm6x @׀GECwH"U{~īB'txzznܸDDm%\]]PcǎwqqQ8Vu.eynnnDHIIA߾} /T](=z̜xMSYY ;TWWcʔ)|2~W0Qo#UWWc߾}e ѣGvh7$P~>ߡOˈ.s@F;T DFF999Xj&M0߲ePVV\DEE,99+V@JJ *++qu]~~~B  mЇeQVV& uyx!<Ǐ׫PFz ۷o#..D4qqqxwe',xwѯ_?b`ڴi8~8{TWW#//O;bBdٰ3lmmqݻ:th󁋦7իWc{/>Q'm۶ RTxʕ+>|8^zaL/^DPP,,,зo_bϞ=<7oիQRR5- aG}aÆ ƈ#`mm OOOڵKBUckk+ЁMn^DDDl)66&ƈᅈ="""bx!""""""""""""""""""""""ja͛""""jQBDDDDD /DDDDDD /DDDDDBDDDDDBDDDDDBBCClmggk9*\95%>*r """iۿ?0i$DDDw؁@ )) &ML&ce=/۷ݺuB믿7x㞭Wւˠam,N ^{5,]!J_a-*^1=,!ǪqIh4ߕeoI*++O#6lL~ Νk׾x" 0/Jir3mz?n¬Y0sL@^|k׎"GUUUm۶-h8 :‡[^˲l!So_|)))|ѣGo;vċ/7nt: [f  ^zYnG0߷o틶mmM IDATbС|2v؁zQQQHIIAvvp L>:uB0}tԈ:/ke"3;wFv0~}[egg֭[x饗кuko߾x I. l]1z聘c޼y7n_D\\:uٳgCV78g/5~o3lyfH$?PYYW.u֬\jNgΜ믿'/ڵkY)6Žƒ+[ ?yݸݻw/N:!C`Μ9̝;9] .`ڴim۶A*"== o Kצ)))i JŋcŊVl28pӦMoya͚5 dE3Ps Dll,Rp}z*\9>&B#v< iܹ9r$Ξ= ~gܼyr?͚5K8X .DDD L,YDX6uT9s@_zwڅ#881ckQeKDD~iΜ98v]} v R7|]vŰaÐ)j$tY{9ѯm3<7\3ptlWJKKeXVZ EEE8|0z-( (J̜9[n Kצ2e v%ϙ3ӧOGllc塬 2 Pb%c^mHLL<5jƌyƈzkSǬg\lc<8&N!!!Ϧ@TbӦMXj׿"11G~g)Jg\TpaY@@P| t:Չ:/[ۇ>999Vuޢcǎ裏+fΜ'"55~󩩩탎Xu^)((`@.]WRbbbe111())N KMӦ9|0N:'~[?#d20uT,YoSNErr2, H /̺tJbËL!@lX ^G@mÆ ðaàVbʔ)xLjIu*STT`Ν6Rh߼y?<֮]'x8{,i۶m1ydL8UUUhժ6=ڵkN]+Z\ѐH$BRR###e30pKmzt +W!Dnڴ >>>9r$***^ih߾=6F.سgZ-K.ExxW@5] _lk83"v417 2QTؿ?4 d2ڴi# Nׯ=F\\BCC{nZvC;#T*۷Oekkkh___a-:^t ˗/Gvv6ꐛu!>>^.x ޾jhj^PL0gn֧T*1`,Z555qV\iuз޿~f߾}X``ؽ{0m޼j*L:JQQQظqЛm6[ BMdܹE׮]q}ؼys&G='4v/[Lp:uD4NbٲeGll,6o, T*xW0p@t|c>… 1h 9=e~x'E?Z۶mEa>|8ƌ] .`шƠAM6 aըvܹ3ڶm+L#Fs> 8cǎELL cǎENh_rMoF\k׮xt3gŋmNHH,>r$J N[/c#Ѿб,Bcԭ҃Pbk;GÈns%$9aa!"(:ſ,U[P@_F} ewDwOiz=rssj׬mU|Wg%˯P@tø@-:zy!EEEbn™l(p0WχfreKP[n}5%)D|dJ,8Іxjcǎ^{3bQzzzkW/o23]|\ڑ W]^]ڝQ:7+^ȳn]-F(˹ (:I#$.LDN}"""CaZ.-b,-ގ´\V21=ir|F+0 b@ObV:= 6xᅈSbI"}QV:XdxeUM6""rJHY @ωyT*|Qc?gSѻW2jHRz)'{^U%8}U%D, [6 6m@@@ו=/DDD_v=.SR_׋x!YxxwfK* {^Y2't:u^fSJWO\Ud:E %YY[V+hܑ]lU2Q37`29e\7d8u=3Nᅨi}5  Jmnw-Gg_{yVDD$gn j޷KUq9re‘֞!jb08%7Tٹ%L#EXD$ TOMD^e/~׊ܖPq03A/"b!j¶cB߈޿瑔K)DDD-Ж?} @:njpiODg{.P^Z9 IDDDGqI YϣJt9 "{d""{1'uk%dO^̸ /X]foֱHe>l U*yS|y"6$l/?~[ W[olI[:OսvRqI Եžz: 0ztr|]k+ ˫k0Whez!Kx6~~~ҹ#Eמ8DBڇ8Х}N/*Dх  Obg1o!m/XkD[ 3b0q0ylWyغ-VxZ2˟=UzKSa,^~􅿿2H$x2?He߱?2?***ņXX ~W .ohADީlR‹m5oȸ?yMX+jkոt9:ՀwrlWn#˛^[{A^H5r흷 \[  #H2_Ϧ;R[`8v$Z|}9[4drk/0<q}oߢRˡ͋A%AнwWx1V[j.l nċ )ΆO6l\xuL1mnKc-8x1ѥs'/fPP@Mm-;ݧE^=\ȫtK~_JiDeK7 jmVxt`c3cuZm j~~tNgĠfJ=Yzl=9,fYo`0#m*vOFN5 4涿He[8zD: I@ +C$aޥ/4Կ>y'E`~_vw^WR<Fn}Uu^ZLXi9Kk:.vƬ{W×Mjl֜;3nĀzi -["X"_iZrWT/7VbGD^+#2DmU_׎(x\NW]M]åb0j縞wߙ"@X@xXrrs.`U }ڒ ^Whu@Ә!yYo+'BEmnuܩ#BBm  /F@"0: E(-ml}_(F'򉼌}oT t-2Y3Cף6v$wATTILYԴtloZWT~byE+*`066msi ϓuˡGc ^ ϜD2k$ >Yv t(+ ,,ވɃԿiIx>t"/ .i'紓c99VqQ",ŖM_yz ^̈́L&CBᰱJ/.gܹ V;|>l0_c g}Nj:N=o1r!"ncԈ#GUP+X/2/_D"!yHgnJڏBWV)>GDiQ[y ps޼m6 `ch+Lyt'9Jg5vgNR$O퇨1h"/U[[- ЯDMu0_SU.l˯P@tø@-:z=ln7FοH[Jqn)i}_(|{\&|s{ YDD$RHP.nOǥlTT1'N{ˀ}_^*"""'atkE+ #oGt!yqpI;yt(:y /DDDP@D⸞(ſpZ)TPWB_ 9#>]## M^)n %D-"0{?* P;BDDDDDF.W@[y z/ ^]z5ؽmL@DDDDDb‹Eo%4^xüDDDDD$ljcu> @ afS`zq{ӾDDDDDto0-ZU(2J2W7˞{ Ԥ1N2Em `.Pg,L Jga/luRa 5 Qg+0z^LO p\jE^Sxa!""""j١VrC13 0z9Fa 67""""{6Ac /[LA‹X_c`\F~^""""{+Xk44@rG‹@zc1y1 h8P<04}|З {^,Vx1gJOyA""""{6X>4_c_k b[|""""{'YnЙ.:&4X$6 ѽ^`LV&a9bIDDDDD-/w~wwDzgn cx!""""‹un});AC$""""^\َ3.IENDB`usr/share/help-langpack/zh_CN/rhythmbox/figures/rb-notification-window.png0000644000373100047300000001245412317327147030673 0ustar langpacklangpack00000000000000PNG  IHDRkbKGD pHYs  tIME +~&0dtEXtCommentCreated with GIMPWIDATxyx\u5I'wh˭eZZiZ**ܲ}.;ŋBE^"M[*4m5{2If910LΤiҤ'3g 3""2Y pyODDFhX8Hdḡ'<ـ?ӓ ݁@{g;8\qak*j߉@^O?|hӁK%;Va ʋvv53 @Tć!)y=A%h?PVOoď{߳S?yVlL-\з튛3\DdH+ws5fݝqI'F|˳ 0f"X} G"mO;WD:;JD>m*ߺ:?=_O/Zŋ(,(I%و<Gzm,pRY#{>㤑a$fO!"^i^=: ƙYJIIqD6f;B[gE%nl?3yD P?3ޅ|Y%Ϳ,NY: ywY1}ͯPnrY<>p~ҵxK.?] =({՗p҉'|⍍/e74P\TĂCȿ[߼B"2'.8N:[g#>fLΒŋ5Xکbo%UNKs g*Mޘ1L8p8flI 8Eb`fV4ĘIwCc;DBX&O%Tw3w1X,:|3:nƏ>kK_Y˿W]RDL=m?>!_2*Vīέwcli)wjAt\Dhjl7gO3g`SYZ[x7m|vŹں:I. ӉiY٘I[[;YYY݇:Oj/`8 0 8`1؂3oj `굘mo\qq>(\^]M\sn^}G[ʩokFS!"&> ˲#aN{W_{x̞u,+W7e|XjO^7x())!;;C[[6N=$|>.c"]ѓS E++ax1C$Xec@}8EEE^6< 0ª +kciގu-|u7ګ6y$&O#BtuvLCC#{*d,Y|:]ncOm9g-}ƌOonsy&4qTUUE PCCrym3{,<2aA;Qò0, mf ,l I}?@ gs=jjj_*<*/8PŚ+.co>9Kw!4v~7lgw`ѧI'³;޽?`?N0Pfrrr&++ K}}=Ngijj,vecTÙApD+2[!R V+FщEӋ0bnẞ7Zs9'M.W--~ 9r+˶ ?9￟>͙=G[|FʶچY> a '',:;;q:\cq:F8f^i8aYp%9a8{B`5 ecZ! GfUIV>׮:TUn~^O;|_?l9[eֱٶҒk>mBCDFVo_b̙lf{1jkj;Ec'cYaP_S&7/\p@cٹs'tttp8xӧ f"2*&vOFkO,od_f㆟a& AaAKX3>y' dV_z9ӦN뗮Kbo%W_iJ iS yhjlb ,[i]Þo@ ڵr64=p88x ib&HGUU&L@ ĉo  §c9!nk7w.CS&ر fLGѻ l%=*wx9k9?{'v:\w%%g}4Dȭ4Ǝ-'pw ;wmǸ H0. 4, E8fܸq=^VƍOW* \~'j/M4(2(R›1{5茶*KKKlOpP[[GCc#Eg~}n]@.0rEd K'[iċ?$2 .E~vp)4Ddؽ"7>KTNQhjp4v*"ŕJ+TUv{|g0K}6*!{7_bjIB({"GFV^UW]Ecc#Px 'JWvF>Jbբ*C$*77s=믿"-Zڵk,PHOPhi2ݞCP!b欳;dX[2pTP@gG !+ȡgժUL<[pB|A/_а']_DFNBiFb?H,hD$]vc~̙CYYO>$UUU9 HRM۠'VjkkG_d,]p8C=Ě5k2pNErH=_'"=Slڴe˖~z|>;wW_7vBcoɮ?mU"K/Ĕ)SX~=owyG;HqdV*vtFAɳ>gŋ)++ɐ4C=;]aPIU$p[\߲φJ?-@RU KuCDC3<;aɴvҡ)l:<%"" QhBCDD""BCDD""T7SRӧ{SQ+"2kŇ}~;hb0W{BH͉l=PDQxjٔzj^xGvDёO"106K6mCb"v~zqƱvZƏ… ٱcMFqqqϰb Nsαը&6vĆ=qyɖKW}iSRᡳc9serJvoce{^qZo^b h':x*YBsSTu(4('Nd͚5\6ƌv &سgu%;PmH!Y$[O wݾ92>֭[Ǯ]B|G<wq=Q^^΍7HkkkO7oWW=C0P(aq̀JdgMB㈑ϲe||ɸni***hoox-.. K,IۘHV- dNv*%Uɶ+2vT`eY\aٸ_^1G!]]MoHd}& :#(g`;hBU#;8ӤHevg2^(4DDD!"" QhBCDD""" QhBCDD""BCDD""2̡gƵhmCUi ^h +M~Ǯ]#98\I¢;0ED$z-vڊÕtJ9u@P fk 59A"rk/bQk;CG[%@'pPhT&CRX`Wf#*OG 9C#*0O""GKhWèd Ӽ"")4\x1IENDB`usr/share/help-langpack/zh_CN/rhythmbox/figures/rb-toolbar-repeat.png0000644000373100047300000000670112317327147027616 0ustar langpacklangpack00000000000000PNG  IHDR/ObKGD pHYs  tIME )@dtEXtCommentCreated with GIMPW )IDATx{TǿXct4E`M|=h"DEAQn=6ԓG5hX5& ѤAZ1?pG B\vf~Ιspvpg{,aCEg]Mx@ }D@ _nSayDq}ٺjyUFdt&y A_ˣp:9pS`2dliGK}'&$Gx>EEEx6?X:'-7+861'zj[Luv<'A WD*$%YEm=ܭnz\0݆ů.BxX {wP85XpC7V,;rsEDDD̙Ç#!!AAAHIIˑ>a;}ǎڦ3v<)0xHX,(:{QX[ cM\0_Y!6 SLAnn.J%(lƩS0o+WZFAA]ljHeAQ~v^o5iI 퉟?8u7G d2;j|uk6K_h@m qଷreƌXt)\b!((K?ԑ)gΜbALL 8`YAAAl RRlVctH0 +4ʖ@fUzQ6oUH..e&7mFB%3ijk֌x:1BC҈|p (Jn~ahZܻwx'a6d̞=eee޽;ý+:  U>3yPleRiw^=eؘ Z RZR7Idd>~9_!jr[o1~RFynբ3] P}M4-%xFDD@&ajݻ{F~~>f3֭[(( \.!+ÆA M3C<q^ h$ax}ijyh4l],o)~R%%ظif%%GII),*67ċi傋9Zj$cȲ,J% r9]EaРA(**jbQˡYFTT"eŗ뫠xكފz=ff:U+8 ,, k־t!Ƌ^_bkqx֏ܺU)L6ի!iZj8uF˗/#)) & 6M=N^]PtBĘOzgΙ(( i)T*^_[6RߧA,hKS x1#BCaxxKǍ8a$n_ѣG0fِCip۷oɓh4ʕ] PfꓖxR75HX .?d8N0mf=_`挙9cnf&V  ˲9'xX.yM7_xAԯ0mK5{.222'&! Dȃ@ HS k?aIENDB`usr/share/help-langpack/zh_CN/rhythmbox/figures/rb-toolbar.png0000644000373100047300000001476212317327147026346 0ustar langpacklangpack00000000000000PNG  IHDRM6IbKGD pHYs  tIME 5;t-tEXtCommentCreated with GIMPWZIDATxytSUo^%)-])--z"UP"(.0RZbEt80Ƞ P. .EhiJl?Bi%MҔ~?-yoɆ l*(3ulʰpgSxɅP[dbaQKvDř,""""GTib,-""""zh@X)A R ;vN8V`4 rcm#=Y DDDDDY)޽ F!``p ra ArkY(DDDDԱD=IIqm FOCP@&WV]-3cVo#:\r{8Oq"ܩs>{Hn[BEކ|a옻 o<{;=v|ې o3{Zi… ?=z@pp0W.l_#77VB?g=h"""8z KtmL]U"))'cG|V5(9Q)7: |{ lAɑo Gǚ7aݫY(  [צ ̌8h1aaaKҪ}YMr4^ m>۵Cn9 ''aCS0CXy2kرs7 edc, b'|+""şo/nlo;?N'Lexؾc'ˇVQRRdz55h4:TRR"""N3߇Gx i&@o_fCt¹N*_%YEx466LE!b$!:4H`o#Pnt|J)~Sl_׊?ťWOբ"#1llݲ [W)/cTڈ6 'jHHH^`B@pp0Ѐ`T*T*qu](--Qi+Q+(-= 8yk"$&ܷo m8>m%'Kpihep{#l_:Z(F[G-Ʊ"wf(5Rng."j(rMō))ېQ^^kVdm_s˶O˗/#$$_=4 233ӧԩS֭"##]FJJ/DD LDDD^pB%*/!?44ԡܫpu׵̙+m*g\8ٕ+ aNpkg/ 9kA@Xs΍SPWs:C $ F>g>J%TJ( F#r7<;CR!,, +s:DKҫrxpxhBK&…  T*6mڄ~aƊ+PXXz2ti6:u ADDDo8aH& ͹*tM1{Q+)A-Ƽz4 `0@+499{qMMMPhhhE薘R9DDD$ɰ}Gxe w ~,s`E00D+.]CO@^>@Xcd2(JY!DXyza&xUh4nkd*ld{ +8M?omD]]} Үz;{5yRvC^gmo,f^~`aA=&jCgϞ0 Xd ֮]5k@vv6z=d2.91P=č &q \.Gxx'优e0U^Y5YDDFFZ% !-X,Y^^7'fsa;"[F  ]";Ã;uO t$#oCe(h#c#F o鞌ƒݡ1a؀Eucm۶Az?{Att4BCC[ ]%AQd-ﵲ]Q˝Sb0&iiϜ=˳,+ :V[k07=í31t0~SgbĉѣWI1߹tPYY NH]"""a BPD8d2!442A\.`gCT"88>V2+daPow}K45ƒ%'uCYnm];#wܟ!P{\¬69^XK;c2a2}cTƍG"66:uÀh  h48|0.8D~1T*ŋt_=23k[<5[Lt:$Pu0o1/d(>\}#PP.cױuGӧ.^A`4B !,H%"""?6XtUW_xݕ Ѡ&×"go9J%7|̌8 2sxtKLJ%"""?A" "8 N2<#}ue4e/Dd Oƨ#P]] &Q%$+@DDDK\W=@DDt[@hзcD$t.q0 bx,r)y ""q2I AA WQG׮.".n1 gAQ  hljb ,""""xbxh|UXj5'E9faWݯwWq^wnOq}8$wBDDDD/@@7ԁ9FYDDDDqY2DDDDDX^c5Q     1ɈOv7KDDDDDmONޝe1ɸ.kke""""^={% 9 EuY{/""""")Q9)>3%KNs=q,yy[>Xf<b=:/wgC5ࢺL|x़H\RR֏.)9yYx⥗W\ScnΜ='3/8V{|^I=dbg=6ۺGYGϝ 04_gjrԃ+"" -+/]_?;X(yll ֽ6yhm8kkd>O=1˳Wݟ[2)×Ɛ6z!\eB/ͷ~OЗڏ0˷}{k̽֍lI|j?>o2 Sܢyڟ 4)ߦ$uFv{Zj([Ӌ^"""r^Y~;iwY]]6wG=mJVk_-^9/Wz=n:x!uXu5e+l%pcp8iY3g`-^3)bn/ļ9HNJFsj> R=Kt0?"P6]xR&Rv^ _ϓ#""`Of>AAn-m2bn'%:\>mL9-{ DDDD#yu\!Lb """"""""""b """"""""""b """"""""""b """""b """""8S IENDB`usr/share/help-langpack/zh_CN/rhythmbox/figures/rb-iradio-main.png0000644000373100047300000020164312317327150027063 0ustar langpacklangpack00000000000000PNG  IHDR)%NbKGD pHYs  tIME ,7G IDATxw|SUOVtӽKCEP# "qd8~ *[ =(tBJ{4!I6i6ʫ͹'sos+C@DDDDD7"&̓hH6*2rm@4LPW : 8 . 8 4n@C, 0t:G nn*<W\P@ol7m}/*Mg\Yts-eAFp|Lٴ\*MIt9ธxaP*6P8\A|)N'g6tqӗUZ/~z_z)8 3%0ـ,"4e bO$HFdr@DDDDtcKݲC}Jn\6>:N$e֛$8OMç$S / 2Lg3K/٧v2I IIJ`?p}A&s#"""ROWy׊8z.j<0 0* ڞК2w6 CQQ?S/ Z" $!*#B[(ĉHI;`^ZDDDDtCjA{z~eB`[a 4*QQZZd\r}QRB.Ӊ0@`hC? Qa a=nhXŎ|Y[%~W&3[w  dž РAh4sJ%T*r9QZIGii)/^,5j}0)@R>^{ӆ6H-c_;vϔIADZe#9nfm'"O*yM}eA͖-Ԣ >m\;iU@>@dsܥ oNCf 0D+⟳yW FZ)xrP`Ga~?캄.8WXW\iYV݄~߈li RCƶC<{k<"RX/LF/{zDaU+p(_j9Ed'mWapdž9 CH)3Iޯn B5 QrUZg1>rqE !v(HLLDdd$A ???@$9s @ADDBAcY-#o7̆:%ضsrïe =xND+0xW$ غs RL͜>cLv Gq9HZ[c.UZuph~}Y I@JJt6^:}xgTO8v!I=ޯ3m흢F% [vPZ{ /HǦd/lDTQ `Զ9}6e8аGm۶!==@AA? DT;~cq1h"U1~]JpTϿ.* )~F_VwfU@_< _~`wT*]|%oc))%z|>v >{AcUlݱʼn?D]ك$yxϠôGq[tlͯ+9AÄ>biڇ;@z}_\`!9*288ccy.]E.}a0 M|QѣG\z%%%)1 ".d!}7=B M8hZC ,p9㠍n_sP5/޼KDIq( wgnxa@r > F(_<6~ D>GjJ o9/XhbF3+(6XD^xE7;[U|`oͯ-s6:g0|A".*..N Xf532Ө$IY&ڵrssnGDTq,C0d@/0yRo(5(}C 20Ty;oZlrMErVcތү';W!Sy;#G 7mL&(萝CD1Q{g@TYWK@f ߗ o6IgfC,-O0w6",&{Si>P#o3Cg}m1-[;S@3 OHNNAXL$QBڷ 'B@@$,_ XȔ^ڷ d2~$ +fq{pDCІOG&AnfR_HžIҪ!&Of|y~KCnX/4}c4%QnҝIxvDK9 !QPGopK~K I5W&۟-U8*ЏY=bRHqq1 $(QC6DFB*|g*.X&Ft{99kr`Qy0tk&b܃w8PV}Btiё6s0kY<.Ǎ0KKuK3==gS2l><8{r_*^:ZWV8}> 7 MtC ?[@.s\  v 8y$燂r___A`0/_&B #"gfO>Fi9?Q0Uސy@ ߸}wBW[_KH~?VKEiy`OMgLm,Ө#[%ڑuc;`&;6o@=K !WiӚ&E?Ÿ߅.<$Aw | v?Ӵ[SXgXR@\Ml{x57DTU%_ 2Fy嘯ka P7J H#" 6-$Ao\ 3 zbצֳԬ渔u!qW? w:ϰdF yJ]FiAS +/` yDD#(:ĤK%hb+ ("z*x5RuKOoB'Vo3z.&_ `7лtFA Oם‡s6As^\ڸPFA݀;!qqӗU^RZrʯ2.DD>i>a(""LI2ַh({ +37U~.qXQB}q1@^ܬ x$"""""]SfZäNNwi%""""":ynDDDDD<'hnv2s """""rw!U1n. nd~uQ\YnYPfWѺ\VW]{RmK{S]"""@Ù8#,QJJ=_y2>z8>=ȥN}}5(/+|?,Q4U);lZ:G]*z$珥,1T&ٯFwΜL=il~nbQ^Ty3y=$ n.4mohNt莒$;Z1o-VWLeVrIӸ\ϔ޶g[~1}VnoֲkOG*mY|qhZ|`^t{!?#ղ\^ڦ]x\Ƕ]D̛9vދ9G.Gг{7ՙ iTnw[mO9rwDDDTԹׁngϩgp ~uArk>Ů={dnsxLrYf9 G͏~t{Y+*m[ۦ^YcXKMMöqkY6Wוxמz(`KtmCIJ_]OEre˳}25QsrTgc|8 2SV&VWZ{@Tӕ%0.tӒexYe$ +WEn]N9k>-9]zͶʕט![nݹۙrvHLm[Ǣm:oob0y#t?-7CޮEy-Ѿn.]^>⫘0?xkƫ Žw=Ǻm5l㹬Nl mRaYnٱii["""@S:ayp{m@޽`]Qw`(,*FrJ ѹSGsSmn7X ieXt2RΚr8d)gaQ6Ջe,TI۸ĪMil۶r]۲rwx|R<^h.óO?iU.wvmck;{d̶g$|`2dn݇#*8Le< WTemKDDDh8{ǾwX>{eې _ }{Ěg]iʞ!#3w!4me-#9r$sW :Vwjm2vWYU[nEGiu¸Og?ޭ 6m׮?J玲ZɉN-׳?ʚ (Ѷ-jldEh BDDD䁁+_ȸkjdgB ~-=~,>=ɩؼaS \Q_G#:hY>Gէe9mɶ,ZS^^^VQVgIzrf{e !OKЭ[|Rs|}}^V{m`mD}`ܶ!lDDFT܇M6HSY=V:|Lz,yh/ը(;vKlc"48))Kj:~6g;ye3{aaVW]e7+_fHxיu܍{S [mʥq{Yv8%mY4J@Xoh;#A&)m{k'e=Wᔔ9fC W/T@T|3D7ågzjg]߃dػsA.hT6T˿tnY>z-zR( r\Je~;#m: }BDx8Z@vmʥqwY*.kreZ1Ȼ? {fXJki;UV6G&KDDDhKbN|6ǥӀ$!ar.%FTNLi;cg_K5(`۰􇯫嶚+a`[MgmUX^|[ Of/඲ZeTYۚڴ꫌ݲx{'ìfYo[&a>-l[{i˖+kn]nկdgFNxbңn݇+,Wsr^[V:fS 7tF: Az,Dc`X [Yy|ZiEGǢUq>l&KDDDhHNZHK:0{:Zv+/=/ [8m:_ro DdB{Lq$""bADDDDD@Ç?(F?#33 Y[S0g!E}zu"DDD 4&??o;ˣ xg(PZZB\pFS:7V[$w///\| kD4Bii) """U.& ??`0PRCTT$ >.:E -NϽniՂ{SRvڸk˵kCNgKO)O 0  k`̕+Wq5?؁]{4}tsydD7A^^?ÇqX6yؾ};vލ7oZ[ C$d2QQQEiVk}hz >r˿^BAcQj 6\SRR//>j7pk3󯿰n&O(> Qw aáP 9;wAhf̜KN'=1-۰וxѠAr?ӧZh////n2{v:ׇL$e˖1w\D7eADDSoLPgY5hqxsӞRL&o7)ȨmӞ}sͩVn8{l{:iyml܈mw#o 6L-\ Jۆ@vރ3vNmעz3hg())ѣ1k,x{{C&A#++ [n#BѪe S>)p "r`qil.u^|M9=u:stf6MA[3[0 IDATq*J;qңXp1n6F3R:֮<wZKxs, 2y~ N ?>}t O?4 4 @^aZ&BPZG``<~O{*U)A˾ƘࢶEnG2Ȩ+GRaTX0em gc4a$k__t4Nhs'X59 6ym@3_/Z0'-BQQ|vԽkWHb2<.ȨꐩcǢ}urXQ05рqcB~}QXXԴ4dg#(fOD@?шH8Yīge_m[|<93 ϞZI\uJ.7vd2JeNeq:kRtL{9*Fu^s0`zn\koˀtP۠L98y Pn;قSvbղ I&?=!/ oh_,^Ç:u`+.`2tŅ8sLn$]L6_mUzdzO 2!S2տL8 ,FAhh(ϟoER(B!Jq`|ZFBBڶm~q@AaለNR1ss s>4V\ gOYXPT˯}AFFf:ʺz?_W^~? 'OR^A [У{,֙( (J{BR2 }{b5YڼIˉZ;thW㽏g/>+VoO2LCÇ#++ yyy 4dcǎ?>ЩS',YuvW!ZA` 4-BCào9""@k~Cу:uFqq bbB˭_}ڬdls+^yU:c앗_{cGefNc9\ٹè*ra޵4%%X&;oi?.ޟߘqa9Sg X ѧg,}F]ϧt)n  cm懥?g"66Ji)DQt8dٳuZQ ATv  TbY"0  !S8yF/58V$'.;4>m |w#SyC#!6apL@=G6App m4d2\Gx̟ՎY9Roi)ז{6d{E _ymE cЀc#22 @T :%%%򂷷7C5jHNNF=T(M(aM}4L ̯DD1d"UCَFדeefJ%|}h6/O?^\?ji֭Zil9Tv*BpƯ?-VQB!L>~ޝeװ?v]LN{Ϯ`Ƅw ]u7`KrH0TgͺMX"@VI&رcMYf2e :uIVW2e `̙<7y瓑s:7z}4RSk}j|9_/Zwg:a/xiYʂGs-lDEFX8n9ptT"((dX p枠gdzk׮!1qi$&Ek5dXW(B _Eu{͝7ܙ gڼ5k#G Ǣ {lfo t#>{ݭ;;r<366[nE߾}q1kDIIy3gb#ahu3GC74}5Dd=|Z{]U:,khټ)Zl^A+m^2`Q(..l=ct_J;mC`@ ջS|\,&?ULs`>6Ƕ~4o  _'|yaܸq9s& yYbb"㐩=A@h5: FCf` 2UDN.k'ވAo鷻kP*Uw_# *&oʹZnili+Ae@PWN{_,֥;|^}}w֗e`]i"pL{y'bT0+J=y.::lv ]-[}Xbr9 eAє2\gJKKg(PX@fpҶ2|`@~* ""O 4T*?IFBF-NFXcWZRl7)بKΝ7JAFmƬ7_uiw^alF(*,/㓭?{`~HwǤ'È#иqcs<+x ]r)))ͅ^G``  Ȯ>2sݛO0s TV x.X#F``A TaU$(6y:Sa 7sV1x`_8q!!!5Er>>>ѣG=f"|f (dMEH/DQ #,, kR Ab`>xru>ddmb' Jeg0_lypNSp!J"{y|aÞ b> 4 <4AF=Ү]线DA30_ΟWtI57''cu[ Y9eF?AwLq$""Sq 1x033!\p < q Y!QO"""y} z:Vy1& 4Ν:Ě"""""5n͍׆%"""""DDDDD@h1 """""DDDDD@1 """""DDDDDD 4~#njGpx,cEuFpx,B"␒jN?p5RߔMZb؈yɲ)?GDDDD1ƸƘ|ewރL@n]sT$Ivۏ<DDDDDIqyU;9K w1/t:֬]>ز䗟U*?gUm۲z~#~i `1i#53F8~ + RzWsg4|qۭCWc˖zV;FM&܏^}ݜr8oWgIϾ4{.tbwؼeݡEo0"cUN3S+-ѱC{ T4gϞÄBaQ ѼU{}ص{o<ھ} ETlc < eYGk> JJJx$`RRS6"6&͚5Grr24UJj~PVeqwUkO>V۶!Pi^.$a!cO`CWZ 8y4QO'b ,އHHh#p” @.]M[R)R])r._Ʀb_۱n thp1}σ(ͯMx>>NmG6b4Ο`S8qm؈˗ۛG$ @$#q3*|R=2rrrp%*'44 4?IUԠԠ`M(,,n1lr.GE;8~x?ƌ0{|sSSpqLe8no9IgOo/_ʥ|."##s?Y`^6zu-AjR"ڇ3'_~`<۳oidL8Μ<>,.:=|8dwN8G!g_,IDDDt % ~(;r9J%JJtP(7ߠ$4RR)1jsG~ (..71d j?# "" vxTx)'"4ԵbAAv `5jZm.tDx8shxJјC+`0 7_,Md.LHj 0 ~~ׇDd_IDDDt0u z=`1I*,p@W\PizJT~UUu ځ_}c8: ʆf]ɻbb$I]<Q1#wu77޲Jygi֮iz~;YO˻U\V`^v=Mh0H"""RZF~~H/  y,B.w)Z 46FAvݻV"{aJKy_ ''7:* |hZ7g_ @T*bjy*+_qq1V^ N9-nj8_zu\Eff^>Ӝ涡CxD@Bt, 3v/]??C0q$8,а7?N#L{fyѴE[Iu%""EoA30;0ᾇKR=SM<{]sz} KZCaf@6'&h$"""DGC`Ϟ]8p_\6A_ A08,hܸrUqKVeu+xThѼv1.[3S>[ dG3N3·_-tX%?}֭ZB3-;͆`x)hڴ ^^Ph٢9^z9ws_hڨz|(tj֩_m-{(ӳہ; 7+N+19%yyhӦ5r9$I’b3F[96"""") ܑ2Ӓcv8 @>S+رǠj9!ܻeyIZww5JOƍaEڥtthִ |bvldy=ѼYS,;Q=$g """""bADDDDD 4h """""bADDDDD@hэzwɑ~) vmCvfA) GK$DDDDDt3/gcǖz86lB8{(7kt>Gm %,6n`Q=SSm° r(A%Qy]Lf6rvmۄBQ=S3zYd3IDDI,GDt2Rsr9ZTA,*R)!rY Ag*Lt:SRPTXooBV[C.A&""""%z+x(K# Ut! %:Rwa$ɜ^>0 < """"ڰfon@#_mTN EaQ!RDI\A_z==JJ/8Q=r1?/rroJKLܼ R JŖ"""""Z\ Mέk% j//4hРܜ G֬\9DDDDD7za^QB g8V{!L x&CD}}lˈ`K^}n ^аHd]Dt\JKdጌ Ņlm""""zZ7{6^!X\e:Aذz:t ooQ=SpGFgA{:\ΨVvBt~jl%"""")Ѐ$!6BQPP趍R(j4$p""""/(à"""""bADDDDD 4 """""bADDDDD 4h """""bADDDDD36Yʚ0Gg%8A7`г"j *TJVQMp-z"VT*%R/` AX)T!\pt Bj:|+i)}F8Q !+X)T!Qp)% ;///DƳRj: ovDYcêkC""*dpeg#<2A.K@vF:+ƍ cE@*Q(CDD@gV iv_.w%"O 2FtOgADDT g:zvq93ao{Y:reSӰlr+/= ?~Aի@rfÎm:PvFTض <,Y>-ƛbׇ̘1 إ'^ƌo͆"Yt)~(8_-c՗@Q#j -nð >cOXagzd6 j e QGaEyBaoNkefM **+W)+VA߾!Q[ڶwE,ѭ+:b~}&,Ν^o@d|whִ |}}<ݻ:g3iѶuv܊P s5 """PVjYNo ݷQ\wޜSFtt45R|Bs7֯]atFɹ@Mc2ӺcƌœO>>>lj'7!++>>ٽ;~+z7ߖ"0n8|S S)X4ڶm+>~("""O4*vFuB`#ハ|3ބRD]ѺUKvFl'hY\l %G~a+ܾ5C֭ж-Uݻw/M!w! }c"""@nNΡm'dHhܔ&M=_@c#ϳ:k6  T J$JAHCH9)FO'H)O!z IH#2fS7!h4㱏d[OPꇓnnnӢE f̘A^^!jŨ~B1bN8ANNfG~~>7ndʙ3gxGڵ+ׯ_d2ɻ-_OkiiҮ_mBI!}Tƍqttp:;;;rrr8xmۖYf1`$lQ؈Q|s\)B!|ߛQ^(e6a6Cvv6gʔ)̘1\F%D e4 Os/k:#kAJRUAk.W^+B:x /w~-ua.*zN:zW-yCpM<==h֎gyusSjvAd2b6dQ#GZ\1c2۩(;;}~dddE/拖\.pXы2% W-&>`h\EBXe HHLRCƃax_ՒuLP~w6bA_O_=}'bx_5H:|<:1Gqrݦٙw̤^P9Dq.*~N|{FG>[oJ]#_mݮ 97qAvըQFbk-K\t9 zpӠxLiEE]w_ 4!ȹ)DM33fG0vD>}^"Xʶhaz58 Q}O\\.Ēv]b:\\QTE/ӡ#t^j:ȁ jeظEɳw5GsS?]0ՀxFa=FL ֶŰ5˲&Te}u\\I{g+ti߸ A^^5*1}||* U,B%IJNƧOCRRhֆ{]TLK]۰-_mɧU'ƝWޗsS|M wK1k /Ti2L L&Ra eUweFYϠ/JwS JB_ۀACakkWxW8ϧ>z/Ƒ[U/_VE tޕ>+s5bTqшF#wQsNH߿.xדr_wB3FS~ ,@kFy"ZUZH)j~6OU.Є,|}I~ܳ/+2}2uO%)::j?YNy}ǎ>zLFp^EIEQ߇1oBc4ΏN$]W2L<-uPL&ɝipa4x֬^Ş{omV:no2U_QڎTQRQq|p_fggwYS'0Qq?x@=Kwb˛/j{]T9٣,z]zOƍxzxmY4vvrn Qhw7 ȣ-h2ѱʽ /+Dm@QZH(Ǫz*-lUMl^>K_acg/W9`QxRZ(~`=Oo'G[о];hٲBC2sMVYA&5,h + 0\&rsUO4 (eGt$D"r^V[Xz5O, % !f ၢ(8;;D="0~ƣygthZ""";w:Ύ.]p!~zɼyѣۢ< x=bޭ.9x }իѱcG񱱱tܙTN8A.]v8qnݺJll:c֭jUOHNN/^,w[~;9䤎/\||:pTΞ=KǎIMM#G%ޞǏ3qDMرc+\gzjw;/'K,ᩧ*q GB{O#@:uΝ;רmJLLԩS$''3g $oV2Ȋ+ʼݻ7klrrE;w̜9s%55(""",?>dZߟ͛hѢ ŰaØ:u*ϟ ;;Z,qر/3gb6INNfΝz,4PzN !$hQ2x` &88آ*e˖q :uD߾}iٲeӮXwww:t@`` }w+V`4i޼9۷m۶̞my.]ZlɬY*3gzj*\ŋҥ  " mW_X?۷oL0|,X@f ?>LI!DP<РCASՉY r֮]KTTTqO=<F+ңRUc꽅o2`v\tG92|~{!p8 @AhLgGSNw}jӧA6m ҆I+!B!j.ѨjիWܠ`6+|!B!j*(25m4N<ɯJƍd2U:pQQQ̛7x'sUzHORO!BHаqFy2339tϟ'00f^oT*SϟT(B>B!  6w^233[.шVΎ|򰳳 '''TFFVl6[fHɆB!5Wh|=M4!%%)SЦMF˗Wj/S~)ꫴlwww3OaQB![bcc+4jԈ%KoA:upttd2%U:w?+666宫\!B`j899舃.\`ܸqk׎={A ;;L84h̙3׷ qwۧi4hӦ SN%!!߾R-OQҥ zƎo>9r$> ...(BVVr !BhDѠ^L`` =9998p֭[INN&))ɢԐ!C 00''r@,Tލ7\rwysɓ'K^^_AA.]ߟp l? a֬Y,]yfϞ+BvvB!q & Ȍ3}ビTJ 7CQy666hZ<==ҥ 7oM6Ġ( -M64iDVTLLZ U8~ǎlGGG:tӧٴiwk׎gV[laaaӧ~}:H.^HAAIIIt ӧK.%((777,BJy㊋b888f̘ *uFѺuk֭['B!jwЈ`۶mjHˣM6|>|)S`2عs'YYYh4Ut: qo)ѣٹsz]_~!..e[]vFpp0?~ ==-Zy___Z ;w$66^zU+ׯ_g͚5P1EQ"--8Ea3~x$!!^xqٺu+{{ѫW/6m$e5(JW_;QQQVݪBɓ<ԫW[[[ԩjt^8x l1͛j-Z|V?u9r$ .zBRRϟ'&&tyfLU2$T???zE̙3,i*… ٙ{ .?~<,u^777x a/ dquuEQ|||8x +Vx!!!x{{3k,v noh8~88::^HJJ"44Chh(Xj|L8ϻz IDAT+;UJh׮~~~ٳ?NYfMlwW˨ W'j9wK>ğ:hۗp)n޼iqo2h48;;hHIIa޽VWd,cUz9:Nԩsrr/4vvvV{-f3oGUر]H PÕNc|gо}{57ׯʼތ %q^uNʶm:t())) <www7n\k۶mjU0a`]5 Q;'|EѸqclmm[.O?4*?B#FPO<9sżٳׯӸqrWͯ*{B;w'|֜U޽{!>>YfY| 666\|˗/3n8FMjj*/^ի\v3fXkm#Fe֭[ܸq7ob2_mllpss?? LPP=z **r?֭[ǤI;w.vvv 8۷@v/Pzh"NCгgO6n`_h4ҴiS> ǕH }e׮]tMh1C aÆ GyDj_3x`z)>lllHJJ~t'-- Ѩ+zQZnսرs4 }T+UD@@@A祵UtVSگxv)wᵌh,x=/C1c0{l.]ıcǸtSX^ 44hlyr@?O(|8J\\իW) }'@O?ѱcGysDq}ѴiSVZŃ>Xbl˗iܸ1p'SZ`Y-땺ug4h`6(Zҽ{wƎKXX~~~Am, =#//3lذa* EQ8{,m۶Rn2(舋 GGG$dZCzj;w.SN[v`5kҤ _exxxЭ[7^~errrHNNf<վ Q(|U:u*.\`0̪Uxt|W#%%ymA*hʕ+0K/vq5vqWҥKvU6Z[ۛQF1n8GìUK%h!,^RՠMV1>ݻ1 t:sVzVر#ݺue˖ZK.>|k׮#!!!lٲEm}O=zLƍiժo&[YfѶm[tb[1yd~<==YdJN8z=omca^___\]]YjUU{WXAٳ'...4nX$ wZ h? )Dm Fz)lL_zGmGL$*eʅ{ d!hmiQq>Bbbb n q.秱wO@ HB!IB!BԼqrė:N+BG(E!ğ hfN@P@`49.\¥8B!BBUl&yk(@0͜9{( 9v"c'^'%)IERt)B!;Μ-HpJ<5k\"'$Ŷ]K "##GrIN9M B!BHЀۥ;w6Lp5)2NūپkRSSpD֭ kGMTC!B `2hҸ!\ &?{A-OHS_9dgghh4;q jzGN*" Bꑑ!;A!Q:v.ҤqCE5 Ɔw:zdrrr0)Qڷo>,3h  Lp!B!D .NQl6ˉ|xtVd2( z'''zFh4BrJxFYA`R4dMB!bU`4N/Ѭi#.\牧'uDJJ ɤs)Z-dffb23  +B!BʩRS6wZfFZ 99Y|M6mHMMeh(((@mhTX(yEW4ȉR!B!D5RFa;s.ӬIuΆ hժ;v ''Gmjqrrڵk 1M듏,@M_|ڲɾ}PģCĨ ֥Kڵ=Mչe;v,o|ȑ<( YYYGFF'B!j=̬Q |x`e˖|W <0a0'';랼(kCDm,HJJY}nccSf߾}N뱳޳}u l•+>$$Cr-F]bٳgӾ}{x ,BQhj;&geʫӫW/8tlْ۷ʙ3gy&s:4U hQQ8;;>K.33H$220{lpqqחɓ'лwoF# 6aÆ,]T-}XhmڴI"0x`fܸqX,[0 $&&2a0du ӧe(:lƌ 8RiԨ[fݺu"B U8>ɉVZ1tP6mJVV:tWNAA׮]֩uTTu զfѤrE^ʵkט1c:gal߾,.\СCo\|qƩ/#pI̙3-ܹs~$''yfϟ;...L6pu֬Y ]*Jxxx9s'));w2gtL>Di/3x`:Tbl!!!x{{3k,v]v&$$Dhhhqhh(fcccqlܸ V˲srr8x`n?HnݨS۶m#!!}ѻwo>et:ϟ/vr| !AʲsrU899ၛEؽ{7gbcHJN_.jy!OLf;vL}]4O4fz:l6ӼyJO?)) ׯOZZEdvvvjժ\6ر]H (јhp)nkyxxdO??nZ׭[ȑ#-IMMe4hЀƍ3uTҎ+WҦMׯOFv9C h4ҺukZnʕ+-tRwn1ҥKԩSW'OgΜ9akkF"**))) 0&MP^="""sm/o\RRӧOW̝;6m@f׿e6!Ƿn`6qss%%%777rFINN&??SN*;y( [[rGQ冄J7^[Æ?...NSn]C J@QΞ=K۶mK'(vV\\Z qU|||*HmJOOg|'@O?ѱcR[*_ݺu WWWF1JNʕ+deef13<+dee1d^u̙Cbb"/";v ,,<;.ܹ3X{_SNѢE ֮]Ξ=˅ XbEsJQ͛Gpp0<쳼⋬]m/o\qSL!66ӬY3j[qWAl6c2ytp?Ə3faիܸqSNo>._ýпoOZ~_}FKĠ>:g s^}UTEjWhDOߟ^zooo]Ʊcӧތ5qƱf7oNVVǎ#<<oooF#W\)5 ݺu_f͚5ܺu WuUMzBBBjhѢ2jҔҝ|-rll,mڴO?]taĔ(HII~899ĤI9s&sAբh8y$M6S" 85k0o< | ,(uTį"uԡN:xyy1m4 vmu駟sN5kŴmr| !'Ж͹? K[c`AL<?&)֖'If-w@kEҺU nfflwQ}tܹ颣 88WWW:uѣG+V{7n6tL<OOO,YRDGGc0tjRsέk+oիǢEӧ;v[nlٲCo߾ڵbx~+-K4#GGqF{1qҰB\~ш/|lْ=zTmsQ_|[f3})6YG!$$VZIvv6@nJLLl6Ӵi*mr| !\a6o;!-q_Ft3`40瓝NлG8 MkٕƼwy r!!!X|9˗//uz{{{z-zR/^ŋ8ft|VmS0Piʔ)L2bٳ'&L`ذakqYQNIIa|r;wfҤI<ԩS(ǫh&$$߽zW^dz)Μ9cUۣزe 7ndĈE5mڔƍsy[TFF#G>O>hZ~gGQΟ?O֭Kl5 BHШEQԪSF\rrs1GNn.?>Z |F{;FСaaa^1cX5ܹs:u*޲kEQʬKΝ3g˖-#++("""ۿЩS'Txyya4zjm. EFFř3g7o^۹d"""穧"00 [};:t矷nݺ̙3|}}h4tڕm/o\q/f 4 :t(:tp[yh7Aǃī}3{*Ju[(9ݝqw&P k{+lL_z~ƣcN~Bc꽅o2`va A9>]OUsИZ_M&[7`r !C+|re4Cp2jT*BF';C!D# #hРμ;'H!A6MYr!j=\ !B!BHB!B|F#))mۿz=73(xyiy'jXOB!4u7\vtIrR .f#*cُHQ!B Vذq+ 4}Ew23ԩH!՗)(ee<==e'!DHHL!uo?_g<<h}OO;&.:._*{_!B e}torur @}A.nhDGӦ~xy޻/B!_TT?^K]@nn&W[9s*HˈˆCs-\]]](2efB!BW-%|^>}qz7&nrJ;0PWٜKZurss+EQ,f٬Ҧ)Wp!B!D W/%O.`$Ҹ;Nd…+Y*_X*QtҊR 4___lmmt 2{;~[}>rH|A\\\P,###yB!AT'R,fHO"3ǯqyN?=II|'~<Ьy\\\*J42f3==o& 4@Yd:mJJ oooƍG^^:>))nݺン3}!11uGEE1|pP9c HPPP4jԈ֭[n:9CB!js b%5-.r==('\= 凝m W2f(4V_VECFqQxll,/_fȑN;b9y$g̙0**4PǗ[һwJos^شi<([ y&NNN(B^^^,Wj[35 W#4,<<͉@^^'Oۧo^QCFEz IDAT%cݧ-;>Ta(ګTY!EK.jsuB6l`oHJJbΝ̙3gggt:ӧO(Y#$$ooof͚ݻK]oBBIIIVzCCC9|lllؿO>QF[no]bW8%B!a61L9uqY\`48Zd_OZe=9s^j^H|CGiS&unW*4tPf3P%%%P~}uXIKKh4ztڕ@4h@DDDD]~JoL&9KE<䓬\R}rJƌ>wqqQ8;;~/UW)V[K.%((777l7/,ֶApp0 6?.w:N@\\:ի`ccCzz:dĉ\t+WiӦ2K݁ۿWV=V^'Dq#F`˖-dggí[x衇jvB㉎&33^xuѣIMMŋ\zk׮1c 98D>o|nWx_PP@VV7oޤuִ iITT׮]#99VZ1eF`kk[դoOnW۪P)ϠApvvf̘1?N֭/2k֭֬[,X\z=!!!hZ XhQ ÃX֭/uJ=4iFPQeу 6p1ҌjذsP-VW!ARAD#77 l•+WpaaafΝ;ŋiѢGFSnFY!0QVp>}o>z-ڵkGzz:^^^ooh}Yt:ZΝ @zXh}Aӡhٳgj4ˮ]֭:J! † a=?|EkMut:6oo /@hh(ϧk׮Я_?h4_?BHа:dpi=ɓ'ILL$))-Z<ɘL&>chѢM6QF4nC˺/5a''NǗ_~Y)S0eag.s &0l0^{5lll}o {n>C9C]޽;cǎ%,, ??* v/_yVW,%huz=vvora~ѯ_??>Æ #99Y-Eܳg 4Ar>QT` ++ 'M6u4lؐmңG\]]iٲ%}%,, ///GՒKnnn ~˺wEw.B˫Jzz:iiiύ7ϷHTy^RՠM& ğʕ+WXpaf`@LXXZ]Qղn:f͚E۶mҥEv믿/ZʢӇh<<<ՕN:qQyD%-U:( 6668;;ӼysիG6mHNN{dggc00f4 ョ'899IBSR^=i:tPfeYjx=JLgUW|9sŰ hqX|9˗/C|BF[[[pvv͍[n)((h4b4j888ꊛcccVU6B!߿:~ټ+dgg/B!ACKL0@-ݘ3g:uyDFFwIIIa͸qVeQQQ >uҥ lْ3fpqTQFnݚu/B!AC233ٻw/1113k֬^#`sI̙3ޭ[һwr׹gqqqQՋM6ɛtAG xG9wxyy9M[]rGy/ğѣG5j͚5ח͛Op9BH 6G}NTI&`kk˄ u$%%sN̙3:ӧ(Yv $%%Z_e˖?{U?~50ȝa b )_T\U eyYjbwMmZ*b^ZK+[bj "0?\f@Ls>y>gشi^zKÇ1 JkNcsĉrĽer9z(GO? $~p1N>|6oF2rssTyzzrez}[XXcnJDDqqqstti)KKKڵk73f 55? D1dGnn./re0ev튏ϧRi&[nL2Ŭyk.߿G}Ν;3l0.^ȧ~jTT|ƌ<&LPٸqݛ޽{iӦ&ٳae a.@dd$ӧO/ j:uĸqXbKڤh6K.+N:59}ZZKj N@zz2,##,--\JKK덋fdƗbggtٳg;wF{n>sRSS&22dY3gTǏw߱|rf: ظq#;wެykڵ}/O<{?租~ר*UV3gΠRX`?$11DOz߿0VXs=gl!uә8qm/iBH!3 j*SOfɒ%ǚ5kxꩧZ\III7+/ٳ'(OII! @v}O>ř3gشi+ԩ666<M_ŋر#Zsk.j5={b:tI35oW_}N:ѱcGy.]ĪUa?cשS'pvv&22G6k;mڴscBCC[l!._Z3zҬ>"mR{Z6hСCˌ;W_}ˌCӡV0a+Wlr-,, +×-[{ pqqСC/lllرcuh46]Naa!zVKll,o6_ѣ 79oCuСJ6ΥKٯm^f O<?([[PP@.]=z4EEE_"$$Ĭeii)mR{߿?K`0:u*.][6x֜eͻ| %%%u;gnjtf0~s&SIĽSNʝPPff2,++ Fo>.]İaxg̞y駙9s&O&))[*㏍~Se aݻG}t[Kڤh "00-[=ʕ+?>F60VeDEEqu f„ +<djޖ=zVq2^OFFF̢E0 &\*^{cժUddd),,o1IB !-[4+ *22 ʆͶqFz=ۗ>}tRYf ݻwÃ۷5oKtܙ(&LƌÃ>htAfեK8~8sA6Y1tP8wC A裏wۛ#ڻ ^h쁮ÑoNP[?ek6Q }%ZMtodA_cƀ@qY* J_s… =qms㒪&BھxS1CΊv~ L|^VΎ$طǁS@:Pܐ;B!BV'B!B !B!B!B {{?tl!B!='2„B!@CȾ?T$w4B! qqrr BH!:!B!$Nh!B 4D;B!B 䎆B!haciѣGQT51cgz聕NNNL0 eiXn4!BLh;gΜa߾}ʰJ֯_O@@̘1QFҥK۷/SNFB!]"w4a͹a|ppp@AEEɨT*铓Q_oooqvv&,,LWRR´ih48991m4Ktt4O>$:tP0h ٳ' .$))I#ӭ[7zͶmۤ!BH!ZbYF0i$9{,ǎcѢEf͛ɬY,͛2e Oddd… ->cM.ȑ#akk aϞ=@~jSk?ry%|WBrrrˬ{A BZ^H޽; F}{{{?>YYYS@֒;^^^(QF)rss9pQQQؠx;;V ))"߿?yyyݻիW-ڵͥW^.o׮]lذM6 ի4+Wɓ ƌilUUU&˺vG래H;vlۥKz-iB4 11k׮)]u?w.^H^8{l0!$иƱc8}ټyQ zet:Ν;qwwo߾>|y`ȑxyy=+,,ѱ[n%""89::R\\LMM4FҒvٳpUk<4:8|pz~ׯ_orlذ@ 4Jmݽ 55UꛛKpp0...0by Ύ={_3gSvww͸q㌖ciiZɉAw^X`gc}Ҝ@UUK.[[[Z-/B.UF.]pwwW>:u2 ӕa`iiIbbGɡC(**"44p:w LuJKK#-- EGG3|2pzKKKBIر7774tN5kSOFa޽L0J)䐘Hpp0:tKKK%5j/֭Cѐӧ1bDxxxHJJ+lذ/=z(W>0B@@4u~LJEQQܹJE6uܹs`cc/ܹsy7,y,Y,',,7|_|suuFŋ9rR5,\'B///[=M}qvv{BVdd$'O&::$JKKׯeRUUEYYMISǁB>{kV݅@C's}zfv{kee4;rH***Xz5vڵ޽7\֭[2d5'MqwwGRqSo9u${dG- "00[\h -=anQ:X^^N^^QFAyZ?N=Xbׯ_ j57n`ڵFu}0h {1e]V7o舟vvv 0SNyTCiSXYYY&)) LIS6nȐ!C6lTSu-SQ@7'pj#vmz61mZo*ݟEkj11P\VˏX|ӊ/)EwsŽ̞gQE6mV=ذaCo2~8hꗨ>/VJّ$=8p HJ={kV"77^z5{ՋUVAp]w+/-- kkk233y饗4i}˩ѱcG8{,#..|PfB!KrG?kcǎqiyf@S˗&tݻ;wN߾}9|0pnȑ#ˋӧSUUG1n8%hJ^^VVV <vʄ (++3QJI `0̩{]g.GGG;5r|7hԲ]vx{{3c RSS)++#%%gggiSRRԩ򷳳3֭cYfヷ7ffCVH~W^,]TdBQPP)Sڵ+>>>̟?J~Xشixzzҭ[7Z-'w4񓹺̹ѥK7 ʕ \\\}bGȑ#`ՄGΝ8r]vmnwfƍ&`0uV EEE;?ѣGVoͺ3J… ӧxs^W]ɫ;;;u_TpuCΝ}ff&VGDD7nԩSXZZ2e-[P*p͛GMM=h-3gΎ7n˗/'**,XxBɷ=(?st:,YrXf O=h4 @ee%~>''/*:t耳3J3j(^z%NN^`p멮ʕ+$$$ɓ'YfrYUU?j7nvZ[0yd"""(++ѣfV8::b4 NHee%7n0&%%"n w4郯/^^^9sM6{AS^|E%((( ..W^y{{{lll3gqjtһwoxO(Yx1;vD2w\veVٵgϞ:tGB TWW锷3\R9o۶ŋӧO c=[]]jٱyfonT#~~~1`N:mS ]utt f͚7IIIڵk1b#88ٯݸq#C aذacPvSuש,, FífȐ!OMs!?u/ѣ\to}6k)YYYӻwozٳGQ>o2.//y;fjZbccٳ'CU.vBGR~#`09\'4Zڷ/yxxpرF絷'&&zv͆ ̪sC^|E^|Ea7z}X+V4 3g,[Lcj]9|0=htԩԿiW\i?۪``׮] 8PҦoN3ߵ/̤{Jh4߆Bee%o&< ?c_!N ΝcȖ-[̞gʕ̟?Fsϯ[]쬤UVV[o|8_)**n^ݿզ]zǏ3eYlt~!~j8p QQQ\~Wyyy8p*ڷoNBٲeK###jź_WİpBx ڵkȑ#ꫯoƍ,] _V婧bСMJcǎtڕAqQMۜgHlܸyZf̘1iS5k3Ϡw߽+@C6cǎt:WN)W-3dȐzQk~~~ oggoaʘ[Zeeej_~X_uVe۶m-nnn|嗍+@C;m`ʕ+l߾>}3B!$Bƴh˾[FC=/ !h!/䎆ϗ !B !0Eh!B !D;B!@C䎆B!$B:!B 4I6B!/lB!BH!B!@C!B!B!BH!tQT*eee-?99ZRn>3f^S/lmmiXnH!B{uJ4[.]x뭷Z<3gطo?2ߟSZZʔ)SͳtRԩS Bߠ;6l 00???92Mvv6!!!ѳgOkqsQ/))aڴih46m.?::'|:(.\رcnpnݺѻwom&;P!B і]x'NBHH?2nّÇٲeKL2~'222a…Ng1|f7$$={Ȏ&զ ~ !99J!lFqѡ5S"dݶlN޽; j]fUVRit.]~krh,Y M ,,\aaa888hP9ua\p&V{Eqڵ_oooqvv&,,LtI!铦PUUK.[[[Z-/BIJJۛʰݻw3n8?SQQQ 0___MVߺ̯l>Cx6|pz~z}9M7Gc;C@@QݳPrht:r{ՐΝ;pHKK###wppPQZZrFs]~;w닭2\R˗IOOGR1k,e|sR'M={cǎh"X^^Ύ;pssS޾T9y$魺>̚5XJJJb޼yK aN4ՇfΜI\\qqqOHHo&s5:0aY>]RRBBBdffxzFe0zh2dHw5K,--Ոޭh:UFc{;>>t:9~8qqqF]]]@Ѱxb> 4/077 :_~٬ёӧOsNT*Uuh"GVcaaARREEEX[[+Mœ>ivvvFiPpN܌3OҠ(--_~f?stm Ӯ];̙Cllla߾}ʛ'O̎;())1kۙn=.@Ҧ8991vX6mڤ {>}/q[nԩSݛC5:mll,aggǀn58 BCC9xpkkk2d...]27mڄ2)n=.@k2}toNee% 0qD9^d6͊ڿkS]]jp~{{{bbb|9sβe˰W[զz{3ٴZ-a&Ot1vX>CFZoUN4zxx(7vb7Sjfdd⢴qSuTҚS{b0rH***Xz5KvUh>TrwwGRqhGaذaoߞ˗+wƍiii7Фj\fMM .W^]T&:݉gaۥ #>>'*TBh_]PPMjʕ̟?F#P?N=Xbp3G j57n`ڵF't:Yd fzTZ2Os'''/*:t耳rrtI!铦FaDDD({#~;=ʮ];w.d^d>+PQQA~~>VRu_~%$$$piW_ĉ'h4z}qz;`ԩ޽[Iㅐ@C5[liVTdd<<&n۲eظq#vZFA~gϞF77Neʕ-9ukr;3fk)?T*ʌ6m֭&B!\r*N<``̘1wlYgΜa߾}̞=[ŋY~},]\vMvB!^aiiIva\pR FCDD$''Rb2m4e|Cy'С2l…;oo֭{f۶mB!$rv؁L4 lΞ=˱cXh|%%%$$$Lff&/nt}ÇovBBBسg$bNb̘1jy_?G7qvvo\'Nggg4 8ŋsO˶GB ѦpttܹJEnn. ** t:/r; s]v̙3Enn.zjv{/;KHYYaaa_=hN=h4HJJbʕO?/x?d]FPP4$!h?Nbb"Ŝ9s~ 2'/_F+\]]kp98::6SSS#;L4[jj*W^e̙8::bmmͣ>ʳ>LSZZʬYۛYfquaʕN_RRRpvvfݺu 8&7nz޽{ӻwo6mh>LNNٳg9u\$((w}N:nu߼y3C o߾ 2/6B%jGGGGll,zbҥ4L2]󩬬O?GQ]v-tܙwsyGܹ3Æ ŋ|2dF넆#0k,eLs{2zhT*Ty+%%E9n{hV:teXFF...XZZ]u%ZmqppP6UZZ#F{ 8͛7gh4\x8>f[m0W_Lddd)DkPTs̙3Ǐw߱|rHZZJ`Ç8tAAAF6Ӈvž}HMMח'x{O?,w[\\ǎ#;;W_}U:O~9sѦZ!! tdc͚5>'xpc†̟ge~s`F~#*]F~~>_5/cǎhZΝˮ]X{\~ӧOfРA-nW_}N:ѱcGy.]ĪUa?S/nϘ1ݻw+u8{,eee4} _|7,\>Tn~=fhZ y߾}=ڬ;3WcۭCB q߿?it:|IL:S9sβe˔+Suü{Dܹ3ӧOgҤI\vMI7}.]PTwf-TTPRRBϞ=UUU<33R+kͩ)Sd0صkBi㙙Ŭ,4=2h }t: ֭[Gy衇Zo5%==]?Ο| oY1Urlʕ+fǝ>N;&((@lb<+Wdh4ـE.\믿Njj*7n --{ݻckkNcyn8;; kך|;9ez222-deeGBBٳggϞ_ZrJ*++)..&::zbN=zj^Ǚ2e JVeDEEqu f„ J㭷bf?P{>ԔիWSYYIAAo&Ǐ7kSRR())i0ms uggg2z-NBm˖-Jw[pppܹs=.]0x`ڵkg*7@PP74h?8ӇO?6UV%""AJ>}jʧ 0@y(|Æ ѣQfSvxyyꊿ? ,ӓGgԆz=ۗ>}ʊ~VD >>Ç&/]vt֍s޵\t 3>wwJmun7gB 4NёӧOsNE,rss9pQQQؠxٶm2СCС^z2kc޽^lmmd׮]j,,,HJJkkkor\]NNN;M6)}O`2UNaa!|111`ggWk׮Ebkk˟g;K,QGXX2ԾUVVo㥥 6AիWٲe >>>wN׮]ѣmj;:߶;+@C ?Nbb"Ŝ9s~wuuUS˗xwwweGe֖ ȑ#ˋӧ+nt:Ν;qwwo߾>|[M>۷SYYIBB999L8Ѭ:T9 .Jct:򷝝]'GGGo+++e}szݯ.^ȕ+W3gNNNtؑ?ϝxz쉵5AAA?={(l<.\P5Ç땶~zejmٲnݺaooϴiӌi* 077`\\\aĈdgg7Yb*E}!Ou`kFTT ׷^o)sXhV֞צQddd₥2v|c:w #GHKK#-- iFɡC(**"44p5tPlllطo7ofĉJz9u0rQTwԾpjVԩSٷoj۶m>^/:쬜475^`ԩ޽[I22UFaDDD(Z}s+III1~?^oA1w\:ẉ>Jrrtt?󤦦 5k'NK#lN*[]-[Fj,ZX4@WWWbŋ7z'OQe*EҜ}!m^^^(QF59}UڵcΜ9Jo2m-YB LTWW7\RuVԩ `[+???0`vuu5˗/Gbgg͛پ}q ӟDBBnnnÚCsMSlܸ!C0l0lmmaϞ=ھ5 Fkߤuyxwt8991zh QVw;XZZҩS'eXǎNUkn*ۭAcn-3//0/ 0>>A׮]0aB6'EM]/Ľرc>}Zl޼󺺺*0MdB.`&m߿I֭Oݝ+۷O9ihL{{{bbbWǎkp9Mkh9ݺu雪Csrڷoϊ+XbYuڬ[͙3p-[ jM/܈`-~LT+ 66vޤVvZo"Ǝˇ~ѣQ|JXFȑ#`Մ7zU7EO>nⷧK.Fo:LKKkr4E.]RKanlr q[9wp3#**\6LD`` [l3%%(.\7駟Xnr穥4¦k4z=?sl2*++|2VRM]~*Qܸqk*6T'S)/^$22RyT`sS+BEE;8,M I!;mZVEc).^^RĭVҊҪ((""$ȾȑI&Pz+ٞys2=s$*orDCJf? ,yHmذ_~G'''Μ9CΝUVXZZ}{ڮjeh4L<-[RzuVXQryW528eٳ'ڵs4n1x.]Jff2 n]v5kV%/i\!D/ 6~Ԥ;Of*]?qI6oSthuzt:=ZT**UCpZs|t&L-mSqO"""hڴw+ģ>w~U/=B!B*'B!B !B 33SB!$4XZZRn]R'%%1`qqq! eݼ<Ν7jwww&OlӧO'|L۲e 4(LJ &pyMSԃHcȑmʕkX[[+fΜI~6Nzh޼9_}4!BI4)l޼???j5C >>gr!f͚3f ###(^y޵kݺucŊL4 4hx ãܺup"""e٥?H+\WݺuᅲF9q}wwwZlYAÇ  !!}3f(WSRRظq#AAA`ooo0 `͚5=~`ӧIOO]vFqrrɓl޼Je2"E%'NdӦMF;..6mZ:kڴ)4GDFF #""+Wzj֭Ŕő#Gzzc\.]ʅ صk׮]W_hXdThGÇ9v[n͛@ڵek׮jƢ+s~!:>.x{{3~xIIIۗAs֯_O-]6cĈew^^-Exzz_z챸i׮4lؐɓ'sYIHH`ƌmcҥՋgyDQhǞ;ݛk2sLh4\zUY6&&WWWDRq26oܹs oٲFٕUVԘ>}:\z?qƕYSLaϞ=ӧO2”C[xơC7hU6y?B D߿?5b…h4:w̜9s"11>_N@@P8D%>İi& h4Ӻuk-Z,L.]xQIӓp5j!!!FMb*]͚5+z_~1ncc ]tՕ^{`_iIQ^=>N<ٳgqrrbСze_֘j6K 4h)))hZR<Z]bLNNPnv2d2i„ ޽{yiҤ ͚5cȑe'rwwgӦMlݺƍӵk2xz= 40:RcQ͛73uTBCCyDx8p@yJ IQlm)WaT}۶m+uVVV,\ פIqq5jڵkOqxx xrĉ2dW_!))gI#zDլYQF1tJ/(66Vr &,Kܫ|/^sNJưaXn={‚cǎѣGRc֭ݺu#77+V[o)wU*/Ҽy [U bҥ|wh4Cڊ5իǯ\bVʔ+(Iz4}ұcǿ=mҺuk6lPu-ZԩSqqq8___YnNll,V"++K|r:uDUV宷0 /@͚5WģSNJiܸqߕTU*W'ptxͱ!5)VYhw~U/=B!B*'B!B !B}ooo>eږ-[8px|||0aϟ'==da4ݻj[.ue͚5ܺu#GB9r$YYY1-[-ZP~}eڵkiݺ5nڠ&!!Ν;ꊝ={$>>88q"VEaaa_e2沜^׽2l! 'Tvv67oZ СCqpp >>twάYX|9cƌ!""0IOOԩS%k.|M z(l_deeG)N~~>={d|ǥD>}K.3ϔE\|`#ҥK3p@fΜʕ+e^133S]p#G`ffٳ7n *+WҤIRRR>|8Ǐg֭F(>mСL:'NвeK6l@۶m+w? jXZVv&UW_TI|2xWx=+ɾvJe oUn=PcÇ}9t\Hf$bRs+ӿ_sU~ʜZ%Ks.1'L*"=O4 >|0} FÌ3ꫯHIIaƍ0(5k0zh~$ӤӮ];899qI6oތJ2OI&`iiĉٴiSe^v;v0bNHHn*W%&&}v,Y#jiӦjܬY033<̙L0`GUըQ&Mٳٿb^:cʴ/QFU(3gci`%= 2 X/03P~ENLRVTPy-5]#-0ɼo gwb8ژ3vhzGšDz(ڼvjabS.tl9z^&udTsHt:z#$秈4fҌl!$K9 > Hzڵk9s& h4pO\]]177Jؼy3s5eԨQ LShݍXn7oFFo 7T5k*xe._LLL >׏w}h\^/5u;;;vg#{ZY3ߧz7tw*z=;w.1SAg?GF(u=W%}M(\-ooWxǡrk:Vb2y1WP=7)DpqoN|:xy;cK-|yF[ÆmkNZzY+៝gQTG_CJ=G.ŒvH,(w<6f~FlgB ^oԨ .Dйsg̙CVV|G@ᐞÇdQH 42i$z=ܼyİȼy!))ŋ3tPeɓ'מ={8}4G1خ Z+W(jժE޽yHII cڵ ;;<4i,[8Jff|lٲE6ubvbooϢ :2c~=w%5mx[+3\Y:[Op;ւƵl #|-OYwt[?nD}6o Q.PƮhuղUkaKd Ѳl-ha7$[FVOб\imT;6# ĥf8mn۩&w;=u\4\Bxxu]X7}Λ۽Z"PAh"'886mDAAFy:ҢEeҥ /"j$<Pj<=o-.,D1ң!?;>e|Ų{N2NfY\N)qD#Y y Ksj+sp}4:شֶZaStGsp᠜WB !cd}7ƍu&0_BM>{3y7$3';NpFvz}aor t2zU_ACtz_JI߮x7N$Sy 99z^Y>n?_"f6eJyΛӱR{ksAH^!$elHxt鵅 *(d ی$1{+OUsxlSǤjp_v.!h'b2y[y: d1*?JCyvdvN2˅0#8<\W7M9BH!xXY;WyqY`W͜ش\m,ҕ` zI*AI4O*+u*fbZ7lQw%2,B!DC!A|&o+BJr)0$OB!BH!B!DC!B!B!B;\ ! B<`{=JB!B !B!$B!BI4B!B Q*WFFFJz3zh>cw}FQZ5WΠAQ9իWKCB!DCTt{nijٗ3gΰc&LLe͚5$''sAݻ2ܹ|dffJcB!DCTZlllCV9r$...T^#GܹsFVɓ sN6l[ܹskҺuk $%%1`qqq! ReʕkX[[+ӂԩ4nܘ3gri^z4oޜJB!$A1b\t]̙3cƌ!,,0222W^1ƦM8p)))0n8.\ȑ#DFFҭ[7C >>gr!f͚Uj?#ݻw/s8AOMn?y?i0/aÆ\~:eJ ;wcƌQFӠA nt#GlN: 0{Hܔߝ!Feϯ֟yBH!Kl߾%KZfڴiƍ {{{ڷooe˖Zwѣ̙YaS0`2?!!}3fGBBM6-uBCCYv-ׯ7޴iS9OKKKٰaŋ̞=UVZbU_4;;t777vI\\{˗ILL$<<+++ VehXd4Ш0 33Wk? !ॗ^nݺԭ[QF)$ccc`S޾''''jժ)]2v\~V[+/$ 0ڶm["4t:'@ 7o$&&2zh F.].ogg*ӌ|8+W,3>sss,--]6F"::jhRR}~xxx0h |):w >AJBB3fPNNNfĈԩSNJnn4u~t:Əތ?leݼ<-ZD-ח`wuh4t… ;=9]tM6{~l߾>}VիWbtؑzy\L{zzs1ZwBG-g[\uƁi[gt}wqe=WZs-\5k թS|OOOT*ϟUVU^~QrU$&&WWWK,s+W`vޭ/.=={{{gE}wto6wC0*牊"88>-''[R~}FRxbIMMwa|;8::r2222dHe3{{{"##`|J#9q1xbLBdd$ADD6lΝ;eҤIL6۷+󣢢سgfff/m6.߿_y1uԾߩhu' I4,V-z{իqqqڵk_7NNNDFF*IyXv-?5RzL0I-W0tt:t:-:V-}CݻlԨQR%iiiԩS-[wssSpvvfڴiJ2ā5L]߻wo֬YSٳdddЦM3eYeǦb3N}^.>6mڄӡCN8K.⋨j|||M6QPPFQJh"̌^z/L?>[E|c8~hp؄Km/%-x$mۖe˖sIeGޞ|beNF}NW[@ܣ!0Ł_cO?+ztƢR9BRU I~SBYߵ/tҙo6mF*E!R)!Dm!BK#=B*n:|B!h!LH פ҄ByDCQ;l+W/izDåBy*pFrTrĽCq}$'-t:enwRB!c>_D̩ͫSgXަ>Soe.m !|M6B9:B!Be\r7XVG˺ s%,]pQN aWr}s : '88mSj NE^G?{ $I0Ii[#Y,\g8yYo$iOy5:vNFtĒe-rFđہ0 5Bmk~Uv}ܦhΈ=A4-Gh&f[ǩD~r2t, 6;"5}T(Zpzj\)(cPDu~  rffL3&VɈ s)A.`W|_hdu 3J/#$' Թp) \k#49yۺH{۳RB>E;p؊a-+ll Kx-<=h^d[ .!R$tqv|x8-tj.7 1I]RBM8aJ/]_F"Pb8۔.4viGJyA_~f_OUR[bT%f 1&0+fto7(2o4Y绡X'͐0$ 4<lp(00F🍽9C8)vr P#@cxeBJtLYn.piZL.,v}JvtIyR*}Vt# P0BA j& &nexo`տ_oĮXq#9^Y(>z}9J gK>ܠ3FrjP&P~>٠0ͨ礯<5$)^9`vg8n_^tJ xwg`"B]_ 'Iu3xA-Skm] ݠ aPa0w57/;>>E0`_,p)H:ԹdXam /Uf4XrB!oԬnLd6ײ\ [v;M{:"aBD 셺B֕edQ*ܭg"etb ϯ`%3618xe1<O*y2Sg[:}z5a#cw۞21\DǏYP3bz$/B}h>:|q1.}Q )2wwmUs~yiy݆n_X/|{{ `?>k2ԑ%DfSHy!~a`9 E4}\7<\_y1O;.'A`E_}2:O׫a\FvPpV嗞<^"Xk[`I3>uճ°BRux _ق[Q)ڋ?*:o}k g` aV+xrS@fxi۶ϧ"͜t}HOC2\2\2\2ت%cx%^b^dR$%- L^;F2mΝ77?n>}v90}LW/:Xg|Nk?'<0QR:Uw8f̜l5[Ėq/p7vҤz)F%t Eڊ+έ?z$AK,ա^JbjSX/&|W.Zi 14O x>DP[[[H5v2ɨki-hlnAn2ZZfbzs i[(C|RyRey%Ëҙs1̙8xٍvcǏx~kxᅗp!ӃcԩFxs.ع>ۋ_6 ϯ{7omhugNm¦[q_+Y`Jdٵ%4-g)I%+a3:w:t8hh0;R|I'BW_Q;~" ?eimM O 3س]i+>ۜ#HSh188Ͼx[vM7MЀ:$>7Eh3*Ep+>ҜԄk -_^ ;zCCC41xF&QWWxex*lӸ|$hmmASSz{;{F bll q-qtwm|=!G'1c\{ vދѱ10_m‚AKKK(Lp>.\CCCŽVڽK߆S=wOy2E%H?|=w&G0::X4ʵ 4W… bltӧ7 ɱmx燏u'-Li 85$[AX.ǥTW){%å"..5rppK 8&#Mp: ' ٚگJ8>\/+T xB ܧ (/7 g۩?gPoY6&Jv//Ͳn>s\ee;L-Zm?wpX(+PU:`TSjf* PE1Yfy0 } >V~^ TUu 5kk;hζ!Yk AhZZg.λO @#G35ܫ蠄nhxgKW=ħ~݆E_Z^O'x{{ `?>$eW Q={q0ݺ3ac&%[78!-4\n]KDp#\Z2MRр3pHI"H+\)%%M,G3}F0ghSjt IK?\.M.hp 4HSm?pbÉD^lmJZ4H?\.Mpip .W2؁Rp))2O/={91\k.'_Fy!,}i?9q m /\4h 7߆ . ٗ8{A.͵s o܂;y\쫦&a>ى];6!a֗~XSλZW֯ÓZgɨ~Kkl4s1tڏcF㴙i@Ȕyꇱm|###e4 !cO}>!{OiJ66mނo>&4ӞϥlaK LݪYtĀWYϪ!^pip x^4p |L2aN`HvOɔ(ɞP=yR1W.@O3g橀٧RsWYK0I,P=ԢZ?? `0*W᣹U_ϔ"33*it 8XHf#t)gISlEt+P `y4^n pH;, NY^N4 !hGpq~c[ 7 QblEIe X* QVH \dmiw<#EKVJ<r݀IENDB`usr/share/help-langpack/zh_CN/rhythmbox/figures/rb-statusbar.png0000644000373100047300000001010512317327150026671 0ustar langpacklangpack00000000000000PNG  IHDR,bKGD pHYs  tIME &tEXtCommentCreated with GIMPWIDATxyxTd2!$,B ֨xYjE.uri]6>V+-PDVアrYk]{-[[(  a1B&L2#a2̚>3O39{`, i|uSFDDDDD4  1>aCACDDDDDA-d4@os[؈ @|ވa5p*nAUtկ>o.]=CSSSy/ .;ZVNo7n$//Z㩨 ??{RZZ :E>m}v 33/ގ=n:%%%9LJJJXէڮܓ2c\ϴ?q'7ϼ&^K^lnp:p:?8S`9hgݳ@ &ZdhW ? !FL&999k., p $''}݇jc~q>>.M$ NOIIܼÅ<eӯ"C `yFcɝ-FZK8{L2ŋbŊ:@ 6@54`Yr%l6pmp!k6o̬YڭWWWGQQ%%%8pٳg2 "yBtN\\+W, ysEz6lah4bTfOVVl޼}BV!!33޽{m6VZ`5k0|d̙,[3fd2|rUj|Zo}߲ ";!?>}Ryk Fj*`g|wwG8Dz\rss[;v,7tYYY=ۯ[ f3 {VVV홗MMM 3/##*U)`mR{"nO]ŠDpD5 lq,]x<7X =\4zJhk,2/NFFF @EEgӧO~eeeRO`"G3"0ekT:Q-6:| ң9N>Cv;ڇ4cBFoَ $333gb…L:]V+۫r-x{+믁o~$ٳeel6nnJlom|hii9aWN l>ewp>>ew8X]m"w !{[cI""""?T |)gw[`¸1|g/s 3d%TVUqC6CM5ν{7AƲ7ٴi {'sw]4m$Bmcج6<ߥ_XL捥+B2(ݵ緞?hf2 ez`X翰٧m#"""?J 7hvIJJt:))g`ص{]xADP$PHWؓkwvkf}=v \{[AYyǎXv/HOcDrĜx^4N'>G0wAqFoYzBU 0n ݹDVeѬ\U<1_r/Kk/O?üxM-qp\<%8G~G||FaB<}RS)+ǹ9v3i=Nӎdxfz ?]k!h~}q:'a1 gɻ}}dB܁%sIFDƌżtPȩwI rxŗR~?8N, g1O5rbccyݿ2n?[2,ðm+g$a3 L"."`---(((@MM F,'T@eg$-˲3 Z􀌥GK1yE?<ǧeį2[;z*!<˶Qİ>y{}0R`r{PGa֭ /A.CP@* E: 'n X$P%q ZP)Y,wG*ooٕXkn'k&Z ACgk[{Cmhyn4aY3=ַnn:X}M JUi8p 0Y)TSS@~~> """PZZ`t:TUU!::* ΝCRl$2s,GGԤ$ &>~200ROoG`veoE}NSu*ݒ˸RzQ},!P I7l㒟^@I=`Ә2,g6'J}cƪzT_  n]Xŷ0?~aaaBFF jjjT<4ׁ h0I; O3!@4W7'!qvh* (҅|F_ QiHh/_OxRl۶dC1D4X4oMH itX =IX5'nh,3)5V+[6.FW -xCNNbbb0 ˗/# 8ϟ^0DĆ(?B5"eUA[ FSyp3onLLa=쎡T HzO@"i-C &a*qUQ V.k_N(4GO_klH"!4 :@Ž;PZZo@C#** eeehhh@vv6BCCѠ4=[.b$ !>8!mx{EnDE &۷,n.D<(F41&"8(OحɣҨi/:yVi1ё>M`s~usD 2, 42d z=XcY0 e1b֢W{OD9UT;_QڋHOńqbܨḱ 6me lw> %8eyP% ?2UU?U{"h ~`|Z/!TlznuY`3zbY뜭oٰ{ܩTv0CMMMj`6mDiY{XfCZZ**t:3^aŕ+!3Ǿ܁qPwyT(Õ:1PFO~pWTccqyfiڲ3ʰH,/YƂXB Y#:6AvNZqTusv}bJgC2 ѣFпjꚡ0[H;7B;) +QGr jN³RO}MRH}B)z}vZ| 7rbsIL9]38ܣ0-mgWNmDL Qaj CX"i{u*}!3X0M%MTģnw*F-X=ǸW8 =c;!hzlkh/)Ph_kLgz0G^$G}[  CiQ7Q8SfGD>8!| 7<#ע5nN'pyx' g/! 0ADGc!pvLI0/AD#߶EuoSy.+*Ͷ:ZM6ۚ>{}soD%[-uhy|EE,ɓٸ9NK<ؓؽgl.43{{ic+Ul3ٶe\pζx %_d_5};m3^^t6!LU-{5u|#5{vlףπhnnFP*ixW֍>U0$lݦ|8D~<2>*0M~p|V8?~=VƶK[T*V|*̻@DD8>x-*Kl2e9AXr\Gط T^A`` <ÇVg'2>jx$|>tw.pu`YLm N sqiLryåR>rO,1QUU}E|-bXN b]^8u .;/?ڳr-Y޻ga󖭨1WTT{fVqc5}b鈈?|ر} &0*6>eGh;qg#jכ\ GuK53jr!1;C71x|$??# ml=|>c9[fGV U*U}V[,/mm6Y۲/l`-m7f"##n7A>Zi4 +bxR̼6""pםc3np9k?IJnvmw\iD]V l ZS[ w69100~T4jPPXF 4,,}\vj0˖YYa./:-HUnf6 ?XwϺ_|a|n=-\`flsclj)]l2֜ x)|Wĭs8>g:8;Zі9,y&#~Ct ee 5 80cFĦ[p* fwcK6+{cV>͂l~q-7s[V:n"u Ӆ,-+mpr,mo6_휽W[s3e=`!65&zbzDLd20,c]pcZ }YML*k4ƸE (}iO PZC>>>faYA?9SFLp=76lj<nUl,clrnY likX%/#:&n;9KMNG 8'`9|"3 ]}MXƠh,ix aa(((:WT ..]G6nr[7cgivٲ;lkɞ4kPLQ[;NC?w[qzm7Ŗh?[ښݓͷߣ_kD?9laxvֹ2 C;dj< bDMLCIy#gq絬s!8r츸)?^'0l`Mcl7#ω]he?Y+,miL=T Bw`X3el G_H<8aHG~}VbXllHJ.š;o-q(4c,S{plbplRO8I=ClROLy >c464Z;h*l]I==|:,̮z{7*<?l[pfWciL3/#pG]3o7V*jG±kLuİ!ewx*LNTUW<vv w4nc?7ga'5 Y Mtcp=0h@۴\˯;#n*߲ݮp0t bF[w&?̟ۡZXbs֑l}#h.׉ؕ9lvsG⼳6ZkeO/ʏVtvD^xv?=gl ͦmVOe9ˊձqud+WLg>ܞؕ9I{ ø]{Y 1j?D| @ @BZc:. ps  s GI\ )+CL^%p1 p{+Ht:=z].P(4{Ƭ5 ݉`X#۔IekCJ4k4W"zbT"/ A  }/(E`!4$CZZUj_Ь!D4"ίT*9@t!] ˀcN۾ŝq ; <w&B& &'١(/@yyA~A!-\ĿvQWWZc)Wz1=XGdd"r !H=FQq)jjkqMtWc񣏠GTmuuN}aspWg_aÆ!==2AբǎG\\ze `4θ#z47kHLftn`}jpi"\PXjm)PU]Vt}Ii)`Xx A"_$;wƾ/-)J>s, x㍨G]]j5蠟Fjd>޽2HI[GJ|hEkfЇ33E]gIcN7ϙ;1})2i d2 7hkk^Deϡ)3w׈pYy9 Э[7lݺU4 H$̙3DDDHau7JYP?Z oA|g(t֗'_ \D7|ݦڵ=w{S=a["JyR|lۆ?wrZL"lbP(in`ػ^X9͛8ծ5b+ g_8>,"::颡L"55r{Fqq1񡘰>sN`x¸wWC||/?~ }GDح1`L 9ۮjamyŽϓҲWޘsƚk1y^~JKJytsr3g"66)))N.]t!;;i:| `@ӨA``wgE8<<e]O +ogu2EVyqr<׬9sx|h4,x1wСXŃ--Z߶bbbdt:+[ Cxt}+˰eaw0˞ǽ3_Ew؈^ą [*vVD\n% B:i#QV^=/߀Sz k"3SE.iEjq_"//(Dmᢦ"eoɓ1ydL4 ǏGXXLR޽{:Z|[f՛X:1x{Ǩ\RMrKP(fQ_/ze奐;7???aYV_n64giY|}}!JVjqiڵ 'NF/- ((%%%hii?튄8/թAUUqE^tMTU#:6̐ܥ<`ӑے׬_Ahhhƀw7CS_R.Ghh(^]թ4 rrr+{j둓/gΞCNN.;T|_{{dX,Q_Wi^+ >>>Jbj Z999/BCCF\O?w1}5[`vᮤyF%*bMh5x`ΜN ‹ϛ_rހ2 ?1ǩ-K̄d> Hxqdh4۷/R)F ˲)uSS|}}=J|! PYY;5{e`S/Κ}z X={e%6)R)z't6MDJ%z "l:'LJ-jcIDAT:&g:6u ֬^k&&,e`.&LX1ed܅cDhh(ej rCݡPKaC|> ! p 6U!! SX$]B+f[; />5JyhjjšխK 0n80݁ .2_gGÔI7yHXpT\t /^Dll,D2 OV NYWW\7>@(?T/-3?ڋ0N=-+ضnr<`31Ι|se;(r0zY{pK7NoXQQQ>jq~p =C> A8B"B&b떟V#ZǫoSJNj-MM"ۗ}N|jyRVU&W`'0yfciν| Eh})?˂DccpqDEEAV"aAӡ ---`Y BmaJBDxrt-:B7rYLP:EOCuJL"lppDEF*`ztwCKK )d2T*r9z=|J9?3;K|jz}'Dzg}AyYv NLJy8Cvv6jkB7ROQZ1qGg/JV|냺*2L{!OLOg*Ohh__%xtG` &/wUo,66tV^\.\._z+2AtJ||DOyM(@=V*9pI!đJ$a.2gRcbb5޲TW"*&f !?zmj* ƌBJ%~}ƌf !J\R*.堡2bX՗ː{$Ri (1tKH 7L¾;qc\&!"* 0 h !9 %p I*@4@w={5tʶ:-t-Z5M£-'vp AR_[)A)uA 0A 0AALALAAA$A$A 0AWEuTiX^gA\lK@։@ ?"A5[r Hńљ455!32hcͿoAc'KbS(h? 4s~?vDf{""۔~[f{! w)Im}+v>>^|UDFF 'Caٰi38C^(++%Cxcb4iϜENn.7S+*.Ƃ+8zl+$Gv=vZ3j;u(A;ill(sǢO Wt;F|\]Gpc>[<<ȓؽXZi{:2+8ӉmTabt :{w1|8'#[ VjLJOoo\XT7%n?K^:4w]8~~~vFlhphN\p/5j41|(-vIVnqJ%8z8>b%᫯9vJ|z)̟n񨨸.GJ݉rBn. o!q;0p@DEE-sx&VҳO_߾Uhr)X9o0-cȮY'ݺ/-lż|yL6,yr>^|||k^ )6c}f ֬Z eēࡇņ2P[[XW@NN.&OϟUaEOoxŽ2yGͷߦMEll g=(+/3nurv߷;wơCGp;8pJi=Rʻ+B3bmjȞ_W=)߭WX?PZZdzOaI6<(((Df e?qm=zpZTm*z]}hϮ\p~\hc|2882Y%O/}ޅƍcZ=p=" S&߄サg)̮/?݊*i=Rq**. 7NvmwYCJJ2>X,H|:HR+Au5W #+ćZV씺#3zƌ/( ^y I+/NdfaEuf'N5{fb>6hNy&!v]سÈC[>N^ە+WoA]zqq{'fuu4,^ƞp>'A|--hhh@}}16Z D"ҧ,'ƏrMMMxw|55Vn=ZA[q1**.#@5]wO^[ppVtRG S&߄_~_ZwQRR˗`qˍkVVWP:GvefeYeNdĀ7{c|bTUWDf74Ѐ .=/_p~=·Ǣ'jh3 sLTiFRXcN[O˶Ѳ5lkGԕrg™x+l̓?0u$$'E`kok۴ׯȄ/\sY]AxXij5RS͞NJeP(N3g)by\CGvefĀ桉x|ѣ|k~7Q )) GCc}G- AA螔ןА޿PըǾ0~X(^)55E `(++GUu5BCBDϤym g.GFFX r&~r'm54ӽx~{B- v7'Gǭ3f".1 /O,믾/,31p@?+<| FFA=/O?KcjB} vW:DI/MMMɽ4Z|?o؄Ĕ d\3+?\___(}|aæHHNБcpn**3$c&Ro݇1&b^+m%:: 2܁{nш< 猷؞+]=}'#V\}Υ_0spg>qўс!    & & H H ` ` `  ⯎#@EY1iw2 q2r,c/ALĮ1qHHJL&;Ns|6R{~vabuam &B]};bYHJNT*q8,ˁeY/+JIgaέhll&u:=zQ^ZDp0 U1(/-•+JXM\b)W8v`B[_F˘@*X-Dz`xVEAA!5S!!ٻ8ZR w_}?lfONi$3+{rmԼ<47iBjkfe9nq "èM?߹!J /CT7\F CP˲)V/oru4AtGRy'*/Q$Ik׼i1KLH@MmX!!6C֧_)L)rߟG=e|0 k RHH2qf0 Tiffany Antopolski tiffany.antopolski@gmail.com 2011 Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

Creative Commons Share Alike 3.0

Help translate

The GNOME Games user interface and documentation is being translated by a world-wide volunteer community: you are welcome to participate.

There are many languages for which translations are still needed.

To start translating you will need to create an account and join the translation team for your language. This will give you the ability to upload new translations.

You can chat with GNOME translators using irc: join the #i18n chanel on the irc.gnome.org server. People on the channel are located worldwide, so you may not get an immediate response as a result of timezone differences.

Alternatively, you can contact the Internationalization Team using their mailing list.

usr/share/help-langpack/zh_CN/gnome-mahjongg/license.page0000644000373100047300000000357112300405417025243 0ustar langpacklangpack00000000000000 Legal information. 许可协议

This work is distributed under a CreativeCommons Attribution-Share Alike 3.0 Unported license.

You are free:

<em>To share</em>

To copy, distribute and transmit the work.

<em>To remix</em>

To adapt the work.

Under the following conditions:

<em>Attribution</em>

You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).

<em>Share Alike</em>

If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.

For the full text of the license, see the CreativeCommons website, or read the full Commons Deed.

usr/share/help-langpack/zh_CN/gnome-mahjongg/strategy.page0000644000373100047300000000336212300405417025461 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2012 Michael Hill mdhillca@gmail.com Strategy

Since each tile layout requires a different approach, there is no one universal strategy. However, there are some strategy tips to keep in mind while you play:

The general strategy is to keep removing matching tiles in such a way that each removed tile will expose further tiles. A good strategy would be to expose new tiles with every set of tiles you match and eliminate.

Choosing easily accessible tiles, such as those from the top levels, is not beneficial. This strategy leaves essential tiles under cover, increasing your chances of losing the game.

Since you are scored by how quickly you finish the game, time is the most important factor in the game. It is therefore important to be fast.

Using the hint option adds a 30-second penalty to your time.

Shuffling tiles adds a 60-second penalty to your time.

usr/share/help-langpack/zh_CN/gnome-mahjongg/gameplay.page0000644000373100047300000000316512300405417025417 0ustar langpacklangpack00000000000000 Chris Beiser ctbeiser@gmail.com Tiffany Antopolski tiffany.antopolski@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

Creative Commons Share Alike 3.0

Basic gameplay

Mahjongg is played by matching two identical tiles per turn. A tile is eligible for matching if no part of another tile is lying directly on it, and it has a free long edge on either the left or the right. You win by removing all tiles, and you are scored by the amount of time it takes you to do so.

There are many different tile layouts to choose from.

To match two tiles:

Click on the a tile you want to match. If it is an eligible tile, it will be highlighted.

Click on a matching tile. If it is a truly a matching tile, both tiles will vanish.

Video demonstration

Video of gameplay

usr/share/help-langpack/zh_CN/gnome-mahjongg/bug-filing.page0000644000373100047300000000401612300405417025637 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany@antopolski.com 2011

Creative Commons Share Alike 3.0

Report a Problem

Mahjongg is maintained by a volunteer community. You are welcome to participate. If you notice a problem you can file a bug report. To file a bug, go to .

This is a bug tracking system where users and developers can file details about bugs, crashes and request enhancements.

To participate you need an account which will give you the ability to gain access, file bugs, and make comments. Also, you need to register so you can receive updates by e-mail about the status of your bug. If you don't already have an account, just click on the New Account link to create one.

Once you have an account, log in, click on File a BugApplicationsgnome-mahjongg. Before reporting a bug, please read the bug writing guidelines, and please browse for the bug to see if it already exists.

If you are requesting a new feature, choose enhancement in the Severity menu. Fill in the Summary and Description sections and click Commit.

Your report will be given an ID number, and its status will be updated as it is being dealt with.

usr/share/help-langpack/zh_CN/gnome-mahjongg/legal.xml0000644000373100047300000000050312300405417024561 0ustar langpacklangpack00000000000000

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

usr/share/help-langpack/zh_CN/gnome-mahjongg/develop.page0000644000373100047300000000207512300405417025255 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

Help develop

The GNOME Games are developed and maintained by a volunteer community. You are welcome to participate.

If you would like to help develop GNOME Games, you can get in touch with the developers using irc, or via our mailing list.

usr/share/help-langpack/zh_CN/gnome-mahjongg/choosing.page0000644000373100047300000000112312300405417025421 0ustar langpacklangpack00000000000000 Chris Beiser ctbeiser@gmail.com

Creative Commons Share Alike 3.0

Select a board

usr/share/help-langpack/zh_CN/gnome-mahjongg/map.page0000644000373100047300000000510312300405417024367 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2012 Ekaterina Gerasimova kittykat3756@gmail.com 2012 Change tile layout

There are 9 different layouts. To select a different tile layout:

Click MahjonggPreferences.

Under Maps select a layout from the drop-down menu.

Click Close

Your new tile layout will take effect immediately unless you have already started a game and chose for the effect to take place after you are finished.

Easy

The Ziggurat

Four Bridges

Cloud

Tic-tac-toe

Red Dragon

Pyramid's Walls

Confounding Cross

Difficult

usr/share/help-langpack/zh_CN/gnome-mahjongg/shortcuts.page0000644000373100047300000000350012300405417025647 0ustar langpacklangpack00000000000000 Chris Beiser ctbeiser@gmail.com Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Keyboard shortcuts

Fullscreen

F11

帮助

F1

提示

CtrlH

New game

CtrlN

暂停

Pause

Use the toolbar Pause button if your keyboard does not have a Pause key.

Quit

CtrlQ

Redo

ShiftCtrlZ

Undo

CtrlZ

usr/share/help-langpack/zh_CN/gnome-mahjongg/rules.page0000644000373100047300000000260512300405417024750 0ustar langpacklangpack00000000000000 Chris Beiser ctbeiser@gmail.com Tiffany Antopolski tiffany.antopolski@gmail.com Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Rules

Tiles must be identical to be removed.

Fully and partially covered tiles cannot be matched.

Tiles must have a free long edge in order to be eligible for matching.

You can undo a move without penalty.

Using the hint option adds a 30-second penalty to your time.

If the arrangement does not allow further tiles to be matched, you will be given the option to shuffle the tiles in order to keep playing.

Shuffling tiles adds a 60-second penalty to your time.

usr/share/help-langpack/zh_CN/gnome-mahjongg/scoring.page0000644000373100047300000000201412300405417025254 0ustar langpacklangpack00000000000000 Chris Beiser ctbeiser@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

Creative Commons Share Alike 3.0

Scoring

In Mahjongg, you are scored by how quickly you can complete a board.

To view the highscore board:

Select MahjonggScores

The scores are stored on a per map basis. You can view the highscores for a particular map by selecting it from the drop-down menu.

usr/share/help-langpack/zh_CN/gnome-mahjongg/index.page0000644000373100047300000000223512300405417024724 0ustar langpacklangpack00000000000000 <media type="image" src="figures/logo.png"/> Mahjongg Mahjongg GNOME Mahjongg help. Chris Beiser ctbeiser@gmail.com

Creative Commons Share Alike 3.0

<media type="image" src="figures/logo32.png">Mahjongg logo</media> Mahjongg

Mahjongg is a simple pattern recognition game. You score points by matching identical tiles.

玩麻将小游戏
Useful tips
Advanced
Get involved
usr/share/help-langpack/zh_CN/gnome-mahjongg/documentation.page0000644000373100047300000000215212300405417026464 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

Help write documentation

The GNOME Games documentation is maintained by a volunteer community. You are welcome to participate.

To contribute to the Documentation Project, feel free to get in touch with us using irc, or via our mailing list.

Our wiki page contains useful information.

usr/share/help-langpack/zh_CN/gnome-mahjongg/pause.page0000644000373100047300000000224312300405417024731 0ustar langpacklangpack00000000000000 Chris Beiser ctbeiser@gmail.com Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

Creative Commons Share Alike 3.0

Pausing your game

You can pause your current game using one of the following methods:

The Pause button in the toolbar.

usr/share/help-langpack/zh_CN/gnome-mahjongg/toolbar.page0000644000373100047300000000220312300405417025252 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011 Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com Show/hide the toolbar

To show or hide the toolbar, click MahjonggToolbar.

The toolbar, located under the menu bar, lets you perform common actions with your mouse. To use a toolbar item, just click on it. The buttons, from left to right, are New Game, Undo Move, Redo Move, Hint and Pause.

usr/share/help-langpack/zh_CN/gnome-mahjongg/moves.page0000644000373100047300000000173712300405417024754 0ustar langpacklangpack00000000000000 Chris Beiser ctbeiser@gmail.com Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Moves left

The Moves Left counter is located on the toolbar. It displays the number of different moves that can be made. It can help you see how far you are from running out of moves, and whether you've seen all possible moves.

Mahjongg counters

usr/share/help-langpack/zh_CN/gnome-mahjongg/hints.page0000644000373100047300000000420212300405417024736 0ustar langpacklangpack00000000000000 Chris Beiser ctbeiser@gmail.com Tiffany Antopolski tiffany.antopolski@gmail.com Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

Creative Commons Share Alike 3.0

Hints

Hint highlights two tiles that can be matched. If you have already selected one tile, it will show a match for that piece if one exists.

Hint can be accessed by clicking MahjonggHint. Alternatively, use the Hint button in the toolbar, or press CtrlH.

Hint can make Mahjongg too easy, and should be used sparingly.

There is a 30-second penalty for each use of the "hint" option.

Video demonstration You can use Hints to help you find identical tiles. Press CtrlH. There is a 30 s penalty for each use of this option.
usr/share/help-langpack/zh_CN/aisleriot/neighbor.xml0000644000373100047300000000330112307311651024372 0ustar langpacklangpack00000000000000 邻国 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,发牌方式下面会讲到。 桌面排列区 五行五列,每个位置放一张牌。开始时每个位置发一张牌,点击发牌区时,空位右边的牌往左移,使得空位全部到最右边,然后发牌填充。 目标 移除所有牌。 规则 点击 K 可以移除它们,其他牌必须两个横、竖斜相邻,并且加起来等于十三才能消去。 选项 没有 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 先把桌面上面的牌移走,这样可以创造更多的移动机会。 usr/share/help-langpack/zh_CN/aisleriot/plait.xml0000644000373100047300000000457312307311651023722 0ustar langpacklangpack00000000000000 辫子 W. Borgert 编写 牌局 纸牌类型 两副牌 发牌区 从右边数第三列中间的牌垛,可以重发两次。 废牌区 从右边数第四列中间的牌垛,在发牌区的左边。 收牌区 右边的八个牌垛,开始时已放了一张基准牌,所有空位都是从这张牌开始收取。 辫子 桌面中间的一组牌,开始有20张牌,只有最上面的一张可以移动。 边牌 桌面上边和下边,在中间辫子左边和右边的四个位置,可以自动从辫子发牌过来。 桌面排列区 在辫子左右各四垛牌,在上下边牌的中间,每垛只能放一张牌。 目标 把所有的牌移到收牌区。 规则 八个收牌区都从一个相同的基准牌开始收牌,在开始的时候可以选择是递增还是递减排列,您可以从中间的“辫子”里收牌,也可以从两边的八垛牌,从四个边牌垛,或者从废牌区收牌。 如果没有移动的牌,发牌区也空了,这时游戏就会结束。 得分 没有得分,只有羸和输。 策略 尽量移走“辫子”里的牌,它们很难翻开,然后拿走桌面上排列区的牌,它们会提供一些空位,用来临时存储一些牌。 usr/share/help-langpack/zh_CN/aisleriot/labyrinth.xml0000644000373100047300000000373312307311651024602 0ustar langpacklangpack00000000000000 迷宫 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,桌面上发剩下的牌放在这儿。 收牌区 上边的四垛牌,A 已放在对应的收牌区位置上。 桌面排列区 在游戏开始时,桌面上每个空位已经放了一张牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按花色和顺序移到收牌区,出现的空位自动从发牌区填充。 一旦桌面上的八张牌不能移动,点击发牌区向桌面各个牌垛发一张牌。空位不再自动填充。 桌面上每垛牌的最上面和最下面的牌可以移动到收牌区,桌面上的牌互相不能移动,不能重复。 得分 每收取一张牌得一分。 可能得到的最高分是:48 策略 玩之前先好好睡一觉,这样您就能聪明并且警醒,尽量把牌移到收牌区,玩得开心! usr/share/help-langpack/zh_CN/aisleriot/clock.xml0000644000373100047300000000474212307311651023702 0ustar langpacklangpack00000000000000 钟表 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 桌面排列区 牌放成钟表的形状,十二垛牌每垛四张。 发牌区 最后四张放在发牌区(表的中央),最上面一张是翻开的。 目标 To reveal all the cards. 规则 把表中央的牌移到适当的位置,牌垛是钟表形的排列,因此牌按点数放在钟表上,A 放在一点,J 和 Q 放在十一点和十二点的位置。如果您从没见到过钟/表,可以参看下面的示意图: 表盘 K 放在中央,当一张牌移到新位置(或者停在原位,K 会停在原位),这个位置最下面的一张牌会放到中间去翻开,然后继续玩。要移动一张牌,可以拖拽过去,也可以在目的地位置上双击。 当中间四个 K 都翻出来,游戏就会结束,如果所有的牌都在正确位置上,就会羸。注意,即使这张牌没有翻开,只要在正确位置上就可以羸。 得分 每张在正确位置上的牌得一分(K 不算分,因为钟表上没有 K 的位置)。 可能得到的最高分是:48 策略 找一个自动完成游戏的方法,不过还没有决定是否要做,如果您输了,这不是您的错(相反,如果羸了,那么您真是好运气!)。 usr/share/help-langpack/zh_CN/aisleriot/forty_thieves.xml0000644000373100047300000000451212307311651025474 0ustar langpacklangpack00000000000000 四十大盗 由 Ed Sirett 编写 牌局 纸牌类型 两副牌 发牌区 左上角的一垛牌,放置桌面上发剩下的牌,每次往废牌区发一张牌,最上面的牌可以用在游戏中。 收牌区 右上角的八个空位,按花色从 A 到 K 收牌。 桌面排列区 十垛牌,开始时每垛四张牌,按花色移动,每次移动一张,空位可以放任何牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按花色递减排列,每次只能移动一张,空位可以放任何一张牌。作为一个小技巧,如果有足够的空位,一次可以移动多张牌。可以一次移动一组牌到收牌区。 发牌区每次发一张牌到废牌区,最上面的一张可以用在游戏中,不能重复。 收牌区按花色从 A 到 K 递增收牌,双击收牌区可以自动收牌,双击桌面或废牌区的一张牌可以把它移到收牌区,如果它是可以收取的话。 得分 每收取一张牌得5分,当收完一套花色(从 A 到 K),可以额外得到60分。 可能得到的是:1000 策略 尽可能地连续移动一垛牌,以便获得一个空位,然后保持二者平衡,以便解决在废牌区出现小点数的死牌。 usr/share/help-langpack/zh_CN/aisleriot/aunt_mary.xml0000644000373100047300000000560712307311651024607 0ustar langpacklangpack00000000000000 Aunt Mary 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,放置桌面上发剩下的牌。发牌每次翻一张到废牌区,可以重新发两次。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角有四个空位,按照从 A 到 K 的递增顺序收牌,最上面的牌还可以拿回到桌面上参与游戏。 桌面排列区 Six piles, deal card face up in first pile. Place one card face down on all other piles. Place one card face up on the first two piles then one card face down on all covered piles. Place three cards face up and the rest face down and so on. Repeat gradually revealing more cards each time until there are six rows with six cards. Tableau can be built down in alternating colors. Builds of cards can be moved. Empty piles can only be filled by Kings or group of cards starting with a King. 目标 把所有的牌移到收牌区。 规则 桌面上的牌可以按不同花色交替排列,排列好的一组牌可以一起移动。空位置仅能由 K 或 K 开始的一组来填充。 牌从发牌区逐个翻到废牌区中,最上面的一张可以放到桌面上,当发牌区空了,可以把废牌区的牌按原来顺序收回来重新发。您有三次重复机会。 收牌区按从 A 到 K 的顺序收牌,在收牌区里的牌仍然可以参与游戏。双击桌面上的一张牌可以把它移到收牌区,如果这张牌可以收取的话。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 Aunt Mary is extremely difficult and rarely solvable. The real challenge is not finishing but seeing how far you can get. usr/share/help-langpack/zh_CN/aisleriot/streets_and_alleys.xml0000644000373100047300000000350612307311651026470 0ustar langpacklangpack00000000000000 大街小巷 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 中间一列的四垛牌,从 A 到 K 收牌。收牌区最上面的牌还可以回到桌面参与游戏。 桌面排列区 八垛牌(四个在收牌区左边,四个在右边),所有牌翻开放在这儿,因为总共是八垛,所以左边四垛每垛七张,右边四垛每垛六张牌,所有牌都是可以看到的。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按递减顺序排列,不必按花色,每次只能移动一张牌,移出的空位可以放任何一张牌。 收牌区按花色递增收牌。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 尽可能移动到收牌区,桌面上留上一个空位。 usr/share/help-langpack/zh_CN/aisleriot/giant.xml0000644000373100047300000000557412307311651023715 0ustar langpacklangpack00000000000000 巨人 由 Ed Sirett 编写 牌局 纸牌类型 两副牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往桌面的牌垛上发一行牌,不能重复。 收牌区 右上角的牌垛,按花色从 A 到 K 递增收牌,收牌区最上面的牌还可以参与到游戏中。 桌面排列区 八垛牌,每垛上已经放了一张牌。 废牌区 在桌面牌垛的右边,开始为空,可以放任何一张牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按不同花色交替递减排列,每次可以移一张或一组牌,桌面上的空位可以放任何牌,有一个选项可以强制必须移动到相同花色的牌上,稍后会讲到。 每次从发牌区向桌面上发一行牌,保留区可以为空或者放任何牌。 收牌区按花色从 A 到 K 递增收牌,最上面的牌还可以参与到游戏中,双击一张牌可以把它移到相应的位置,如果它是可以移动的话。在收牌区中双击,将自动收取桌面上可以收的牌。 选项 有两种玩法,不同之处在于,如何排列桌面上的牌。 相同花色 移动牌必须放在相同花色的牌上,相同花色的牌构成一组。 交替花色 移动牌必须放在不同花色的牌上,上面的牌花色必须跟下面的不同。 得分 每收取一张牌得1分。 可能得到的最高分:104 策略 避免让小牌压在下面,可以多利用保留区。 usr/share/help-langpack/zh_CN/aisleriot/athena.xml0000644000373100047300000000604312307311651024043 0ustar langpacklangpack00000000000000 雅典娜 在 Jonathan Blandford 工作的基础上,由 Alan Horkan 编写。 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,放置桌面上发剩下的牌。发牌每次翻一张到废牌区,可以重新发两次。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角有四个空位,按照从 A 到 K 的递增顺序收牌,最上面的牌还可以拿回到桌面上参与游戏。 桌面排列区 七垛牌、四行,第一行扣着第二行翻开的,第三行扣着第四行是翻开的。本质上雅典娜跟空档接龙相同,只是翻开的层数不同。桌面上的牌可以按花色交替摆放,摆放的牌可以移动。空位只能由 K 或 K 开始的一组来填充。 目标 把所有的牌移到收牌区。 规则 桌面上的牌可以按不同花色交替排列,排列好的一组牌可以一起移动。空位置仅能由 K 或 K 开始的一组来填充。 牌从发牌区逐个翻到废牌区中,最上面的一张可以放到桌面上,当发牌区空了,可以把废牌区的牌按原来顺序收回来重新发。您有三次重复机会。 收牌区按从 A 到 K 的顺序收牌,在收牌区里的牌仍然可以参与游戏。双击桌面上的一张牌可以把它移到收牌区,如果这张牌可以收取的话。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 当游戏看似要结束时,别轻易放弃! 可以尝试各种方法。有时把收牌区的牌重新放回桌面,可以解开卡住的牌。 usr/share/help-langpack/zh_CN/aisleriot/thirteen.xml0000644000373100047300000000405012307311651024421 0ustar langpacklangpack00000000000000 十三 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,不能重复。 废牌区 放置发牌区的牌,最上面的牌可用于游戏。 桌面排列区 七垛扣着的牌,最上面一行一张,然后每一行比上一行多一张排成金字塔形,最下边一行翻开。 目标 移除所有牌。 规则 金字塔上所有没被压住的牌都可以参与游戏,K 可以单独移走,其他牌必须两两相加等于13才能移除,A 等于1,J 等于 11,Q 等于12。 发牌区每次发一张牌到废牌区。最上面的牌可用于游戏,可以和金字塔中的牌组合,也可以和它自己下面的牌组合。不能重复发牌。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 每个金字塔都要一个坚实的基础,首先对付小牌,注意着尽量多翻开一些牌。 usr/share/help-langpack/zh_CN/aisleriot/monte_carlo.xml0000644000373100047300000000362012307311651025103 0ustar langpacklangpack00000000000000 蒙特卡罗 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,桌面上发牌剩下的放在这儿,每次往废牌区发一张牌,不能重复。当桌面上出现空位时发牌。 桌面排列区 五行五列,每个位置放一张牌,开始每个空位放一张牌,点击发牌区时,空位右边的牌往左移,使得空位全部到最右边,然后发牌填充。 目标 移除所有牌。 规则 相同的两张牌横着、竖着、斜着相邻,就可以点击消去。 桌面上出现空位后,点发牌区会把空位后面的牌往前移,让空位全部到最后,然后往空位里发牌。 得分 每消去一对牌得两分。 可能得到的最高分是:52 策略 注意发牌时,桌面上的牌会收缩成什么样,有时让一对牌留着发牌,会创造出更多的对牌。 usr/share/help-langpack/zh_CN/aisleriot/canfield.xml0000644000373100047300000000547212307311651024355 0ustar langpacklangpack00000000000000 甘菲德 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,桌面上发剩下的牌放在这儿,每次发三张翻开的牌,可以重复发牌。 废牌区 在发牌区的右边,放置发牌区过来的牌。最上面的牌可以用在游戏中。 废牌区 在发牌区的下边,有十三牌,最上面的牌是翻开的,可以移到收牌区或桌面上。 桌面排列区 在收牌区下面的四垛牌,每个上面有一张翻开的牌,按不同颜色交替递减排列,一组牌可以一起移动。 收牌区 右上角的四个空位,里面放了一张基准牌,按花色从基准牌开始递增收取。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按花色交替排列,一次可以移动一组牌,移出的空位会被废牌区的牌自动填充,如果废牌区为空,可以放任意一张或一组牌。 发牌区每次向废牌区发三张牌,如果最后发牌不够三张,只发余下的几张,如果发牌区为空,则把废牌区的牌全部移回来,按原来的顺序。 收牌区按基准牌递增收取(在第一个位置上已经放了一张牌),其他位置也以这张牌为基准收牌,A 放在 K 上,二放在 A 上,收牌区的牌还可以用在游戏中,双击一张牌可以把它移到收牌区,如果它是可以收取的话。 得分 每收取一张牌得一分,这个游戏曾经用在赌场里,得到10分就可以羸。 可能得到的最高分是:52 策略 拿到手上的才是最真实的,这个游戏很难羸。绝大多数人只是玩游戏,尝试获取更多点。为此,则需要尽可能把牌移到收牌区。 usr/share/help-langpack/zh_CN/aisleriot/whitehead.xml0000644000373100047300000000457512307311651024555 0ustar langpacklangpack00000000000000 白头 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,桌面上发剩下的牌放在这儿,每次往废牌区发一张牌,不能重复。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角有四个空位,按照从 A 到 K 的递增顺序收牌,最上面的牌还可以拿回到桌面上参与游戏。 桌面排列区 七垛牌,所有的牌都是翻开的,第一垛一张牌,第二垛两张牌,最后一垛七张牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按相同颜色递减排列,排列好的一组可以一起移动,空位可以填充任意一张牌或一组牌。 每次从发牌区发一张牌到废牌区,最上面的牌可以用在游戏中,不能重复发牌。 收牌区按从 A 到 K 的顺序收牌,在收牌区里的牌仍然可以参与游戏。双击桌面上的一张牌可以把它移到收牌区,如果这张牌可以收取的话。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 这个游戏中,桌面上的空位可以获得奖励品的,尽量多保留一段时间,直到您需要它们,这是一个好的策略。 usr/share/help-langpack/zh_CN/aisleriot/jamestown.xml0000644000373100047300000000275512307311651024620 0ustar langpacklangpack00000000000000 詹姆斯顿 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的一垛牌,开始时所有牌都放在这里。 桌面排列区 九张牌按3×3排列,桌面上的牌只能看到最上面一张。 目标 移除所有牌。 规则 移除点数相同的两张牌,空位自动从发牌区发牌。 得分 每移出一对牌得两分。 可能得到的最高分是:52 策略 尽可能地多移除牌,这是唯一的挑战。 usr/share/help-langpack/zh_CN/aisleriot/cover.xml0000644000373100047300000000325112307311651023717 0ustar langpacklangpack00000000000000 封面 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,发牌后剩余的放在这里。 桌面排列区 四垛牌,游戏开始时每个位置放一张牌,出现空位会立即从发牌区移过来一张牌。 目标 把发牌区所有牌都发出去。 规则 桌面上任意两张相同花色的牌就可以消去,空位立即会发牌填充,当桌面上出现四种不同花色无法消去时,游戏结束。 得分 每消去一对牌得两分。 可能得到的最高分是:48 策略 这是一个简单的游戏,不需多费脑筋,适合不想动脑又能快速反应的情况。 usr/share/help-langpack/zh_CN/aisleriot/osmosis.xml0000644000373100047300000000467012307311651024303 0ustar langpacklangpack00000000000000 渗透 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 保留区 左边四垛牌,每垛放三张扣着的牌和一张翻开的牌,不能进行相互移动。 收牌区 右边的四垛牌,第一个空位里放了一张牌。 发牌区 所有剩余的牌放在这儿,每次往废牌区发一张牌,可以重复两次。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 目标 把所有的牌移到收牌区。 规则 所有与收牌区第一个牌花色相同的牌可以放在这里,不需要按顺序,其他空位也必须按第一个基准牌的点数开始收牌。开始后,后面的收牌区位置只能按照第一个位置的牌来收取,从保留区移动牌也遵守这个规则。 牌从发牌区逐个翻到废牌区中,最上面的一张可以放到桌面上,当发牌区空了,可以把废牌区的牌按原来顺序收回来重新发。您有三次重复机会。 选项 发三张牌:每次从收牌区往废牌区发三张牌,不限制发牌次数。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 这是个没有巧合的游戏,也叫“耐心游戏”,不能自动往第二个(或第三个)收牌区收牌,有时可以使用不同顺序来从保留区移出更多牌。 usr/share/help-langpack/zh_CN/aisleriot/freecell.xml0000644000373100047300000000421712307311651024365 0ustar langpacklangpack00000000000000 空当接龙 Changwoo Ryu 编写 牌局 纸牌类型 标准纸牌 保留区 最上面一行左边的四个垛,每个空位只能放一张牌。 收牌区 右上角的四垛,按花色从 A 到 K 递增收牌,收牌区的牌不能再用于游戏中。 桌面排列区 八垛牌,牌面都是翻开的,前面四垛是七张牌,后面四垛是六张牌。桌面上的牌按花色交替排列,每次只能移动一张,但是如果保留区有足够空位,一次可以移动多张。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按不同花色交替递减排列,如果保留区有足够空位,一次可以移动一组牌,桌面上的空位可以填充任何一张牌或一组牌。 收牌区按花色从 A 到 K 递增收牌,里面的牌不能再用于游戏,双击一张牌可以把它移到对应的位置,如果它是可以收取的话。 保留区的牌可以用在游戏中,也可以移动到收牌区。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 空位很有用处,如果可能多留几个空位。 usr/share/help-langpack/zh_CN/aisleriot/escalator.xml0000644000373100047300000000357212307311651024564 0ustar langpacklangpack00000000000000 自动扶梯 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,桌面上发牌剩下的放在这儿,每次往废牌区发一张牌,不能重复。 废牌区 放置发牌区发过来的牌。 桌面排列区 七行交错压着的牌,最上面一行一张,然后每一行比上一行多一张牌,排列成一个金字塔形。 目标 把所有牌移到废牌区。 规则 金字塔里所有没被压着的牌都可以参与游戏,只要点数比废牌区的牌大一点或小一点,都可以移到废牌区,A 在 K 上面,在二的下面。 收牌区每次往废牌区发一张牌,不能重复。 得分 从桌面上移除一张牌得一分。 可能得到的最高分是:28 策略 提前做好计划,这样将来会很方便。 usr/share/help-langpack/zh_CN/aisleriot/carpet.xml0000644000373100047300000000431712307311651024063 0ustar langpacklangpack00000000000000 地毯 Vincent Povirk 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,发牌后剩下的牌放在这里,每次往废牌区发一张牌,不能重复。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角的四个空位,按花色从 A 到 K 递增收牌。在发牌前 A 已经放入收牌区了。 桌面排列区 就是“地毯”,四行五列牌全部翻开,桌面上的牌可以参与到游戏中,但不能移动牌,出现的空位会自动从废牌区或发牌区移一张过来。 目标 把所有的牌移到收牌区。 规则 游戏中桌面上的牌。 每次从发牌区发一张牌到废牌区,最上面的牌可以用在游戏中,不能重复发牌。 收牌区按从 A 到 K 的顺序收牌,在收牌区里的牌仍然可以参与游戏。双击桌面上的一张牌可以把它移到收牌区,如果这张牌可以收取的话。 得分 每收取一张牌得一分。 可能得到的最高分是:48 策略 尽可能多地收牌。 usr/share/help-langpack/zh_CN/aisleriot/first_law.xml0000644000373100047300000000404412307311651024574 0ustar langpacklangpack00000000000000 第一个法律 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,开始所有牌都放在这里,如果为空,就把桌面上的牌全部收回来。 桌面排列区 右边的四垛牌,发牌区每次往每垛上各发一张牌。 目标 移除所有牌。 规则 点击发牌区会往桌面上的四垛牌上各发一张,如果四张牌里有两张是相同的,可以把右边的移到左边这张上面。空位只能由发牌区发牌填充。 不管是多少点数,只要四张牌是相同的,就可以全部移除。 当发牌区空了以后,桌面上的牌重新收成一垛,右边的压着左边的放回发牌区。第一张发的牌总是第一次发,直到它被移除,重复发牌没有次数限制。 得分 每移除四张相同的一组得一分。 可能得到的最高分是:13 策略 请记住适可而止!这个游戏可能永远不会终止,除非您仔细地研究每一次移动。 usr/share/help-langpack/zh_CN/aisleriot/helsinki.xml0000644000373100047300000000314212307311651024406 0ustar langpacklangpack00000000000000 赫尔辛基 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,无论何时桌面上出现空位时,都会自动发牌。 桌面排列区 十垛牌,每垛牌上放一张翻开的牌。 目标 移除所有牌。 规则 若两张牌加起来为十三就可以消去,A 算一,J 是 十一,Q 是十二,K 自己就可以消去。 空位会自动从发牌区发牌。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 尽可能地前进。 usr/share/help-langpack/zh_CN/aisleriot/fortress.xml0000644000373100047300000000356512307311651024460 0ustar langpacklangpack00000000000000 要塞 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 中间的四个空位,按花色从 A 到 K 收牌,收牌区的牌不能再参与到游戏中。 桌面排列区 在收牌区的两边的五垛牌,牌面都是翻开的,最上边的两垛里各多一张牌。每垛里最上面的一张牌可以用在游戏中。 目标 把所有的牌都移到收牌区。 规则 桌面上的牌可以按花色递增或递减排列,每垛牌中只有最上面的一张可以移动。空位可以放任何一张可用的牌。 收牌区按花色从 A 到 K 递增收牌,收牌区中的牌不能再参与到游戏中。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 作为安全措施,您可以在桌面上创建一些空位,这是赢得游戏的一把钥匙。 usr/share/help-langpack/zh_CN/aisleriot/scorpion.xml0000644000373100047300000000366512307311651024446 0ustar langpacklangpack00000000000000 黑心人 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,发牌后剩下的三张放在这里。 桌面排列区 发牌区右边的七垛牌。前面四垛各发一张扣着的牌,后面三垛各放一张翻开的牌,再重复两次,也就是这样发三次,然后从第四行开始都发翻开的牌。 目标 创建四垛牌,每垛包含相同花色按顺序排列的13张牌, 规则 桌面上的牌按花色递减排列,可以移一垛牌不考虑顺序,空位可以放 K 或 K 开头的一组牌。 另外一点,点击发牌区会发出最后三张牌,放在开头的三垛牌里。 得分 按花色排好的牌,得分为:排序的牌张数 - 1。每排好一种花色的13张牌,可以得到额外4分奖励,翻开一张扣着的牌得3分。 可能得到的最高分是:100 策略 解开一个结通常都比较困难,避免把自己弄成一团乱麻。 usr/share/help-langpack/zh_CN/aisleriot/easthaven.xml0000644000373100047300000000422712307311651024563 0ustar langpacklangpack00000000000000 东港 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的一垛牌,放置桌面上发剩下的牌。 收牌区 右上角的四个牌垛,按花色从 A 到 K 递增收牌。 桌面排列区 底下的七垛牌,每垛牌两张扣住,一张翻开。 目标 移除所有牌。 规则 桌面上的牌按花色交替递减排列,按顺序花色排好的一组可以一起移动,空位可以放 K,或者是以 K 开头的一组牌。 如果可能的话,在发更多牌之前,所有空位必须填满。点击发牌区会向桌面每一垛牌放一张翻开的牌,放在原来三张的上面,不能重复发牌。 收牌区按花色从 A 到 K 依次递增收牌,收牌区的牌不能再参与游戏中。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 尽可能地把牌移到收牌区,因为下一轮发牌会压住它,当然由于收牌区的牌不能再用于游戏,您可以根据需要稍后收取,希望这是您今天遇到的最大难题。 usr/share/help-langpack/zh_CN/aisleriot/spider.xml0000644000373100047300000000663412307311651024077 0ustar langpacklangpack00000000000000 蜘蛛纸牌 由 Jonathan Blandford 编写 牌局 纸牌类型 两副牌 发牌区 左上角的一垛牌,放置桌面上发剩下的牌,点击向每个牌垛发一张牌。 收牌区 上面的八个牌垛,只能放从 K 到 A 递减顺序排好的一组牌。 桌面排列区 十垛牌,四垛(第1、4、7、10垛)放五张扣着的牌和一张翻开的牌,其他牌垛放四张扣着和一张翻开的牌。桌面上的牌递减排列不需考虑花色,排好的一组可以一起移动,空位可以填充任何牌或一组牌。 目标 收牌区八个空位分别是从 K 到 A 顺序的八组牌。 如果您想试试非常难的挑战,不把牌移到收牌区,而是在桌面上排出八组相同顺序的牌垛。它之所以难的原因在于没有多少可用的空位。实事上,这几乎是不可能的。 规则 递减排列不考虑花色,排列好的牌可以一起移动,空垛可以放任何牌或一组牌。 点击发牌区会往每一垛上发一张牌。但是,所有牌垛上都要有牌,如果有空垛,会显示一条错误信息。 从 K 到 A 递减排列的一组牌可以移到收牌区。一旦移过去,这些牌将不能在参与游戏。 选项 有三种可能的牌面,每副牌有104张。 单花色 这副牌只有黑桃,这是最简单的蜘蛛纸牌,也是学习基本技能的好方法。 双花色 这副牌里有红心和黑桃,每个花色都有四张相同的牌,跟标准全花色相比不算太难。 全花色 这是标准的两副牌,每种花色都有两套完整的牌,这是标准蜘蛛纸牌,也是最难的。 许多传统的蜘蛛纸牌不要收牌区,直接把排好的牌移走,这对游戏也没有什么影响。 得分 每个排好序的牌垛,得分是:牌的数量 - 1 可能得到的最高分是:96 策略 如果开始您没有成功,也不必强求。只要有可能就排序,多翻开扣着的牌。 usr/share/help-langpack/zh_CN/aisleriot/backbone.xml0000644000373100047300000000523512307311651024351 0ustar langpacklangpack00000000000000 硬骨头 Vincent Povirk 编写 牌局 纸牌类型 两副牌 发牌区 在收牌区的左下边有一垛牌,是桌面发完牌剩下的放在这儿,每次可以翻出一张放到废牌区,只能重复发一次。 废牌区 每次从牌垛中发出一张,最上面的可以用到游戏中。 收牌区 右上边有八个空位,从 A 到 K 依次收牌。 废牌区 中间有两排是9张,最下面被一张压着。没被压着的牌可以放在其他牌上,但不能放在空位置里。 桌面排列区 在两边还各有四张翻开的牌,游戏开始后可以放在其他任何位置,按花色递减排序。也可以放在空位置上,每次只能移动一张牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按花色递减排序,每次只能移动一张牌。除了保留区的牌,空的位置可以放其他任何牌。 发牌区里的牌逐个发往废牌区,最上面的可以用在游戏中,牌垛发空后,废牌可以按原顺序重回到发牌区中,您只能重发两次牌。 收牌区按从 A 到 K 的递增顺序收牌,收回来的牌不能再用在牌局中,双击一张牌可以直接移到收牌区,如果这张牌可以收取的话。 得分 每收取一张牌得1分。 可能得到的最高分:104 策略 您可以使用桌面上的空位置放置多张牌,但要小心保留区的 K,因为只有一种方法能移动它:把它移到收牌区的 Q 上。 usr/share/help-langpack/zh_CN/aisleriot/scuffle.xml0000644000373100047300000000413712307311651024234 0ustar langpacklangpack00000000000000 混战 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,除了 A 以外,其他所有牌都放在这儿,点击发牌区每次往废牌区发一张牌。 收牌区 右上角有四个空位,每个空位在开始时都放有一个 A,收牌区只考虑点数不管花色。 保留区 收牌区下面的四个空位,每次点一下发牌区,每个空位上放一张牌,最上面的牌可以移到收牌区,废牌区的牌只能移到收牌区。 目标 把所有的牌移到收牌区。 规则 点击发牌区往保留区发四张翻开的牌,如果可能,可以把牌再移到收牌区,重复这个过程直到发牌区没有牌,并且也不再能往收牌区移动。 把所有牌发到保留区并且重新排列,再把牌收回发牌区重新发牌,可以重复两次。 得分 每收取一张牌得一分。 可能得到的最高分是:48 策略 试着留心保留区压在下面的牌,当出现机会时,您可以由此决定移动哪一张牌。 usr/share/help-langpack/zh_CN/aisleriot/sir_tommy.xml0000644000373100047300000000403012307311651024617 0ustar langpacklangpack00000000000000 汤米爵士 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的一垛牌,放置桌面上发剩下的牌,每次往废牌区发一张牌。 废牌区 发牌区右边的牌垛,只能存放一张牌,里面的牌必须立刻移到收牌区或者放到保留区。 收牌区 废牌区右边的四垛牌,按顺序从 A 到 K 收牌,不必考虑花色。 保留区 收牌区下面的四垛牌,保留区的牌只能移到收牌区。 目标 把所有的牌移到收牌区 规则 收牌区按顺序从 A 到 K 收牌,不考虑花色,里面的牌不能再参与游戏,每次发牌区向废牌区发一张牌,废牌区只能放一张牌,这张牌要立刻移到收牌区或者保留区,保留区的牌不能再重新排列。 得分 每移动一张牌到收牌区得一分。 可能得到的最高分是:52 策略 在保留区中尽量不要让大牌压着小牌。 usr/share/help-langpack/zh_CN/aisleriot/thumb_and_pouch.xml0000644000373100047300000000515512307311651025745 0ustar langpacklangpack00000000000000 拇指和钱袋 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,放置桌面上发剩下的牌。发牌每次翻一张到废牌区,可以重新发两次。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角有四个空位,按照从 A 到 K 的递增顺序收牌,最上面的牌还可以拿回到桌面上参与游戏。 桌面排列区 七垛牌,第一垛的牌翻开,其他都放一张扣着的牌,再在第二垛放一张翻开的牌,其他牌垛放一张扣着的,重复这个操作直到最后一垛有七张牌。桌面上的牌除了不能放自己的花色外,可以按递减顺序排列。一组牌可以一起移动,空位可以放任何牌或牌序。 目标 把所有的牌移到收牌区。 规则 桌面上的牌除了不能放自己的花色外,可以按递减顺序排列。一组牌可以一起移动,空位可以放任何牌或牌序。 牌垛里的牌逐个发往废牌区,最上面的可以用在游戏中,牌垛发空后,废牌可以按原顺序重回到牌垛中,您可以发三次牌。 收牌区按从 A 到 K 的顺序收牌,在收牌区里的牌仍然可以参与游戏。双击桌面上的一张牌可以把它移到收牌区,如果这张牌可以收取的话。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 蛮干未必总是有效,但这种情况下可能会吧。 usr/share/help-langpack/zh_CN/aisleriot/block_ten.xml0000644000373100047300000000315712307311651024546 0ustar langpacklangpack00000000000000 拦截十 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的一垛牌,开始时所有牌都放在这里。 桌面排列区 九张牌按3×3排列,桌面上的牌只能看到最上面一张。 目标 移除所有牌。 规则 两张牌加起来等于十,就可以点击消除。J、Q、K 按成对移出,十不能移走,所有的空位自动由发牌区发牌填充。 得分 每移出一对牌得两分。 可能得到的最高分是:48 策略 这个是单纯的运气游戏,当然,一些复杂的策略可能会增加您的好运。 usr/share/help-langpack/zh_CN/aisleriot/gay_gordons.xml0000644000373100047300000000317712307311651025123 0ustar langpacklangpack00000000000000 快乐戈登 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 废牌区 左上角的牌垛,两张翻开的牌,最上面的牌可以用于游戏,不能重新填充或者增加牌。 桌面排列区 十垛牌,每垛有五张翻开的牌,最上面的牌可以用在游戏中,空位不能填充。 目标 移除所有牌。 规则 所有加起来等于十一的两张牌可以消除,K 和 Q 算一对,J 和另外的 J 成一对。 得分 每消去一对牌得两分。 可能得到的最高分是:52 策略 如果对牌在底下压着,那么就试着先把上面这张移走。 usr/share/help-langpack/zh_CN/aisleriot/klondike.xml0000644000373100047300000001001712307311651024377 0ustar langpacklangpack00000000000000 克朗代克 由 Jonathan Blandford 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,放置桌面上发剩下的牌。发牌每次翻一张到废牌区,可以重新发两次。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角有四个空位,按照从 A 到 K 的递增顺序收牌,最上面的牌还可以拿回到桌面上参与游戏。 桌面排列区 七垛牌,第一垛发一张牌面朝上的,再在后面所有垛上放一张扣着的牌;然后在第二垛放一张翻开的牌,后面所有垛放一张扣着的牌;重复直到最后一垛牌是七张。桌面上的牌可以按不同花色交替递减排列,一组牌可以一起移动,出现的空位只能由 K 或 K 开头的一组牌填充。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按不同花色交替递减排列,排列好的可以一起移动,空位可以放 K 或 K 开头的一组牌。 牌从发牌区逐个翻到废牌区中,最上面的一张可以放到桌面上,当发牌区空了,可以把废牌区的牌按原来顺序收回来重新发。您有三次重复机会。 收牌区按从 A 到 K 的顺序收牌,在收牌区里的牌仍然可以参与游戏。双击桌面上的一张牌可以把它移到收牌区,如果这张牌可以收取的话。 双击收牌区中的一张牌,所有可收取的牌都会移到收牌区,这在游戏最后清场的时候非常有用。 选项 有三种可能的玩法,不同之处在于发牌区如何发牌。 发三张 一次从发牌区发三张牌,重复次数不限。 发一张 一次从发牌区发一张牌,但是只能重复两次。 不重发 一次从发牌区发一张牌,不能重复。如果您想玩比赛(和受挫折),可以试试这种玩法。 Unlimited redeals Cards are dealt one at a time from the stock. There is no limit to how many times you can redeal the stock. 您可能比较喜欢前面两种传统玩法——取决于您住哪儿和谁教的,不重发选项在一些老的规则中设置,但游戏很少使用那种玩法了。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 当游戏看似要结束时,别轻易放弃! 可以尝试各种方法。有时把收牌区的牌重新放回桌面,可以解开卡住的牌。 usr/share/help-langpack/zh_CN/aisleriot/yield.xml0000644000373100047300000000416012307311651023707 0ustar langpacklangpack00000000000000 屈服 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,不能重复。 废牌区 放置发牌区过来的牌,最上面和最下面的牌可用于游戏。 桌面排列区 所有牌都是翻开的,摆成七行相互交叠,第一行七张牌,然后每行减一张牌,摆成一个倒的金字塔形。 目标 移除所有牌。 规则 金字塔中没有被压着的牌都能参与到游戏中,K 可以单独移走,其他牌两两相加为13可以消去,A 等于1,J 等于 11,Q 等于12。 发牌区每次发一张牌到废牌区。最上面和最下面的牌可用于游戏,可以和金字塔中的牌组合,也可以和它自己的牌组合,废牌区最上面的牌可以和下一张组合。不能重复发牌。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 把倒金字塔最底下的牌移走是很困难的。摆好后,有时先移除废牌区比移倒金字塔的牌更好,因为那儿有更多的牌。 usr/share/help-langpack/zh_CN/aisleriot/hopscotch.xml0000644000373100047300000000475112307311651024601 0ustar langpacklangpack00000000000000 跳房子 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角牌垛,开始时除了四个 A 以外,其他的牌都在这儿,每次往废牌区发一张牌。 废牌区 在发牌区的右边,每次只能放一张牌,牌必须立刻移动收牌区或放到保留区牌垛上。 收牌区 最上面的四垛牌,在发牌区的右边,提前已经放了一张 A 在里面,第二垛放的是2,第三垛放的是3,第四垛放的是4。第一垛从 A 开始收牌,第二垛从2开始收牌,第三垛从3开始收牌,第四垛从4开始收牌,当点数超过13后,再从 A 循环,收牌区里的牌不再参与游戏,不区分花色。 废牌区 收牌区下面的四垛牌,保留区的牌只能移到收牌区。从废牌区发过来的牌可以放在任何一垛上。 目标 把所有的牌都移到收牌区。 规则 收牌区收牌按1、2、3、4为基准,下一张再加上各自的基准点数依次递增,发牌区每次往废牌区发一张牌,但是,废牌区只能放一张牌,这张牌要立即移到收牌区,或者放入保留区,保留区的牌不能再相互移动。 得分 每移动一张牌到收牌区得一分。 可能得到的最高分是:48 策略 游戏中充分运用您的技巧,这儿运气靠得不多,不要压着一会要用的牌,可以考虑留上一列放 K(因为它们是每垛牌的最后一张)。 usr/share/help-langpack/zh_CN/aisleriot/peek.xml0000644000373100047300000000450012307311651023523 0ustar langpacklangpack00000000000000 皮克 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 保留区 左边四垛展开的牌,每垛有四张翻开的牌,不能相互移动。 收牌区 右边的四垛牌,第一个空位里放了一张牌。 发牌区 所有剩余的牌放在这儿,每次往废牌区发一张牌,可以重复两次。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 目标 把所有的牌移到收牌区。 规则 所有与收牌区第一个牌花色相同的牌可以放在这里,不需要按顺序,其他空位也必须按第一个基准牌的点数开始收牌。开始后,后面的收牌区位置只能按照第一个位置的牌来收取,从保留区移动牌也遵守这个规则。 牌从发牌区逐个翻到废牌区中,最上面的一张可以放到桌面上,当发牌区空了,可以把废牌区的牌按原来顺序收回来重新发。您有三次重复机会。 选项 发三张牌:每次从收牌区往废牌区发三张牌,不限制发牌次数。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 保留区的牌可以看到,所以请选择一个恰当的排列顺序。 usr/share/help-langpack/zh_CN/aisleriot/eagle-wing.xml0000644000373100047300000000616012307311651024622 0ustar langpacklangpack00000000000000 鹰翼 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的一垛牌,放置桌面上发剩下的牌,每次往废牌区发一张牌,可以重复两次。 废牌区 在发牌区的右边,放置发牌区过来的牌。最上面的牌可以用在游戏中。 收牌区 右上角的四垛牌,游戏开始时已经放了一张牌,这个是基准牌,其他空位也必须从按这张牌的点数开始收牌,按花色的递增顺序收牌。 废牌区 中间(最低的)位置,发十三张牌扣在这儿,用来填充桌面上其他出现的空位。当保留区只有一张牌时,就会翻开可以移到收牌区或桌面其他位置。 桌面排列区 八个空位(左右各四个),各放一张翻开的牌。桌面上的牌按花色递减排列,每次可以移动一张,或者把一组牌移到收牌区。桌面上的空位最多可以放三张牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按花色递减排列,每次只能移动一张到其他位置。然而,为了简便,可以将一组牌一次移到收牌区,空出的位置自动从保留区填充牌,如果保留区也空了,就从废牌区或从其他牌垛填充牌。 保留区主要是往桌面的空位里发牌,但是如果里面只剩一张牌,它就变得可见,并且可以用在游戏中。 发牌区每次往废牌区发一张牌,当发牌区为空时,会把废牌区所有的牌按原来顺序都收回来,可以重复发牌三次。 收牌区按花色从基准牌(第一个位置里的牌)递增收牌,其他空位也要从这个点数开始收牌,A 放在 K 的上面,二放在 A 的上面,收牌区里的牌不能再用到游戏中。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 小的筹划可以走更远,移动之前先检查一下,记住每个空位只能放三张牌的规则。 usr/share/help-langpack/zh_CN/aisleriot/gaps.xml0000644000373100047300000000423412307311651023535 0ustar langpacklangpack00000000000000 缝隙 Zach Keene 编写 牌局 纸牌类型 标准纸牌 发牌区 所有的牌都放在四行中,每行13张牌,A 被丢弃,剩下四个空位,可以重发两次牌。 目标 把所有的牌按花色从2到 K 排列。 规则 最左边一列的空位可以放任意一张2,最右边的空位可以放任意一张非 K 的牌,需要是跟它左边相同花色,但是大一点数的牌。K 后面的空位不能放牌,空位后面的空位也不能放牌。 如果一行牌是从2开头的连续牌,就不能再移动它们了。 如果没有可移动的牌(比如,所有的空位都在 K 的后面),此时双击任意一张牌来重新发牌,所有没排序的牌都会拿走重新发牌,只能重发两次。 选项 重发时随机放置空位:选中此项,在重发时随机放置四个空位,如果没有选中,所有空位直接放在已排好序的右边。 得分 如果是2开头的一行,每张牌按顺序排列将得1分。 可能得到的最高分是:48 策略 移动出空位时,尽量不要让空位出现在 K 的后面。 usr/share/help-langpack/zh_CN/aisleriot/fortunes.xml0000644000373100047300000000334312307311651024450 0ustar langpacklangpack00000000000000 财富 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,点击后向桌面上的每个牌垛里发一张牌。 桌面排列区 右边四垛牌。可以将一组牌移到空位中。 目标 除了 A 以外,移除其他所有的牌。 规则 A 是最大的牌。当两张相同花色的牌可用时,小牌可以移动,当出现一个空位时,可以填充排列好的一组牌。 得分 每收取一张牌得1分。 可能得到的最高分是:48 策略 当有排好的一组牌时,没有理由放着一个空位。但是,如果有了一个空位,尽量让它空得时间长一些,这样可以为后面的死牌留一手。 usr/share/help-langpack/zh_CN/aisleriot/diamond_mine.xml0000644000373100047300000000401312307311651025221 0ustar langpacklangpack00000000000000 钻石矿 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 最上面的牌垛,从任意一张方块开始收牌。 桌面排列区 十三垛牌,每垛牌中三张朝下、一张翻开。 目标 把所有的方块都移到收牌区,桌面上的其他牌按花色,A 在最下面依次排列。 规则 除了方块以外的其他牌可以递减排列,并且不用考虑花色。整个一组也可以移动,空位置除了方块以外,可以放其他任何单牌或一组牌。 方块除了收取外不能移动,收牌区按顺序收取,可以从任何一张开始收。 得分 每收取一张牌,得分为该牌的点数,A 是一分,J 是十一分,Q 是十二分,K 是十三分。 桌面上的每个从 A 到 K 按花色排列的牌得三分。 可能得到的最高分是:100 策略 收集方块是个艰苦的工作,注意各个方块的价值是不同的,不要忘了清理并且把相同的花色放在一起。 usr/share/help-langpack/zh_CN/aisleriot/legal.xml0000644000373100047300000000711512307311651023670 0ustar langpacklangpack00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. usr/share/help-langpack/zh_CN/aisleriot/westhaven.xml0000644000373100047300000000414012307311651024603 0ustar langpacklangpack00000000000000 西港 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,不能重复。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 最上面一行的四垛牌,按花色从 A 到 K 递增收牌。 桌面排列区 十垛牌,每垛三张,最后一行的牌是翻开的。 目标 把所有的牌都移到收牌区。 规则 桌面上的牌按不同花色交替递减排列,每垛牌最上面的或翻开的一张可用于游戏,空垛可以填充任何一张牌或一组牌。 收牌区按花色从 A 到 K 递增收牌,里面的牌不能再参与到游戏中。 发牌区每次往废牌区发一张牌,废牌区最上面的牌可以用于游戏中,不能重复。 得分 收牌区每收取一张牌得一分。 可能得到的最高分是:52 策略 小心这是真的赌博游戏之一,真正的有危险,尽量地移动,您会有机会的。 usr/share/help-langpack/zh_CN/aisleriot/spiderette.xml0000644000373100047300000000421412307311651024751 0ustar langpacklangpack00000000000000 蜘蛛纸牌(一副) Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,点击后向桌面上的每个牌垛里发一张牌。 收牌区 右上角的四垛牌。 桌面排列区 下边七垛牌,先在七垛上发一张扣着的,然后在后六垛上发一张扣着的,再在后五垛上发一张,这样一直发到最后一垛是七张牌,把每一垛最上面一张翻开。 目标 创建四个每垛13张按花色递减顺序排列的牌垛。 规则 桌面上的牌按递减顺序排列,不考虑花色,按顺序排好的一组可以一起移动,空位可以放任何牌或一组牌。 发牌时桌面上每一垛都要有牌,除了最后一次发牌之外,点击发牌区后给每一垛放一张牌。 按花色排列好的十三张牌可以移到收牌区,放进去后不能再参与到游戏中。 得分 按顺序排好一张得一分。 可能得到的最高分是:48 策略 尽可能在桌面上保留一个空位,用于移动牌时的交换空间。 usr/share/help-langpack/zh_CN/aisleriot/accordion.xml0000644000373100047300000000360112307311651024541 0ustar langpacklangpack00000000000000 手风琴 由 Ed Sirett 编写 牌局 纸牌类型 标准纸牌 桌面排列区 桌面有五十四个位置,上面五行每行放九张牌,最后一行放七张牌。每个位置放一张翻开的牌,所有的牌连成一行,牌面都可以看到。最右边的位置跟下一行最左边的位置连在一起。 目标 把全部的牌收成一垛。 规则 牌一个接一个地移动,所有的牌都可以移到它左边相同花色,或者相隔二个空位的相同花色牌上。这张牌盖在原来那张上面,而出现的空缺会被右边的牌填充。双击一张牌可以使它移动到左边去,如果这张牌可以移动的话。 得分 每移动一张牌得1分。 可能得到的最高分是:51 策略 这个游戏有一定难度,需要在一行里找到两张或三张相同花色的牌,尽量不要分开相同花色的牌。最后您就可以把它们相互移动直到获胜。 usr/share/help-langpack/zh_CN/aisleriot/eliminator.xml0000644000373100047300000000344612307311651024752 0ustar langpacklangpack00000000000000 Eliminator Written by Wa (logicplace.com) 牌局 纸牌类型 标准纸牌 桌面排列区 Four piles. Deal 13 cards to each. (This is all of the cards.) 收牌区 Four to six empty slots that you build in either direction. 目标 Move all cards to Foundation. 规则 Any card can be placed as the first card in the Foundation. Foundation piles can be built up or down from the top card's value, disregarding suit. Kings can be placed on Aces and vice versa. 得分 Every card moved from the Tableau on top of a card in the Foundation scores one point. 可能得到的最高分是:51 策略 Make sure to look at all the cards coming up, and be sure you're not going to lock any cards that are necessary to move the one on top. usr/share/help-langpack/zh_CN/aisleriot/kings_audience.xml0000644000373100047300000000476612307311652025566 0ustar langpacklangpack00000000000000 国王会议 Zach Keene 编写 牌局 纸牌类型 标准纸牌 保留区(接待室) 外面一圈排成方形的十六张牌,保留区的牌可用于游戏中,可以从废牌区(或者如果为空,可从发牌区填充)。 发牌区 中间一行左边的牌垛,每次往废牌区发一张,不能重复。 废牌区 发牌区右边的空位,最上面的牌可用于游戏中。 “王座” “接见室”里面的四个空位(在十六张牌环绕的里面)。无论何时,有可用的相同花色的 K 和 Q,它们可以移到这里面。 收牌区 接见室下边的四个空位,无论何时,有可用的相同花色 J 和 A,它们可以移动到一个空位里,J 在上面。然后按花色递减顺序收牌。 目标 把所有的收到收牌区或者王座里。 规则 发牌区每次往废牌区发一张牌,无论何时,有可用的相同花色的 K 和 Q,它们可以移到王座里,把 K 移到 Q 上(反之亦然),或者双击其他牌。无论何时,有可用的相同花色的 J 和 A,它们可以移到收牌区里,按相同的方式。 得分 每移走接见室的一张牌得一分。 可能得到的最高分是:52 策略 无,国王会议游戏基本上就是靠运气。 usr/share/help-langpack/zh_CN/aisleriot/will_o_the_wisp.xml0000644000373100047300000000402112307311652025765 0ustar langpacklangpack00000000000000 白日梦 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,点击时,向桌面上其他每一垛牌发一张牌,最后一次发牌只发前三垛。 收牌区 右上角的四垛牌。 桌面排列区 下边的七垛牌,每垛牌两张扣着的一张翻开。 目标 创建四个每垛13张按花色递减顺序排列的牌垛。 规则 桌面上的牌按递减顺序排列,不考虑花色,排列好的牌可以一起移动,空垛可以放任何牌或一组牌。 发牌时桌面上每一垛都要有牌,除了最后一次发牌之外,点击发牌区后给每一垛放一张牌。 按花色排列好的十三张牌可以移到收牌区,放进去后不能再参与到游戏中。 得分 按顺序排好一张得一分。 可能得到的最高分是:48 策略 尽可能在桌面上保留一个空位,用于移动牌时的交换空间。 usr/share/help-langpack/zh_CN/aisleriot/bakers_dozen.xml0000644000373100047300000000355312307311652025255 0ustar langpacklangpack00000000000000 贝克萝筐 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 顶上的四个空位,按花色从 A 到 K 收牌。收牌区每一垛中最上面的可以放回到桌面上参与游戏。 桌面排列区 十三垛牌,每垛四张翻开的,每个 K 都放在了最底下。 目标 把所有的牌移到收牌区。 规则 最上面的牌可以移动到其他位置,只要它的点数比另一个小一,花色没有特别要求,空位置不能填充。 收牌区按花色从 A 到 K 递增收牌,里面的牌仍然可以参与到游戏中,双击桌面里的一张牌可以把它移到收牌区,如果它可以移动的话。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 小心不要把小牌压底下了,试着不要让桌面上出现空位。 usr/share/help-langpack/zh_CN/aisleriot/ten_across.xml0000644000373100047300000000412412307311652024742 0ustar langpacklangpack00000000000000 跨越十 James LewisMoss 编写 牌局 纸牌类型 标准纸牌 临时置牌点 放置不用的牌,开始时由游戏填充,有一种版本在它们空了以后,不允许您再放别的牌进去。 桌面排列区 底下的十垛牌,先从左到右发十张扣着的牌,然后把第一张和最后一张翻开,接着再从右到左(反转)发十张牌,把开头两张和最后两张翻开。继续这样发牌(转圈发每次多翻开一张),直到发到50张牌,最后剩下两张放入上边的临时置牌点。 目标 桌面上排成四垛牌,每垛包含相同花色从 K 到 A 的牌。 规则 只有 K 可以放在桌面上的空位中。 移动的牌必须花色相同,并且比目的地的牌小一点数,移动一垛牌时最前头一张要跟目的地的牌相匹配。 选项 允许使用临时置牌点 得分 只有羸或输,没有得分。 策略 这个游戏很难羸(跟开始牌的摆放很有关系)。不要忘记临时置牌点,尽快清空它们,在出现卡住时很有用。 usr/share/help-langpack/zh_CN/aisleriot/bear_river.xml0000644000373100047300000000516212307311652024725 0ustar langpacklangpack00000000000000 熊河 由 Bruce 和 Joel Levin 编写 牌局 纸牌类型 标准纸牌 收牌区 上面的四个空位,在第一个空位中放了一张翻开的牌。 桌面排列区 桌面上有18垛牌,排成三行六列,所有的牌都是翻开的,可以看到牌的花色和点数。左边五列是三张一组,最右边一列是两张一组。 目标 把所有的牌移到收牌区。 规则 在收牌区已经随机收取了一张牌,其他收牌都以这一张的点数为基准。其他三个空位也要从这个点数开始收牌,按照花色从小到大收牌。牌是循环的,Q 过了是 K,K 过了是 A,然后是2,已经收取的牌不能再放回去参与游戏。 桌面上的每一垛牌不能超过三张,最上面的牌可以移动,移到相同花色比它大一点或者小一点的牌上,K 和 A 可以相互移动。 桌面上产生的空位有两种类型:“标准”垛和“空”垛。左边五列(三张一组的)是都标准垛,移出的空位不能再放其他牌,最后一列(二张一组的)是空垛,移出的空位可以放其他任何牌。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 要尽早移出一个或多个空位。 收牌总是没坏处的,如果可以的话,尽量多收牌。 比收牌区基准牌小一点的牌很难移动,放置它们的时候要特别小心。 玩熊河游戏大约有三分之一的概率能羸。 usr/share/help-langpack/zh_CN/aisleriot/lady_jane.xml0000644000373100047300000000557612307311652024544 0ustar langpacklangpack00000000000000 简女士 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,桌面上发剩下的牌放在这儿,每次往保留区的每一垛上发一张牌,当发牌区只剩两张牌时,它们会翻开都可用于游戏中。 收牌区 右上角的四垛牌,桌面和保留区发牌后,第一个位置会放一张牌作为基准,按花色递增收牌。 废牌区 右边的七垛牌,最上面的牌可以移到桌面或收牌区,空位不能填充,除非是从发牌区发牌过来。 桌面排列区 在发牌区和收牌区下面的七垛牌,第一垛发一张牌面朝上的,再在后面所有垛上放一张扣着的牌,在第二垛放一张翻开的牌,后面所有垛放一张扣着的牌,重复直到最后一垛牌是七张。桌面上的牌按不同花色交替排列,一组牌可以一起移动,出现的空位只能由比基准牌小一点数或者以它开头的一组牌填充。 目标 把所有牌移到收牌区。 规则 桌面上的牌按不同花色交替排列,排列好的牌可以一起移动,桌面上出现的空位可以填充比基准牌低一点数或它开头的一组牌来填充。 发牌区发牌到保留区,每次往每一垛上发一张牌。 保留区或收牌区最上面的牌可以用于游戏中,保留区的牌相互之间不能移动。 收牌区按花色从基准牌递增收牌,其他空位也按照基准牌的点数开始收牌,A 放在 K 的上面,2放在 A 的上面,收牌区的牌还可以用在游戏中,双击一张牌可以把它移到收牌区,如果它是可以移动的。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 更深入地看,开始比较困难,无论何时都要尽可能地把牌移出保留区。 usr/share/help-langpack/zh_CN/aisleriot/maze.xml0000644000373100047300000000441212307311652023536 0ustar langpacklangpack00000000000000 迷魂阵 由 Matthew Wilcox 编写 牌局 纸牌类型 48张:标准牌,不要 K 桌面排列区 五十四个空格排列成六行九列,按顺序发八张牌,第九个空着,再在十到十七位置上发牌,让第十八个空着,接着就正常发完牌,然后去掉所有的 K(这个游戏没有弄太复杂),这样就有六个空位。牌左边的空位可以放相同花色且小一点数的牌,右边的空位可以放相同花色但大一点数的牌。A 放在 Q 的后面,或者放在左上角的空位中,Q 可以放在 A 的左边,或者右下角的位置。 目标 把每个花色的牌按递增顺序排好,A 在左上角的位置,创建一系列牌序:相同花色的 A 到 Q,再另外一个 A 接着上一个 Q,再第三个 A 接上一个Q,第四个 A 接上一个 Q,从 A 到 Q 都是相同的花色。 规则 每次移动一张牌,牌左边的空位可以放相同花色且小一点数的牌,右边的空位可以放相同花色但大一点数的牌。A 放在 Q 的后面,或者放在左上角的空位中,Q 可以放在 A 的左边,或者右下角的位置。 得分 每正确排好一张牌得一分。 可能得到的最高分是:48 策略 多个连续的空位可以排上一长队牌,当心在移动一张牌时出现无尽循环的陷阱。 usr/share/help-langpack/zh_CN/aisleriot/elevator.xml0000644000373100047300000000362112307311652024424 0ustar langpacklangpack00000000000000 电梯 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,桌面上发剩下的牌放在这儿,每次往废牌区发一张牌,不能重复。 废牌区 放置发牌区发过来的牌。 桌面排列区 七垛扣着的牌,最上面一行一张,然后每一行比上一行多一张排成金字塔形,最下边一行翻开。 目标 把所有牌移到废牌区。 规则 金字塔里所有没被压着的牌都可以参与游戏,只要点数比废牌区的牌大一点或小一点,都可以移到废牌区,A 在 K 上面,在二的下面。 收牌区每次往废牌区发一张牌,不能重复。 得分 从金字塔往废牌区移一张牌得一分。 可能得到的最高分是:28 策略 每个金字塔都要一个坚实的基础,首先对付小牌,注意着尽量多翻开一些牌。 usr/share/help-langpack/zh_CN/aisleriot/treize.xml0000644000373100047300000000402712307311652024106 0ustar langpacklangpack00000000000000 特睿兹 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,不能重复。 废牌区 放置发牌区过来的牌,最上面和最下面的牌可用于游戏。 桌面排列区 放七行交叉翻开的牌,第一行是一张,然后每一行多一张,牌垛摆成金字塔形。 目标 移除所有牌。 规则 金字塔中没有被压着的牌都能参与到游戏中,K 可以单独移走,其他牌两两相加为13可以消去,A 等于1,J 等于 11,Q 等于12。 发牌区每次发一张牌到废牌区。最上面和最下面的牌可用于游戏,可以和金字塔中的牌组合,也可以和它自己的牌组合,废牌区最上面的牌可以和下一张组合。不能重复发牌。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 这个游戏比十三要好羸一些,因为提前计划,通过策略避免被堵住。 usr/share/help-langpack/zh_CN/aisleriot/definitions.xml0000644000373100047300000001403512307311652025117 0ustar langpacklangpack00000000000000 术语表 作者自注:这些定义只是起指导作用,请参阅游戏本身的规则,因为每个游戏都可以重新定义或修改规则,以使游戏更具趣味性。 基准牌 收牌区的第一张牌,其他位置也必须从这一张的点数开始收牌。参看:收牌区 不同花色交替排列 只允许在一张牌上面放相反颜色的牌,比如:在黑桃上放方块可以,但是红桃上不能放方块。 只能放别的花色 只允许放跟自己不同花色的牌,比如:方块放在红桃上可以,但是红桃不能放在红桃上。 按颜色排列 只允许按相同颜色排列,比如:方块放在红桃上可以,但是方块不能放在梅花上。 不考虑花色 所有花色的都可以放。 按花色排列 只允许按相同花色排列,比如:黑桃放在黑桃上可以,但是黑桃不能放在梅花上。 递减顺序 只允许小牌在上,通常是小一个点数,比如:10可以放在 J 的上面,但是10不能放在9的上面。 按 * 递减顺序 按照低 * 的要求递减顺序排列,比如:如果 * 是2,那么10可以放在 Q 的上面 ,但是不能放在 J 的上面。 递增顺序 只允许大牌在上,通常是大一个点数,比如:Q 可以放在 J 的上面,但是 Q 不能放在 K 的上面。 按 * 递增顺序 按照高 * 的要求递增顺序排列,比如:如果 * 是2,那么10可以放在8的上面 ,但是不能放在9的上面。 递增或递减 大一点和小一点的牌都可以放在上面,比如:J 在 Q 和10的上面都可以,但是10不能放在 Q 的上面。 排列 通过思考,把一张牌(或一组牌)移到另一张牌上,排列顺序可以是递增、递减,或者按 * 递增/减,按照花色/颜色要求,可以是按花色、按颜色、交替颜色、除了自己之外的花色,或者是不考虑花色。注意所有的游戏都遵守这两个规则,在里面各选一个。 使用的牌,绝大多数游戏使用标准纸牌,也有用两副牌的,带王的牌,或者是不常见的去掉一些的牌。 两副牌 牌面用两副标准牌,总共有104张。 收牌区 如果游戏有一个收牌区,通常是把所有牌移到收牌区就羸了。 带王的牌 牌面包括标准牌和两个王,总共54张牌。 牌垛 一个特别的放牌位置。 等级 牌的点数,通常每个牌都有一个数,A 可以是最大或者最小,如果最大就是14,如果最小就是1,J、Q 和 K 通常是11、12和13。但是一些游戏以10为等级,这时候,A 就是11。 废牌区 保留区的牌通常可以放在游戏任何地方,通常它里面是不能排序的。 空位 参看牌垛。 标准牌 52张牌的一副牌,有四种花色各十三张牌,每种花色包括 A、2一直到10、J、Q、K,花色一般是梅花、黑桃、红桃和方块,它们可以按两种颜色排序,通常是红和黑,红桃和方块是红色,梅花和黑桃是黑色。纸牌王允许使用不同的牌面,这样一来,新的颜色和花色可以加进来。 发牌区 桌面排列区发牌以后,所剩余的牌,通常是扣着的。 花色 标准牌中四种不同的类型,通常是梅花、黑桃、红桃和方块。 桌面排列区 游戏的区域,主要的移动操作,通常是可以排序。 废牌区 牌翻开后放置位置,通常来自发牌区,最上面的牌可参与游戏。 usr/share/help-langpack/zh_CN/aisleriot/fourteen.xml0000644000373100047300000000303712307311652024433 0ustar langpacklangpack00000000000000 十四 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 桌面排列区 所有牌平均分到十二垛,前面四垛每垛五张牌,其他的每垛四张牌,最上面的牌可以用在游戏中,空位不能被填充。 目标 移除所有牌。 规则 两张牌点数加起来为十四就可以消去,A 是1,J、Q、K 分别是 11、12、13。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 注意顺序,移动的时候要够保证下面的牌还可以成对,否则可能会被堵死。 usr/share/help-langpack/zh_CN/aisleriot/chessboard.xml0000644000373100047300000000370212307311652024720 0ustar langpacklangpack00000000000000 棋盘 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 四个空位在中间排成一列,从您选的基准牌开始按花色递增收牌,如果需要可以从 K 到 A 循环。收进来的牌不能再参与到游戏中。 桌面排列区 在收牌区的两边的五垛牌,牌面都是翻开的,最上边的两垛里各多一张牌。每垛里最上面的一张牌可以用在游戏中。 目标 把所有的牌都移到收牌区。 规则 桌面上的牌可以按花色递增或递减排列,每垛牌中只有最上面的一张可以移动。空位可以放任何一张可用的牌。 收牌从您自己选择的基准牌开始,如果需要可以从 K 到 A 循环。收牌区的牌不能再回到游戏中。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 一定要选好基准牌,随意地选择会导致零分和输牌。 usr/share/help-langpack/zh_CN/aisleriot/royal_east.xml0000644000373100047300000000451512307311652024750 0ustar langpacklangpack00000000000000 皇家东 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,不能重复。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 桌面三行三列牌的四个角,开始第一个位置已经放了一张牌,这是基准牌,按花色递增收牌,如果需要把 A 放到 K 的上面。 桌面排列区 桌面排列区上翻开的五个牌垛,排成三张牌的十字交叉形。 目标 把所有的牌都移到收牌区。 规则 桌面上的牌按递减顺序排列,不考虑花色,K 放在 A 的上面,每次只能移一张,出现的空位可以放任何牌。 收牌区都从基准牌开始收牌,按花色递增收牌,如果需要可以把 A 放到 K 的上面。收牌区的牌不能再参与游戏。 发牌区每次往废牌区发一张牌,废牌区最上面的牌可以用于游戏中,不能重复。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 寻宝是一件奇妙的事情,但是您要知道它们在哪儿,记住每垛牌的点数可以帮助您找到它们。 usr/share/help-langpack/zh_CN/aisleriot/quatorze.xml0000644000373100047300000000374312307311652024462 0ustar langpacklangpack00000000000000 夸托尔泽 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,桌面上发剩下的牌放在这儿,桌面上出现空位后,立即从发牌区移动一张过去。 桌面排列区 五行五列,每个位置放一张牌,游戏开始时每个空位已经放了一张牌。空位由发牌区填充,一旦发牌区为空,空位会被右边的牌依次移动过来填充,这样空位就被移到最后头了。 目标 移除所有牌。 规则 如果一行或一列中,两张牌加起来是十四(J 是11,Q 是12,K 是13),就可以被消去。 空位自动由发牌区填充,一旦发牌区为空,空位会被右边的牌依次移动过来填充,这样空位就被移到最后头了。 得分 每消去一对牌得两分。 可能得到的最高分是:52 策略 游戏中经常会出现只能移动一次,请完成它。一旦发牌区为空,桌面上就会有更多地移动。 usr/share/help-langpack/zh_CN/aisleriot/gold_mine.xml0000644000373100047300000000464212307311652024544 0ustar langpacklangpack00000000000000 金矿 牌局 纸牌类型 标准纸牌 发牌区 左上角的一垛牌,放置桌面上发剩下的牌,每次往废牌区发三张牌,不能重复。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角有四个空位,按照从 A 到 K 的递增顺序收牌,最上面的牌还可以拿回到桌面上参与游戏。 桌面排列区 Seven piles, all empty to start. Gold Mine is a variation of Klondike. Tableau can be built down in alternating colors. Groups of cards can be moved. Empty piles can be filled with any card. 目标 把所有的牌移到收牌区。 规则 桌面上的牌按不同花色交替递减排列,可以移动排列好的一组牌,空位可以放任何牌。 每次发牌区往废牌区发三张牌,废牌区最上面的牌可以用在游戏中,当发牌区为空时,游戏结束,只有一次正确的机会构筑金矿。 收牌区按从 A 到 K 的顺序收牌,在收牌区里的牌仍然可以参与游戏。双击桌面上的一张牌可以把它移到收牌区,如果这张牌可以收取的话。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 填充收牌区空位要特别小心,用技巧比花时间更容易羸,如果您开始没弄好,可以重新开始再试一次。 usr/share/help-langpack/zh_CN/aisleriot/bakers_game.xml0000644000373100047300000000425512307311652025047 0ustar langpacklangpack00000000000000 贝克游戏 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 右上角的四个空位,从 A 到 K 按花色收牌。 保留区 左上角的四个空位,每个可以放一张牌。 桌面排列区 收牌区和保留区下面的八垛牌,前面四垛有七张翻开的牌,后面四垛是六张翻开的牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按花色递减排序,最上面的牌可以移动。要移动一组牌,那么这组牌的数目必须是小于或等于保留区空位的数目。桌面上的空位置可以放 K 或者是 K 开头的一组牌。 收牌区按花色从 A 到 K 递增收牌,虽然这儿的牌从技术上讲,还可以用在游戏中,但实际上这些牌已经毫无用处,游戏不再需要了。 桌面上的任何牌都可以放入保留区的空位中,这些牌还可以用在游戏中,也可以直接移动到收牌区。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 尽可能地把牌移到收牌区,留下来反而会碍手碍脚。 usr/share/help-langpack/zh_CN/aisleriot/saratoga.xml0000644000373100047300000000651012307311652024404 0ustar langpacklangpack00000000000000 萨拉托加 在 Jonathan Blandford 工作的基础上,由 Alan Horkan 编写。 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,放置桌面上发剩下的牌。发牌每次翻一张到废牌区,可以重新发两次。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角有四个空位,按照从 A 到 K 的递增顺序收牌,最上面的牌还可以拿回到桌面上参与游戏。 桌面排列区 七垛牌,第一行全部放一张翻开的牌,第二行从第二垛开始都放一张翻开的牌,每次从下一垛开始放牌,直到最后一垛是七张牌,基本上萨拉托加跟空档接龙一样,只是所有的牌是翻开的,由于可以看到所有的牌,这样玩起来可以减少风险,玩起来更容易些。桌面上的牌按递减顺序交替花色排列,排列好的牌可以一起移动,空位只能放 K 或 K 开头的一组牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌可以按不同花色交替排列,排列好的一组牌可以一起移动。空位置仅能由 K 或 K 开始的一组来填充。 牌从发牌区逐个翻到废牌区中,最上面的一张可以放到桌面上,当发牌区空了,可以把废牌区的牌按原来顺序收回来重新发。您有三次重复机会。 收牌区按从 A 到 K 的顺序收牌,在收牌区里的牌仍然可以参与游戏。双击桌面上的一张牌可以把它移到收牌区,如果这张牌可以收取的话。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 当游戏看似要结束时,别轻易放弃! 可以尝试各种方法。有时把收牌区的牌重新放回桌面,可以解开卡住的牌。 usr/share/help-langpack/zh_CN/aisleriot/king_albert.xml0000644000373100047300000000402712307311652025065 0ustar langpacklangpack00000000000000 阿尔伯特王 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 上面的四垛牌,收牌区按花色从 A 到 K 收牌。 废牌区 右边七垛牌,开始每垛牌的最上面一张是翻开的,保留区不能相互移动,出现的空位也不能再填充。 桌面排列区 九垛牌,第一垛是九张,第二垛是八张,依此类推最后一垛是一张,每垛牌的最上面一张是翻开的。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按不同花色交替递减排列,空位可以填充任一张牌或一组牌。 保留区的牌可以用在游戏中,或者移到收牌区,出现的空位不能再填充。 收牌区按花色从 A 到 K 收牌,里面的牌还可以用于游戏。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 记住任何牌都可以放在空位里,把牌翻开是最要紧的。 usr/share/help-langpack/zh_CN/aisleriot/valentine.xml0000644000373100047300000000440412307311652024570 0ustar langpacklangpack00000000000000 情人节 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,发牌后剩余的放在这里。 废牌区 右上角的牌垛,只能放一张牌。 桌面排列区 四垛牌,游戏开始时每垛各放一张牌,重新发牌时,桌面上的牌全部收回,放到发牌区的最底下。 目标 让所有的牌都放在桌面上,每垛按花色从 A 到 K 排列,别为此发狂。 规则 如果桌面上两张牌花色相同并且是连续的,把小的放在大的上面,A 是最小的,K 是最大的,不能循环排列,点击发牌区会填充出现的空位。 当桌面上没有可移动的牌时,点击发牌区发牌到废牌区,如果这个牌可以放到桌面上,就移动过去,重复这个操作,直到桌面或废牌区没有可移动的牌。 注意一点,再次点击发牌区会把桌面上所有的牌收回到发牌区的底下。废牌区的牌放到桌面第一张,其他空位放发牌区发来的牌。 得分 这个游戏没有得分。 策略 强大的时间杀手游戏,情人节实在没有什么策略,要有策略的话,就是去做别的、更重要的事情,比如说去睡觉吧。 usr/share/help-langpack/zh_CN/aisleriot/pileon.xml0000644000373100047300000000355412307311652024076 0ustar langpacklangpack00000000000000 根冠 Nick Lamb 编写 牌局 纸牌类型 标准纸牌 桌面排列区 十五垛牌,排列成四行,每垛放四张翻开的牌,一共放十三垛,最后两垛为空,每垛可以放四张牌,或者是空位。 目标 每垛牌放四张相同的牌,最后两垛为空,但是不必在意空位是否是原位或者开头成空位了。 规则 相同的牌可以放一起,但是不能超过四张,一组相同的可以一起移动,但不会得分,空位可以放任意一张或一组牌。 一旦一垛牌四张相同,就不能再移动了,最上面的牌显示不再需要它们,也不再参与到游戏中,移动它们也没什么意义。 得分 排列好一垛牌得4分,每张一分,没有其他得分的方法。 可能得到的最高分是:52 策略 尽可能保留一个空位,不要让单牌压在了最底下,尤其是这张牌在别处不是最下面。 usr/share/help-langpack/zh_CN/aisleriot/agnes.xml0000644000373100047300000000457412307311652023710 0ustar langpacklangpack00000000000000 爱格妮思 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛,放置桌面上发剩下的牌。发牌一次可以发七张,在每垛上放一张。 收牌区 右上角的四个牌垛,按照花色和顺序收牌,如果需要可以从 K 到 A 。在第一个位置里放了一张基准牌,其他的位置也必须按照同样的大小开始收牌。 桌面排列区 七垛牌,第一垛发一张牌面朝上的,再在后面所有垛上放一张扣着的牌;然后在第二垛放一张翻开的牌,后面所有垛放一张扣着的牌;重复直到最后一垛牌是七张。牌面可以按相同颜色递减排列,同一组牌可以一起移动,出现的空位只能由发牌区发的牌填充。 目标 把所有的牌移到收牌区。 规则 桌上的牌按相同颜色递减排列,相同颜色按顺序排列的一组牌可以一起移动。 每次从发牌区发一张到桌面上的各个牌垛,越发越少不能重复发牌。 收牌区的牌堆按顺序摆放,从 K 到 A 依次排列,在收牌区的牌仍然可以参与到游戏中。双击桌面上的一张牌可以把它移到收牌区,如果这张牌可以收取的话。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 尽量去按顺序组织牌,尽量去得分,因为这个游戏是很难赢的。 usr/share/help-langpack/zh_CN/aisleriot/isabel.xml0000644000373100047300000000272512307311652024046 0ustar langpacklangpack00000000000000 依莎贝尔 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 桌面排列区 十三垛牌,每垛牌中三张朝下、一张翻开。 目标 移除所有牌。 规则 消去所有相同点数的牌,移除后下面的牌翻过来,就可以移动了,空位不能填充。 得分 每消去一对牌得两分。 可能得到的最高分是:52 策略 开始每垛有四张牌,技巧在于记住每个位置还剩下多少张牌,这样您就可以均衡地移除它们。 usr/share/help-langpack/zh_CN/aisleriot/golf.xml0000644000373100047300000000357712307311652023544 0ustar langpacklangpack00000000000000 高尔夫 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 所有剩余的牌放在这儿,每次翻一张到废牌区,不能重复。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 桌面排列区 七垛牌,每垛有五张翻开的牌。 目标 把所有牌移到废牌区。 规则 废牌区里的牌,可以按递增或递减顺序,放置桌面上的牌,只有2可以放在 A 的上面,K 上面不能放任何牌。 发牌区每次往废牌区发一张牌,不能重复。 得分 每次从桌面往废牌区移去一张牌得一分。 可能得到的最高分是:35 策略 记住 K 上面不能放任何牌,当许多牌可以移动而发牌区没有一张新牌时,试着构建一个牌序。 usr/share/help-langpack/zh_CN/aisleriot/gypsy.xml0000644000373100047300000000446612307311652023766 0ustar langpacklangpack00000000000000 吉普赛 Rosanna Yuen 编写 牌局 纸牌类型 两副牌 发牌区 左上角的一垛牌,放置桌面上发剩下的牌,每次发八张牌,在桌面的每个牌垛上各放一张。 收牌区 右上角的八个空位,按花色从 A 到 K 收牌,最上面的牌可以参与到游戏中。 桌面排列区 八垛牌,开始时每垛两张扣着一张是翻开,桌面上的牌按花色交替排列,排列好的牌可以一起移动,空位可以放任何牌或一组牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按花色交替递减排列,排列好的牌可以一起移动,空位可以放任何牌或一组牌。 每次从发牌区发一张到桌面上的各个牌垛,越发越少不能重复发牌。 收牌区按花色从 A 到 K 递增收牌,里面的牌仍然可以参与到游戏中,双击桌面里的一张牌可以把它移到收牌区,如果它可以移动的话。 得分 每收取一张牌得5分,完成一个花色牌的收取后(从 A 到 K),额外获得60分,桌面上每交替排列好一对牌得2分。 可能得到的是:1000 策略 如果可能尽量多翻开桌面上的牌,记住您可以把收牌区的牌移回桌面参与游戏。 usr/share/help-langpack/zh_CN/aisleriot/eight_off.xml0000644000373100047300000000425012307311652024534 0ustar langpacklangpack00000000000000 关闭八 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 左边的四个牌垛,按花色从 A 到 K 收牌。 保留区 上边八个牌垛,每个空位只能放一张牌,在游戏开始的时候,前面四个空位各放了一张牌。 桌面排列区 保留区下面的八垛牌,每垛放六张翻开的牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按花色递减排序,最上面的牌可以移动。要移动一组牌,那么这组牌的数目必须是小于或等于保留区空位的数目。桌面上的空位置可以放 K 或者是 K 开头的一组牌。 收牌区按花色从 A 到 K 递增收牌,虽然这儿的牌从技术上讲,还可以用在游戏中,但实际上这些牌已经毫无用处,游戏不再需要了。 桌面上的任何牌都可以放入保留区的空位中,这些牌还可以用在游戏中,也可以直接移动到收牌区。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 尽可能地把牌移到收牌区,留下来反而会碍手碍脚。 usr/share/help-langpack/zh_CN/aisleriot/odessa.xml0000644000373100047300000000371212307311652024062 0ustar langpacklangpack00000000000000 敖德萨 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 左边的四垛牌,按花色从 A 到 K 递增收牌。 桌面排列区 七垛牌,各发三张扣着的牌,再各发三张翻开的牌,然后中间五垛再各发两张翻开的牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按花色递减排列,一组牌可以一起移动,不考虑顺序。排好顺序的牌可以移到对应的收牌区位置,空位可以由 K 或 K 开头的一组牌填充。 收牌区按花色从 A 到 K 递增收牌,收牌区里的牌不能再用于游戏中。 选项 没有 得分 游戏开始后,按花色顺序排列得一分,在桌面内移动创建一个新的顺序得一分。收取一张牌得一分。 可能得到的最高分是:412 策略 您坚持得愈久,收获也愈多,尽可能不要收牌,牌序越长得分也越多。 usr/share/help-langpack/zh_CN/aisleriot/jumbo.xml0000644000373100047300000000452412307311652023722 0ustar langpacklangpack00000000000000 强伯 Rosanna Yuen 编写 牌局 纸牌类型 两副牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,重复一次。 废牌区 在发牌区的右边,每次从发牌区发一张,最上面的牌可以用在游戏中。 收牌区 右上角的牌垛,按花色从 A 到 K 递增收牌,收牌区最上面的牌还可以参与到游戏中。 桌面排列区 九垛牌,先依次放九张扣着的牌,再依次放八张扣着的牌,再依次放七张扣着的牌,依此类推。直到第一垛有九张牌,把每垛的最后一张翻开。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按不同花色交替递减排列,排列好的可以一起移动,空位可以放 K 或 K 开头的一组牌。 发牌区每次往废牌区发一张牌,废牌区最上面的牌可用于游戏中,发牌区空了以后,废牌区的牌按原来的顺序重新回到收牌区,可以重复一次。 收牌区按花色从 A 到 K 递增排列,里面的牌还可以参与游戏,双击一张牌可以移到收牌区,如果它是可以移动的。 得分 每收取一张牌得1分。 可能得到的最高分:104 策略 usr/share/help-langpack/zh_CN/aisleriot/zebra.xml0000644000373100047300000000520412307311652023705 0ustar langpacklangpack00000000000000 斑马 Rosanna Yuen 编写 牌局 纸牌类型 两副牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,可以重复一次。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角的八垛牌,开始时收牌区里每垛里放了一个 A,收牌区按不同颜色递增收到 K,里面的牌不能再参与到游戏中。 桌面排列区 收牌区下面的八垛牌,开始时每垛放了一张牌,桌面上按不同颜色交替递减排列,每垛牌中只有最上面的牌可用,空位会立刻由废牌区填充,如果废牌区为空,则由发牌区填充。 目标 把所有牌移到收牌区。 规则 桌面上按不同花色交替递减排列,每垛牌中只有最上面的牌可用,但是,为了简化操作,一整垛牌可以一次拖到收牌区,双击一垛牌可以把最上面一张移到收牌区,如果它是可以移动的话。 空位会立刻由废牌区填充,如果废牌区为空,则由发牌区填充。 发牌区每次往废牌区发一张牌,废牌区最上面的牌可用于游戏,可以重复发牌一次。 收牌区按不同颜色交替递增收牌,从 A 到 K。收牌区里的牌不能再用于游戏。 得分 每收取一张牌得1分。 可能得到的最高分是:96 策略 在现实世界中很少能有两次机会,因此,碰到了就抓住它,这个游戏中第二次发牌是羸的机会。请牢记关键牌所处的位置,后面您会很高兴的。 usr/share/help-langpack/zh_CN/aisleriot/union_square.xml0000644000373100047300000000452312307311652025315 0ustar langpacklangpack00000000000000 联合广场 Rosanna Yuen 编写 牌局 纸牌类型 两副牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,不能重复。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 桌面排列区 摆成四行四列翻开的十六垛牌,每垛最上面的牌可用于游戏。 收牌区 右边四垛牌,收牌区按花色从 A 到 K 收牌,然后再从 K 到 A。 目标 把所有的牌移到收牌区。 规则 桌面上的牌既可以按递增排列,也可以递减排列,但是,每垛牌只能按一种顺序,例如,如果一个牌垛上是梅花三压着梅花二,下一张只能放梅花四,空位可以放任何牌。 收牌区按花色从 A 到 K 收牌,然后接着放一张 K 再到 A,羸的时候每垛放26张牌。收牌区的牌不能再参与到游戏中。 发牌区每次发一张牌到废牌区,最上面的牌可用于游戏,不能重复。 得分 每移动一张牌到收牌区得一分。 可能得到的最高分:104 策略 一串珠子要从最后一个接着添加,因而您的牌垛也是这样,用好那些空位来添加牌。这个游戏只需一点点的坚持,就能得到非常大的欢乐。 usr/share/help-langpack/zh_CN/aisleriot/spider_three_decks.xml0000644000373100047300000000452512307311652026435 0ustar langpacklangpack00000000000000 蜘蛛纸牌(三副) 由 Jonathan Blandford 和 Daniel Werner 编写 牌局 纸牌类型 三副牌 发牌区 左上角的一垛牌,放置桌面上发剩下的牌,点击向每个牌垛发一张牌。 收牌区 上面的十二垛。这不是“官方规则”的一部分。 桌面排列区 十二垛牌。前面六垛四张扣着,一张翻开,剩下的牌垛扣3张翻开一张。排列不考虑花色,按顺序排好的一组牌可以一起移动。空位可以放任何牌或一组牌。 目标 收牌区放十二组(每种花色三张)从 K 到 A 递减排列好的牌。 如果您想试试非常难的挑战,不把牌移到收牌区,而是在桌面上排出十二组相同顺序的牌垛。它之所以难的原因在于没有多少可用的空位。实事上,这几乎是不可能的。 规则 递减排列不考虑花色,排列好的牌可以一起移动,空垛可以放任何牌或一组牌。 点击发牌区会往每一垛上发一张牌。跟其他蜘蛛纸牌不同,空垛也允许发牌。 按顺序排列好的十三张牌可以移到收牌区。一旦移过去,这些牌将不能在参与游戏。 得分 每个排好序的牌垛,得分是:牌的数量 - 1 可能得到的最高分是:144 策略 如果开始您没有成功,也不必强求。只要有可能就排序,多翻开扣着的牌。 usr/share/help-langpack/zh_CN/aisleriot/index.docbook0000644000373100047300000002326412307311652024537 0ustar langpacklangpack00000000000000 AisleRiot"> ]> <application>纸牌王</application>游戏手册 纸牌王是用 GNOME 脚本语言 Scheme 编写,超过80个纸牌游戏的集合。 2001 Rosanna Yuen GNOME 文档项目 Rosanna Yuen GNOME Documentation Project
zana@webwynk.net
Telsa Gwynne
hobbit@aloss.ukuu.org.uk
AisleRiot Manual V3.2 September 2011 Rosanna Yuen zana@webwynk.net GNOME Documentation Project This manual describes version 3.2 of AisleRiot. 反馈 要报告关于接龙程序或使用手册中的缺陷,或者提出建议,请参照 GNOME 反馈页 上的指导。
介绍 AisleRiot 接龙(也叫纸牌王)是一个牌类游戏集,很容易用鼠标来操作。游戏规则根据您的爱好用 GNOME 脚本语言(Scheme)制定好。 玩<application>纸牌王</application>游戏 使用鼠标移动纸牌,点击一张牌,然后把它拖拽到其他地方,松开鼠标放下这张牌。 另外,您可以点一下拿起这张牌,再点一下放下它。要启用这种操作方法,点菜单 控制单击移动。这比拖拽操作要更方便些,因为您不必一直按着鼠标。当然,要花些时间来熟悉这项操作。 如果一张牌可以移到收牌区,您也可以不用拖动,而是直接双击它,就可以直接移动过去。如果一沓牌都可以移到收牌区,您可以一次移动这沓牌过去。 双击一张牌可以收取这张牌,如果它可以收的话。这在最后收取大量牌、完成游戏时很有用。 游戏中有一个发牌区,发完后您可以点击空白区重新发牌。但要注意有些游戏有次数限制,多观察窗口底下的发牌数剩余信息。 一个有用的提示是,在一张已经翻开的牌面上点右键,可以从挡着它的牌中浮起来,这样您就可以看清它是什么花色。 有些游戏可以改变选项,例如克朗代克可以设置发一张牌还是发三张牌。在这些游戏中会多出一个独立的菜单名称,您只能在游戏开始时改变选项-在游戏中菜单将变为不可用。 要查看您的游戏成绩,可以点游戏菜单,然后选择统计,这个统计只能查看您实际玩过了的游戏。这儿的统计主要是您自己开心,有许多方法可以作弊,用它来当参照没什么意思。 游戏
usr/share/help-langpack/zh_CN/aisleriot/auld_lang_syne.xml0000644000373100047300000000414312307311652025567 0ustar langpacklangpack00000000000000 友谊地久天长 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛。游戏开始时,除了 A 以外,其他牌都放在这里。点击发牌区会发出四张翻开的牌。 收牌区 右上角有四个空位,每个空位在开始时都放有一个 A,收牌区只考虑点数不管花色。 废牌区 收牌区下面的四个空位,每次点一下发牌区,每个空位上放一张牌,最上面的牌可以移到收牌区,废牌区的牌只能移到收牌区。 目标 把所有的牌都移到收牌区。 规则 游戏开始时,先从发牌区发四张牌,如果允许,就把牌移到收牌区。重复操作直到发牌区没有牌,也没有牌可以移到收牌区。有个稍微简单些的类似游戏叫混战。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 您相信运气吗?虽然这个游戏比“钟表”小游戏更具有技巧,需要注意复杂的细节。是一个不需要费神的强大游戏。 usr/share/help-langpack/zh_CN/aisleriot/camelot.xml0000644000373100047300000000657412307311652024241 0ustar langpacklangpack00000000000000 卡米洛特 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 游戏开始的时候,所有的牌都放在发牌区里,每次发一张到废牌区,不能重复。 废牌区 放置发牌区过来的牌,只能放一张,必须立刻放到桌面上。 桌面排列区 四行四列,每个空位可以放一张牌。K 只能放在四个角上,Q只能放在第一行和最后一行中间的两个位置,J 只能放在 第一列和最后一列中间的两个位置。 目标 除了 J、Q 和 K 以外,移除其他所有的牌就羸了,如图所示—— 羸了的桌面图。 ——发牌区和废牌区是空的,不考虑花色。 规则 这个游戏分两个阶段,二者可以相互切换直至羸或输。第一阶段是将桌面上的空位全部填满,然后到第二阶段,要注意的是,您不能直接跳到第二阶段,只有第一阶段填满后才能进入第二阶段。另外有一点是,可以跳到第一阶段,但记住这时必须要完成第一阶段才能进入第二阶段。唯一的例外是,当发牌区或废牌区为空的情况时。 第一阶段——点击发牌区,翻一张牌到废牌区,如果牌是一个: K:放在桌面上四个角的位置上。 Q:放在第一行或最下面一行的中间位置上。 J:放在第一列或最后面一列的中间位置上。 其他牌:可以放在任何一个空位上。 第二阶段——点击10并移走它,其他两张加起来为10的,也可以用拖动的方法移走。 如果一张花牌没有位置可放就输了,或者所有的空位都填满,也没有牌可移也会输。 得分 每收取一张牌得1分。 可能得到的最高分:40 策略 中间的位置总是最安全的,在第一阶段,尽量在中间放牌,把边角空出来,如果看到两个可以成对的,那就可以放在边角上,在第二阶段可以移除它们。 usr/share/help-langpack/zh_CN/aisleriot/glenwood.xml0000644000373100047300000000545012307311652024423 0ustar langpacklangpack00000000000000 格伦伍德 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,可以重复一次。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角的四垛牌,第一个空位在游戏开始时,由玩家从保留区选择一张牌,这个是基准牌,其他空位也必须从按这张牌的点数开始收牌,按相同花色递增收牌,如果需要从 K 到 A 循环。 保留区 在左边的四垛牌,每垛有三张翻开的牌,最上面的牌可以用在游戏中,空位不能再放牌。 桌面排列区 收牌区下面的四垛牌,每垛放一张翻开的牌,按递减顺序交替花色排列。最上面的牌可以移到收牌区,各个牌垛之间可以相互移动。 目标 把所有的牌移到收牌区。 规则 游戏第一步是选一张牌放到收牌区,一旦选定,其他空位也必须从这个点数开始收牌。 收牌区按花色递增收牌,如果需要可以从 K 到 A 循环,收牌区里的牌不能再参与到游戏中。 桌面上的牌按不同花色交替递减排列,各个牌垛之间可以相互移动,空位可以填充任何可用的牌或是保留区的牌,如果保留区为空,则从废牌区填充。 发牌区每次往废牌区发一张牌,只能重复一次。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 选择第一张基准牌时要仔细,尽可能早地把保留区的牌发完,有时把牌留在桌面上比移到收牌区更重要。 usr/share/help-langpack/zh_CN/aisleriot/cruel.xml0000644000373100047300000000465012307311652023720 0ustar langpacklangpack00000000000000 残忍 Zach Keene 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的空位,因为所有的牌总是放在桌面上,这儿一直是空的,可以重复发牌。 收牌区 右上角的一行牌垛,游戏开始时,A 都已经放在这儿了,按花色从 A 到 K 收牌。 桌面排列区 一共十三个牌垛,一次翻四张,直到发牌区翻完。桌面上的牌按花色递减排列。 目标 把所有的牌移到收牌区。 规则 收牌区的牌按花色递增排列,桌面上的牌按花色递减排列。如果没有可移动(或者您感觉是这样),点击左上角空的发牌区,重新发牌。 重新发牌是从最后一垛开始,把牌按顺序放在一起,然后把牌翻过来,一次四张,放回到桌面。如果之前没有移动牌,将不能重新发牌。因此,如果重发后不能移动,游戏就输了。 注意:无论何时发生了极端情况,比如在一次重新发牌后,桌面只剩下最后一垛一张牌,并且唯一的可能的一次移动是从最终桌面前的一个。移动这一次然后重新发牌只是原来的结果,系统检测到这种情况后会结束游戏。 得分 每收取一张牌得一分。 可能得到的最高分是:48 策略 如果桌面上有几个可以移动的牌,试着先移大牌。 usr/share/help-langpack/zh_CN/aisleriot/yukon.xml0000644000373100047300000000365312307311652023755 0ustar langpacklangpack00000000000000 育空 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 左边的四垛牌,按花色从 A 到 K 递增收牌。 桌面排列区 七垛牌,首先第一垛发一张翻开的,其他垛放一张扣着的,再在第二垛放一张翻开的,其他垛放一张扣着的,重复这个操作直到最后一垛有七张牌。再把剩下的牌面朝上放在第二垛到第七垛上。要递减排成相反颜色的序列。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按不同颜色递减排列,一叠牌可以一起移动不考虑排序,当扣着的牌没被压着时,可以翻开。空位可以填充 K 或以 K 开头的一组牌。 收牌区按花色从 A 到 K 递增收牌,收牌区里的牌不能再用于游戏中。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 尽可能早地翻开扣着的牌,这样对取得胜利有很大的帮助。 usr/share/help-langpack/zh_CN/aisleriot/thieves.xml0000644000373100047300000000475312307311652024261 0ustar langpacklangpack00000000000000 小偷 Robert Brady 编写 牌局 纸牌类型 包含王的一副牌 桌面排列区 七垛牌,每垛五张,翻开放。 发牌区 所有剩余的牌放在这儿,每次翻一张到废牌区,不能重复。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 目标 把所有牌移到废牌区。 规则 废牌区可以递增或递减放置桌面上的牌,不考虑花色,王算是额外的,可以当作任何牌,上面可以也放其他任何牌。 另外一点,牌可以从发牌区发往废牌区。 得分 下表列出了各种牌可以获得的积分,王不得分。 得分 A 8 2,3 6 4,5 4 6,7,8 2 9,10 4 Q 6 K 8 策略 因为可以看到桌面上所有的牌,所以试着设计“奔跑”的牌序,尽可能移除牌,收牌区的牌是有限的。 usr/share/help-langpack/zh_CN/aisleriot/napoleons_tomb.xml0000644000373100047300000000442012307311652025620 0ustar langpacklangpack00000000000000 拿破仑墓 由 Kimmo Karlsson 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛。 废牌区 挨着发牌区。 桌面排列区 三行三列,全部是翻开的。 收牌区 桌面中间的牌垛,按递减收牌,和四个角上的牌垛,按递增收牌,不考虑花色。 保留区 桌面上另外四个不是收牌区的牌垛,保留区每次只能放一张牌。 目标 把所有小于6的牌移到中心,把大于7的牌收到四个角上。 规则 点击发牌区发牌,每次可以往桌面上放一张牌,移到收牌区的牌不能再移动,四个角从7到 K 收牌,中心是从6到 A 收牌,然后再从 A 到6,不考虑花色。 选项 发三张牌:如果选中一次发三张牌,您可以重复发三次牌。 自动:选中自动收牌,如果可以收取的话,牌会自动移到收牌区。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 尽量留着保留区,让拿破仑进入坟墓并不容易,但可以试试。 usr/share/help-langpack/zh_CN/aisleriot/kansas.xml0000644000373100047300000000526412307311652024070 0ustar langpacklangpack00000000000000 堪萨斯 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,不能重复。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角的四垛牌,开始第一个空位中已经放了一张牌,其他三个空位也从这张牌开始递增收牌。 废牌区 在发牌区下面,开始放十二张牌,最上面的牌可用于游戏,或者移到收牌区。 桌面排列区 右边下面的三垛牌,开始时各放一张牌,移动时不考虑花色递减排列,空位自动从保留区填充,保留区为空以后,可以从废牌区移过来一张。 目标 把所有牌移到收牌区。 规则 桌面上的牌按不同花色递减排列,排列好的一组可以一起移动,桌面上的空位自动从保留区填充,如果保留区为空,可以由废牌区最上面一张填充。 发牌区每次发一张牌到废牌区,最上面的牌可用于游戏,不能重复。 收牌区按花色从基准牌(第一个空位放的牌)开始递增收取,其他位置也要从这一张点数开始收牌,A 在 K 的上面,2在 A 的上面,收牌区里面的牌不能再参与到游戏中,双击一张牌可以把它移动到收牌区,如果它是可以移动的话。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 您不能从废牌区翻牌,一旦一张牌压死在底下,就很难再翻开,尽量把废牌区的牌移到桌面上。 usr/share/help-langpack/zh_CN/aisleriot/terrace.xml0000644000373100047300000001271212307311652024231 0ustar langpacklangpack00000000000000 阳台 David Rogers 编写 牌局 纸牌类型 两副牌 发牌区 左上角的牌垛,桌面和保留区发剩下的牌放在这儿,每次往废牌区发一张,不能重复。 废牌区 放置发牌区过来的牌,最上面的牌可用于游戏。 废牌区 包含十一张翻开的牌,所有的牌都可以看到,但只有最上面一张可用于游戏。 收牌区 中间的八个空位,按不同花色交替排列,排列顺序是从基准牌递增排列。 桌面排列区 选择出基准牌后,立即补充到九张牌。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按不同花色交替递减排列,不允许成组移动,出现的空位必须由废牌区最上面的牌,或者从发牌区发来的牌填充。最上面的牌可以移到收牌区或者其他牌垛。 收牌区按不同花色交替从基准牌开始递增排列,其他空位也必须从基准牌开始收牌,基准牌是开始时从桌面上移动过来的牌,收牌区的牌不能再用于游戏。 保留区最上面的牌参与游戏,只能移动到收牌区。 发牌区每次向废牌区发一张牌,次数不限,除非桌面上出现了空位,这时只能发一张牌,直到桌面上的空位被废牌区的牌填充后才能继续发牌,或者废牌区的牌移到收牌区。发牌区锁定时,桌面上的牌还可以移动,保留区的牌也可以移到收牌区,如果废牌区为空,发牌区会自动发牌。废牌区最上面的牌可参与游戏,发牌区不能重复发牌。 双击一张牌可以自动移到收牌区,如果它是可以移动的话。 选项 有七种玩法,它们只是保留区的数目、桌面牌垛或基准牌的选择上有所不同。 阳台 保留区11张牌,桌面排列区9垛,收牌区按不同花色交替从基准牌开始递增收牌,游戏开始之初,玩家从四张牌里选择一张基准牌,然后所有空位都放上牌,发牌区不能重复发牌。 一般的耐心 保留区13张牌,桌面排列区9垛,收牌区按花色从基准牌开始递增收牌,游戏开始之初,玩家从四张牌里选择一张基准牌,然后所有空位都放上牌,发牌区可以重复一次,但是如果重复发牌时,不能移走发出的牌,游戏就输了。 星辰 保留区11张牌,桌面排列区9垛,收牌区按不同花色交替从基准牌开始递增收牌,游戏开始之初,自动选择了一张基准牌,然后所有空位都放上牌,发牌区不能重复发牌。 贵妇人 保留区11张牌,桌面排列区9垛,收牌区按不同花色交替从基准牌开始递增收牌,游戏开始之初,自动选择一张基准牌,然后所有空位都放上牌,空位自动从废牌区或发牌区填充(如果废牌区为空),发牌区不能重复发牌。 红发 保留区21张牌,桌面排列区8垛,收牌区按不同花色交替从基准牌开始递增收牌,游戏开始之初,自动选择一张基准牌,然后所有空位都放上牌,空位自动从废牌区或发牌区填充(如果废牌区为空),发牌区不能重复发牌。 金发与黑发 保留区10张牌,桌面排列区8垛,收牌区按不同花色交替从基准牌开始递增收牌,游戏开始之初,自动选择一张基准牌,然后所有空位都放上牌,发牌区不能重复发牌。 木头 保留区10张牌,桌面排列区9垛,收牌区按不同花色交替从基准牌开始递增收牌,游戏开始之初,自动选择一张基准牌,然后所有空位都放上牌,发牌区不能重复发牌。 得分 每收取一张牌得1分。 策略 游戏开始时,仔细观察保留区的牌,然后选择恰当的基准牌,避免基准牌压在保留区下边。 注意在发牌区保留一个序列,然后在收牌区留一个空位来放这个序列。 桌面上排序时,尽量让最后收取的牌开头。 记住桌面上的空位是由废牌区最上面的一张牌填充,这时候发牌区是被锁定的。 usr/share/help-langpack/zh_CN/aisleriot/seahaven.xml0000644000373100047300000000455612307311652024405 0ustar langpacklangpack00000000000000 海港 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 四垛牌——两个在左上角,两个在右上角,按花色从 A 到 K 收牌。 保留区 上边中间的四垛牌,每个空位只能放一张牌,开始时两个位置已经各放一张牌。 桌面排列区 在发牌区和收牌区下边的十垛牌,放置其他五十张牌,每垛五张。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按花色递减排序,最上面的牌可以移动。要移动一组牌,那么这组牌的数目必须是小于或等于保留区空位的数目。桌面上的空位置可以放 K 或者是 K 开头的一组牌。 收牌区按花色从 A 到 K 递增收牌,虽然这儿的牌从技术上讲,还可以用在游戏中,但实际上这些牌已经毫无用处,游戏不再需要了。 桌面上的任何牌都可以放入保留区的空位中,这些牌还可以用在游戏中,也可以直接移动到收牌区。 为了方便,按顺序排列的牌可以一起移到对应的收牌区,不用一个一个地移动。这在游戏结束时非常方便。 得分 每收取一张牌得一分。 可能得到的最高分是:52 策略 尽可能地把牌移到收牌区,留下来反而会碍手碍脚。 usr/share/help-langpack/zh_CN/aisleriot/poker.xml0000644000373100047300000000652112307311652023725 0ustar langpacklangpack00000000000000 纸牌戏 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的牌垛。 废牌区 在发牌区旁边,废牌区只能放一张牌。 桌面排列区 五行五列,每个空位只能放一张牌。 目标 尽可能地创建“一手牌”来得分,牌局可以有十二手牌——五行、五列,以及两个对角线,超过75分就可以羸。 规则 点击发牌区每次发一张牌,这张牌移走后才能接着发下一张牌,一旦放下,这张牌就不能再移动了。 选项 乱序模式:选中此项,放下的牌还可以移动,这种模式下您要120分才能羸。 得分 一手牌的积分使用英国记点积分系统,如下所述 描述 得分 同花顺 相同花色按顺序排列的一组牌 30 四张相同的 包含四张相同点数的牌 16 顺子 按顺序排列的一组牌 12 满堂红 三个里面有两个点数相同 10 三个相同点数 包含三个相同点数的牌 6 同花 五张牌都是相同花色 5 两对 包含两对相同的牌 3 一对 包含两张相同的牌 1 可能得到的的最高分:276 策略 记住您几乎可以看到一半的牌,对此做出相应的计划,不要想着能骗过电脑。 usr/share/help-langpack/zh_CN/aisleriot/straight_up.xml0000644000373100047300000000471712307311652025143 0ustar langpacklangpack00000000000000 直上 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角的一垛牌,放置桌面上发剩下的牌,每次往废牌区发一张牌,可以重复两次。 废牌区 从发牌区中发过来,最上面一张可以用在游戏中。 收牌区 右上角的四垛牌,开始时每垛上已经放一张2在里面,按花色递增收牌到 A。 废牌区 发牌区下面的牌垛,开始放有13张牌,最上面的牌可以移到桌面和收牌区。 桌面排列区 右下边的四垛牌,开始时每垛发一张牌,按花色排列,空位自动从保留区牌,一旦保留区为空,还可以从废牌区发牌过来。 目标 把所有牌移到收牌区。 规则 桌面上的牌按花色递减排列,排列好的一组可以一起移动,桌面上的空位自动从保留区填充,如果保留区为空,也可以从废牌区发牌过来。 发牌区每次发一张牌到废牌区,最上面的可参与游戏,可以重复两次发牌。 收牌区按花色从2到 A 收牌,里面的牌不能再参与到游戏中,双击一张牌可以自动移动对应的收牌区,如果它是可以移动的话。 得分 每移动一张牌到收牌区得一分。 可能得到的最高分是:48 策略 不要让任何牌掉队!尽可能地往收牌区移动。 usr/share/help-langpack/zh_CN/aisleriot/triple_peaks.xml0000644000373100047300000000506712307311652025273 0ustar langpacklangpack00000000000000 三重峰 Richard Hoelscher 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,不能重复。 废牌区 所有的移动都在废牌区,扣着的牌不属于当前得分的一部分。 桌面排列区 发18张扣着的牌,把它们排列成三个三角形,每个三角形三行,每行多一张牌,直到第三行是三张牌,再在底下发一行10张牌把三个三角形连起来,两端的牌都压着上面的两端的牌,中间的压着上面两张牌。 目标 把桌面上所有的牌移除。 规则 桌面上没被压着的牌可用于游戏,比废牌区最上面的牌大一点数和小一点数的牌,都可以移过去,不考虑花色,A 排在 K 的上面,排在2的下面。 桌面上没有被压着的牌可以参与游戏。 发牌区每次往废牌区发一张牌。 选项 积分翻倍:连续的牌得分加倍,五张连续的得分是:1、2、4、16和32,最高可得55分,额外奖励25分,从发牌区往废牌区发牌不扣分。 本回合积分累积到下一回合:桌面上所有牌清空后,开始新的一轮,积分将会接着上一轮的。 得分 每张牌的得分是上次发牌后增加的数量,牌序越长得分越高。 发牌区往废牌区发牌会扣5分,每消除一个山峰将会奖励15分,桌面上所有的山峰都清除还会额外奖励15分。 每轮可能得到的最高分是:466 usr/share/help-langpack/zh_CN/aisleriot/doublets.xml0000644000373100047300000000520712307311652024426 0ustar langpacklangpack00000000000000 双峰 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角牌垛,放置桌面上发剩下的牌,每次往废牌区发一张牌,可以重复两次。 废牌区 在发牌区的右边,放置发牌区过来的牌。最上面的牌可以用在游戏中。 废牌区 右边七垛牌排列成拱形(倒着的 U),每垛牌第一张翻开 。在发牌中,如果发出一个 K,把它移到牌局的底部。往这垛上发其他牌,每个保留区只能放一张牌,当出现空位时,自动填充废牌区的牌,或者,如果废牌区也是空的,就从发牌区发一张。如果所有牌都发完,K 出现在保留区,这一垛牌将冻结,因为 K 不能移动。 收牌区 只有一垛,位于保留区最下边一行的中间。双击一张牌可以收取到这里,不考虑花色。 目标 把所有的牌移到收牌区。 规则 如果一张牌的点数是当前收牌区里的两倍,就可以双击收取它。J 和 Q 是十一和十二。如果两倍以后超过了十三,就用它减去十三以后得到的余数。比如像这样的顺序: A、2、4、8、3、6、Q、J、9、5、10、7 ... 每次从发牌区发一张牌到废牌区,当发牌区空了以后,把废牌区的牌按原来的顺序全部收回来。您有三次重复发牌的机会。 得分 每收取一张牌得一分。 可能得到的最高分是:48 策略 不要 K,您不能做弑君者(K 是王 KAvoiding),避开它们。 usr/share/help-langpack/zh_CN/aisleriot/bristol.xml0000644000373100047300000000430212307311652024256 0ustar langpacklangpack00000000000000 布里斯托尔 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 发牌区 左上角是发牌区,桌面上剩下的牌放这儿,不能重复发牌。 废牌区 发牌区右边的三个空位,每点击一下发牌区,每个里面可以放一张翻开的。 收牌区 右上角的四个空位,按递增顺序收牌不考虑花色。 桌面排列区 桌面上有八垛翻开的牌,每垛三张。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按递减顺序排列,不考虑花色,每次移动一张,空出的位置不能再放牌。 发牌区每次发出三张到废牌区,最上面的牌可以用在游戏中,空出的位置不能放其他牌,只能放发牌区来的牌。 收牌区从 A 到 K 递增收牌,不考虑花色。收进来的牌不能再用在游戏中。 得分 每收取一张牌得1分。 可能得到的最高分是:52 策略 下面的牌看不到,尽可能把下面压着的牌翻出来,尽量把废牌区的牌移到桌面上,K 是最难移动的。 usr/share/help-langpack/zh_CN/aisleriot/beleaguered_castle.xml0000644000373100047300000000350112307311652026377 0ustar langpacklangpack00000000000000 被围的城堡 Rosanna Yuen 编写 牌局 纸牌类型 标准纸牌 收牌区 中间一列的四垛牌,四个 A 放在这里,洗牌前每个只有一张。从 A 到 K 收牌,最上面的一张可以重新放回到桌面参与游戏中。 桌面排列区 在收牌区的两边各有四个共八个牌垛,这样每垛牌有六张,所有牌都是翻开的。 目标 把所有的牌移到收牌区。 规则 桌面上的牌按递减顺序排列,不必按花色,每次只能移动一张牌,移出的空位可以放任何一张牌。 收牌区按花色递增收牌。 得分 除了原来的 A,每收一张牌得一分。 可能得到的最高分是:48 策略 如果可能,尽量均衡收牌,试着多空出一些位置来。 usr/share/help-langpack/zh_CN/gnome-bluetooth/legal.xml0000644000373100047300000000715412303136004025001 0ustar langpacklangpack00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. usr/share/help-langpack/zh_CN/gnome-bluetooth/index.docbook0000644000373100047300000004315112303136004025641 0ustar langpacklangpack00000000000000 gnome-bluetooth"> ]>
gnome-bluetooth 手册 2009 Baptiste Mille-Mathias Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. Baptiste Mille-Mathias GNOME Documentation Project
baptiste.millemathias@gmail.com
1.0 March 2009 Baptiste Mille-Mathias baptiste.millemathias@gmail.com 本手册叙述的是 2.28 版的 gnome-bluetooth。 反馈 要报告关于gnome-bluetooth应用程序或本手册缺陷或提供建议,请按照 GNOME 反馈页面 中的指导。 gnome-bluetooth是 GNOME 桌面的管理蓝牙设备的应用程序。
gnome-bluetooth Bluetooth Communication 简介 gnome-bluetooth is an application that let you manage Bluetooth in the GNOME destkop. gnome-bluetooth permits to send files to your Bluetooth devices, or browse their content. Connect to your devices, like headset or audio gateway. You can add or delete Bluetooth devices, or manage their permissions. 蓝牙小程序 此小程序可以在提示托盘小程序中找到,该提示小程序允许您进行快速存取的一系列特性,如发送文件,或管理设备。
在提示托盘中的蓝牙小程序图标
启动蓝牙小程序 The gnome-bluetooth applet is started automatically when you log into your session, and you can find its icon in the notification zone. To launch manually the applet, open menu ApplicationsAccessoriesTerminal and type bluetooth-applet. To prevent launching of the applet in your desktop, open menu SystemPreferencesSession and disable Bluetooth Manager. 停用蓝牙适配器 禁用蓝牙适配器将会停止所有当前和将发生的通信。禁用蓝牙适配器可以节省笔记本电池的电能,所以它会增加自主性,当您不使用它时禁用您的蓝牙设备是一个好的主意。 点击此小程序的图标,然后选择关闭蓝牙设备,提示图标将会变成灰色。 发送文件到蓝牙设备 选择此菜单以发送文件到设备;将会出现一个文件选择器,在其中选择要发送的文件,和要将文件发送到的目标设备。 浏览蓝牙设备 选择此菜单以在文件管理器中直接浏览设备文件系统 上次使用的设备 此部分显示您可以连接到的配对设备。 要连接到此设备,点击它的名字,它会被加粗以指示已连接。 添加新设备 要添加一个新设备(由适配器与设备的配对组成),点击小程序图标,选择设置新设备...。一个图形化助手将会帮助您设置您的设备。 在开始此过程之前,不要忘记将远程设备设置为可发现模式,否则向导将不能找到它。 此向导会显示在周边已经找到的可发现设备。您可以通过选择要查找的设备类型来过滤设备列表。
设备搜索向导
如果设备有硬编码的识别码,在新对话框中选择识别码选项...,并选择要用的识别码。 选择 前进进入配对步骤;如果您已经在先前的步骤中定义了固定的识别码,配对会自动完成,否则会在设备中给你显示一个需要输入的验证码,请在您的设备中键入。一旦完成,设备与适配器将会配对完毕。
首选项 Click on the icon of the applet, and choose Preferences , the preferences dialog will appear. 更多关于首选项的信息,参见部分
首选项 gnome-bluetooth首选项对话框允许您管理各种蓝牙设备或更改蓝牙适配器的属性。
首选项对话框
可发现 当适配器设置为可发现时,周边的任何蓝牙设备将能看见它,并能请求配对。 如同其他网络设备,蓝牙亦有安全风险,所以设置适配器为不可发现是一件不错的选择,以限制被入侵的风险。 仅当您计划与其他设备配对时,设置设备为可发现是有用的。一旦完成,您可以取消勾选可发现 当您的设备为不可发现时,与已经配对的蓝牙设备之间通信仍是允许的。 适配器友好名称 友好名称是标志每个蓝牙设备所用地址的别名,这样以便记忆。 默认情况下,适配器的友好名称为HOSTNAME-0 (在这里 HOSTNAME 是您的计算机的名字),要改变它,编辑文本项,并设置您想要的名字。改变将会立即生效。 已知设备 Known devices lists the Bluetooth devices you paired and let you manage them, like deleting them, connect to them or adding new one. Setup new device, as described in Connect / Disconnect to a device. Device Deletion. Deletion will suppress pairing between the adapter and the device, and no communication will be allowed. You need to pair them together again if you want transfer files for instance. 显示蓝牙设备 您可以显示或隐藏面板上的蓝牙图标,更多面板小程序特性请参阅: 如果您禁用了面板上的图标,只有很有限的操作继续可用。 接收文件 点击 接收文件 按钮,将出现 个人文件共享首选项 对话框,您可以在这儿配置蓝牙文件接收和共享。 该特性不是由 gnome-bluetooth 提供,必须安装 gnome-user-share 后才能使用。 Read more in the Personal File Sharing Manual: receiving and sharing.
常见问题 我没有在我的电脑上看见如何用gnome-bluetooth接收文件,我眼神不好吗? 文件接收没有在gnome-bluetooth中执行,而是在gnome-user-share中,所以您必须安装此应用程序以通过蓝牙接收文件。在 的按钮说明里,它只是配置对话框的一个启动器。 我发现了gnome-bluetooth中的一个缺陷,应该怎么做? 您应该将缺陷报告提交到
usr/share/help-langpack/zh_CN/deja-dup/license.page0000644000373100047300000000165212317333257024047 0ustar langpacklangpack00000000000000 Know your rights License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

usr/share/help-langpack/zh_CN/deja-dup/restore-worst-case.page0000644000373100047300000002411012317333257026167 0ustar langpacklangpack00000000000000 What to do if you can’t restore your files When Everything Goes Wrong

Déjà Dup may fail. Maybe it crashes or gives you an error when you try to restore. When you really need your data back, the last thing you want do deal with is a bug. Consider filing a bug report but in the meantime, here are some approaches to workaround a misbehaving Déjà Dup and get your data back.

This is going to get technical. If none of this makes sense to you, don’t be afraid to ask for help.

Open a Terminal window by pressing CtrlAltT.

Create the directory in which you will place your restored files. This guide will use /tmp/restore:

mkdir -p /tmp/restore
Restoring with Duplicity

On the assumption that Déjà Dup is just not working for you right now, you’re going to use the command line tool duplicity that is used by Déjà Dup behind the scenes to back up and restore your files.

If you want more information about duplicity than presented here, run man duplicity.

The first thing we’ll try is a simple restore of all your data. Assuming your files are on an external drive mounted as /media/backup and you chose to encrypt the backup, try this:

duplicity --gio file:///media/backup /tmp/restore

If you didn’t encrypt the backup, add --no-encryption to the command.

Other Backup Locations

If you backed up to a remote or cloud server, the syntax you use with duplicity will be different than the external drive example above. See below for how to connect to your chosen backup location.

Remember to add --no-encryption to any example commands if your backup is not encrypted.

If duplicity appears to be having trouble connecting to your server, try downloading all the duplicity files yourself to a local folder and following the simpler example above.

Amazon S3

Look up your Amazon S3 access key ID and secret access key and replace instances of ID and SECRET in the example below with those respective values.

You may have specified a folder in which to put the backup files. In the example below, replace any instance of FOLDER with that path.

export AWS_ACCESS_KEY_ID=ID export AWS_SECRET_ACCESS_KEY=SECRET duplicity s3+http://deja-dup-auto-LOWERCASE_ID/FOLDER /tmp/restore
Rackspace Cloud Files

Look up your Rackspace username and API key and replace instances of USERNAME and KEY in the example below with those respective values.

You may have specified a container in which to put the backup files. In the example below, replace any instance of CONTAINER with that name.

export CLOUDFILES_USERNAME=USERNAME export CLOUDFILES_APIKEY=KEY duplicity cf+http://CONTAINER /tmp/restore
FTP

Look up your server address, port, username, and password and replace instances of SERVER, PORT, USERNAME, and PASSWORD in the example below with those respective values.

You may have specified a folder in which to put the backup files. In the example below, replace any instance of FOLDER with that path.

If you chose to not log in with a username, use anonymous as your USERNAME below.

gvfs-mount ftp://USERNAME@SERVER:PORT/FOLDER duplicity --gio ftp://USERNAME@SERVER:PORT/FOLDER /tmp/restore
SSH

Look up your server address, port, username, and password and replace instances of SERVER, PORT, USERNAME, and PASSWORD in the example below with those respective values.

You may have specified a folder in which to put the backup files. In the example below, replace any instance of FOLDER with that path.

gvfs-mount ssh://USERNAME@SERVER:PORT/FOLDER duplicity --gio ssh://USERNAME@SERVER:PORT/FOLDER /tmp/restore
WebDAV

Look up your server address, port, username, and password and replace instances of SERVER, PORT, USERNAME, and PASSWORD in the example below with those respective values.

You may have specified a folder in which to put the backup files. In the example below, replace any instance of FOLDER with that path.

If you chose to use a secure connection (HTTPS) when backing up, use davs:// instead of dav:// in the example below.

gvfs-mount dav://USERNAME@SERVER:PORT/FOLDER duplicity --gio dav://USERNAME@SERVER:PORT/FOLDER /tmp/restore
Windows Share

Look up your server address, username, and password and replace instances of SERVER, USERNAME, and PASSWORD in the example below with those respective values.

You may have specified a folder in which to put the backup files. In the example below, replace any instance of FOLDER with that path.

If you specified a domain for your Windows server, add it to the beginning of USERNAME with a semicolon between them. For example, domain;username.

gvfs-mount smb://USERNAME@SERVER/FOLDER duplicity --gio smb://USERNAME@SERVER/FOLDER /tmp/restore
Restoring by Hand

If even duplicity isn’t working for you, there may be little hope. The backup file format is complicated and not easily manipulated. But if you’re desperate, it’s worth a try.

If you used a remote or cloud server to store your backup, first download all the duplicity files and place them in a folder on your computer. Then enter that folder in your terminal.

Duplicity stores your data in small chunks called volumes. Some volumes belong to the periodic ‘full’ or fresh backups and others to the ‘inc’ or incremental backups. Starting with a full backup set of volumes at volume 1, you’ll need to restore files volume by volume.

If you encrypted your backup, first you must decrypt the volume with gpg. Say you have duplicity-full.20110127T131352Z.vol1.difftar.gpg:

gpg --output duplicity-full.20110127T131352Z.vol1.difftar --decrypt duplicity-full.20110127T131352Z.vol1.difftar.gpg

Or to do all at once (make sure you have plenty of space!):

gpg --multifile --decrypt duplicity-full.20110127T131352Z.*.difftar.gpg

Now you have either a .difftar or a .difftar.gz volume (depending on whether you had to decrypt it or not). Use tar on whichever one you have to extract the individual patch files:

tar xf duplicity-full.20110127T131352Z.vol1.difftar

Or again, to do all at once:

for t in duplicity-full.20110127T131352Z.*.difftar; do tar xf $t; done

Now the patch files will be in multivolume_snapshot and snapshot folders. Each file that spanned multiple volumes will be in multivolume_snapshot. Let’s say you backed up /home/jane/essay.txt:

cd multivolume_snapshot/home/jane/essay.txt cat * > essay.txt

To recover data from incremental backups, use rdiff to stitch the files together. See man rdiff for usage.

usr/share/help-langpack/zh_CN/deja-dup/support.page0000644000373100047300000000133112317333257024133 0ustar langpacklangpack00000000000000 Get more help Support

If you have unanswered questions or a problem you don’t understand, please ask about it it in the support forum.

Keep in mind that the people answering your questions are volunteers and that while Déjà Dup is intended to work well, it comes with no warranty. So please be polite and patient.

usr/share/help-langpack/zh_CN/deja-dup/credits.page0000644000373100047300000000347512317333257024067 0ustar langpacklangpack00000000000000 Meet the team Credits
Development

Andrew Fister

Michael Terry

Michael Vogt

Urban Skudnik

Canonical Ltd

Documentation

Michael Terry

Canonical Ltd

Art

Andreas Nilsson

Jakub Steiner

Lapo Calamandrei

Michael Terry

Translation 译者致谢名单 Launchpad Contributions: Kyle Nitzsche https://launchpad.net/~knitzsche
usr/share/help-langpack/zh_CN/deja-dup/backup-auto.page0000644000373100047300000000171112317333257024634 0ustar langpacklangpack00000000000000 Give yourself peace of mind 自动备份

If you only back up when you remember to do so, you’re not backing up often enough. Fortunately, it’s easy to set up automatic backups.

Open your Backups settings.

Review your backup settings, to confirm they are what you want.

Turn on the Automatic backups option on the Overview page.

Consider only saving your backups for a certain length of time, using the Keep backups option on the Schedule page. Otherwise, they may end up consuming a lot of space while you’re not paying attention.

usr/share/help-langpack/zh_CN/deja-dup/backup-first.page0000644000373100047300000000140312317333257025011 0ustar langpacklangpack00000000000000 Start now 您的第一个备份

Open your Backups settings.

Review your backup settings, to confirm they are what you want.

Click on the Back Up Now… button on the Overview page.

等待。备份可能需要很长时间,如果是备份到远程服务器,时间就更长。只管让它在后台运行,这段时间您可以做些别的事情。

usr/share/help-langpack/zh_CN/deja-dup/restore-revert.page0000644000373100047300000000231312317333257025410 0ustar langpacklangpack00000000000000 Restore a previous version of a file 恢复文件

浏览到包含您想恢复的文件的文件夹。

Select the file you want to revert by clicking on it.

Click EditRevert to Previous Version….

出现恢复对话框时,选择恢复的起始日期。

单击前进

检查所做选择,并单击恢复。请注意,此操作会覆盖文件的当前版本。

You can select multiple files at once before reverting.

您还可以通过命令行来恢复文件:

deja-dup --restore FILE1 FILE2
usr/share/help-langpack/zh_CN/deja-dup/restore-lost.page0000644000373100047300000000223612317333257025066 0ustar langpacklangpack00000000000000 Restore a file that is no longer present 恢复丢失的文件

Browse to the folder containing the file you lost.

Click FileRestore Missing Files….

When the Restore dialog appears, it will scan for files that are in the backup but no longer in the folder.

When you see the file you want to restore appear, select it and click Forward.

检查所做选择,并单击恢复

You can restore lost files from the command line as well, if you remember what their filenames were:

deja-dup --restore FILE1 FILE2
usr/share/help-langpack/zh_CN/deja-dup/prefs.page0000644000373100047300000001065212317333257023544 0ustar langpacklangpack00000000000000 Adjust your backup settings Settings <gui>Automatic backup</gui>

Turn this option on to have Déjà Dup automatically back up for you. This is recommended so that you don’t forget to do it yourself. Backups are more useful the more recent they are, so it is important to back up regularly.

<gui>Folders to save</gui>

Choose a list of folders to save in your backup. Press the Add or Remove buttons to modify the list. If you are only interested in backing up your own data, the default of Home is sufficient.

<gui>Folders to ignore</gui>

Choose a list of folders to not save in your backup. Press the Add or Remove buttons to modify the list.

您的一些数据可能体积庞大,并且对您而言不是非常重要。如果是这样,不备份它们可以为自己节省一些时间和空间。

Some locations are always ignored by default:

~/.adobe/Flash_Player/AssetCache

~/.cache

~/.gvfs

~/.Private

~/.recent-applications.xbel

~/.recently-used.xbel

~/.steam/root (which by default also ignores ~/.local/share/Steam)

~/.thumbnails

~/.xsession-errors

/proc

/run

/sys

/tmp

<gui>Storage location</gui>

Use these options to specify the storage location that Déjà Dup will use when backing up or restoring:

Cloud Services

The first few storage locations are cloud storage services provided by various companies. For a small fee, they hold your data for you. A cloud service like this is recommended because it is an easy way to keep your data offsite (meaning out of your home: in case of disaster or theft, your data will still be safe).

These services cost money. Read their rates carefully before using them.

Remote Servers

Choose the type of remote server to which you want to connect. Then you can enter the server information. Alternatively, if you know your server’s URL, choose Custom Location and enter it.

可移动媒体

您可能会在列表中看到外置硬盘或闪盘之类的可移动媒体。

Local Folder

You may also want to choose a local folder as a storage location. Note that backups can be quite large, so make sure you have enough free disk space.

This is not recommended, because if your hardware fails, you will lose both your original data and your backups.

<gui>Keep</gui>

选择备份文件的最短保留时间。如果您发现备份文件占用的空间过多,可能想缩短这段时间。由于实现细节上的缘故,文件的保留期可能比选择的时间略长。但不会有任何文件被提前删除。

Backups are kept forever by default, but still may be deleted earlier if the storage location begins to run out of space.

usr/share/help-langpack/zh_CN/deja-dup/contribute.page0000644000373100047300000000362612317333257024606 0ustar langpacklangpack00000000000000 Help make Déjà Dup better Getting Involved

So you want to help make Déjà Dup even better? Excellent! Here are some suggestions.

Report Issues

Did you see a flaw? Do you have an idea for a new feature? Simply report it as a bug. Be patient for a reply.

Note that bug reports should be in English only.

Talk to Us

We don’t bite. Send an email to the mailing list.

Or subscribe to the list. The list is very low traffic.

Note that the list is English only.

Translating

Do you speak both English and another language? Good! You can help translate Déjà Dup through a web interface. It’s really quite easy and is very appreciated.

Support

Do you like helping people? Answer user questions and support requests.

This is another great way for non-English speakers to get involved, as you can answer questions posted in your language.

Coding

There are always more bugs to fix. If you want to find out what needs doing, talk to us on the mailing list as described above.

usr/share/help-langpack/zh_CN/deja-dup/index.page0000644000373100047300000000174212317333257023534 0ustar langpacklangpack00000000000000 Backup Help Backup Help Michael Terry mike@mterry.name 2010,2011

Creative Commons Attribution-Share Alike 3.0 Unported License

<media type="image" mime="image/png" src="figures/deja-dup-icon.png"/> Backup Help
备份
恢复文件
About <app>Déjà Dup Backup Tool</app>
usr/share/help-langpack/zh_CN/deja-dup/restore-full.page0000644000373100047300000000457012317333257025052 0ustar langpacklangpack00000000000000 Recover from total system failure 全系统恢复
设置

让系统恢复到全新状态。例如,进行全新安装或在一台旧计算机上建立一个新账户。先不用操心使用舒适度和定制设置的事情。可以等到恢复之前设置后再进行任何更改,因为您现在进行的任何定制都可能会在恢复时被覆盖。

接下来,您需要安装 Déjà Dup。您的发布供应商可能已为您打包了该软件。否则,请下载它并进行编译。

恢复

Open your Backups settings.

Click on the Restore… button on the Overview page.

A Restore dialog will appear asking where your backup files are stored (your Backup location).

Click Forward and wait for Déjà Dup to scan the backup location.

选择您想从哪个日期开始进行恢复。通常不必改动此项,因为默认值便是最近的备份。

单击前进

选择恢复到何处。由于这是全系统备份,因此请保留默认值不变(恢复时覆盖当前安装)。

单击前进

检查所做选择,并单击恢复

等待。可能需要很长时间才能完成恢复。

最后,重新安装您上一次安装时乐于使用的所有程序。

If for whatever reason you have a problem after trying to restore with the Restore files to original locations option, try restoring instead to a temporary directory and moving your files to where they belong.

If that still doesn’t work, there are more drastic things you can try.

usr/share/help-langpack/zh_CN/gnome-terminal/index.docbook0000644000373100047300000015432212253427713025470 0ustar langpacklangpack00000000000000 ]>
GNOME 终端手册 终端给用户使用基于文本的命令(例如 Bash)和系统交互的能力。 2002 2003 2004 Sun Microsystems 2000 Miguel de Icaza 2000 Michael Zucchi 2000 Alexander Kirillov 2008 Christian Persch 2009 2010 Paul Cutler GNOME 文档项目 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是以 GFDL 协议下发布的 GNOME 手册集的一部分。如果您希望单独发布本手册,您可以通过添加一个这个许可证的一份副本到这个手册来做到,就像在第六节中所描述的这个许可证。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. Sun GNOME Documentation Team Sun Microsystems Miguel de Icaza GNOME Documentation Project Michael Zucchi GNOME Documentation Project Alexander Kirillov GNOME Documentation Project GNOME 文档项目 GNOME Terminal Manual V2.9 January 2010 Paul Cutler pcutler@gnome.org GNOME Documentation Project GNOME Terminal Manual V2.8 March 2009 Paul Cutler GNOME Documentation Project GNOME Terminal Manual V2.7 November 2003 Sun GNOME Documentation Team GNOME Documentation Project GNOME Terminal Manual V2.6 September 2003 Sun GNOME Documentation Team GNOME Documentation Project GNOME Terminal Manual V2.5 May 2003 Sun GNOME Documentation Team GNOME Documentation Project GNOME Terminal Manual V2.4 January 2003 Sun GNOME Documentation Team GNOME Documentation Project GNOME Terminal Manual V2.3 August 2002 Sun GNOME Documentation Team GNOME Documentation Project GNOME Terminal Manual V2.2 August 2002 Sun GNOME Documentation Team GNOME Documentation Project GNOME Terminal Manual V2.1 August 2002 Sun GNOME Documentation Team GNOME Documentation Project GNOME Terminal Manual V2.0 April 2002 Sun GNOME Documentation Team GNOME Documentation Project GNOME Terminal User's Guide May 2000 Miguel de Icaza, Michael Zucchi, Alexander Kirollov docs@gnome.org GNOME Documentation Project 本手册描述 2.30 版的 GNOME 终端。 反馈 To report a bug or make a suggestion regarding the GNOME Terminal application or this manual, follow the directions in the GNOME Feedback Page. GNOME Terminal terminal application 导言 GNOME 终端是一个终端模拟器程序,您可以使用它进行如下任务: 在 GNOME 环境下进入 UNIX shell Shell 是一个解释并执行在命令提示符处键入的命令的程序。当启动GNOME 终端,本程序启动系统账户指定的默认 Shell。您可以随时切换到另一个 shell。 运行任何设计为运行在 VT102,VT220 和 xterm 终端中的程序 GNOME 终端模拟 X 联盟开发的xterm程序。反过来,xterm程序模拟 DEC VT102 终端并且也支持 DEC VT220 转义序列。转义序列是一串以Esc开头的字符。GNOME Terminal接受 VT102 和 VT220 终端所有的转义序列,用于例如移动光标和清屏。 入门 下边的章节描述怎样启动 GNOME 终端 启动 GNOME 终端 您可以用以下列方式启动 GNOME 终端 应用程序 菜单 选择 附件终端 命令行 执行如下命令 gnome-terminal 您可以使用命令行选项修改 GNOME 终端 运行的方式。要查看命令行选项,执行如下命令:gnome-terminal --help 第一次启动 GNOME 终端时 在您启动首次GNOME 终端,这个程序以一组默认设置打开这个。这组默认设置被叫做默认配置文件。配置文件名在GNOME 终端窗口的标题栏上显示。
默认的 GNOME 终端的例子 GNOME 终端默认窗口 GNOME Terminal default window
这个终端窗口显示一个命令提示符,在这您可以键入 UNIX 命令。命令提示符可能是 %, #, >, $ 或其它指定字符。游标定位在了命令提示符旁边。当您键入 UNIX 命令并且按下Return,计算机执行这个命令。默认的,GNOME 终端使用启动为这个程序的用户指定的默认 shell。 GNOME 终端 也设置如下环境变量: TERM 默认设置为 xterm COLORTERM 默认设置为 gnome-terminal WINDOWID 默认设置 X11 窗口识别码
终端配置文件 您可以创建一个新的配置文件,向终端提交这个新配置文件以修改字符特征(如字体,颜色和效果)、滚动行为、窗口标题和兼容性。您同样也可以在配置文件中指定一个在启动 GNOME 终端时自动运行的命令。 您可以在配置文件对话框为每一个终端定义配置文件,其可以从编辑菜单进入。您可以定义需要数量的配置文件。当启动一个终端时,您可以选择想对这个终端使用的配置文件。或者,您也可以在使用终端时更改终端配置文件。要在您从命令行启动这个程序时为终端指定初始配置文件,使用如下命令: gnome-terminal --window-with-profile=profilename 当前配置文件的名字显示在 GNOME 终端的标题栏中,除非您在 编辑配置文件 中指定了不同的标题栏名字。 查看 获取关于怎样定义和使用新终端配置文件的信息。 使用多个终端 GNOME 终端提供标签功能,它可以使您在单一窗口中打开多个终端。每个终端打开于一个分离的标签。点击相应的标签来在窗口中显示这个终端。同一个窗口中的每个标签化的终端都是分离的子进程,所以您可以使用每个终端做不同的任务。您也是对同一窗口中的不同标签化的终端提供不同的配置文件。 终端窗口的标题栏显示当前配置文件的名字或者当前配置文件指定的名字。显示了一个带有四个标签页的GNOME 终端窗口。此时,四个标签中的每一个都有不同的配置文件。当前活动标签页的配置文件名--Profile 1,在标题栏上显示。
一个带有标签的终端窗口的例子 GNOME 终端默认窗口 GNOME Terminal default window
查看 获取关于怎样打开一个新标签终端的信息。
使用方法 打开和关闭终端 要打开一个新终端窗口: 选择 文件打开终端 新终端从父终端继承程序设置和默认 shell。 要选择一个终端窗口: 选择 文件关闭窗口 这个动作关闭终端和从这个终端打开的任何子进程。如果关闭最后一个终端窗口,GNOME 终端程序将退出。 要在一个窗口中添加一个新标签终端: 选择 文件打开标签页默认或在没有子菜单时仅仅文件打开标签页 要显示一个带标签的终端: 在您想显示的标签页上点击,或从标签页菜单中选择标签标题。 或者,选择标签页后一个标签标签页前一个标签页来在标签之间导航。 要关闭一个带标签的终端: 显示您想关闭的带标签的终端。 选择 文件关闭标签 管理配置文件 要添加一个新的配置文件: 选择 文件新建配置文件来显示 新建配置文件 对话框。 配置文件名 文本框中输入新配置文件名。 使用 基于 下拉菜单来选择新配置文件基于的配置文件。 点击 创建 来显示 编辑配置文件对话框。 点击关闭GNOME 终端终端更改配置文件子菜单中添加配置文件。 要更改带标签的终端的配置文件: 点击您想更改配置文件的标签页。 选择 终端更改配置文件配置文件 要编辑配置文件: Editing Profile对话框中编辑配置文件。您可以使用如下方法进入Editing Profile对话框: 选择 编辑当前配置文件 Right-click in the terminal window, then choose Profiles Profile Preferences from the popup menu. 选择编辑配置文件,选择要编辑的配置文件,然后点击编辑。要获取您可以在配置文件中设置的选项,查看 要删除一个配置文件: 选择 编辑配置文件 Profiles列表中选择您要删除的配置文件名,然后点击删除。显示删除配置文件对话框。 点击 删除来确认这个删除动作。 点击关闭来关闭编辑配置文件对话框。 更改一个终端窗口 要隐藏菜单栏: 选择 查看显示菜单栏 要显示隐藏的菜单栏: 在终端窗口右键点击, 然后在快捷菜单中选择 显示菜单栏 要以全屏模式显示GNOME 终端窗口: 选择 查看全屏。全屏模式在一个充满整个屏幕的窗口中显示文本。这个窗口不包含一个窗口框架或标题栏。要从这个模式退出,再次选择查看全屏 要更改终端窗口的外观: 查看获取更多关于您可以在编辑配置文件对话框中更改终端窗口外观的选项的更多信息。例如,您可以更改背景色或滚动条的位置。 操作终端窗口的内容 要翻阅先前的命令并显示: 执行如下之一的动作: 使用滚动条,其一般是在终端窗口的右边显示。 按下 ShiftPage UpShiftPage DownShiftHomeShiftEnd组合键。 在终端窗口中,您可以回滚的行数是由编辑配置文件对话框的滚动标签中的回滚设置决定的。您也可以通过按 ControlShift上方向键ControlShift下方向键 一次向上或向下滚动一行。 要选择和复制文本: 您可以通过如下任何方式选择文本: 要一次选择连续字符,在您要选择的第一个字符上点击并且拖动鼠标到您要选择的最后一个字符。 要以单词为单位选择,在您要选择的第一个单词上双击并且拖动鼠标到您要选择的最后一个单词。符号单独地被选择。 要以行为单位选择,在要选择的起始行三击并拖动鼠标到要选择的最后一行。 这个动作选择从第一个到最后一个条目的所有文本。对于所有的文本选择,GNOME 终端在您释放鼠标时,复制选中的文本到剪贴板。要明确的复制选中的文本,选择编辑复制 要在终端中粘贴文本: 如果您已经将一段文本复制到了剪切板,您可以执行如下动作将这段文本粘贴到终端: 要粘贴您仅通过选择复制的文本,在命令提示符处点击中键。如果您的鼠标没有中键,查看 X Server 文档获取如何模拟一个鼠标中键的信息。 要粘贴您明确复制的文本,选择编辑粘贴 要拖动一个文件名到终端窗口: 您可以从其它程序(如文件管理器)拖动一个文件名到终端。终端显示这个文件的路径和全名。 要进入一个链接: 要进入一个在终端中显示的统一资源定位符(URL),执行如下步骤: 移动鼠标到 URL,直到 URL 被下划线。 在 URL 上右键点击打开一个快捷菜单。 选择 打开链接启动关联的应用程序并显示 URL 关联的文件。 查看键盘快捷键设置 要查看GNOME Terminal的键盘快捷键设置,选择编辑键盘快捷键键盘快捷键对话框包含如下内容: Disable all menu access keys (such as Alt+f to open File menu) 反选这项禁用定义用来是您可以使用键盘代替鼠标选择菜单条目的访问键。每个访问键通过在菜单那或对话框选项上的前边有个下划线的字母标明。某些情况下,需要同时按下Alt键和那个访问键来执行这个动作。 Disable menu shortcut key (F10 by default) 反选这个选项以禁用定义用于开启GNOME 终端菜单的快捷键。默认的开启菜单的快捷键是F10 Shortcut Keys 这个对话框的Shortcut Keys节列出了每个菜单条目的快捷键。 不是所有的键都能作为快捷键,例如Tab 字体大小 您可以使用如下方法重新调整 GNOME 终端窗口中字体的大小: 要增大字体的大小,选择 查看放大 要减小字体的大小,选择 查看缩小 要以实际大小查看文本,选择查看普通大小 要更改终端标题 要更改终端中当前显示的标题,执行如下步骤: 选择 终端设置标题 标题文本框输入新的标题。GNOME 终端立即使用这个更改。 点击关闭以关闭设置标题对话框。 要更改字符编码 要更改字符编码,选择终端设置字符编码,然后选择相应的编码。 要更改字符编码列表 要更改设置字符编码菜单中显示的字符编码列表,执行如下步骤: 选择 终端设置字符编码添加或删除 要向Set Character Encoding菜单中添加一个编码,在可用的编码列表框中选择这个编码,然后点击右向箭头按钮。 要从设置字符编码菜单中移除一个编码,在菜单中显示的编码列表框中选择这个编码,然后点击左向箭头按钮。 点击Close以关闭添加或删除终端编码对话框。 要恢复您的终端 如果您使用终端有问题,本节提供一些建议。 要复位终端的状态: 选择终端复位 要重置终端并清理屏幕: 选择终端复位并清屏 首选项 要配置GNOME 终端,选择编辑当前配置文件。要配置您设置的其他配置文件,选择编辑配置文件,选择要编辑的配置文件,点击编辑 编辑配置文件对话框包含如下标签,您可以使用其配置GNOME 终端 常规 Profile name 使用这个文本框指定当前配置文件的名字。 Use the system fixed width font 选择这项使用标准等宽字体,其是在外观首选项工具的字体标签中指定的。 Font 点击这个按钮来为终端选择一个字体类型和字体大小。这个按钮只有在 使用系统终端字体选项没有被选择时才被启用。 Allow bold text 选择这项使终端显示粗体字。 Show menubar by default in new terminals 选择这项在新终端窗口中显示菜单栏。 Terminal bell 选择这项启用终端响铃 Cursor shape Use this drop down-list to specify the shape of the cursor. Select-by-word characters 使用这个文本框指定在您按单词为单位选择文本时GNOME 终端认为是单词的字符或字符组。参看获取更多关于怎样以单词为单位选择文本的信息。 标题和命令 Initial title 使用这个文本框指定使用这个配置文件的终端的初始标题。从当前终端启动的新终端使用这个新初始标题。 When terminal commands set their own titles 使用下拉菜单指定怎样处理动态设置的标题,即,终端标题由其中运行的命令设置。 Run command as a login shell 选择这项强迫当前运行在终端中的命令按照登录 shell 方式运行。如果这个命令不是 shell,这项设置无效。 Update login records when command is launched 选择这项在一个新 shell 打开时在登录记录中插入一个新条目。 Run a custom command instead of my shell 选择这项以在终端中运行指定命令而不是通常的 shell。在 自定义命令文本框中指定自定义命令。 When command exits 使用下拉菜单指定命令退出时执行的动作。 颜色 Foreground and Background Select the Use colours from system theme option to use the colors that are specified in the GNOME Desktop theme that is selected in the Theme tab of the Appearance preference tool. 使用内置方案下拉菜单为终端指定前景色和背景色。GNOME 终端支持如下前景色和背景色组合: Black on light yellow Black on white Gray on black Green on black White on black Custom 这个选项是您可以选择在已选的配色方案中没有的颜色。 实际显示的前景色和背景色可能相当依赖于选择的颜色方案。例如,如果选择 黑底白字Linux 控制台颜色方案,程序将显示前景色和背景色为黑底量灰色前景。内置方案下拉菜单只有在 使用系统主题中的颜色 未被选中时才启用。 点击文本颜色按钮以显示选择终端文本颜色对话框。使用色轮或自旋框来自定义想要用于文本的颜色,然后点击确定文本颜色按钮只有在使用系统主题中的颜色选项没有选中时才被启用。 点击背景颜色按钮显示选择终端背景颜色对话框。使用色轮或自旋框自定义想用于背景的颜色,然后点击确定背景颜色按钮只有在使用系统主题颜色选项没有被选中时才启用。 Palette 终端模拟器只能同时使用 16 种颜色绘制文本。调色板指定了这 16 种颜色。终端中运行的程序使用一个索引数字来从调色板中指定颜色。 使用内置方案下拉菜单选择预设的颜色方案。下边的调色板和终端窗口中的内容同时更新以显示这种方案。 使用调色板自定义在自定义调色板中的 16 种默认的颜色。要自定义一种颜色,在这种颜色上点击,以显示调色板颜色对话框。使用色轮或自旋框来自定义颜色,然后点击确定 背景 Background 为终端窗口设置背景。有如下选项: Solid color 选择此项使用在颜色标签中指定的背景颜色作为终端的背景颜色。 Background image 选择这项使终端使用一张图像作为背景。使用图像文件下拉式组合框来指定图像文件的位置和名字。或者,点击浏览来寻找和选择图像文件。 选择背景图像可以滚动选项,启用在通过终端滚动时背景图像跟随文本滚动。如果没有选择这项,背景图片固定在终端背景上,只有文字滚动。这项只有在您选择了背景图像选项时才可用。 Transparent background 选择这个选项在终端中使用透明背景。 Shade transparent or image background 使用这个滑块加深或减淡终端的背景。这个选项只有在您选择了背景图像透明背景选项时才可用。 滚动 Scrollbar is 使用这个下拉菜单指定终端窗口的滚动条位置。 Scrollback ... lines Use this spin box to specify the number of lines that you can scroll back using the scrollbar. For example, if you specify 100 you can scroll back the last 100 lines displayed in the terminal. Select the Unlimited option to remove the limit on the number of lines you can scroll back using the scrollbar. Scroll on output 选择这个选项使您在终端从一个命令继续显示更多的输出时可以滚动在终端的输出。 Scroll on keystroke 选择这项允许您按下任何键来滚动终端窗口至命令提示符。这个动作只在您向上滚动终端窗口并且想回到命令提示符时可用。 兼容性 Backspace key generates 使用下拉菜单选择您希望退格键键执行的功能。 Delete key generates 使用下拉菜单选择您希望Delete键执行的功能。 Reset compatibility options to defaults 点击这个按钮重设兼容性标签选项中的选项为默认值。
usr/share/help-langpack/zh_CN/gnome-terminal/legal.xml0000644000373100047300000000741412253427713024624 0ustar langpacklangpack00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是以 GFDL 协议下发布的 GNOME 手册集的一部分。如果您希望单独发布本手册,您可以通过添加一个这个许可证的一份副本到这个手册来做到,就像在第六节中所描述的这个许可证。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. usr/share/help-langpack/zh_CN/gnome-mines/translate.page0000644000373100047300000000323112300405717025133 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011 Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Help translate

The GNOME games user interface and documentation is being translated by a world-wide volunteer community. You are welcome to participate.

There are many languages for which translations are still needed.

To start translating you will need to create an account and join the translation team for your language. This will give you the ability to upload new translations.

You can chat with GNOME translators using irc. People on the channel are located worldwide, so you may not get an immediate response as a result of timezone differences.

Alternatively, you can contact the Internationalization Team using their mailing list.

usr/share/help-langpack/zh_CN/gnome-mines/license.page0000644000373100047300000000356612300405717024573 0ustar langpacklangpack00000000000000 Legal information. 许可

This work is distributed under a CreativeCommons Attribution-Share Alike 3.0 Unported license.

You are free:

<em>To share</em>

To copy, distribute and transmit the work.

<em>To remix</em>

To adapt the work.

Under the following conditions:

<em>Attribution</em>

You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).

<em>Share Alike</em>

If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.

For the full text of the license, see the CreativeCommons website, or read the full Commons Deed.

usr/share/help-langpack/zh_CN/gnome-mines/get-help.page0000644000373100047300000000227412300405717024651 0ustar langpacklangpack00000000000000 Baptiste Mille-Mathias baptistem@gnome.org 2011 Ekaterina Gerasimova kittykat3756@gmail.com 2012 Hints and warnings

You can use hints to reveal safe tiles, and flag warnings to help you keep track of flags.

Click Hint in the toolbar to reveal a hidden tile that is safe. You will be penalized for using hints: ten seconds will be added to your total time.

To enable warnings, edit the preferences by selecting MinesPreferences and ticking the checkbox next to Warn if too many flags have been placed. This will warn you when you try to place too many flags next to an open tile.

usr/share/help-langpack/zh_CN/gnome-mines/bug-filing.page0000644000373100047300000000412312300405717025162 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany@antopolski.com 2011

Creative Commons Share Alike 3.0

Help make <app>Mines</app> better
Report a bug or suggest an improvement

Mines is maintained by a volunteer community. You are welcome to participate. If you notice a problem you can file a bug report. To file a bug, go to .

This is a bug tracking system where users and developers can file details about bugs and crashes, or request enhancements.

To participate you need an account, which will give you the ability to gain access, file bugs, make comments, and receive updates by e-mail about the status of your bug. If you don't already have an account, just click on the New Account link to create one.

Once you have an account, log in, click on File a BugApplicationsgnome-mines. Before reporting a bug, please read the bug writing guidelines, and please browse for the bug to see if it already exists.

If you are requesting a new feature, choose enhancement in the Severity menu. Fill in the Summary and Description sections and click Commit.

Your report will be given an ID number, and its status will be updated as it is being dealt with. Thanks for helping make Mines better!

usr/share/help-langpack/zh_CN/gnome-mines/new-game.page0000644000373100047300000000261012300405717024636 0ustar langpacklangpack00000000000000 Baptiste Mille-Mathias baptistem@gnome.org 2012 Ekaterina Gerasimova kittykat3756@gmail.com 2012 Aruna Sankaranarayanan aruna.evam@gmail.com Start a new game

To start a new game:

Click the New button or select Mines New Game from the application menu.

Select your preferred board size.

If you are already playing a game, Mines will ask if you want to Start New Game or Keep Current Game. If you choose the former, your current game will be lost.

usr/share/help-langpack/zh_CN/gnome-mines/develop.page0000644000373100047300000000210012300405717024566 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

Help develop

The GNOME Games are developed and maintained by a volunteer community. You are welcome to participate.

If you would like to help develop GNOME Games, you can get in touch with the developers using irc, or via our mailing list.

usr/share/help-langpack/zh_CN/gnome-mines/shortcuts.page0000644000373100047300000000247112300405717025201 0ustar langpacklangpack00000000000000 Brian Grohe grohe43@gmail.com 2012 Keyboard shortcuts

New game

CtrlN

Fullscreen

F11

Hint

CtrlH

Pause

Pause

Use the toolbar shortcut if your keyboard does not have a Pause key.

Help

F1

Quit

CtrlQ

usr/share/help-langpack/zh_CN/gnome-mines/rules.page0000644000373100047300000000335712300405717024301 0ustar langpacklangpack00000000000000 Baptiste Mille-Mathias baptistem@gnome.org 2011 Ekaterina Gerasimova kittykat3756@gmail.com 2012 Game rules

The aim of Mines is to clear the minefield without detonating any of the mines.

Start by chosing one of the three default board sizes, or by selecting a custom board.

The game begins with the board covered in tiles. Click on any tile to uncover it. You will reveal:

A colored number, which represent the number of mines in the adjacent tiles. This will help you deduce where the mines are so that you can mark them with flags.

A blank tile, which means there are no mines under any of the adjacent tiles.

A mine, which will detonate and end the game.

Repeat the previous step until you have uncovered all the tiles which do not have mines underneath them.

If you complete the game quickly enough, you will be added to the high scores list.

usr/share/help-langpack/zh_CN/gnome-mines/index.page0000644000373100047300000000266712300405717024261 0ustar langpacklangpack00000000000000 <media type="image" src="figures/logo.png"/> GNOME Mines GNOME Mines Brian Grohe grohe43@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

Creative Commons Share Alike 3.0

<media type="image" src="figures/logo32.png">GNOME Mines logo</media> GNOME Mines

Mines is a clone of the game Minesweeper. The aim is to locate all the mines that are hidden under tiles on a rectangular board. You will need to use a combination of logic and luck to find all the mines without triggering an explosion.

Game Play
Useful tips
Advanced
Get Involved
usr/share/help-langpack/zh_CN/gnome-mines/documentation.page0000644000373100047300000000305412300405717026012 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2011 Ekaterina Gerasimova kittykat3756@gmail.com 2012 Aruna Sankaranarayanan aruna.evam@gmail.com

Creative Commons Share Alike 3.0

Help write documentation

The GNOME Games user help is maintained by a volunteer community. You are welcome to participate.

To contribute to the Documentation Project, get in touch with us on the #docs channel on irc.gnome.org or via our mailing list .

Our wiki page contains useful information.

usr/share/help-langpack/zh_CN/gnome-mines/board-size.page0000644000373100047300000000236012300405717025177 0ustar langpacklangpack00000000000000 Baptiste Mille-Mathias baptistem@gnome.org 2011 Ekaterina Gerasimova kittykat3756@gmail.com 2012 How to change the game board size

You can select a field size at the start of a new game.

Click New or Mines New Game.

Select one of the grid sizes:

a 8 × 8 board with 10 mines

a 16 × 16 board with 40 mines

a 30 × 16 board with 99 mines

a custom board, where you chose the size and the number of mines

usr/share/help-langpack/zh_CN/gnome-mines/high-scores.page0000644000373100047300000000212212300405717025347 0ustar langpacklangpack00000000000000 Baptiste Mille-Mathias baptistem@gnome.org 2012 Ekaterina Gerasimova kittykat3756@gmail.com 2012 High scores

The high scores list the ten fastest times in which each type of mine field has been cleared.

To view the high scores, select MinesScores. The dialog will display the Small field size by default; to view other sizes, select them in the drop down menu at the top of the dialog.

usr/share/help-langpack/zh_CN/gnome-mines/faces.page0000644000373100047300000000270212300405717024221 0ustar langpacklangpack00000000000000 Baptiste Mille-Mathias baptistem@gnome.org 2011 Aruna Sankaranarayanan aruna.evam@gmail.com The meaning of the faces

This is a new game and you have not clicked on any tile yet.

You are currently clicking on a tile.

You have uncovered a mine. You lose.

The tile you just clicked on is safe. You can continue.

You have found all the mines. You win!

usr/share/help-langpack/zh_CN/gnome-mines/toolbar.page0000644000373100047300000000141712300405717024604 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2012 Toolbar

The toolbar, located under the menu bar, lets you perform common actions with your mouse. To use a toolbar item, just click on it. The buttons, from left to right, are New Game, Hint, Pause and Fullscreen.

usr/share/help-langpack/zh_CN/gnome-mines/flags.page0000644000373100047300000000543612300405717024243 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com 2012 Baptiste Mille-Mathias baptistem@gnome.org 2012 Ekaterina Gerasimova kittykat3756@gmail.com 2012 How to use flags

Flags are used to mark tiles which you suspect may hide a mine. Putting a flag on a tile prevents you from clicking on it and possibly causing an explosion, which would end the game.

How to place a flag on a tile

Red flags are those that cannot be clicked. To place a red flag on a tile:

right click on a blank tile.

To make the number of available flags equal to the number of remaining mines, enable Warn if too many flags placed and Use "I'm not sure" flags preference options, then restart the application.

Use of the <em>I'm not sure</em> flag

If you are not sure whether a tile hides a mine, you can use the blue I'm not sure flag.

To put an I'm not sure flag on a tile:

Right-click twice on a blank tile or once on a red flag.

To enable these flags, click MinesPreferences, and select Use "I'm not sure" flags.

usr/share/help-langpack/zh_CN/gnome-user-share/index.docbook0000644000373100047300000002311212300454034025710 0ustar langpacklangpack00000000000000 ]>
个人文件共享手册 2009 Red Hat, Inc. Matthias Clasen 1.0 2009 Matthias Clasen mclasen@redhat.com 本手册讲述的是用户共享手册 2.26 版。 反馈 To report a bug or make a suggestion regarding the gnome-user-share application or this manual, follow the directions in the GNOME Feedback Page. 用户共享是一个会话服务,可以很方便地在不同计算机之间共享文件。 gnome-user-share file sharing sharing 介绍 用户共享是一个会话服务,用于输出您的主目录中的 公共 文件夹的内容,其他人可以通过局域网很方便地访问。在其他计算机上,共享的文件夹会出现在 nautilus 文件管理器 的网络窗口中,是一个叫“user 的共享文件夹 ”,这儿的 user,将会是您的用户名。 GNOME 用户共享使用一个 WebDAV 服务来共享 公共 文件夹,并且使用 mDNS 在局域网中通知共享。 另外,GNOME 用户共享能使共享文件夹通过 ObexFTP 到蓝牙,并通过您计算机上的蓝牙 ObexPush 来接收文件。 快速入门 启动 GNOME 用户共享 GNOME 用户共享服务在您登录时,由 gnome-session 正常启动,可以通过 系统 菜单的 首选项启动的应用程序 菜单来改变,点击“用户共享”条目来设置它。 要配置不同种类的文件共享,可以使用文件共享首选项。在 系统首选项个人文件共享
文件共享首选项
允许在网络上文件共享 打开文件共享首选项 系统 菜单的 首选项个人文件共享 菜单。
在网络上共享文件
To enable file sharing via WebDAV, use the Share public files on network checkbox. When file sharing it enabled, the controls for password protection allow to set a password that needs to be specified before a user on another computer is granted access to the shared files. Some firewall configurations on the local machine might cause problems with the advertisment, as well as the access to the shared files. Consult your system administrator for more details. Select Never to allow everybody to freely read or write files in the shared folder. Select Always to require the password to read or write files in the shared folder. Select When writing files to allow everybody to freely read files in the shared folder, but require the password when writing files. When you set a password, you have to give the password to all users that you want to have access to the shared files. Therefore, you should use a password that is different from other passwords you use.
允许通过蓝牙共享文件 打开文件共享首选项 系统 菜单的 首选项个人文件共享 菜单。
通过蓝牙共享文件
To enable file sharing via Bluetooth, use the Share public files over Bluetooth checkbox. To allow remote Bluetooth devices to delete files in your shared folder, use the Allow remote devices to delete files checkbox. To allow remote Bluetooth devices to access your shared files even when they are not bonded with your computer, use the Require remote devices to pair with this computer checkbox. When you allow unbonded remote devices to access your shared files, anybody with a Bluetooth-enabled cell phone in the vicinity of your computer can access and perhaps even modify your shared files.
通过蓝牙接收文件 打开文件共享首选项 系统 菜单的 首选项个人文件共享 菜单。
通过蓝牙接收文件
To let remote Bluetooth devices send files to your computer, use the Receive files in Downloads folder over Bluetooth checkbox. Received files will be stored in the Downloads folder in your home directory. When receiving files is enabled, the Accept files selection allows you to determine which remote devices are allowed to send files. Select Always to allow any remote device to send files. Select Only for Bonded devices to accept files only from bonded devices. Bonded devices are the ones that were connected to your computer, and had to enter a PIN code to connect to or from. Select Only for Bonded and Trusted devices to accept files only from bonded devices. Devices can be marked as trusted in the bluetooth-properties's Known devices section. 使用 提示相关的接收文件 复选框,当通过蓝牙接收文件时,是否出现提示。
usr/share/help-langpack/zh_CN/gnome-user-share/legal.xml0000644000373100047300000000715412300454034025055 0ustar langpacklangpack00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. usr/share/gnome/help-langpack/gtkmm-tutorial/zh_CN/gtkmm-tutorial.xml0000644000373100047300000260662412156577164027711 0ustar langpacklangpack00000000000000 gtkmm"> ]> Programming with <application>gtkmm</application> 3 Murray Cumming Bernhard Rieder 章节《超时》 Jonathon Jongsma 章节《使用 Cairo 绘图》 章节《使用 gtkmm 源代码》 章节《最近的文件》 Ole Laursen 部分章节《国际化》 Marko Anastasov 章节《打印》 部分章节《国际化》 Daniel Elstner 《使用 gmmproc 封装 C 库》章的〈构建结构〉节。 Chris Vine Chapter on "Multi-threaded programs". David King Section on Gtk::Grid. Pedro Ferreira Chapter on Keyboard Events. Kjell Ahlstedt Parts of the update from gtkmm 2 to gtkmm 3. 本书说明了使用gtkmm C++ API 创建用户界面的重要概念,并且介绍了主要的用户界面元素(“widget”)。 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Murray Cumming 2004sweord (sweord@msn.com)2010Tao Wang (dancefire@gmail.com) 根据由自由软件基金发布的 GNU 自由文档协议版本1.2或更高版本的条款,授权复制、分发和/或修改此文档;并且,没有不可变章节,没有封面文本,并且没有封底文本。您可以通过访问自由软件基金(FSF)的网站或写邮件至:Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 来获得一份 GNU 自由文档协议。 序言 本书 本书说明了使用gtkmm C++ API 创建用户界面的重要概念,并且介绍了主要的用户界面元素(“widget”)。虽然提到了类、构造函数和方法,但是并不会深入其细节。因此,如果需要完整的 API 信息,您应当顺着链接访问参考文档。 本书假定读者拥有对 C++ 良好的理解,并且知道如何去创建一个 C++ 程序。 我们非常愿意聆听您在使用此文档学习 gtkmm 时碰到的任何问题,并且感激对此作出的改进。请访问 贡献 节以获得进一步的信息。 gtkmm gtkmm 是一个 GTK+ 的 C++ 封装,GTK+ 是一个用于创建图形用户界面的软件库。它使用 LGPL 协议,因此您可以使用 gtkmm 开发开放软件、自由软件,甚至商业非免费软件而不需支付任何版权费用。 gtkmm 曾经被称为 gtk--,那是因为 GTK+ 的名字中已经有了一个加号。但是,由于 -- 不容易被搜索引擎索引,所以项目名字就渐渐的变成了gtkmm,后来我们就一直使用这个名字。 为什么要使用 <application>gtkmm</application> 而不是 GTK+? gtkmm 允许你使用常用的 C++ 技术来撰写代码,比如封装、继承和多态。作为一个 C++ 程序员,你可能已经意识到这会让代码更加清晰、更加良好的管理代码。 gtkmm 更加类型安全,因此编译器可以检测出一些 C 只能在运行时才能检测出来的错误。这种使用特定类型的方法同样使得 API 更加清晰,因为你只需要通过看一下函数声明就可以知道应该使用什么类型了。 可以使用继承来衍生新的部件。在 GTK+ 中使用 C 代码来衍生新部件是非常复杂的,并且很容易出错,因此几乎没有 C 的程序员这么做。作为 C++ 开发人员,你知道继承是一个基本的面向对象技术。 可以使用成员实例,简化了内存管理。所有的 GTK+ 的 C 部件都是使用指针进行操作的。作为 C++ 程序员,你知道指针应当尽量避免使用。 gtkmm 比 GTK+ 的代码更加简短,GTK+ 使用了大量带前缀的函数名以及大量的转型宏。 <application>gtkmm</application> 对比 Qt Trolltech 公司的 Qt 是和 gtkmm 最相似的有竞争力的产品,所以应该对其进行一下讨论。 gtkmm 开发人员更倾向于使用 gtkmm 而不是 Qt,因为 gtkmm 的使用更加符合 C++ 的方式。Qt 是诞生自 C++ 及其库尚未标准化或尚未被大多数编译器所支持的年代。它重复了大量的现存于标准库中的东西,比如容器、类型信息等等。最重要的是,Trolltech 修改了 C++ 语言以提供信号的功能,这样 Qt 的类无法很容易的与非 Qt 类共同使用。gtkmm 则可以使用标准 C++ 提供信号功能,而无需修改 C++ 语言。请看常见问题以得到进一步的差异。 <application>gtkmm</application> 是一个封装 gtkmm 并不是一个原生的 C++ 工具集,而是一个对于 C 工具集的 C++ 封装。这种分离接口和实现的方式存在诸多优势。gtkmm 开发人员用了他们大量的时间来讨论如何让 gtkmm 提供一个最清晰的 API,而不必为模糊的技术细节尴尬的进行妥协。我们想其他的 C 程序员、Perl 程序员和 Python 程序员等等一样,对底层的 GTK+ 代码库进行了一点点贡献。因此,GTK+ 可以从比某个语言特定的工具集更广泛的用户群中获得好处,有更多的实现、更多的开发人员、更多的测试人员以及更多的用户。 安装 依赖关系 Before attempting to install gtkmm 3.0, you might first need to install these other packages. libsigc++ 2.0 GTK+ 3.0 cairomm pangomm atkmm 这些依赖有它们自己所依赖的软件包,包括下列应用程序和软件库: pkg-config glib ATK Pango cairo gdk-pixbuf Unix 和 Linux 预编译的包 gtkmm 最新的版本的软件包几乎存在于今天每一个主流的 Linux 发布版本中。所以,如果你使用 Linux,你可能只需要从官方的软件库安装相应的软件包,然后就可以开始使用 gtkmm 了。已经在它们的软件库里面包含了 gtkmm 的发布版本有:Debian、Ubuntu、Red Hat、Fedora、Mandriva、SuSE 等等。 The names of the gtkmm packages vary from distribution to distribution (e.g. libgtkmm3.0-dev on Debian and Ubuntu or gtkmm30-devel on Red Hat Fedora), so check with your distribution's package management program for the correct package name and install it like you would any other package. The package names will not change when new API/ABI-compatible versions of gtkmm are released. Otherwise they would not be API/ABI-compatible. So don't be surprised, for instance, to find gtkmm 3.2 supplied by Debian's libgtkmm3.0-dev package. 从源代码安装 如果你的发行版没提供预编译的 gtkmm 包,或者如果你想安装一个和发行版所提供的不同的版本,那么你也可以从源代码安装 gtkmm。可以从 中下载 gtkmm 的源代码。 在安装了所有依赖的库后,下载 gtkmm 源代码、解压缩,并且切换到新创建的目录。然后可以用下列命令序列构件和安装 gtkmm # ./configure # make # make install 记住,在 Unix 或 Linux 操作系统上,你也许需要 root 权限以安装软件。su 命令允许你输入 root 密码,并且临时拥有 root 权限。 configure 将会检查以确认所有必须的依赖软件包都已经正确的安装了。如果你遗漏了某个依赖软件包的话,它会退出并提示错误信息。 默认情况下,gtkmm 将会被安装在 /usr/local 目录。在有些系统中,你也许需要安装到不同的位置。比如,在 Red Hat Linux 系统中,你也许需要使用 --prefix 选项进行配置,例如: # ./configure --prefix=/usr 在安装到标准系统前缀时,如 /usr,你必须非常小心。Linux 发行版会安装软件到 /usr,所以安装源代码包到这个位置可能会破坏或与使用软件包管理器安装的软件冲突。理想情况下,你应当将从源代码安装的软件都安装到一个独立位置。 如果你想帮助开发 gtkmm,或实验一些新的功能,你也可以直接从 Git 安装 gtkmm。大多数用户绝对不需要这么做,但是如果你对帮助 gtkmm 开发感兴趣,请看附录:使用 gtkmm 源代码。 Microsoft Windows GTK+ and gtkmm 被设计成在 Microsoft Windows 上也能很好地工作,而且开发者们鼓励在 win32 平台上使用它们。然而,还有没为 Wnidows 平台的开发库提供标准的安装方法。请参考 Windows Intallation (中文翻译) 以得到进一步关于 Windows 相关的安装方法和注意事项。 基础 这一章将介绍 gtkmm 编程中一些重要的方面。这些将由一些可以运行的示例代码来演示。然而,这仅仅是一种尝试,你还需要继续看其它章节,以得到更实质性的信息。 你现有的 C++ 知识将会帮助你使用 gtkmm,因为它可以和任何库一同工作。除非我们额外声明,你可以期待 gtkmm 类会像任何其它 C++ 类一样,并且你可以期待在 gtkmm 类上使用你现有的知识。 简单的例子 在开始介绍 gtkmm 之前,我们将以一个尽可能简单的程序开始。这个程序创建一个 200 x 200 像素大小的空窗口。 源代码 File: base.cc (For use with gtkmm 3, not gtkmm 2) #include <gtkmm.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base"); Gtk::Window window; window.set_default_size(200, 200); return app->run(window); } 我们会逐行讲解这个例子 #include <gtkmm.h> 所有的 gtkmm 程序都需要包含一些特定的 gtkmm 头文件;gtkmm.h 包含了所有 gtkmm 的内容。通常来说,这并不是一个好主意,因为它包括了一兆左右的头文件。当然,对于这个简单的程序,这就够了。 The next statement: Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base"); creates a Gtk::Application object, stored in a RefPtr smartpointer. This is needed in all gtkmm applications. The create() method for this object initializes gtkmm, and checks the arguments passed to your application on the command line, looking for standard options such as --display. It takes these from the argument list, leaving anything it does not recognize for your application to parse or ignore. This ensures that all gtkmm applications accept the same set of standard arguments. The next two lines of code create a window and set its default (initial) size: Gtk::Window window; window.set_default_size(200, 200); The last line shows the window and enters the gtkmm main processing loop, which will finish when the window is closed. Your main() function will then return with an appropriate success or error code. return app->run(window); After putting the source code in simple.cc you can compile the above program with gcc using: g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs` Note that you must surround the pkg-config invocation with backquotes. Backquotes cause the shell to execute the command inside them, and to use the command's output as part of the command line. Note also that simple.cc must come before the pkg-config invocation on the command line. 头文件和链接 虽然我们已经给出了这个简单的例子的编译命令,但是你最好还是使用 automake 和 autoconf 工具,就像 G. V. Vaughan 等在《Autoconf, Automake, Libtool》中所描述的那样。本书中用到的例子都包含在 gtkmm 包内,同时附有适当的编译构建的文件,所以我们以后不会再给出任何编译命令。你只需要找到恰当的目录然后键入 make 为了简化编译的过程,我们使用了 pkg-config,它存在于所有的(也许已经安装的) gtkmm 安装文件中。这个程序“知道”编译使用了 gtkmm 的程序所需要的编译器选项。--cflags 选项使 pkg-config 输出一个包含编译时需要用到的头文件的目录列表;而使用 --libs 选项将得到一个需要编译器去链接的库列表和一个用于寻找它们的目录列表。试着在你的命令行提示符下运行它,看看在你的系统上会有什么样的结果。 然而,在标准的 configure.ac 中使用 PKG_CHECK_MODULES() 宏,并且运行 autoconf 和 automake 后,这变的更加简单。例如:PKG_CHECK_MODULES([MYAPP], [gtkmm-3.0 >= 3.0.0]) 这将会检查是否存在 gtkmm,并且定义了可以在你的 Makefile.am 文件中使用的 MYAPP_LIBS 和 MYAPP_CFLAGS 变量。 gtkmm-3.0 is the name of the current stable API. There was an older API called gtkmm-2-4 which installs in parallel when it is available. There were several versions of gtkmm-2.4, such as gtkmm 2.10 and there will be several versions of the gtkmm-3.0 API. Note that the API name does not change for every version because that would be an incompatible API and ABI break. Theoretically, there might be a future gtkmm-4.0 API which would install in parallel with gtkmm-3.0 without affecting existing applications. Note that if you mention extra modules in addition to gtkmm-3.0, they should be separated by spaces, not commas. Openismus 有更多 帮助使用 automake 和 autoconf 的基础知识 组件 gtkmm 应用程序由一系列包含了如按钮、文本框之类组件的窗口构成。在一些其它的系统上,组件可能被称为“控件”。对于你的应用程序窗口中的每个组件,在你的代码里就会有一个对应的 C++ 对象。所以当你想控制组件行为的时候,只需要调用这个组件对象的相应方法即可。 Widgets are arranged inside container widgets such as frames and notebooks, in a hierarchy of widgets within widgets. Some of these container widgets, such as Gtk::Grid, are not visible - they exist only to arrange other widgets. Here is some example code that adds 2 Gtk::Button widgets to a Gtk::Box container widget: m_box.pack_start(m_Button1); m_box.pack_start(m_Button2); and here is how to add the Gtk::Box, containing those buttons, to a Gtk::Frame, which has a visible frame and title: m_frame.add(m_box); 本书中的大部分章节都是讲解特定的组件。要得到更多关于添加组件到容器组件的信息,请看 容器组件 这一章。 尽管你可以使用 C++ 代码来指定窗口和组件的外观和布局,但你可能会发现使用 Glade 来设计你的界面,并且使用 Gtk::Builder 在运行时动态加载界面是更方便。请参考 Glade 与 Gtk::Builder 这一章。 尽管 gtkmm 组件实例拥有像其它 C++ 类那样的生存时间和作用域,gtkmm 还是有一些可选的节省时间的特性,接下来你会在接下来的一些例子中看到。Gtk::manage() 允许你指定一个子组件是被其容器组件所拥有。这将允许你 new 组件、添加到容器中,然后忘记删除它。如果你需要了解更多关于 gtkmm 内存管理技术的话,请看 内存管理 章节。 信号 像大多数 GUI 工具集一样,gtkmm事件驱动的。当一个事件发生时,比如说一个鼠标按键被按下,那么所点击的组件就会发出一个合适的信号。每种组件都可以发出一套不同的信号。为了使这个按钮点击产生一个动作,我们可以设置一个信号处理函数(signal handler)来捕捉这个“clicked”信号。 gtkmm 使用 libsigc++ 来实现信号操作。下面这个例子演示怎样把 Gtk::Button “clicked” 信号连接到命名为“on_button_clicked”的信号处理函数上:m_button1.signal_clicked().connect( sigc::mem_fun(*this, &HelloWorld::on_button_clicked) ); 要得到更多关于信号的信息,请参考附录。 要想知道如何实现你自己的信号,而不仅仅是连接到现有的 gtkmm 信号,请参考 附录。 Glib::ustring 你一定很惊讶得知 gtkmm 没有在它的接口上使用 std::string,相反,它使用了 Glib::ustringGlib::ustringstd::string 非常相似,甚至在某些场合,你甚至可以把它当成 std::string 来使用,而忽略本节后面的内容。但是如果你希望在你的应用程序中使用英语以外的语言的话,那么请继续读下去。 std::string uses 8 bit per character, but 8 bits aren't enough to encode languages such as Arabic, Chinese, and Japanese. Although the encodings for these languages have now been specified by the Unicode Consortium, the C and C++ languages do not yet provide any standardised Unicode support. GTK+ and GNOME chose to implement Unicode using UTF-8, and that's what is wrapped by Glib::ustring. It provides almost exactly the same interface as std::string, along with automatic conversions to and from std::string. UTF-8 编码的优点之一是,如果不需要你可以不使用它,所以你不需要一次性的翻新你的代码。std::string 还可以继续使用7位的 ASCII 字符串。但是一旦你想本地化你的程序,比如说汉化,那你就会开始遇到各种奇怪的问题,可能还会崩溃。那时,你所需要做的就是开始使用 Glib::ustring 来取而代之。 要注意的是 UTF-8 和其它一些8位的编码如 ISO-8859-1 并不兼容。比如,德语中的元音变音并不在 ASCII 码的编码范围内,在 UTF-8 编码中需要额外的一个字节来表示。如果你的代码中包含8位的字符串文字,你需要把它们转变成 UTF-8 编码 (比如,巴伐利亚的问候语“Grüß Gott”可能会显示成“Gr\xC3\xBC\xC3\x9F Gott”)。 你应该尽量避免 C 风格的指针算法,以及像 strlen() 这样的函数。在 UTF-8 编码中,每个字符可能占1到6个字节,所以你并不能假定下一个字节一定是另一个字符。所有的这些细节 Glib::ustring 都已经帮你考虑到了,所以你可以从字符的层面上考虑使用 Glib::ustring::substr() 这样的函数,而不用再去考虑字节这样的细节了。 不像 Windows 的 UCS-2 Unicode 解决方案,这并不需要编译器提供特别的选项来处理这样字符串,也不会导致为 Unicode 编译的可执行文件或库与含为 ASCII 的不兼容之类的问题。 参考 要得到更多关于 UTF-8 字符的信息,请参考国际化这一节。 中间类型 Some API related to gtkmm uses intermediate data containers, such as Glib::StringArrayHandle, instead of a specific Standard C++ container such as std::vector or std::list, though gtkmm itself now uses just std::vector since gtkmm 3.0. You should not declare these types yourself. You should instead use whatever Standard C++ container you prefer. glibmm will do the conversion for you. Here are some of these intermediate types: Glib::StringArrayHandleGlib::ArrayHandle<Glib::ustring>:使用 std::vector<Glib::ustring>std::list<Glib::ustring>const char*[] 等。 Glib::ListHandle<Gtk::Widget*>:使用 std::vector<Gtk::Widget*>std::list<Gtk::Widget*> 等。 Glib::SListHandle<Gtk::Widget*>:使用 std::vector<Gtk::Widget*>std::list<Gtk::Widget*> 等。 混合使用 C 和 C++ API 你可以使用那些尚未提供 C++ 接口的 C API。对于 C++ 而言这一般不是什么问题,gtkmm 可以提供帮助访问底层的 C 对象,并且也提供了一个简单的方式来从一个 C 对象创建一个 C++ 封装的对象,当然,这个 C API 是需要基于 GObject 系统的。 要用 C 函数使用一个 gtkmm 实例需要一个 C GObject 实例,使用 gobj() 函数可以得到一个底层 GObject 实例的指针。例如 Gtk::Button* button = new Gtk::Button("example"); gtk_button_do_something_new(button->gobj()); 要从 C GObject 实例得到一个 gtkmm 实例,则使用 Glib::wrap() 函数。例如 GtkButton* cbutton = get_a_button(); Gtk::Button* button = Glib::wrap(cbutton); 用 <application>gtkmm</application> 写 Hello World 目前我们已经可以自己所学的知识来写一个真正的程序了。根据计算机科学的传统,我们现在以 gtkmm 的方式来介绍 Hello World 程序: 源代码 File: helloworld.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_HELLOWORLD_H #define GTKMM_EXAMPLE_HELLOWORLD_H #include <gtkmm/button.h> #include <gtkmm/window.h> class HelloWorld : public Gtk::Window { public: HelloWorld(); virtual ~HelloWorld(); protected: //Signal handlers: void on_button_clicked(); //Member widgets: Gtk::Button m_button; }; #endif // GTKMM_EXAMPLE_HELLOWORLD_H File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "helloworld.h" #include <gtkmm/application.h> int main (int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); HelloWorld helloworld; //Shows the window and returns when it is closed. return app->run(helloworld); } File: helloworld.cc (For use with gtkmm 3, not gtkmm 2) #include "helloworld.h" #include <iostream> HelloWorld::HelloWorld() : m_button("Hello World") // creates a new button with label "Hello World". { // Sets the border width of the window. set_border_width(10); // When the button receives the "clicked" signal, it will call the // on_button_clicked() method defined below. m_button.signal_clicked().connect(sigc::mem_fun(*this, &HelloWorld::on_button_clicked)); // This packs the button into the Window (a container). add(m_button); // The final step is to display this newly created widget... m_button.show(); } HelloWorld::~HelloWorld() { } void HelloWorld::on_button_clicked() { std::cout << "Hello World" << std::endl; } 在继续讲解之前,可以尝试着编译并运行这个程序,你会看到这样的结果:
Hello World
真让人激动,不是吗?让我们回过头来看一下代码。首先看一下 HelloWorld 类: class HelloWorld : public Gtk::Window { public: HelloWorld(); virtual ~HelloWorld(); protected: //Signal handlers: virtual void on_button_clicked(); //Member widgets: Gtk::Button m_button; }; 这个类实现了“Hello World”窗口。它由 Gtk::Window 派生,并且只有一个 Gtk::Button 成员。我们已经使用构造函数为该窗口完成了所有的初始化工作,包括挂接消息。在这,已经去掉注释的代码: HelloWorld::HelloWorld() : m_button ("Hello World") { set_border_width(10); m_button.signal_clicked().connect(sigc::mem_fun(*this, &HelloWorld::on_button_clicked)); add(m_button);. m_button.show(); } 注意,我们使用初始化列表的方式给 m_button 对象添加了一个“Hello World”的标签。 接下来调用 Windows 类的 set_border_width() 方法。设置窗口的边框和它所包含的组件之间的空白距离。 然后,把 m_buttonclicked 消息挂接到信号处理函数上。这会向 stdout (标准输出) 打印出友好的问候语。 下一步,我们使用 Window 类的 add() 方法把 m_button 加到 Window 类中。(add() 方法由 Gtk::Container 类继承而来,我们将在容器组件这一章中具体介绍。) add() 方法仅仅将组件添加到窗口中,它并不负责显示这些组件。gtkmm 组件在创建以后都是不可见的。要显示它们,你必须调用 show() 方法,通常我们会在接下来的一行就调用它。 现在让我们来看看程序中没有注释过的 main() 函数: int main(int argc, char** argv) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); HelloWorld helloworld; return app->run(helloworld); } First we instantiate an object stored in a RefPtr smartpointer called app. This is of type Gtk::Application. Every gtkmm program must have one of these. We pass our command-line arguments to its create() method. It takes the arguments it wants, and leaves you the rest, as we described earlier. Next we make an object of our HelloWorld class, whose constructor takes no arguments, but it isn't visible yet. When we callGtk::Application::run(), giving it the helloworld Window, it shows the Window and starts the gtkmm event loop. During the event loop gtkmm idles, waiting for actions from the user, and responding appropriately. When the user closes the Window, run() will return, causing the final line of our main() function be to executed. The application will then finish.
Changes in <application>gtkmm</application> 3 gtkmm-3.0 is a new version of the gtkmm API that installs in parallel with the older gtkmm-2.4 API. The last version of the gtkmm-2.4 API was gtkmm 2.24. gtkmm 3 has no major fundamental differences to gtkmm 2 but does make several small changes that were not possible while maintaining binary compatibility. If you never used the gtkmm-2.4 API then you can safely ignore this chapter. gtkmm 3's library is called libgtkmm-3.0 rather than libgtkmm-2.4 and installs its headers in a similarly-versioned directory, so your pkg-config check should ask for gtkmm-3.0 rather than gtkmm-2.4. gtkmm 3 added some new classes: Gtk::AppChooser, Gtk::AppChooserButton, Gtk::AppChooserDialog allow the user to select an installed application to open a particular type of content. Gtk::Grid is a new container widget that will eventually replace Gtk::Box. It arranges its children according to properties of those children rather than its own layout details. Gtk::Switch displays On/Off states more explictly than Gtk::CheckBox. It may be useful, for instance, when allowing users to activate hardware. gtkmm 3 also made several small changes to the API, which you will probably encounter when porting code that used gtkmm-2.4. Here is a short list: Gtk::CellLayout, used by Gtk::IconView, Gtk::TreeView::Column and Gtk::ComboBox, now has a Gtk::CellArea which can be used to specify more details of how the CellRenderers are arranged and aligned. Gtk::ComboBox now derives from CellLayout, allowing easier layout and alignment of its Gtk::CellRenderers. Gtk::Adjustment and IconSet and Gdk::Cursor are now used via Glib::RefPtr. Gtk::Box, Gtk::ButtonBox, Gtk::IconView, Gtk::Paned, Gtk::ProgressBar, Gtk::ScaleButton, Gtk::Scrollbar and Gtk::Separator now derive from Gtk::Orientable, allowing their orientation (vertical or horizontal) to be specified without requiring the use of a derived class such as Gtk::HBox. Gtk::IconView, Gtk::TextView, Gtk::TreeView and other widgets derive from Scrollable instead of having their own methods such as get_vadjustment() and instead of having their own set_scroll_adjustments signal. Gtk::Style and Gtk::Rc were removed, replaced by Gtk::StyleContext, and Gtk::StyleProviders, such as Gtk::CssProvider. Widget::on_expose_event() was replaced by Widget::on_draw(), which assumes that cairomm is used for drawing, via the provided Cairo::Context and does not require you to call Cairo::Context::clip(). Gdk::RGBA replaces Color, adding an alpha component for opacity. Colormap was removed, along with its awkward use to allocate colors. Gdk::Pixmap and Gdk::Bitmap were removed in favour of Gdk::Pixbuf. Gdk::Drawable was removed, with its methods moving into Gdk::Window. We now use std::vector in several methods instead of the intermediate *Handle types to make the API clearer. All deprecated API was removed in gtkmm 3.0, though there will be new deprecations in future versions. As a first step to porting your source code to gtkmm-3.0; you should probably ensure that your application builds with the deprecated gtkmm-2.4; API disabled, by defining macro such as GTK_DISABLE_DEPRECATED. There are some autotools macros that can help with this by defining them optionally at build time. See the gtkmm 3 porting wiki page for more details. 按钮 gtkmm 提供以下四种基本按钮控件: 按钮 (Button) Gtk::Button. Standard buttons, usually marked with a label or picture. Pushing one triggers an action. See the Button section. 开关按钮 (ToggleButton) Gtk::ToggleButton. Unlike a normal Button, which springs back up, a ToggleButton stays down until you press it again. It might be useful as an on/off switch. See the ToggleButton section. 复选框 (CheckButton) Gtk::CheckButton. These act like ToggleButtons, but show their state in small squares, with their label at the side. They should be used in most situations which require an on/off setting. See the CheckBox section. 单选框 (RadioButton) Gtk::RadioButton. Named after the station selectors on old car radios, these buttons are used in groups for options which are mutually exclusive. Pressing one causes all the others in its group to turn off. They are similar to CheckBoxes (a small widget with a label at the side), but usually look different. See the RadioButton section. 请注意,由于GTK+的主题不同,这些控件外观可能会不同。特别是复选框和单选按钮可能会很不一样。 Button (按钮) 构造函数 可以通过两种方式来创建按钮,你可以在 Gtk::Button 构造函数中指定标签字符串,或者以后调用 set_label() 来指定标签。 如果你想为按钮定义一个快捷键,那么可以在标签字符串中的某个字符前面加上一个下划线,并且指定可选的参数助记符(mnemonic)为 true。例如: Gtk::Button* pButton = new Gtk::Button("_Something", true); 任何时候你都应尽可能的使用 Stock Item,这样可以使你的应用程序和其它的保持一致,并且可以通过使用图标来改善程序的外观。例如, Gtk::Button* pButton = new Gtk::Button(Gtk::Stock::OK); 这样在所有的语言中都会使用标准的文字,标准的快捷键,以及标准的图标。 Gtk::Button 同时也是一个容器,因此你可以在其中放任何其它的组件,比如放一个 Gtk::Image 在里面。 参考 示例 这个示例创建了一个有图片和文字标签的按钮。
按钮示例
源代码 File: buttons.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_BUTTONS_H #define GTKMM_EXAMPLE_BUTTONS_H #include <gtkmm/window.h> #include <gtkmm/button.h> class Buttons : public Gtk::Window { public: Buttons(); virtual ~Buttons(); protected: //Signal handlers: void on_button_clicked(); //Child widgets: Gtk::Button m_button; }; #endif //GTKMM_EXAMPLE_BUTTONS_H File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "buttons.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); Buttons buttons; //Shows the window and returns when it is closed. return app->run(buttons); } File: buttons.cc (For use with gtkmm 3, not gtkmm 2) #include "buttons.h" #include <iostream> Buttons::Buttons() { m_button.add_pixlabel("info.xpm", "cool button"); set_title("Pixmap'd buttons!"); set_border_width(10); m_button.signal_clicked().connect( sigc::mem_fun(*this, &Buttons::on_button_clicked) ); add(m_button); show_all_children(); } Buttons::~Buttons() { } void Buttons::on_button_clicked() { std::cout << "The Button was clicked." << std::endl; }
信号 Gtk::Button 组件有下面列出的那些信号,不过大多数情况下,你只需要处理 clicked 信号: pressed (按下) 当按钮按下时发出。 released (释放) 当按钮释放后发出。 clicked (点击) 当按钮按下并抬起时发出。 enter (进入) 当鼠标指针移到按钮上时发出。 leave (离开) 当鼠标指针离开按钮时发出。
ToggleButton (开关按钮) ToggleButton 和普通的 Button 相似,但是它们在点击后会保持激活(或称为按下的)状态,直到再次点击它为止。 要得到 ToggleButton 的状态,你可以使用 get_active() 方法。如果按钮被按下了,就返回 true。当然,你也可以通过 set_active() 来设置开关按钮的状态。请注意,如果你这样做了,并且它的状态的确改变了,那么这将会引发“clicked”信号。当然,一般来说,这就是你希望看到的结果。 你可以使用 toggled() 方法来改变按钮的状态,而不要强行的是设置它是开还是关:这个方法将会改变按钮的状态,并会引发 toggled 信号。 Gtk::ToggleButton 类最有用的是作为 Gtk::CheckButton 类和 Gtk::RadioButton 类的基类。 参考 CheckButton (多选按钮) Gtk::CheckButton 继承自 Gtk::ToggleButton。二者实际上只是外观不同而已。因此你可以像 Gtk::ToggleButton 一样使用同样的方法来检查、设置和转换多选按钮的状态。 参考 示例
CheckButton (多选按钮)
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_BUTTONS_H #define GTKMM_EXAMPLE_BUTTONS_H #include <gtkmm/window.h> #include <gtkmm/checkbutton.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_clicked(); //Child widgets: Gtk::CheckButton m_button; }; #endif //GTKMM_EXAMPLE_BUTTONS_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_button("something") { set_title("checkbutton example"); set_border_width(10); m_button.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_clicked) ); add(m_button); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_clicked() { std::cout << "The Button was clicked: state=" << (m_button.get_active() ? "true" : "false") << std::endl; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
RadioButton (单选按钮) Gtk::CheckButton 一样,Gtk::RadioButton 也继承自 Gtk::ToggleButton,只是它们是按组工作的,并且一个组内一次只能选中一个 RadioButton。 有两种方式创建一个单选按钮的组。第一种方式是先创建按钮,然后再设置它们的组。这种方式只用到了前两个构造函数。在下面的示例中,我们创建了一个新的窗口类 RadioButtons,然后在其中放置3个单选按钮: class RadioButtons : public Gtk::Window { public: RadioButtons(); protected: Gtk::RadioButton m_rb1, m_rb2, m_rb3; }; RadioButtons::RadioButtons() : m_rb1("button1"), m_rb2("button2"), m_rb3("button3") { Gtk::RadioButton::Group group = m_rb1.get_group(); m_rb2.set_group(group); m_rb3.set_group(group); } 我们告诉 gtkmm 把三个 RadioButton 都放到一个组内,通过 get_group() 来得到这个组,然后使用 set_group() 告诉其它的 RadioButton 来共享这个组。 注意,你不能只是 m_rb2.set_group(m_rb1.get_group()); //无法工作 因为该组会由 set_group() 修改,所以它不能是一个常量。 第二种创建单选按钮的方式是,先创建一个组,然后再向该组加入按钮。请看下面的示例: class RadioButtons : public Gtk::Window { public: RadioButtons(); }; RadioButtons::RadioButtons() { Gtk::RadioButton::Group group; Gtk::RadioButton *m_rb1 = Gtk::manage( new Gtk::RadioButton(group,"button1")); Gtk::RadioButton *m_rb2 = manage( new Gtk::RadioButton(group,"button2")); Gtk::RadioButton *m_rb3 = manage( new Gtk::RadioButton(group,"button3")); } 我们通过声明一个类型为 Gtk::RadioButton::Group 的名为 group 的变量。然后我们创建三个单选按钮,用构造函数把它们放置到组 group 中。 方法 RadioButtons 创建后默认是未选中的,也就是说当你第一次创建一组单选按钮的时候,它们都会是未选中的。所以别忘了使用 set_active() 来选中一个: 参考 示例 接下来的例子中演示了 RadioButton 的用法:
RadioButton (单选按钮)
源代码 File: radiobuttons.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_RADIOBUTTONS_H #define GTKMM_EXAMPLE_RADIOBUTTONS_H #include <gtkmm/box.h> #include <gtkmm/window.h> #include <gtkmm/radiobutton.h> #include <gtkmm/separator.h> class RadioButtons : public Gtk::Window { public: RadioButtons(); virtual ~RadioButtons(); protected: //Signal handlers: void on_button_clicked(); //Child widgets: Gtk::Box m_Box_Top, m_Box1, m_Box2; Gtk::RadioButton m_RadioButton1, m_RadioButton2, m_RadioButton3; Gtk::Separator m_Separator; Gtk::Button m_Button_Close; }; #endif //GTKMM_EXAMPLE_RADIOBUTTONS_H File: radiobuttons.cc (For use with gtkmm 3, not gtkmm 2) #include "radiobuttons.h" RadioButtons::RadioButtons() : m_Box_Top(Gtk::ORIENTATION_VERTICAL), m_Box1(Gtk::ORIENTATION_VERTICAL, 10), m_Box2(Gtk::ORIENTATION_VERTICAL, 10), m_RadioButton1("button1"), m_RadioButton2("button2"), m_RadioButton3("button3"), m_Button_Close("close") { // Set title and border of the window set_title("radio buttons"); set_border_width(0); // Put radio buttons 2 and 3 in the same group as 1: Gtk::RadioButton::Group group = m_RadioButton1.get_group(); m_RadioButton2.set_group(group); m_RadioButton3.set_group(group); // Add outer box to the window (because the window // can only contain a single widget) add(m_Box_Top); //Put the inner boxes and the separator in the outer box: m_Box_Top.pack_start(m_Box1); m_Box_Top.pack_start(m_Separator); m_Box_Top.pack_start(m_Box2); // Set the inner boxes' borders m_Box2.set_border_width(10); m_Box1.set_border_width(10); // Put the radio buttons in Box1: m_Box1.pack_start(m_RadioButton1); m_Box1.pack_start(m_RadioButton2); m_Box1.pack_start(m_RadioButton3); // Set the second button active m_RadioButton2.set_active(); // Put Close button in Box2: m_Box2.pack_start(m_Button_Close); // Make the button the default widget m_Button_Close.set_can_default(); m_Button_Close.grab_default(); // Connect the clicked signal of the button to // RadioButtons::on_button_clicked() m_Button_Close.signal_clicked().connect(sigc::mem_fun(*this, &RadioButtons::on_button_clicked) ); // Show all children of the window show_all_children(); } RadioButtons::~RadioButtons() { } void RadioButtons::on_button_clicked() { hide(); //to close the application. } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "radiobuttons.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); RadioButtons buttons; //Shows the window and returns when it is closed. return app->run(buttons); }
Range 组件 Gtk::ScaleGtk::Scrollbar 都是继承自 Gtk::Range,并且共享了很多功能。他们都有一个“滑轨(trough)”和“滑块(slider)”(在其它 GUI 环境中可能被称为“指轮(thumbwheel)”)。在滑轨内可以用鼠标拖动滑块,而在滑轨上点击的话则会让滑块向点击的位置移动,可能是移动到终点,也可能是移动一段距离,这取决于你用的是鼠标的哪个按键。这和滚动条的行为很类似。 就象将在后面的Adjustment 小节要谈到的那样,所有的 Range 组件都有一个关联的 Adjustment 对象。如果你想修改组件的最小值、最大值以及当前值,你需要调用该组件关联的 Adjustment 对象的方法,该对象可以通过调用 get_adjustment() 方法来得到。Range 组件默认构造函数会自动的创建一个 Adjustment,当然,你也可以指定一个现有的 Adjustment,而且还可以和其它组件共享。请参看 Adjustments 部分以得到更详细的信息。 参考 滚动条组件 (Scrollbar) 这些是标准的滚动条。它们应该只被用于滚动其它组件,比如 Gtk::EntryGtk::Viewport,当然,通常使用 Gtk::ScrolledWindow 会更容易一些。 The orientation of a Gtk::Scrollbar can be either horizontal or vertical. 参考 比例组件 (Scale) Gtk::Scale 组件 (或者说“滑块”) 可以让用户在指定范围内直观地调节它的值。例如,你可以用它来调节一副预览图片的放大率、或者控制颜色的亮度,或者指定多少分钟后执行屏幕保护。 As with Scrollbars, the orientation can be either horizontal or vertical. The default constructor creates an Adjustment with all of its values set to 0.0. This isn't useful so you will need to set some Adjustment details to get meaningful behaviour. 一些有用的方法 Scale 可以在滑轨旁显示它们的当前值。默认情况下是显示这个数值的,但是你可以通过调用 set_draw_value() 方法来设置是否显示该值。 默认情况下,Scale 组件会显示 Gtk::Adjustmentvalue 的数值,并且会被四舍五入到一位小数。你可以通过 set_digits() 方法来改变显示的小数位数。 另外,通过使用 set_value_pos(),可以使值显示在相对于滑块不同的位置。 参考 更新策略 Range 组件的 更新策略 定义了在用户操作期间的什么时候更新 Gtk::Adjustment 的值 value,并且何时发出 value_changed 信号。可以使用 set_update_policy() 方法来设置更新策略。这些策略包括: Gtk::UPDATE_CONTINUOUS - 这是默认的更新规则。会连续不断的发出 value_changed 信号,即使滑块只是被移动了一点点,也会发出该信号。 Gtk::UPDATE_DISCONTINUOUS - 只有在滑块停止了移动并且用户释放了鼠标的时候才会发出 value_changed 信号。 Gtk::UPDATE_DELAYED - 只有当用户释放鼠标,或者滑块停止移动一小段时间后,才发出 value_changed 信号。 示例 这个示例显示了一个窗口,其中有三个关联到同一个 Adjustment 对象的 Range 组件,还有几个控制组件用来调整前文讨论过的一些参数,这样你可以很清楚地看到那些参数是如何影响这些组件的行为方式的。
Range 组件
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_RANGEWIDGETS_H #define GTKMM_EXAMPLE_RANGEWIDGETS_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_checkbutton_toggled(); void on_combo_position(); void on_adjustment1_value_changed(); void on_adjustment2_value_changed(); void on_button_quit(); //Child widgets: Gtk::Box m_VBox_Top, m_VBox2, m_VBox_HScale; Gtk::Box m_HBox_Scales, m_HBox_Combo, m_HBox_Digits, m_HBox_PageSize; Glib::RefPtr<Gtk::Adjustment> m_adjustment, m_adjustment_digits, m_adjustment_pagesize; Gtk::Scale m_VScale; Gtk::Scale m_HScale, m_Scale_Digits, m_Scale_PageSize; Gtk::Separator m_Separator; Gtk::CheckButton m_CheckButton; Gtk::Scrollbar m_Scrollbar; //Tree model columns: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() { add(m_col_position_type); add(m_col_title); } Gtk::TreeModelColumn<Gtk::PositionType> m_col_position_type; Gtk::TreeModelColumn<Glib::ustring> m_col_title; }; ModelColumns m_Columns; //Child widgets: Gtk::ComboBox m_ComboBox_Position; Glib::RefPtr<Gtk::ListStore> m_refTreeModel; Gtk::Button m_Button_Quit; }; #endif //GTKMM_EXAMPLE_RANGEWIDGETS_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_VBox_Top(Gtk::ORIENTATION_VERTICAL, 0), m_VBox2(Gtk::ORIENTATION_VERTICAL, 20), m_VBox_HScale(Gtk::ORIENTATION_VERTICAL, 10), m_HBox_Scales(Gtk::ORIENTATION_HORIZONTAL, 10), m_HBox_Combo(Gtk::ORIENTATION_HORIZONTAL, 10), m_HBox_Digits(Gtk::ORIENTATION_HORIZONTAL, 10), m_HBox_PageSize(Gtk::ORIENTATION_HORIZONTAL, 10), // Value, lower, upper, step_increment, page_increment, page_size: // Note that the page_size value only makes a difference for // scrollbar widgets, and the highest value you'll get is actually // (upper - page_size). m_adjustment( Gtk::Adjustment::create(0.0, 0.0, 101.0, 0.1, 1.0, 1.0) ), m_adjustment_digits( Gtk::Adjustment::create(1.0, 0.0, 5.0, 1.0, 2.0) ), m_adjustment_pagesize( Gtk::Adjustment::create(1.0, 1.0, 101.0) ), m_VScale(m_adjustment, Gtk::ORIENTATION_VERTICAL), m_HScale(m_adjustment, Gtk::ORIENTATION_HORIZONTAL), m_Scale_Digits(m_adjustment_digits), m_Scale_PageSize(m_adjustment_pagesize), // A checkbutton to control whether the value is displayed or not: m_CheckButton("Display value on scale widgets", 0), // Reuse the same adjustment again. // Notice how this causes the scales to always be updated // continuously when the scrollbar is moved. m_Scrollbar(m_adjustment), m_Button_Quit("Quit") { set_title("range controls"); set_default_size(300, 350); //VScale: m_VScale.set_digits(1); m_VScale.set_value_pos(Gtk::POS_TOP); m_VScale.set_draw_value(); m_VScale.set_inverted(); // highest value at top //HScale: m_HScale.set_digits(1); m_HScale.set_value_pos(Gtk::POS_TOP); m_HScale.set_draw_value(); add(m_VBox_Top); m_VBox_Top.pack_start(m_VBox2); m_VBox2.set_border_width(10); m_VBox2.pack_start(m_HBox_Scales); //Put VScale and HScale (above scrollbar) side-by-side. m_HBox_Scales.pack_start(m_VScale); m_HBox_Scales.pack_start(m_VBox_HScale); m_VBox_HScale.pack_start(m_HScale); //Scrollbar: m_VBox_HScale.pack_start(m_Scrollbar); //CheckButton: m_CheckButton.set_active(); m_CheckButton.signal_toggled().connect( sigc::mem_fun(*this, &ExampleWindow::on_checkbutton_toggled) ); m_VBox2.pack_start(m_CheckButton, Gtk::PACK_SHRINK); //Position ComboBox: //Create the Tree model: m_refTreeModel = Gtk::ListStore::create(m_Columns); m_ComboBox_Position.set_model(m_refTreeModel); m_ComboBox_Position.pack_start(m_Columns.m_col_title); //Fill the ComboBox's Tree Model: Gtk::TreeModel::Row row = *(m_refTreeModel->append()); row[m_Columns.m_col_position_type] = Gtk::POS_TOP; row[m_Columns.m_col_title] = "Top"; row = *(m_refTreeModel->append()); row[m_Columns.m_col_position_type] = Gtk::POS_BOTTOM; row[m_Columns.m_col_title] = "Bottom"; row = *(m_refTreeModel->append()); row[m_Columns.m_col_position_type] = Gtk::POS_LEFT; row[m_Columns.m_col_title] = "Left"; row = *(m_refTreeModel->append()); row[m_Columns.m_col_position_type] = Gtk::POS_RIGHT; row[m_Columns.m_col_title] = "Right"; m_VBox2.pack_start(m_HBox_Combo, Gtk::PACK_SHRINK); m_HBox_Combo.pack_start( *Gtk::manage(new Gtk::Label("Scale Value Position:", 0)), Gtk::PACK_SHRINK); m_HBox_Combo.pack_start(m_ComboBox_Position); m_ComboBox_Position.signal_changed().connect( sigc::mem_fun(*this, &ExampleWindow::on_combo_position) ); m_ComboBox_Position.set_active(0); // Top //Digits: m_HBox_Digits.pack_start( *Gtk::manage(new Gtk::Label("Scale Digits:", 0)), Gtk::PACK_SHRINK); m_Scale_Digits.set_digits(0); m_adjustment_digits->signal_value_changed().connect(sigc::mem_fun(*this, &ExampleWindow::on_adjustment1_value_changed)); m_HBox_Digits.pack_start(m_Scale_Digits); //Page Size: m_HBox_PageSize.pack_start( *Gtk::manage(new Gtk::Label("Scrollbar Page Size:", 0)), Gtk::PACK_SHRINK); m_Scale_PageSize.set_digits(0); m_adjustment_pagesize->signal_value_changed().connect(sigc::mem_fun(*this, &ExampleWindow::on_adjustment2_value_changed)); m_HBox_PageSize.pack_start(m_Scale_PageSize); m_VBox2.pack_start(m_HBox_Digits, Gtk::PACK_SHRINK); m_VBox2.pack_start(m_HBox_PageSize, Gtk::PACK_SHRINK); m_VBox_Top.pack_start(m_Separator, Gtk::PACK_SHRINK); m_VBox_Top.pack_start(m_Button_Quit, Gtk::PACK_SHRINK); m_Button_Quit.set_can_default(); m_Button_Quit.grab_default(); m_Button_Quit.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_quit)); m_Button_Quit.set_border_width(10); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_checkbutton_toggled() { m_VScale.set_draw_value(m_CheckButton.get_active()); m_HScale.set_draw_value(m_CheckButton.get_active()); } void ExampleWindow::on_combo_position() { Gtk::TreeModel::iterator iter = m_ComboBox_Position.get_active(); if(!iter) return; Gtk::TreeModel::Row row = *iter; if(!row) return; const Gtk::PositionType postype = row[m_Columns.m_col_position_type]; m_VScale.set_value_pos(postype); m_HScale.set_value_pos(postype); } void ExampleWindow::on_adjustment1_value_changed() { const double val = m_adjustment_digits->get_value(); m_VScale.set_digits((int)val); m_HScale.set_digits((int)val); } void ExampleWindow::on_adjustment2_value_changed() { const double val = m_adjustment_pagesize->get_value(); m_adjustment->set_page_size(val); m_adjustment->set_page_increment(val); // Note that we don't have to emit the "changed" signal // because gtkmm does this for us. } void ExampleWindow::on_button_quit() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Miscellaneous Widgets Label Labels are the main method of placing non-editable text in windows, for instance to place a title next to a Entry widget. You can specify the text in the constructor, or later with the set_text() or set_markup() methods. The width of the label will be adjusted automatically. You can produce multi-line labels by putting line breaks ("\n") in the label string. The label text can be justified using the set_justify() method. The widget is also capable of word-wrapping, which can be activated with set_line_wrap(). Gtk::Label support some simple formatting, for instance allowing you to make some text bold, colored, or larger. You can do this by providing a string to set_markup(), using the Pango Markup syntax. For instance, <b>bold text</b> and <s>strikethrough text</s> . 参考 示例 Below is a short example to illustrate these functions. This example makes use of the Frame widget to better demonstrate the label styles. (The Frame widget is explained in the Frame section.)
Label
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Child widgets: Gtk::Box m_HBox; Gtk::Box m_VBox, m_VBox2; Gtk::Frame m_Frame_Normal, m_Frame_Multi, m_Frame_Left, m_Frame_Right, m_Frame_LineWrapped, m_Frame_FilledWrapped, m_Frame_Underlined; Gtk::Label m_Label_Normal, m_Label_Multi, m_Label_Left, m_Label_Right, m_Label_LineWrapped, m_Label_FilledWrapped, m_Label_Underlined; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_HBox(Gtk::ORIENTATION_HORIZONTAL, 5), m_VBox(Gtk::ORIENTATION_VERTICAL, 5), m_VBox2(Gtk::ORIENTATION_VERTICAL, 5), m_Frame_Normal("Normal Label"), m_Frame_Multi("Multi-line Label"), m_Frame_Left("Left Justified Label"), m_Frame_Right("Right Justified Label"), m_Frame_LineWrapped("Line wrapped label"), m_Frame_FilledWrapped("Filled, wrapped label"), m_Frame_Underlined("Underlined label"), m_Label_Normal("_This is a Normal label", true), m_Label_Multi("This is a Multi-line label.\nSecond line\nThird line"), m_Label_Left("This is a Left-Justified\nMulti-line label.\nThird line"), m_Label_Right("This is a Right-Justified\nMulti-line label.\nThird line"), m_Label_Underlined("This label is underlined!\n" "This one is underlined in quite a funky fashion") { set_title("Label"); set_border_width(5); add(m_HBox); m_HBox.pack_start(m_VBox, Gtk::PACK_SHRINK); m_Frame_Normal.add(m_Label_Normal); m_VBox.pack_start(m_Frame_Normal, Gtk::PACK_SHRINK); m_Frame_Multi.add(m_Label_Multi); m_VBox.pack_start(m_Frame_Multi, Gtk::PACK_SHRINK); m_Label_Left.set_justify(Gtk::JUSTIFY_LEFT); m_Frame_Left.add(m_Label_Left); m_VBox.pack_start(m_Frame_Left, Gtk::PACK_SHRINK); m_Label_Right.set_justify(Gtk::JUSTIFY_RIGHT); m_Frame_Right.add(m_Label_Right); m_VBox.pack_start(m_Frame_Right, Gtk::PACK_SHRINK); m_HBox.pack_start(m_VBox2, Gtk::PACK_SHRINK); m_Label_LineWrapped.set_text( "This is an example of a line-wrapped label. It " /* add a big space to the next line to test spacing */ "should not be taking up the entire " "width allocated to it, but automatically " "wraps the words to fit. " "The time has come, for all good men, to come to " "the aid of their party. " "The sixth sheik's six sheep's sick.\n" " It supports multiple paragraphs correctly, " "and correctly adds " "many extra spaces. "); m_Label_LineWrapped.set_line_wrap(); m_Frame_LineWrapped.add(m_Label_LineWrapped); m_VBox2.pack_start(m_Frame_LineWrapped, Gtk::PACK_SHRINK); m_Label_FilledWrapped.set_text( "This is an example of a line-wrapped, filled label. " "It should be taking " "up the entire width allocated to it. " "Here is a sentence to prove " "my point. Here is another sentence. " "Here comes the sun, do de do de do.\n" " This is a new paragraph.\n" " This is another newer, longer, better " "paragraph. It is coming to an end, " "unfortunately."); m_Label_FilledWrapped.set_justify(Gtk::JUSTIFY_FILL); m_Label_FilledWrapped.set_line_wrap(); m_Frame_FilledWrapped.add(m_Label_FilledWrapped); m_VBox2.pack_start(m_Frame_FilledWrapped, Gtk::PACK_SHRINK); m_Label_Underlined.set_justify(Gtk::JUSTIFY_LEFT); m_Label_Underlined.set_pattern ( "_________________________ _ _________ _ ______" " __ _______ ___"); m_Frame_Underlined.add(m_Label_Underlined); m_VBox2.pack_start(m_Frame_Underlined, Gtk::PACK_SHRINK); show_all_children(); } ExampleWindow::~ExampleWindow() { } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Entry Simple Use Entry widgets allow the user to enter text. You can change the contents with the set_text() method, and read the current contents with the get_text() method. Occasionally you might want to make an Entry widget read-only. This can be done by passing false to the set_editable() method. For the input of passwords, passphrases and other information you don't want echoed on the screen, calling set_visibility() with false will cause the text to be hidden. You might want to be notified whenever the user types in a text entry widget. Gtk::Entry provides two signals, activate and changed, for this purpose. activate is emitted when the user presses the Enter key in a text-entry widget; changed is emitted when the text in the widget changes. You can use these, for instance, to validate or filter the text the user types. Moving the keyboard focus to another widget may also signal that the user has finished entering text. The focus_out_event signal that Gtk::Entry inherits from Gtk::Widget can notify you when that happens. The ComboBox with an Entry section contains example programs that use these signals. If you pass true to the set_activates_default() method, pressing Enter in the Gtk::Entry will activate the default widget for the window containing the Gtk::Entry. This is especially useful in dialog boxes. The default widget is usually one of the dialog buttons, which e.g. will close the dialog box. To set a widget as the default widget, use Gtk::Widget::set_can_default() and Gtk::Widget::grab_default(). 参考 Simple Entry Example This example uses Gtk::Entry. It also has two CheckButtons, with which you can toggle the editable and visible flags.
Entry
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_checkbox_editable_toggled(); void on_checkbox_visibility_toggled(); void on_button_close(); //Child widgets: Gtk::Box m_HBox; Gtk::Box m_VBox; Gtk::Entry m_Entry; Gtk::Button m_Button_Close; Gtk::CheckButton m_CheckButton_Editable, m_CheckButton_Visible; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Button_Close("Close"), m_CheckButton_Editable("Editable"), m_CheckButton_Visible("Visible") { set_size_request(200, 100); set_title("Gtk::Entry"); add(m_VBox); m_Entry.set_max_length(50); m_Entry.set_text("hello"); m_Entry.set_text(m_Entry.get_text() + " world"); m_Entry.select_region(0, m_Entry.get_text_length()); m_VBox.pack_start(m_Entry); // Note that add() can also be used instead of pack_xxx() m_VBox.add(m_HBox); m_HBox.pack_start(m_CheckButton_Editable); m_CheckButton_Editable.signal_toggled().connect( sigc::mem_fun(*this, &ExampleWindow::on_checkbox_editable_toggled) ); m_CheckButton_Editable.set_active(true); m_HBox.pack_start(m_CheckButton_Visible); m_CheckButton_Visible.signal_toggled().connect( sigc::mem_fun(*this, &ExampleWindow::on_checkbox_visibility_toggled) ); m_CheckButton_Visible.set_active(true); m_Button_Close.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_close) ); m_VBox.pack_start(m_Button_Close); m_Button_Close.set_can_default(); m_Button_Close.grab_default(); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_checkbox_editable_toggled() { m_Entry.set_editable(m_CheckButton_Editable.get_active()); } void ExampleWindow::on_checkbox_visibility_toggled() { m_Entry.set_visibility(m_CheckButton_Visible.get_active()); } void ExampleWindow::on_button_close() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Entry Completion A Entry widget can offer a drop-down list of pre-existing choices based on the first few characters typed by the user. For instance, a search dialog could suggest text from previous searches. To enable this functionality, you must create a EntryCompletion object, and provide it to the Entry widget via the set_completion() method. The EntryCompletion may use a TreeModel containing possible entries, specified with set_model(). You should then call set_text_column() to specify which of your model columns should be used to match possible text entries. Alternatively, if a complete list of possible entries would be too large or too inconvenient to generate, a callback slot may instead be specified with set_match_func(). This is also useful if you wish to match on a part of the string other than the start. 参考 Entry Completion Example This example creates a Gtk::EntryCompletion and associates it with a Gtk::Entry widget. The completion uses a Gtk::TreeModel of possible entries, and some additional actions.
Entry Completion
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_close(); void on_completion_action_activated(int index); //See the comment in the implementation: //bool on_completion_match(const Glib::ustring& key, const Gtk::TreeModel::const_iterator& iter); //Tree model columns, for the EntryCompletion's filter model: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() { add(m_col_id); add(m_col_name); } Gtk::TreeModelColumn<unsigned int> m_col_id; Gtk::TreeModelColumn<Glib::ustring> m_col_name; }; ModelColumns m_Columns; typedef std::map<int, Glib::ustring> type_actions_map; type_actions_map m_CompletionActions; //Child widgets: Gtk::Box m_HBox; Gtk::Box m_VBox; Gtk::Entry m_Entry; Gtk::Label m_Label; Gtk::Button m_Button_Close; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Label("Press a or b to see a list of possible completions and actions."), m_Button_Close("Close") { //set_size_request(200, 100); set_title("Gtk::EntryCompletion"); add(m_VBox); m_VBox.pack_start(m_Entry, Gtk::PACK_SHRINK); m_VBox.pack_start(m_Label, Gtk::PACK_EXPAND_WIDGET); m_Button_Close.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_close) ); m_VBox.pack_start(m_Button_Close, Gtk::PACK_SHRINK); m_Button_Close.set_can_default(); m_Button_Close.grab_default(); //Add an EntryCompletion: Glib::RefPtr<Gtk::EntryCompletion> completion = Gtk::EntryCompletion::create(); m_Entry.set_completion(completion); //Create and fill the completion's filter model Glib::RefPtr<Gtk::ListStore> refCompletionModel = Gtk::ListStore::create(m_Columns); completion->set_model(refCompletionModel); // For more complex comparisons, use a filter match callback, like this. // See the comment below for more details: //completion->set_match_func( sigc::mem_fun(*this, //&ExampleWindow::on_completion_match) ); //Fill the TreeView's model Gtk::TreeModel::Row row = *(refCompletionModel->append()); row[m_Columns.m_col_id] = 1; row[m_Columns.m_col_name] = "Alan Zebedee"; row = *(refCompletionModel->append()); row[m_Columns.m_col_id] = 2; row[m_Columns.m_col_name] = "Adrian Boo"; row = *(refCompletionModel->append()); row[m_Columns.m_col_id] = 3; row[m_Columns.m_col_name] = "Bob McRoberts"; row = *(refCompletionModel->append()); row[m_Columns.m_col_id] = 4; row[m_Columns.m_col_name] = "Bob McBob"; //Tell the completion what model column to use to //- look for a match (when we use the default matching, instead of // set_match_func(). //- display text in the entry when a match is found. completion->set_text_column(m_Columns.m_col_name); //Add actions to the completion: //These are just extra items shown at the bottom of the list of possible //completions. //Remember them for later. m_CompletionActions[0] = "Use Wizard"; m_CompletionActions[1] = "Browse for Filename"; for(type_actions_map::iterator iter = m_CompletionActions.begin(); iter != m_CompletionActions.end(); ++iter) { int position = iter->first; Glib::ustring title = iter->second; completion->insert_action_text(title, position); } completion->signal_action_activated().connect( sigc::mem_fun(*this, &ExampleWindow::on_completion_action_activated) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_close() { hide(); } /* You can do more complex matching with a handler like this. * For instance, you could check for substrings inside the string instead of the start, * or you could look for the key in extra model columns as well as the model column that will be displayed. * The code here is not actually more complex - it's a reimplementation of the default behaviour. * bool ExampleWindow::on_completion_match(const Glib::ustring& key, const Gtk::TreeModel::const_iterator& iter) { if(iter) { Gtk::TreeModel::Row row = *iter; Glib::ustring::size_type key_length = key.size(); Glib::ustring filter_string = row[m_Columns.m_col_name]; Glib::ustring filter_string_start = filter_string.substr(0, key_length); //The key is lower-case, even if the user input is not. filter_string_start = filter_string_start.lowercase(); if(key == filter_string_start) return true; //A match was found. } return false; //No match. } */ void ExampleWindow::on_completion_action_activated(int index) { type_actions_map::iterator iter = m_CompletionActions.find(index); if(iter != m_CompletionActions.end()) //If it's in the map { Glib::ustring title = iter->second; std::cout << "Action selected: " << title << std::endl; } } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Entry Icons An Entry widget can show an icon at the start or end of the text area. The icon can be specifed by methods such as set_icon_from_pixbuf() or set_icon_from_stock(). An application can respond to the user pressing the icon by handling the signal_icon_press signal. Entry Icon Example This example shows a Gtk::Entry widget with a stock search icon, and prints text to the terminal when the icon is pressed.
Entry with Icon
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_icon_pressed(Gtk::EntryIconPosition icon_pos, const GdkEventButton* event); void on_button_close(); //Child widgets: Gtk::Box m_VBox; Gtk::Entry m_Entry; Gtk::Button m_Button_Close; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Button_Close("Close") { set_title("Gtk::Entry"); add(m_VBox); m_Entry.set_max_length(50); m_Entry.set_text("Hello world"); m_VBox.pack_start(m_Entry, Gtk::PACK_SHRINK); m_Entry.set_icon_from_stock(Gtk::Stock::FIND); m_Entry.signal_icon_press().connect( sigc::mem_fun(*this, &ExampleWindow::on_icon_pressed) ); m_Button_Close.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_close) ); m_VBox.pack_start(m_Button_Close, Gtk::PACK_SHRINK); m_Button_Close.set_can_default(); m_Button_Close.grab_default(); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_icon_pressed(Gtk::EntryIconPosition /* icon_pos */, const GdkEventButton* /* event */) { std::cout << "Icon pressed." << std::endl; } void ExampleWindow::on_button_close() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Entry Progress An Entry widget can show a progress bar inside the text area, under the entered text. The progress bar will be shown if the set_progress_fraction() or set_progress_pulse_step() methods are called. Entry Progress Example This example shows a Gtk::Entry widget with a progress bar.
Entry with Progress Bar
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: bool on_timeout(); void on_button_close(); //Child widgets: Gtk::Box m_VBox; Gtk::Entry m_Entry; Gtk::Button m_Button_Close; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Button_Close("Close") { set_title("Gtk::Entry"); add(m_VBox); m_Entry.set_max_length(50); m_Entry.set_text("Hello world"); m_VBox.pack_start(m_Entry, Gtk::PACK_SHRINK); //Change the progress fraction every 0.1 second: Glib::signal_timeout().connect( sigc::mem_fun(*this, &ExampleWindow::on_timeout), 100 ); m_Button_Close.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_close) ); m_VBox.pack_start(m_Button_Close, Gtk::PACK_SHRINK); m_Button_Close.set_can_default(); m_Button_Close.grab_default(); show_all_children(); } ExampleWindow::~ExampleWindow() { } bool ExampleWindow::on_timeout() { static double fraction = 0; m_Entry.set_progress_fraction(fraction); fraction += 0.01; if(fraction > 1) fraction = 0; return true; } void ExampleWindow::on_button_close() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
SpinButton A SpinButton allows the user to select a value from a range of numeric values. It has an Entry widget with up and down arrow buttons at the side. Clicking the buttons causes the value to 'spin' up and down across the range of possible values. The Entry widget may also be used to enter a value directly. The value can have an adjustable number of decimal places, and the step size is configurable. SpinButtons have an 'auto-repeat' feature as well: holding down one of the arrows can optionally cause the value to change more quickly the longer the arrow is held down. SpinButtons use an Adjustment object to hold information about the range of values. These Adjustment attributes are used by the Spin Button like so: value: value for the Spin Button lower: lower range value upper: upper range value step_increment: value to increment/decrement when pressing mouse button 1 on a button page_increment: value to increment/decrement when pressing mouse button 2 on a button page_size: unused Additionally, mouse button 3 can be used to jump directly to the upper or lower values. The SpinButton can create a default Adjustment, which you can access via the get_adjustment() method, or you can specify an existing Adjustment in the constructor. 方法 The number of decimal places can be altered using the set_digits() method. You can set the spinbutton's value using the set_value() method, and retrieve it with get_value(). The spin() method 'spins' the SpinButton, as if one of its arrows had been clicked. You need to specify a Gtk::SpinType to specify the direction or new position. To prevent the user from typing non-numeric characters into the entry box, pass true to the set_numeric() method. To make the SpinButton 'wrap' between its upper and lower bounds, use the set_wrap() method. To force it to snap to the nearest step_increment, use set_snap_to_ticks(). You can modify the update policy using the set_update_policy() method, specifying either Gtk::UPDATE_ALWAYS or Gtk::UPDATE_IF_VALID. Gtk::UPDATE_ALWAYS causes the SpinButton to ignore errors encountered while converting the text in the entry box to a numeric value. This setting also therefore allows the SpinButton to accept non-numeric values. You can force an immediate update using the update() method. 参考 示例 Here's an example of a SpinButton in action:
SpinButton
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_checkbutton_snap(); void on_checkbutton_numeric(); void on_spinbutton_digits_changed(); void on_button_close(); enum enumValueFormats { VALUE_FORMAT_INT, VALUE_FORMAT_FLOAT }; void on_button_getvalue(enumValueFormats display); //Child widgets: Gtk::Frame m_Frame_NotAccelerated, m_Frame_Accelerated; Gtk::Box m_HBox_NotAccelerated, m_HBox_Accelerated, m_HBox_Buttons; Gtk::Box m_VBox_Main, m_VBox, m_VBox_Day, m_VBox_Month, m_VBox_Year, m_VBox_Accelerated, m_VBox_Value, m_VBox_Digits; Gtk::Label m_Label_Day, m_Label_Month, m_Label_Year, m_Label_Value, m_Label_Digits, m_Label_ShowValue; Glib::RefPtr<Gtk::Adjustment> m_adjustment_day, m_adjustment_month, m_adjustment_year, m_adjustment_value, m_adjustment_digits; Gtk::SpinButton m_SpinButton_Day, m_SpinButton_Month, m_SpinButton_Year, m_SpinButton_Value, m_SpinButton_Digits; Gtk::CheckButton m_CheckButton_Snap, m_CheckButton_Numeric; Gtk::Button m_Button_Int, m_Button_Float, m_Button_Close; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> #include <cstdio> ExampleWindow::ExampleWindow() : m_Frame_NotAccelerated("Not accelerated"), m_Frame_Accelerated("Accelerated"), m_VBox_Main(Gtk::ORIENTATION_VERTICAL, 5), m_VBox(Gtk::ORIENTATION_VERTICAL), m_VBox_Day(Gtk::ORIENTATION_VERTICAL), m_VBox_Month(Gtk::ORIENTATION_VERTICAL), m_VBox_Year(Gtk::ORIENTATION_VERTICAL), m_VBox_Accelerated(Gtk::ORIENTATION_VERTICAL), m_VBox_Value(Gtk::ORIENTATION_VERTICAL), m_VBox_Digits(Gtk::ORIENTATION_VERTICAL), m_Label_Day("Day: "), m_Label_Month("Month: "), m_Label_Year("Year: "), m_Label_Value("Value: "), m_Label_Digits("Digits: "), m_adjustment_day( Gtk::Adjustment::create(1.0, 1.0, 31.0, 1.0, 5.0, 0.0) ), m_adjustment_month( Gtk::Adjustment::create(1.0, 1.0, 12.0, 1.0, 5.0, 0.0) ), m_adjustment_year( Gtk::Adjustment::create(2012.0, 1.0, 2200.0, 1.0, 100.0, 0.0) ), m_adjustment_value( Gtk::Adjustment::create(0.0, -10000.0, 10000.0, 0.5, 100.0, 0.0) ), m_adjustment_digits( Gtk::Adjustment::create(2.0, 1.0, 5.0, 1.0, 1.0, 0.0) ), m_SpinButton_Day(m_adjustment_day), m_SpinButton_Month(m_adjustment_month), m_SpinButton_Year(m_adjustment_year), m_SpinButton_Value(m_adjustment_value, 1.0, 2), m_SpinButton_Digits(m_adjustment_digits), m_CheckButton_Snap("Snap to 0.5-ticks"), m_CheckButton_Numeric("Numeric only input mode"), m_Button_Int("Value as Int"), m_Button_Float("Value as Float"), m_Button_Close("Close") { set_title("SpinButton"); m_VBox_Main.set_border_width(10); add(m_VBox_Main); m_VBox_Main.pack_start(m_Frame_NotAccelerated); m_VBox.set_border_width(5); m_Frame_NotAccelerated.add(m_VBox); /* Day, month, year spinners */ m_VBox.pack_start(m_HBox_NotAccelerated, Gtk::PACK_EXPAND_WIDGET, 5); m_Label_Day.set_alignment(Gtk::ALIGN_START); m_VBox_Day.pack_start(m_Label_Day); m_SpinButton_Day.set_wrap(); m_VBox_Day.pack_start(m_SpinButton_Day); m_HBox_NotAccelerated.pack_start(m_VBox_Day, Gtk::PACK_EXPAND_WIDGET, 5); m_Label_Month.set_alignment(Gtk::ALIGN_START); m_VBox_Month.pack_start(m_Label_Month); m_SpinButton_Month.set_wrap(); m_VBox_Month.pack_start(m_SpinButton_Month); m_HBox_NotAccelerated.pack_start(m_VBox_Month, Gtk::PACK_EXPAND_WIDGET, 5); m_Label_Year.set_alignment(Gtk::ALIGN_START); m_VBox_Year.pack_start(m_Label_Year); m_SpinButton_Year.set_wrap(); m_SpinButton_Year.set_size_request(55, -1); m_VBox_Year.pack_start(m_SpinButton_Year); m_HBox_NotAccelerated.pack_start(m_VBox_Year, Gtk::PACK_EXPAND_WIDGET, 5); //Accelerated: m_VBox_Main.pack_start(m_Frame_Accelerated); m_VBox_Accelerated.set_border_width(5); m_Frame_Accelerated.add(m_VBox_Accelerated); m_VBox_Accelerated.pack_start(m_HBox_Accelerated, Gtk::PACK_EXPAND_WIDGET, 5); m_HBox_Accelerated.pack_start(m_VBox_Value, Gtk::PACK_EXPAND_WIDGET, 5); m_Label_Value.set_alignment(Gtk::ALIGN_START); m_VBox_Value.pack_start(m_Label_Value); m_SpinButton_Value.set_wrap(); m_SpinButton_Value.set_size_request(100, -1); m_VBox_Value.pack_start(m_SpinButton_Value); m_HBox_Accelerated.pack_start(m_VBox_Digits, Gtk::PACK_EXPAND_WIDGET, 5); m_Label_Digits.set_alignment(Gtk::ALIGN_START); m_VBox_Digits.pack_start(m_Label_Digits); m_SpinButton_Digits.set_wrap(); m_adjustment_digits->signal_value_changed().connect( sigc::mem_fun(*this, &ExampleWindow::on_spinbutton_digits_changed) ); m_VBox_Digits.pack_start(m_SpinButton_Digits); //CheckButtons: m_VBox_Accelerated.pack_start(m_CheckButton_Snap); m_CheckButton_Snap.set_active(); m_CheckButton_Snap.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_checkbutton_snap) ); m_VBox_Accelerated.pack_start(m_CheckButton_Numeric); m_CheckButton_Numeric.set_active(); m_CheckButton_Numeric.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_checkbutton_numeric) ); //Buttons: m_VBox_Accelerated.pack_start (m_HBox_Buttons, Gtk::PACK_SHRINK, 5); m_Button_Int.signal_clicked().connect( sigc::bind( sigc::mem_fun(*this, &ExampleWindow::on_button_getvalue), VALUE_FORMAT_INT) ); m_HBox_Buttons.pack_start(m_Button_Int, Gtk::PACK_EXPAND_WIDGET, 5); m_Button_Float.signal_clicked().connect( sigc::bind( sigc::mem_fun(*this, &ExampleWindow::on_button_getvalue), VALUE_FORMAT_FLOAT) ); m_HBox_Buttons.pack_start(m_Button_Float, Gtk::PACK_EXPAND_WIDGET, 5); m_VBox_Accelerated.pack_start(m_Label_ShowValue); m_Label_ShowValue.set_text("0"); //Close button: m_Button_Close.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_close) ); m_VBox_Main.pack_start(m_Button_Close, Gtk::PACK_SHRINK); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_close() { hide(); } void ExampleWindow::on_checkbutton_snap() { m_SpinButton_Value.set_snap_to_ticks( m_CheckButton_Snap.get_active() ); } void ExampleWindow::on_checkbutton_numeric() { m_SpinButton_Value.set_numeric( m_CheckButton_Numeric.get_active() ); } void ExampleWindow::on_spinbutton_digits_changed() { m_SpinButton_Value.set_digits( m_SpinButton_Digits.get_value_as_int() ); } void ExampleWindow::on_button_getvalue(enumValueFormats display) { gchar buf[32]; if (display == VALUE_FORMAT_INT) sprintf (buf, "%d", m_SpinButton_Value.get_value_as_int()); else sprintf (buf, "%0.*f", m_SpinButton_Value.get_digits(), m_SpinButton_Value.get_value()); m_Label_ShowValue.set_text(buf); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
ProgressBar Progress bars are used to show the status of an ongoing operation. For instance, a ProgressBar can show how much of a task has been completed. To change the value shown, use the set_fraction() method, passing a double between 0 and 1 to provide the new percentage. where percentage is a number, from 0 to 1, indicating what fraction of the bar should be filled. A ProgressBaris horizontal and left-to-right by default, but you can change it to a vertical progress bar by using the set_orientation() method. 参考 Activity Mode Besides indicating the amount of progress that has occured, the progress bar can also be used to indicate that there is some activity; this is done by placing the progress bar in activity mode. In this mode, the progress bar displays a small rectangle which moves back and forth. Activity mode is useful in situations where the progress of an operation cannot be calculated as a value range (e.g., receiving a file of unknown length). To do this, you need to call the pulse() method at regular intervals. You can also choose the step size, with the set_pulse_step() method. When in continuous mode, the progress bar can also display a configurable text string within its trough, using the set_text() method. 示例
ProgressBar
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_checkbutton_text(); void on_checkbutton_activity(); void on_checkbutton_inverted(); virtual bool on_timeout(); void on_button_close(); //Child widgets: Gtk::Box m_VBox; Gtk::Alignment m_Alignment; Gtk::Grid m_Grid; Gtk::ProgressBar m_ProgressBar; Gtk::Separator m_Separator; Gtk::CheckButton m_CheckButton_Text, m_CheckButton_Activity, m_CheckButton_Inverted; Gtk::Button m_Button_Close; int m_connection_id_timeout; bool m_bActivityMode; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL, 5), m_Alignment(0.5, 0.5, 0, 0), m_CheckButton_Text("Show text"), m_CheckButton_Activity("Activity mode"), m_CheckButton_Inverted("Right to Left"), m_Button_Close("Close"), m_bActivityMode(false) { set_resizable(); set_title("Gtk::ProgressBar"); m_VBox.set_border_width(10); add(m_VBox); m_VBox.pack_start(m_Alignment, Gtk::PACK_SHRINK, 5); m_Alignment.add(m_ProgressBar); m_ProgressBar.set_text("some text"); m_ProgressBar.set_show_text(false); //Add a timer callback to update the value of the progress bar: m_connection_id_timeout = Glib::signal_timeout().connect(sigc::mem_fun(*this, &ExampleWindow::on_timeout), 50 ); m_VBox.pack_start(m_Separator, Gtk::PACK_SHRINK); m_VBox.pack_start(m_Grid); m_Grid.set_row_homogeneous(true); //Add a check button to select displaying of the trough text: m_Grid.attach(m_CheckButton_Text, 0, 0, 1, 1); m_CheckButton_Text.property_margin() = 5; m_CheckButton_Text.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_checkbutton_text) ); //Add a check button to toggle activity mode: m_Grid.attach(m_CheckButton_Activity, 0, 1, 1, 1); m_CheckButton_Activity.property_margin() = 5; m_CheckButton_Activity.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_checkbutton_activity) ); //Add a check button to select growth from left to right or from right to left: m_Grid.attach(m_CheckButton_Inverted, 0, 2, 1, 1); m_CheckButton_Inverted.property_margin() = 5; m_CheckButton_Inverted.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_checkbutton_inverted) ); //Add a button to exit the program. m_VBox.pack_start(m_Button_Close, Gtk::PACK_SHRINK); m_Button_Close.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_close) ); m_Button_Close.set_can_default(); m_Button_Close.grab_default(); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_checkbutton_text() { const bool show_text = m_CheckButton_Text.get_active(); m_ProgressBar.set_show_text(show_text); } void ExampleWindow::on_checkbutton_activity() { m_bActivityMode = m_CheckButton_Activity.get_active(); if(m_bActivityMode) m_ProgressBar.pulse(); else m_ProgressBar.set_fraction(0.0); } void ExampleWindow::on_checkbutton_inverted() { const bool inverted = m_CheckButton_Inverted.get_active(); m_ProgressBar.set_inverted(inverted); } void ExampleWindow::on_button_close() { hide(); } /* Update the value of the progress bar so that we get * some movement */ bool ExampleWindow::on_timeout() { if(m_bActivityMode) m_ProgressBar.pulse(); else { double new_val = m_ProgressBar.get_fraction() + 0.01; if(new_val > 1.0) new_val = 0.0; //Set the new value: m_ProgressBar.set_fraction(new_val); } //As this is a timeout function, return true so that it //continues to get called return true; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
InfoBar An InfoBar may show small items of information or ask brief questions. Unlike a Dialog, it appears at the top of the current window instead of opening a new window. Its API is very similar to the Gtk::Dialog API. 参考 示例
InfoBar
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_infobar_response(int response); void on_button_quit(); void on_button_clear(); void on_textbuffer_changed(); //Child widgets: Gtk::Box m_VBox; Gtk::ScrolledWindow m_ScrolledWindow; Gtk::TextView m_TextView; Glib::RefPtr<Gtk::TextBuffer> m_refTextBuffer; Gtk::InfoBar m_InfoBar; Gtk::Label m_Message_Label; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Quit, m_Button_Clear; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL, 6), m_Button_Quit(Gtk::Stock::QUIT), m_Button_Clear("Clear") { set_title("Gtk::InfoBar example"); set_border_width(6); set_default_size(400, 200); add(m_VBox); // Add the message label to the InfoBar: Gtk::Container* infoBarContainer = dynamic_cast<Gtk::Container*>(m_InfoBar.get_content_area()); if (infoBarContainer) infoBarContainer->add(m_Message_Label); // Add an ok button to the InfoBar: m_InfoBar.add_button(Gtk::Stock::OK, 0); // Add the InfoBar to the vbox: m_VBox.pack_start(m_InfoBar, Gtk::PACK_SHRINK); // Create the buffer and set it for the TextView: m_refTextBuffer = Gtk::TextBuffer::create(); m_TextView.set_buffer(m_refTextBuffer); // Add the TreeView, inside a ScrolledWindow: m_ScrolledWindow.add(m_TextView); // Show the scrollbars only when they are necessary: m_ScrolledWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_VBox.pack_start(m_ScrolledWindow); // Add button box: m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Clear, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Quit, Gtk::PACK_SHRINK); m_ButtonBox.set_spacing(6); m_ButtonBox.set_layout(Gtk::BUTTONBOX_END); // Connect signals: m_InfoBar.signal_response().connect(sigc::mem_fun(*this, &ExampleWindow::on_infobar_response) ); m_Button_Quit.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_quit) ); m_Button_Clear.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_clear) ); m_refTextBuffer->signal_changed().connect(sigc::mem_fun(*this, &ExampleWindow::on_textbuffer_changed) ); show_all_children(); // Keep the InfoBar hidden until a message needs to be shown: m_InfoBar.hide(); // Make the clear button insensitive until text is typed in the buffer. When // the button is sensitive and it is pressed, the InfoBar is displayed with a // message. m_Button_Clear.set_sensitive(false); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_infobar_response(int) { // Clear the message and hide the info bar: m_Message_Label.set_text(""); m_InfoBar.hide(); } void ExampleWindow::on_button_quit() { hide(); } void ExampleWindow::on_button_clear() { m_refTextBuffer->set_text(""); m_Message_Label.set_text("Cleared the text."); m_InfoBar.set_message_type(Gtk::MESSAGE_INFO); m_InfoBar.show(); } void ExampleWindow::on_textbuffer_changed() { m_Button_Clear.set_sensitive(m_refTextBuffer->size() > 0); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Tooltips Tooltips are the little information windows that pop up when you leave your pointer over a widget for a few seconds. Use set_tooltip_text() to set a text string as a tooltip on any Widget. Gtk::ToolItems are not Widgets, but have the same method for convenience. Gtk::Tooltip is used for more advanced tooltip usage, such as showing an image as well as text. Widget Reference Tooltip Reference 示例
Tooltip
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Methods: void prepare_textview(); void connect_signals(); //Signal handlers: void on_markup_checkbutton_click(); bool on_textview_query_tooltip(int x, int y, bool keyboard_tooltip, const Glib::RefPtr<Gtk::Tooltip>& tooltip); bool on_button_query_tooltip(int x, int y, bool keyboard_tooltip, const Glib::RefPtr<Gtk::Tooltip>& tooltip); //Child widgets: Gtk::Box m_vbox; Gtk::CheckButton m_checkbutton; Gtk::Label m_label; Gtk::ScrolledWindow m_scrolled_window; Gtk::TextView m_text_view; Glib::RefPtr<Gtk::TextBuffer> m_ref_text_buffer; Glib::RefPtr<Gtk::TextTag> m_ref_bold_tag; Gtk::Button m_button; Gtk::Window m_button_tooltip_window; }; #endif // GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <vector> const Glib::ustring app_title = "gtkmm tooltips example"; const Glib::ustring non_markedup_tip = "A tooltip without markup."; const Glib::ustring markedup_tip = "<i>Markup</i> in a tooltip."; ExampleWindow::ExampleWindow() : m_vbox(Gtk::ORIENTATION_VERTICAL, 3), m_checkbutton("Click to alternate markup in tooltip"), m_label("A label"), m_button("Custom widget in tooltip window"), m_button_tooltip_window(Gtk::WINDOW_POPUP) { //Set up window and the top-level container: set_title(app_title); set_border_width(10); add(m_vbox); //Check button with markup in tooltip: m_checkbutton.set_tooltip_text(non_markedup_tip); m_vbox.pack_start(m_checkbutton, Gtk::PACK_SHRINK); //Label: m_label.set_tooltip_text("Another tooltip"); m_vbox.pack_start(m_label, Gtk::PACK_SHRINK); //Textview: prepare_textview(); //Button: // set_tooltip_window(), like set_tooltip_text(), // will call set_has_tooltip() for us. m_button.set_tooltip_window(m_button_tooltip_window); m_vbox.pack_start(m_button, Gtk::PACK_SHRINK); //Button's custom tooltip window: m_button_tooltip_window.set_default_size(250, 30); Gtk::Label* label = Gtk::manage(new Gtk::Label("A label in a custom tooltip window")); label->show(); m_button_tooltip_window.add(*label); connect_signals(); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::prepare_textview() { Gtk::TextIter iter; std::vector< Glib::RefPtr<Gtk::TextTag> > tags; //Set up a scrolled window: m_scrolled_window.add(m_text_view); m_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_vbox.pack_start(m_scrolled_window); //Create a text buffer with some text: m_ref_text_buffer = Gtk::TextBuffer::create(); iter = m_ref_text_buffer->end(); m_ref_text_buffer->insert(iter, "Hover over the text "); //Insert some text with a tag. //In the tooltip signal handler below, we will show a tooltip //when mouse pointer is above this tagged text. m_ref_bold_tag = m_ref_text_buffer->create_tag("bold"); m_ref_bold_tag->set_property("weight", Pango::WEIGHT_BOLD); tags.push_back(m_ref_bold_tag); iter = m_ref_text_buffer->end(); m_ref_text_buffer->insert_with_tags(iter, "in bold", tags); iter = m_ref_text_buffer->end(); m_ref_text_buffer->insert(iter, " to see its' tooltip"); m_text_view.set_buffer(m_ref_text_buffer); m_text_view.set_size_request(320, 50); //When only connecting to the query-tooltip signal, and not using any //of set_tooltip_text(), set_tooltip_markup() or set_tooltip_window(), //we need to explicitly tell GTK+ that the widget has a tooltip which //we'll show. m_text_view.set_has_tooltip(); } void ExampleWindow::connect_signals() { m_checkbutton.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_markup_checkbutton_click)); m_text_view.signal_query_tooltip().connect( sigc::mem_fun(*this, &ExampleWindow::on_textview_query_tooltip)); m_button.signal_query_tooltip().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_query_tooltip)); } void ExampleWindow::on_markup_checkbutton_click() { if (m_checkbutton.get_active() == true) { m_checkbutton.set_tooltip_markup(markedup_tip); } else { m_checkbutton.set_tooltip_markup(non_markedup_tip); } } bool ExampleWindow::on_textview_query_tooltip(int x, int y, bool keyboard_tooltip, const Glib::RefPtr<Gtk::Tooltip>& tooltip) { Gtk::TextIter iter; if (keyboard_tooltip) { int offset = m_ref_text_buffer->property_cursor_position().get_value(); iter = m_ref_text_buffer->get_iter_at_offset(offset); } else { int mouse_x, mouse_y, trailing; m_text_view.window_to_buffer_coords(Gtk::TEXT_WINDOW_TEXT, x, y, mouse_x, mouse_y); m_text_view.get_iter_at_position(iter, trailing, mouse_x, mouse_y); } //Show a tooltip if the cursor or mouse pointer is over the text //with the specific tag: if (iter.has_tag(m_ref_bold_tag)) { tooltip->set_markup("<b>Information</b> attached to a text tag"); tooltip->set_icon_from_stock (Gtk::Stock::INFO, Gtk::ICON_SIZE_MENU); } else { return false; } return true; } bool ExampleWindow::on_button_query_tooltip(int, int, bool, const Glib::RefPtr<Gtk::Tooltip>&) { //We already have a custom window ready, just return true to show it: return true; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Container Widgets All container widgets derive from Gtk::Container, not always directly. Some container widgets, such as Gtk::Grid can hold many child widgets, so these typically have more complex interfaces. Others, such as Gtk::Frame contain only one child widget. Single-item Containers The single-item container widgets derive from Gtk::Bin, which provides the add() and remove() methods for the child widget. Note that Gtk::Button and Gtk::Window are technically single-item containers, but we have discussed them already elsewhere. We also discuss the Gtk::Paned widget, which allows you to divide a window into two separate "panes". This widget actually contains two child widgets, but the number is fixed so it seems appropriate. Frame Frames can enclose one or a group of widgets within a box, optionally with a title. For instance, you might place a group of RadioButtons or CheckButtons in a Frame. 参考 示例
Frame
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Child widgets: Gtk::Frame m_Frame; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" ExampleWindow::ExampleWindow() { /* Set some window properties */ set_title("Frame Example"); set_size_request(300, 300); /* Sets the border width of the window. */ set_border_width(10); add(m_Frame); /* Set the frames label */ m_Frame.set_label("Gtk::Frame Widget"); /* Align the label at the right of the frame */ //m_Frame.set_label_align(Gtk::ALIGN_END, Gtk::ALIGN_START); /* Set the style of the frame */ m_Frame.set_shadow_type(Gtk::SHADOW_ETCHED_OUT); show_all_children(); } ExampleWindow::~ExampleWindow() { } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Paned Panes divide a widget into two halves, separated by a moveable divider. The two halves (panes) can be oriented either horizontally (side by side) or vertically (one above the other). Unlike the other widgets in this section, pane widgets contain not one but two child widgets, one in each pane. Therefore, you should use add1() and add2() instead of the add() method. You can adjust the position of the divider using the set_position() method, and you will probably need to do so. 参考 示例
Paned
源代码 File: messageslist.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_MESSAGESLIST_H #define GTKMM_EXAMPLE_MESSAGESLIST_H #include <gtkmm.h> class MessagesList: public Gtk::ScrolledWindow { public: MessagesList(); virtual ~MessagesList(); class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() { add(m_col_text); } Gtk::TreeModelColumn<Glib::ustring> m_col_text; }; ModelColumns m_Columns; protected: Glib::RefPtr<Gtk::ListStore> m_refListStore; //The Tree Model. Gtk::TreeView m_TreeView; //The Tree View. }; #endif //GTKMM_EXAMPLE_MESSAGESLIST_H File: messagetext.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_MESSAGETEXT_H #define GTKMM_EXAMPLE_MESSAGETEXT_H #include <gtkmm.h> class MessageText : public Gtk::ScrolledWindow { public: MessageText(); virtual ~MessageText(); void insert_text(); protected: Gtk::TextView m_TextView; }; #endif //GTKMM_EXAMPLE_MESSAGETEXT_H File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include "messageslist.h" #include "messagetext.h" #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Child widgets: Gtk::Paned m_VPaned; MessagesList m_MessagesList; MessageText m_MessageText; }; #endif //GTKMM_EXAMPLEWINDOW_H File: messagetext.cc (For use with gtkmm 3, not gtkmm 2) #include "messagetext.h" MessageText::MessageText() { set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); add(m_TextView); insert_text(); show_all_children(); } MessageText::~MessageText() { } void MessageText::insert_text() { Glib::RefPtr<Gtk::TextBuffer> refTextBuffer = m_TextView.get_buffer(); Gtk::TextBuffer::iterator iter = refTextBuffer->get_iter_at_offset(0); refTextBuffer->insert(iter, "From: pathfinder@nasa.gov\n" "To: mom@nasa.gov\n" "Subject: Made it!\n" "\n" "We just got in this morning. The weather has been\n" "great - clear but cold, and there are lots of fun sights.\n" "Sojourner says hi. See you soon.\n" " -Path\n"); } File: messageslist.cc (For use with gtkmm 3, not gtkmm 2) #include "messageslist.h" #include <sstream> MessagesList::MessagesList() { /* Create a new scrolled window, with scrollbars only if needed */ set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); add(m_TreeView); /* create list store */ m_refListStore = Gtk::ListStore::create(m_Columns); m_TreeView.set_model(m_refListStore); /* Add some messages to the window */ for(int i = 0; i < 10; ++i) { std::ostringstream text; text << "message #" << i; Gtk::TreeModel::Row row = *(m_refListStore->append()); row[m_Columns.m_col_text] = text.str(); } //Add the Model's column to the View's columns: m_TreeView.append_column("Messages", m_Columns.m_col_text); show_all_children(); } MessagesList::~MessagesList() { } File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_VPaned(Gtk::ORIENTATION_VERTICAL) { set_title ("Paned Windows"); set_border_width(10); set_default_size(450, 400); /* Add a vpaned widget to our toplevel window */ add(m_VPaned); /* Now add the contents of the two halves of the window */ m_VPaned.add1(m_MessagesList); m_VPaned.add2(m_MessageText); show_all_children(); } ExampleWindow::~ExampleWindow() { } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
ScrolledWindow ScrolledWindow widgets create a scrollable area. You can insert any type of widget into a ScrolledWindow window, and it will be accessible regardless of its size by using the scrollbars. Note that ScrolledWindow is not a Gtk::Window despite the slightly misleading name. Scrolled windows have scrollbar policies which determine whether the Scrollbars will be displayed. The policies can be set with the set_policy() method. The policy may be one of Gtk::POLICY_AUTOMATIC or Gtk::POLICY_ALWAYS. Gtk::POLICY_AUTOMATIC will cause the scrolled window to display the scrollbar only if the contained widget is larger than the visible area. Gtk::POLICY_ALWAYS will cause the scrollbar to be displayed always. 参考 示例 Here is a simple example that packs 100 toggle buttons into a ScrolledWindow. Try resizing the window to see the scrollbars react.
ScrolledWindow
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Dialog { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_close(); //Child widgets: Gtk::ScrolledWindow m_ScrolledWindow; Gtk::Grid m_Grid; Gtk::Button m_Button_Close; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <cstdio> ExampleWindow::ExampleWindow() : m_Button_Close("Close") { set_title("Gtk::ScrolledWindow example"); set_border_width(0); set_size_request(300, 300); m_ScrolledWindow.set_border_width(10); /* the policy is one of Gtk::POLICY AUTOMATIC, or Gtk::POLICY_ALWAYS. * Gtk::POLICY_AUTOMATIC will automatically decide whether you need * scrollbars, whereas Gtk::POLICY_ALWAYS will always leave the scrollbars * there. The first one is the horizontal scrollbar, the second, * the vertical. */ m_ScrolledWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS); get_content_area()->pack_start(m_ScrolledWindow); /* set the spacing to 10 on x and 10 on y */ m_Grid.set_row_spacing(10); m_Grid.set_column_spacing(10); /* pack the grid into the scrolled window */ m_ScrolledWindow.add(m_Grid); /* this simply creates a grid of toggle buttons * to demonstrate the scrolled window. */ for(int i = 0; i < 10; i++) { for(int j = 0; j < 10; j++) { char buffer[32]; sprintf(buffer, "button (%d,%d)\n", i, j); Gtk::Button* pButton = Gtk::manage(new Gtk::ToggleButton(buffer)); m_Grid.attach(*pButton, i, j, 1, 1); } } /* Add a "close" button to the bottom of the dialog */ m_Button_Close.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_close)); /* this makes it so the button is the default. */ m_Button_Close.set_can_default(); Gtk::Box* pBox = get_action_area(); if(pBox) pBox->pack_start(m_Button_Close); /* This grabs this button to be the default button. Simply hitting * the "Enter" key will cause this button to activate. */ m_Button_Close.grab_default(); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_close() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
AspectFrame The AspectFrame widget looks like a Frame widget, but it also enforces the aspect ratio (the ratio of the width to the height) of the child widget, adding extra space if necessary. For instance, this would allow you to display a photograph without allowing the user to distort it horizontally or vertically while resizing. 参考 示例 The following program uses a Gtk::AspectFrame to present a drawing area whose aspect ratio will always be 2:1, no matter how the user resizes the top-level window.
AspectFrame
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Child widgets: Gtk::AspectFrame m_AspectFrame; Gtk::DrawingArea m_DrawingArea; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_AspectFrame("2x1", /* label */ Gtk::ALIGN_CENTER, /* center x */ Gtk::ALIGN_CENTER, /* center y */ 2.0, /* xsize/ysize = 2 */ false /* ignore child's aspect */) { set_title("Aspect Frame"); set_border_width(10); // Add a child widget to the aspect frame */ // Ask for a 200x200 window, but the AspectFrame will give us a 200x100 // window since we are forcing a 2x1 aspect ratio */ m_DrawingArea.set_size_request(200, 200); m_AspectFrame.add(m_DrawingArea); // Add the aspect frame to our toplevel window: add(m_AspectFrame); show_all_children(); } ExampleWindow::~ExampleWindow() { } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Alignment The Alignment widget allows you to place a widget at a position and size relative to the size of the Alignment widget itself. For instance, it might be used to center a widget. You need to specify the Alignment's characteristics to the constructor, or to the set() method. In particular, you won't notice much effect unless you specify a number other than 1.0 for the xscale and yscale parameters, because 1.0 simply means that the child widget will expand to fill all available space. 参考 示例 This example right-aligns a button in a window by using an Alignment widget.
Alignment
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_clicked(); //Child widgets: Gtk::Alignment m_Alignment; Gtk::Button m_Button; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_Alignment(Gtk::ALIGN_END, Gtk::ALIGN_CENTER, 0.0, 0.0), m_Button("Close") { set_title("Gtk::Alignement"); set_border_width(10); set_default_size(200, 50); add(m_Alignment); m_Alignment.add(m_Button); m_Button.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_clicked) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_clicked() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); } See the ProgressBar section for another example that uses an Alignment.
Multiple-item widgets Multiple-item widgets inherit from Gtk::Container; just as with Gtk::Bin, you use the add() and remove() methods to add and remove contained widgets. Unlike Gtk::Bin::remove(), however, the remove() method for Gtk::Container takes an argument, specifiying which widget to remove. Packing You've probably noticed that gtkmm windows seem "elastic" - they can usually be stretched in many different ways. This is due to the widget packing system. Many GUI toolkits require you to precisely place widgets in a window, using absolute positioning, often using a visual editor. This leads to several problems: The widgets don't rearrange themselves when the window is resized. Some widgets are hidden when the window is made smaller, and lots of useless space appears when the window is made larger. It's impossible to predict the amount of space necessary for text after it has been translated to other languages, or displayed in a different font. On Unix it is also impossible to anticipate the effects of every theme and window manager. Changing the layout of a window "on the fly", to make some extra widgets appear, for instance, is complex. It requires tedious recalculation of every widget's position. gtkmm uses the packing system to solve these problems. Rather than specifying the position and size of each widget in the window, you can arrange your widgets in rows, columns, and/or tables. gtkmm can size your window automatically, based on the sizes of the widgets it contains. And the sizes of the widgets are, in turn, determined by the amount of text they contain, or the minimum and maximum sizes that you specify, and/or how you have requested that the available space should be shared between sets of widgets. You can perfect your layout by specifying padding distance and centering values for each of your widgets. gtkmm then uses all this information to resize and reposition everything sensibly and smoothly when the user manipulates the window. gtkmm arranges widgets hierarchically, using containers. A Container widget contains other widgets. Most gtkmm widgets are containers. Windows, Notebook tabs, and Buttons are all container widgets. There are two flavours of containers: single-child containers, which are all descendants of Gtk::Bin, and multiple-child containers, which are descendants of Gtk::Container. Most widgets in gtkmm are descendants of Gtk::Bin, including Gtk::Window. Yes, that's correct: a Window can contain at most one widget. How, then, can we use a window for anything useful? By placing a multiple-child container in the window. The most useful container widgets are Gtk::Grid and Gtk::Box. Gtk::Grid arranges its child widgets in rows and columns. Use attach(), attach_next_to() and add() to insert child widgets. Gtk::Box arranges its child widgets vertically or horizontally. Use pack_start() and pack_end() to insert child widgets. There are several other containers, which we will also discuss. If you've never used a packing toolkit before, it can take some getting used to. You'll probably find, however, that you don't need to rely on visual form editors quite as much as you might with other toolkits. An improved Hello World Let's take a look at a slightly improved helloworld, showing what we've learnt.
Hello World 2
源代码 File: helloworld.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_HELLOWORLD_H #define GTKMM_EXAMPLE_HELLOWORLD_H #include <gtkmm/box.h> #include <gtkmm/button.h> #include <gtkmm/window.h> class HelloWorld : public Gtk::Window { public: HelloWorld(); virtual ~HelloWorld(); protected: // Signal handlers: // Our new improved on_button_clicked(). (see below) void on_button_clicked(Glib::ustring data); // Child widgets: Gtk::Box m_box1; Gtk::Button m_button1, m_button2; }; #endif // GTKMM_EXAMPLE_HELLOWORLD_H File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "helloworld.h" #include <gtkmm/application.h> int main (int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); HelloWorld helloworld; //Shows the window and returns when it is closed. return app->run(helloworld); } File: helloworld.cc (For use with gtkmm 3, not gtkmm 2) #include "helloworld.h" #include <iostream> HelloWorld::HelloWorld() : m_button1("Button 1"), m_button2("Button 2") { // This just sets the title of our new window. set_title("Hello Buttons!"); // sets the border width of the window. set_border_width(10); // put the box into the main window. add(m_box1); // Now when the button is clicked, we call the "on_button_clicked" function // with a pointer to "button 1" as it's argument m_button1.signal_clicked().connect(sigc::bind<Glib::ustring>( sigc::mem_fun(*this, &HelloWorld::on_button_clicked), "button 1")); // instead of gtk_container_add, we pack this button into the invisible // box, which has been packed into the window. // note that the pack_start default arguments are Gtk::EXPAND | Gtk::FILL, 0 m_box1.pack_start(m_button1); // always remember this step, this tells GTK that our preparation // for this button is complete, and it can be displayed now. m_button1.show(); // call the same signal handler with a different argument, // passing a pointer to "button 2" instead. m_button2.signal_clicked().connect(sigc::bind<-1, Glib::ustring>( sigc::mem_fun(*this, &HelloWorld::on_button_clicked), "button 2")); m_box1.pack_start(m_button2); // Show the widgets. // They will not really be shown until this Window is shown. m_button2.show(); m_box1.show(); } HelloWorld::~HelloWorld() { } // Our new improved signal handler. The data passed to this method is // printed to stdout. void HelloWorld::on_button_clicked(Glib::ustring data) { std::cout << "Hello World - " << data << " was pressed" << std::endl; } After building and running this program, try resizing the window to see the behaviour. Also, try playing with the options to pack_start() while reading the Boxes section.
Boxes Most packing uses boxes as in the above example. These are invisible containers into which we can pack our widgets. When packing widgets into a horizontal box, the objects are inserted horizontally from left to right or right to left depending on whether pack_start() or pack_end() is used. In a vertical box, widgets are packed from top to bottom or vice versa. You may use any combination of boxes inside or beside other boxes to create the desired effect. Adding widgets Per-child packing options The pack_start() and pack_end() methods place widgets inside these containers. The pack_start() method will start at the top and work its way down in a Box with vertical orientation, or pack left to right in a Box with horizontal orientation. pack_end() will do the opposite, packing from bottom to top or from right to left. Using these methods allows us to right justify or left justify our widgets. We will use pack_start() in most of our examples. There are several options governing how widgets are to be packed, and this can be confusing at first. If you have difficulties then it is sometimes a good idea to play with the glade GUI designer to see what is possible. You might even decide to use the Gtk::Builder API to load your GUI at runtime. There are basically five different styles, as shown in this picture:
Box Packing 1
Each line contains one horizontal Box with several buttons. Each of the buttons on a line is packed into the Box with the same arguments to the pack_start() method. This is the declaration of the pack_start() method: void pack_start(Gtk::Widget& child, Gtk::PackOptions options = Gtk::PACK_EXPAND_WIDGET, guint padding = 0); The first argument is the widget you're packing. In our example these are all Buttons. The options argument can take one of these three options: Gtk::PACK_SHRINK: Space is contracted to the child widget size. The widget will take up just-enough space and never expand. Gtk::PACK_EXPAND_PADDING: Extra space is filled with padding. The widgets will be spaced out evenly, but their sizes won't change - there will be empty space between the widgets instead. Gtk::PACK_EXPAND_WIDGET: Extra space is taken up by increasing the child widget size, without changing the amount of space between widgets. The padding argument specifies the width of an extra border area to leave around the packed widget. 参考
Per-container packing options Here's the constructor for the Box widget, and methods that set per-container packing options: Gtk::Box(Gtk::Orientation orientation = Gtk::ORIENTATION_HORIZONTAL, int spacing = 0); void set_spacing(int spacing); void set_homogeneous(bool homogeneous = true); Passing true to set_homogeneous() will cause all of the contained widgets to be the same size. spacing is a (minimum) number of pixels to leave between each widget. What's the difference between spacing (set when the box is created) and padding (set when elements are packed)? Spacing is added between objects, and padding is added on either side of a widget. The following figure should make it clearer:
Box Packing 2
Gtk::Application and command-line options The following example program requires a command-line option. The source code shows two ways of handling command-line options in combination with Gtk::Application. Handle the options in main() and hide them from Gtk::Application by setting argc = 1 in the call to Gtk::Application::create(). Give all command-line options to Gtk::Application::create() and add the flag Gio::APPLICATION_HANDLES_COMMAND_LINE. Connect a signal handler to the command_line signal, and handle the command-line options in the signal handler. You must set the optional parameter after = false in the call to signal_command_line().connect(), because your signal handler must be called before the default signal handler. You must also call Gio::Application::activate() in the signal handler, unless you want your application to exit without showing its main window. (Gio::Application is a base class of Gtk::Application.) 示例 Here is the source code for the example that produced the screenshots above. When you run this example, provide a number between 1 and 3 as a command-line option, to see different packing options in use. 源代码 File: packbox.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_PACKBOX_H #define GTKMM_EXAMPLE_PACKBOX_H #include <gtkmm.h> class PackBox : public Gtk::Box { public: PackBox(bool homogeneous, int spacing, Gtk::PackOptions options, int padding = 0); virtual ~PackBox(); protected: Gtk::Button m_button1, m_button2, m_button3; Gtk::Button* m_pbutton4; }; #endif //GTKMM_EXAMPLE_PACKBOX_H File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(int which); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_quit_clicked(); //Child widgets: Gtk::Button m_button; Gtk::Box m_box1; Gtk::Box m_boxQuit; Gtk::Button m_buttonQuit; Gtk::Label m_Label1, m_Label2; Gtk::Separator m_separator1, m_separator2; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include "examplewindow.h" #include "packbox.h" ExampleWindow::ExampleWindow(int which) : m_box1(Gtk::ORIENTATION_VERTICAL), m_buttonQuit("Quit") { set_title("Gtk::Box example"); PackBox *pPackBox1, *pPackBox2, *pPackBox3, *pPackBox4, *pPackBox5; switch(which) { case 1: { m_Label1.set_text("Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 0); set_homogeneous(false);"); // Align the label to the left side. We'll discuss this function and // others in the section on Widget Attributes. m_Label1.set_alignment(Gtk::ALIGN_START, Gtk::ALIGN_START); // Pack the label into the vertical box (vbox box1). Remember that // widgets added to a vbox will be packed one on top of the other in // order. m_box1.pack_start(m_Label1, Gtk::PACK_SHRINK); // Create a PackBox - homogeneous = false, spacing = 0, // options = Gtk::PACK_SHRINK, padding = 0 pPackBox1 = Gtk::manage(new PackBox(false, 0, Gtk::PACK_SHRINK)); m_box1.pack_start(*pPackBox1, Gtk::PACK_SHRINK); // Create a PackBox - homogeneous = false, spacing = 0, // options = Gtk::PACK_EXPAND_PADDING, padding = 0 pPackBox2 = Gtk::manage(new PackBox(false, 0, Gtk::PACK_EXPAND_PADDING)); m_box1.pack_start(*pPackBox2, Gtk::PACK_SHRINK); // Create a PackBox - homogeneous = false, spacing = 0, // options = Gtk::PACK_EXPAND_WIDGET, padding = 0 pPackBox3 = Gtk::manage(new PackBox(false, 0, Gtk::PACK_EXPAND_WIDGET)); m_box1.pack_start(*pPackBox3, Gtk::PACK_SHRINK); // pack the separator into the vbox. Remember each of these // widgets are being packed into a vbox, so they'll be stacked // vertically. m_box1.pack_start(m_separator1, Gtk::PACK_SHRINK, 5); // create another new label, and show it. m_Label2.set_text("Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 0); set_homogeneous(true);"); m_Label2.set_alignment(Gtk::ALIGN_START, Gtk::ALIGN_START); m_box1.pack_start(m_Label2, Gtk::PACK_SHRINK); // Args are: homogeneous, spacing, options, padding pPackBox4 = Gtk::manage(new PackBox(true, 0, Gtk::PACK_EXPAND_PADDING)); m_box1.pack_start(*pPackBox4, Gtk::PACK_SHRINK); // Args are: homogeneous, spacing, options, padding pPackBox5 = Gtk::manage(new PackBox(true, 0, Gtk::PACK_EXPAND_WIDGET)); m_box1.pack_start(*pPackBox5, Gtk::PACK_SHRINK); m_box1.pack_start(m_separator2, Gtk::PACK_SHRINK, 5); break; } case 2: { m_Label1.set_text("Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 10); set_homogeneous(false);"); m_Label1.set_alignment(Gtk::ALIGN_START, Gtk::ALIGN_START); m_box1.pack_start(m_Label1, Gtk::PACK_SHRINK); pPackBox1 = Gtk::manage(new PackBox(false, 10, Gtk::PACK_EXPAND_PADDING)); m_box1.pack_start(*pPackBox1, Gtk::PACK_SHRINK); pPackBox2 = Gtk::manage(new PackBox(false, 10, Gtk::PACK_EXPAND_WIDGET)); m_box1.pack_start(*pPackBox2, Gtk::PACK_SHRINK); m_box1.pack_start(m_separator1, Gtk::PACK_SHRINK, 5); m_Label2.set_text("Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 0); set_homogeneous(false);"); m_Label2.set_alignment(Gtk::ALIGN_START, Gtk::ALIGN_START); m_box1.pack_start(m_Label2, Gtk::PACK_SHRINK); pPackBox3 = Gtk::manage(new PackBox(false, 0, Gtk::PACK_SHRINK, 10)); m_box1.pack_start(*pPackBox3, Gtk::PACK_SHRINK); pPackBox4 = Gtk::manage(new PackBox(false, 0, Gtk::PACK_EXPAND_WIDGET, 10)); m_box1.pack_start(*pPackBox4, Gtk::PACK_SHRINK); m_box1.pack_start(m_separator2, Gtk::PACK_SHRINK, 5); break; } case 3: { // This demonstrates the ability to use Gtk::Box::pack_end() to // right justify widgets. First, we create a new box as before. pPackBox1 = Gtk::manage(new PackBox(false, 0, Gtk::PACK_SHRINK)); // create the label that will be put at the end. m_Label1.set_text("end"); // pack it using pack_end(), so it is put on the right side // of the PackBox. pPackBox1->pack_end(m_Label1, Gtk::PACK_SHRINK); m_box1.pack_start(*pPackBox1, Gtk::PACK_SHRINK); // this explicitly sets the separator to 500 pixels wide by 5 pixels // high. This is so the hbox we created will also be 500 pixels wide, // and the "end" label will be separated from the other labels in the // hbox. Otherwise, all the widgets in the hbox would be packed as // close together as possible. m_separator1.set_size_request(500, 5); // pack the separator into the vbox. m_box1.pack_start(m_separator1, Gtk::PACK_SHRINK, 5); break; } default: { std::cerr << "Unexpected command-line option." << std::endl; break; } } // Connect the signal to hide the window: m_buttonQuit.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_quit_clicked) ); // pack the button into the quitbox. // The last 2 arguments to Box::pack_start are: options, padding. m_boxQuit.pack_start(m_buttonQuit, Gtk::PACK_EXPAND_PADDING); m_box1.pack_start(m_boxQuit, Gtk::PACK_SHRINK); // pack the vbox (box1) which now contains all our widgets, into the // main window. add(m_box1); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_quit_clicked() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> #include <iostream> #include <cstdlib> #define GTK_APPLICATION_RECEIVES_COMMAND_LINE_ARGUMENTS 0 #if GTK_APPLICATION_RECEIVES_COMMAND_LINE_ARGUMENTS namespace { int on_command_line(const Glib::RefPtr<Gio::ApplicationCommandLine>& command_line, Glib::RefPtr<Gtk::Application>& app) { int argc = 0; char** argv = command_line->get_arguments(argc); for (int i = 0; i < argc; ++i) std::cout << "argv[" << i << "] = " << argv[i] << std::endl; app->activate(); // Without activate() the window won't be shown. return EXIT_SUCCESS; } } // anonymous namespace #endif int main(int argc, char *argv[]) { if (argc != 2) { std::cerr << "Usage: example <num>, where <num> is 1, 2, or 3." << std::endl; return EXIT_FAILURE; } #if GTK_APPLICATION_RECEIVES_COMMAND_LINE_ARGUMENTS // The command line arguments must be checked before Gtk::Application::run() // is called. The Gio::APPLICATION_HANDLES_COMMAND_LINE flag and the // on_command_line() signal handler are not necessary. This program is simpler // without them, and with argc = 1 in the call to Gtk::Application::create(). // They are included to show a program with Gio::APPLICATION_HANDLES_COMMAND_LINE. // Gio::APPLICATION_NON_UNIQUE makes it possible to run several instances of // this application simultaneously. Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example", Gio::APPLICATION_HANDLES_COMMAND_LINE | Gio::APPLICATION_NON_UNIQUE); // Note after = false. // Only one signal handler is invoked. This signal handler must run before // the default signal handler, or else it won't run at all. app->signal_command_line().connect(sigc::bind(sigc::ptr_fun(&on_command_line), app), false); #else // Gio::APPLICATION_NON_UNIQUE makes it possible to run several instances of // this application simultaneously. int argc1 = 1; // Don't give the command line arguments to Gtk::Application. Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc1, argv, "org.gtkmm.example", Gio::APPLICATION_NON_UNIQUE); #endif ExampleWindow window(std::atoi(argv[1])); return app->run(window); //Shows the window and returns when it is closed. } File: packbox.cc (For use with gtkmm 3, not gtkmm 2) #include "packbox.h" PackBox::PackBox(bool homogeneous, int spacing, Gtk::PackOptions options, int padding) : Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, spacing), m_button1("box.pack_start("), m_button2("button,"), m_button3((options == Gtk::PACK_SHRINK) ? "Gtk::PACK_SHRINK" : ((options == Gtk::PACK_EXPAND_PADDING) ? "Gtk::PACK_EXPAND_PADDING" : "Gtk::PACK_EXPAND_WIDGET")) { set_homogeneous(homogeneous); pack_start(m_button1, options, padding); pack_start(m_button2, options, padding); pack_start(m_button3, options, padding); m_pbutton4 = new Gtk::Button(Glib::ustring::format(padding) + ");"); pack_start(*m_pbutton4, options, padding); } PackBox::~PackBox() { delete m_pbutton4; }
ButtonBoxes Button boxes are a convenient way to quickly arrange a group of buttons. Their orientation can be either horizontal or vertical. ButtonBoxes help to make applications appear consistent because they use standard settings, such as inter-button spacing and packing. Buttons are added to a ButtonBox with the add() method. Button boxes support several layout styles. The style can be retrieved and changed using get_layout() and set_layout(). 参考 示例
ButtonBox
源代码 File: examplebuttonbox.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_BUTTONBOX_H #define GTKMM_EXAMPLE_BUTTONBOX_H #include <gtkmm.h> class ExampleButtonBox : public Gtk::Frame { public: ExampleButtonBox(bool horizontal, const Glib::ustring& title, gint spacing, Gtk::ButtonBoxStyle layout); protected: Gtk::Button m_Button_OK, m_Button_Cancel, m_Button_Help; }; #endif //GTKMM_EXAMPLE_BUTTONBOX_H File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_clicked(); //Child widgets: Gtk::Box m_VBox_Main, m_VBox; Gtk::Box m_HBox; Gtk::Frame m_Frame_Horizontal, m_Frame_Vertical; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplebuttonbox.cc (For use with gtkmm 3, not gtkmm 2) #include "examplebuttonbox.h" ExampleButtonBox::ExampleButtonBox(bool horizontal, const Glib::ustring& title, gint spacing, Gtk::ButtonBoxStyle layout) : Gtk::Frame(title), m_Button_OK("OK"), m_Button_Cancel("Cancel"), m_Button_Help("Help") { Gtk::ButtonBox* bbox = 0; if(horizontal) bbox = Gtk::manage( new Gtk::ButtonBox(Gtk::ORIENTATION_HORIZONTAL) ); else bbox = Gtk::manage( new Gtk::ButtonBox(Gtk::ORIENTATION_VERTICAL) ); bbox->set_border_width(5); add(*bbox); /* Set the appearance of the Button Box */ bbox->set_layout(layout); bbox->set_spacing(spacing); bbox->add(m_Button_OK); bbox->add(m_Button_Cancel); bbox->add(m_Button_Help); } File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include "examplebuttonbox.h" ExampleWindow::ExampleWindow() : m_VBox_Main(Gtk::ORIENTATION_VERTICAL), m_VBox(Gtk::ORIENTATION_VERTICAL), m_Frame_Horizontal("Horizontal Button Boxes"), m_Frame_Vertical("Vertical Button Boxes") { set_title("Gtk::ButtonBox"); add(m_VBox_Main); m_VBox_Main.pack_start(m_Frame_Horizontal, Gtk::PACK_EXPAND_WIDGET, 10); //The horizontal ButtonBoxes: m_VBox.set_border_width(10); m_Frame_Horizontal.add(m_VBox); m_VBox.pack_start(*Gtk::manage( new ExampleButtonBox(true, "Spread (spacing 40)", 40, Gtk::BUTTONBOX_SPREAD)), Gtk::PACK_EXPAND_WIDGET, 0); m_VBox.pack_start(*Gtk::manage( new ExampleButtonBox(true, "Edge (spacing 30)", 30, Gtk::BUTTONBOX_EDGE)), Gtk::PACK_EXPAND_WIDGET, 5); m_VBox.pack_start(*Gtk::manage( new ExampleButtonBox(true, "Start (spacing 20)", 20, Gtk::BUTTONBOX_START)), Gtk::PACK_EXPAND_WIDGET, 5); m_VBox.pack_start(*Gtk::manage( new ExampleButtonBox(true, "end (spacing 10)", 10, Gtk::BUTTONBOX_END)), Gtk::PACK_EXPAND_WIDGET, 5); //The vertical ButtonBoxes: m_VBox_Main.pack_start(m_Frame_Vertical, Gtk::PACK_EXPAND_WIDGET, 10); m_HBox.set_border_width(10); m_Frame_Vertical.add(m_HBox); m_HBox.pack_start(*Gtk::manage( new ExampleButtonBox(false, "Spread (spacing 5)", 5, Gtk::BUTTONBOX_SPREAD)), Gtk::PACK_EXPAND_WIDGET, 0); m_HBox.pack_start(*Gtk::manage( new ExampleButtonBox(false, "Edge (spacing 30)", 30, Gtk::BUTTONBOX_EDGE)), Gtk::PACK_EXPAND_WIDGET, 5); m_HBox.pack_start(*Gtk::manage( new ExampleButtonBox(false, "Start (spacing 20)", 20, Gtk::BUTTONBOX_START)), Gtk::PACK_EXPAND_WIDGET, 5); m_HBox.pack_start(*Gtk::manage(new ExampleButtonBox(false, "End (spacing 10)", 10, Gtk::BUTTONBOX_END)), Gtk::PACK_EXPAND_WIDGET, 5); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_clicked() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Grid A Grid dynamically lays out child widgets in rows and columns. The dimensions of the grid do not need to be specified in the constructor. Child widgets can span multiple rows or columns, using attach(), or added next to an existing widget inside the grid with attach_next_to(). Individual rows and columns of the grid can be set to have uniform height or width with set_row_homogeneous() and set_column_homogeneous(). You can set the margin and expand properties of the child Widgets to control their spacing and their behaviour when the Grid is resized. 参考 示例 This example creates a window with three buttons in a grid. The first two buttons are in the upper row, from left to right. A third button is attached underneath the first button, in a new lower row, spanning two columns.
Grid
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); private: // Signal handlers: void on_button_quit(); void on_button_numbered(const Glib::ustring& data); // Child widgets: Gtk::Grid m_grid; Gtk::Button m_button_1, m_button_2, m_button_quit; }; #endif /* GTKMM_EXAMPLEWINDOW_H */ File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_button_1("button 1"), m_button_2("button 2"), m_button_quit("Quit") { set_title("Gtk::Grid"); set_border_width(12); add(m_grid); m_grid.add(m_button_1); m_grid.add(m_button_2); m_grid.attach_next_to(m_button_quit, m_button_1, Gtk::POS_BOTTOM, 2, 1); m_button_1.signal_clicked().connect( sigc::bind<Glib::ustring>( sigc::mem_fun(*this, &ExampleWindow::on_button_numbered), "button 1") ); m_button_2.signal_clicked().connect( sigc::bind<Glib::ustring>( sigc::mem_fun(*this, &ExampleWindow::on_button_numbered), "button 2") ); m_button_quit.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_quit) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_quit() { hide(); } void ExampleWindow::on_button_numbered(const Glib::ustring& data) { std::cout << data << " was pressed" << std::endl; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; // Shows the window and returns when it is closed. return app->run(window); }
Table Gtk::Table allows us to place widgets in a grid, similar to Gtk::Grid. Gtk::Table is deprecated from gtkmm version 3.4 and should not be used in newly-written code. Use Gtk::Grid instead. Notebook A Notebook has a set of stacked pages, each of which contains widgets. Labelled tabs allow the user to select the pages. Notebooks allow several sets of widgets to be placed in a small space, by only showing one page at a time. For instance, they are often used in preferences dialogs. Use the append_page(), prepend_page() and insert_page() methods to add tabbed pages to the Notebook, supplying the child widget and the name for the tab. To discover the currently visible page, use the get_current_page() method. This returns the page number, and then calling get_nth_page() with that number will give you a pointer to the actual child widget. To programmatically change the selected page, use the set_current_page() method. 参考 示例
Notebook
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_quit(); void on_notebook_switch_page(Gtk::Widget* page, guint page_num); //Child widgets: Gtk::Box m_VBox; Gtk::Notebook m_Notebook; Gtk::Label m_Label1, m_Label2; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Quit; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Label1("Contents of tab 1"), m_Label2("Contents of tab 2"), m_Button_Quit("Quit") { set_title("Gtk::Notebook example"); set_border_width(10); set_default_size(400, 200); add(m_VBox); //Add the Notebook, with the button underneath: m_Notebook.set_border_width(10); m_VBox.pack_start(m_Notebook); m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Quit, Gtk::PACK_SHRINK); m_Button_Quit.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_quit) ); //Add the Notebook pages: m_Notebook.append_page(m_Label1, "First"); m_Notebook.append_page(m_Label2, "Second"); m_Notebook.signal_switch_page().connect(sigc::mem_fun(*this, &ExampleWindow::on_notebook_switch_page) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_quit() { hide(); } void ExampleWindow::on_notebook_switch_page(Gtk::Widget* /* page */, guint page_num) { std::cout << "Switched to tab with index " << page_num << std::endl; //You can also use m_Notebook.get_current_page() to get this index. } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Assistant An Assistant splits a complex operation into steps. Each step is a page, containing a header, a child widget and an action area. The Assistant's action area has navigation buttons which update automatically depending on the type of the page, set with set_page_type(). Use the append_page(), prepend_page and insert_page() methods to add pages to the Assistant, supplying the child widget for each page. To determine the currently-visible page, use the get_current_page() method, and pass the result to get_nth_page(), which returns a pointer to the actual widget. To programmatically change the current page, use the set_current_page() method. To set the title of a page, use the set_page_title() method. The header and side images of a page can be set with the set_page_header_image() and set_page_side_image() methods. To add widgets to the action area, use the add_action_widget() method. They will be packed alongside the default buttons. Use the remove_action_widget() method to remove widgets. 参考 示例
Assistant
源代码 File: exampleassistant.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEASSISTANT_H #define GTKMM_EXAMPLEASSISTANT_H #include <gtkmm.h> class ExampleAssistant : public Gtk::Assistant { public: ExampleAssistant(); virtual ~ExampleAssistant(); void get_result(bool& check_state, Glib::ustring& entry_text); private: // Signal handlers: void on_assistant_apply(); void on_assistant_cancel(); void on_assistant_close(); void on_assistant_prepare(Gtk::Widget* widget); void on_entry_changed(); // Member functions: void print_status(); // Child widgets: Gtk::Box m_box; Gtk::Label m_label1, m_label2; Gtk::CheckButton m_check; Gtk::Entry m_entry; }; #endif /* GTKMM_EXAMPLEASSISTANT_H */ File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include "exampleassistant.h" #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); private: // Signal handlers: void on_button_clicked(); void on_assistant_apply(); // Child widgets: Gtk::Grid m_grid; Gtk::Button m_button; Gtk::Label m_label1, m_label2; Gtk::CheckButton m_check; Gtk::Entry m_entry; ExampleAssistant m_assistant; }; #endif /* GTKMM_EXAMPLEWINDOW_H */ File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include "exampleassistant.h" ExampleWindow::ExampleWindow() : m_button("Show the assistant"), m_label1("State of assistant checkbutton:"), m_label2("Contents of assistant entry:") { set_title("Gtk::Assistant example"); set_border_width(12); m_grid.set_row_homogeneous(true); m_grid.attach(m_button, 0, 0, 2, 1); m_button.set_hexpand(true); m_button.set_valign(Gtk::ALIGN_CENTER); m_grid.attach(m_label1, 0, 1, 1, 1); m_label1.set_alignment(0.0, 0.5); m_grid.attach(m_label2, 0, 2, 1, 1); m_label2.set_alignment(0.0, 0.5); m_grid.attach(m_check, 1, 1, 1, 1); m_check.set_halign(Gtk::ALIGN_START); m_grid.attach(m_entry, 1, 2, 1, 1); m_entry.set_hexpand(true); add(m_grid); m_button.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_clicked)); m_assistant.signal_apply().connect(sigc::mem_fun(*this, &ExampleWindow::on_assistant_apply)); m_check.set_sensitive(false); m_entry.set_sensitive(false); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_assistant_apply() { bool check_state; Glib::ustring entry_text; m_assistant.get_result(check_state, entry_text); m_check.set_active(check_state); m_entry.set_text(entry_text); } void ExampleWindow::on_button_clicked() { m_assistant.show(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; // Shows the window and returns when it is closed. return app->run(window); } File: exampleassistant.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include "exampleassistant.h" ExampleAssistant::ExampleAssistant() : m_box(Gtk::ORIENTATION_HORIZONTAL, 12), m_label1("Type text to allow the assistant to continue:"), m_label2("Confirmation page"), m_check("Optional extra information") { set_title("Gtk::Assistant example"); set_border_width(12); set_default_size(400, 300); m_box.pack_start(m_label1); m_box.pack_start(m_entry); append_page(m_box); append_page(m_check); append_page(m_label2); set_page_title(*get_nth_page(0), "Page 1"); set_page_title(*get_nth_page(1), "Page 2"); set_page_title(*get_nth_page(2), "Confirmation"); set_page_complete(m_check, true); set_page_complete(m_label2, true); set_page_type(m_box, Gtk::ASSISTANT_PAGE_INTRO); set_page_type(m_label2, Gtk::ASSISTANT_PAGE_CONFIRM); signal_apply().connect(sigc::mem_fun(*this, &ExampleAssistant::on_assistant_apply)); signal_cancel().connect(sigc::mem_fun(*this, &ExampleAssistant::on_assistant_cancel)); signal_close().connect(sigc::mem_fun(*this, &ExampleAssistant::on_assistant_close)); signal_prepare().connect(sigc::mem_fun(*this, &ExampleAssistant::on_assistant_prepare)); m_entry.signal_changed().connect(sigc::mem_fun(*this, &ExampleAssistant::on_entry_changed)); show_all_children(); } ExampleAssistant::~ExampleAssistant() { } void ExampleAssistant::get_result(bool& check_state, Glib::ustring& entry_text) { check_state = m_check.get_active(); entry_text = m_entry.get_text(); } void ExampleAssistant::on_assistant_apply() { std::cout << "Apply was clicked"; print_status(); } void ExampleAssistant::on_assistant_cancel() { std::cout << "Cancel was clicked"; print_status(); hide(); } void ExampleAssistant::on_assistant_close() { std::cout << "Assistant was closed"; print_status(); hide(); } void ExampleAssistant::on_assistant_prepare(Gtk::Widget* /* widget */) { set_title(Glib::ustring::compose("Gtk::Assistant example (Page %1 of %2)", get_current_page() + 1, get_n_pages())); } void ExampleAssistant::on_entry_changed() { // The page is only complete if the entry contains text. if(m_entry.get_text_length()) set_page_complete(m_box, true); else set_page_complete(m_box, false); } void ExampleAssistant::print_status() { std::cout << ", entry contents: \"" << m_entry.get_text() << "\", checkbutton status: " << m_check.get_active() << std::endl; }
The TreeView widget The Gtk::TreeView widget can contain lists or trees of data, in columns. The Model Each Gtk::TreeView has an associated Gtk::TreeModel, which contains the data displayed by the TreeView. Each Gtk::TreeModel can be used by more than one Gtk::TreeView. For instance, this allows the same underlying data to be displayed and edited in 2 different ways at the same time. Or the 2 Views might display different columns from the same Model data, in the same way that 2 SQL queries (or "views") might show different fields from the same database table. Although you can theoretically implement your own Model, you will normally use either the ListStore or TreeStore model classes. 参考 ListStore, for rows The ListStore contains simple rows of data, and each row has no children.
TreeView - ListStore
参考
TreeStore, for a hierarchy The TreeStore contains rows of data, and each row may have child rows.
TreeView - TreeStore
参考
Model Columns The TreeModelColumnRecord class is used to keep track of the columns and their data types. You add TreeModelColumn instances to the ColumnRecord and then use those TreeModelColumns when getting and setting the data in model rows. You will probably find it convenient to derive a new TreeModelColumnRecord which has your TreeModelColumn instances as member data. class ModelColumns : public Gtk::TreeModelColumnRecord { public: ModelColumns() { add(m_col_text); add(m_col_number); } Gtk::TreeModelColumn<Glib::ustring> m_col_text; Gtk::TreeModelColumn<int> m_col_number; }; ModelColumns m_Columns; You specify the ColumnRecord when creating the Model, like so: Glib::RefPtr<Gtk::ListStore> refListStore = Gtk::ListStore::create(m_Columns); Note that the instance (such as m_Columns here) should usually not be static, because it often needs to be instantiated after glibmm has been instantiated. Adding Rows Add rows to the model with the append(), prepend(), or insert() methods. Gtk::TreeModel::iterator iter = m_refListStore->append(); You can dereference the iterator to get the Row: Gtk::TreeModel::Row row = *iter; Adding child rows Gtk::TreeStore models can have child items. Add them with the append(), prepend(), or insert() methods, like so: Gtk::TreeModel::iterator iter_child = m_refListStore->append(row.children()); Setting values You can use the operator[] override to set the data for a particular column in the row, specifying the TreeModelColumn used to create the model. row[m_Columns.m_col_text] = "sometext"; Getting values You can use the operator[] override to get the data in a particular column in a row, specifiying the TreeModelColumn used to create the model. Glib::ustring strText = row[m_Columns.m_col_text]; int number = row[m_Columns.m_col_number]; The compiler will complain if you use an inappropriate type. For instance, this would generate a compiler error: //compiler error - no conversion from ustring to int. int number = row[m_Columns.m_col_text]; "Hidden" Columns You might want to associate extra data with each row. If so, just add it as a Model column, but don't add it to the View.
The View The View is the actual widget (Gtk::TreeView) that displays the model (Gtk::TreeModel) data and allows the user to interact with it. The View can show all of the model's columns, or just some, and it can show them in various ways. 参考 Using a Model You can specify a Gtk::TreeModel when constructing the Gtk::TreeView, or you can use the set_model() method, like so: m_TreeView.set_model(m_refListStore); Adding View Columns You can use the append_column() method to tell the View that it should display certain Model columns, in a certain order, with a certain column title. m_TreeView.append_column("Messages", m_Columns.m_col_text); When using this simple append_column() override, the TreeView will display the model data with an appropriate CellRenderer. For instance, strings and numbers are shown in a simple Gtk::Entry widget, and booleans are shown in a Gtk::CheckButton. This is usually what you need. For other column types you must either connect a callback that converts your type into a string representation, with TreeViewColumn::set_cell_data_func(), or derive a custom CellRenderer. Note that (unsigned) short is not supported by default - You could use (unsigned) int or (unsigned) long as the column type instead. More than one Model Column per View Column To render more than one model column in a view column, you need to create the TreeView::Column widget manually, and use pack_start() to add the model columns to it. Then use append_column() to add the view Column to the View. Notice that Gtk::View::append_column() is overridden to accept either a prebuilt Gtk::View::Column widget, or just the TreeModelColumn from which it generates an appropriate Gtk::View::Column widget. Here is some example code from demos/gtk-demo/example_stockbrowser.cc, which has a pixbuf icon and a text name in the same column: Gtk::TreeView::Column* pColumn = Gtk::manage( new Gtk::TreeView::Column("Symbol") ); // m_columns.icon and m_columns.symbol are columns in the model. // pColumn is the column in the TreeView: pColumn->pack_start(m_columns.icon, false); //false = don't expand. pColumn->pack_start(m_columns.symbol); m_TreeView.append_column(*pColumn); Specifying CellRenderer details The default CellRenderers and their default behaviour will normally suffice, but you might occasionally need finer control. For instance, this example code from demos/gtk-demo/example_treestore.cc, manually constructs a Gtk::CellRenderer widget and instructs it to render the data from various model columns through various aspects of its appearance. Gtk::CellRendererToggle* pRenderer = Gtk::manage( new Gtk::CellRendererToggle() ); int cols_count = m_TreeView.append_column("Alex", *pRenderer); Gtk::TreeViewColumn* pColumn = m_TreeView.get_column(cols_count-1); if(pColumn) { pColumn->add_attribute(pRenderer->property_active(), m_columns.alex); pColumn->add_attribute(pRenderer->property_visible(), m_columns.visible); pColumn->add_attribute(pRenderer->property_activatable(), m_columns.world); You can also connect to CellRenderer signals to detect user actions. For instance: Gtk::CellRendererToggle* pRenderer = Gtk::manage( new Gtk::CellRendererToggle() ); pRenderer->signal_toggled().connect( sigc::bind( sigc::mem_fun(*this, &Example_TreeView_TreeStore::on_cell_toggled), m_columns.dave) ); Editable Cells Automatically-stored editable cells. Cells in a TreeView can be edited in-place by the user. To allow this, use the Gtk::TreeView insert_column_editable() and append_column_editable() methods instead of insert_column() and append_column(). When these cells are edited the new values will be stored immediately in the Model. Note that these methods are templates which can only be instantiated for simple column types such as Glib::ustring, int, and long. Implementing custom logic for editable cells. However, you might not want the new values to be stored immediately. For instance, maybe you want to restrict the input to certain characters or ranges of values. To achieve this, you should use the normal Gtk::TreeView insert_column() and append_column() methods, then use get_column_cell_renderer() to get the Gtk::CellRenderer used by that column. You should then cast that Gtk::CellRenderer* to the specific CellRenderer that you expect, so you can use specific API. For instance, for a CellRendererText, you would set the cell's editable property to true, like so: cell.property_editable() = true; For a CellRendererToggle, you would set the activatable property instead. You can then connect to the appropriate "edited" signal. For instance, connect to Gtk::CellRendererText::signal_edited(), or Gtk::CellRendererToggle::signal_toggled(). If the column contains more than one CellRenderer then you will need to use Gtk::TreeView::get_column() and then call get_cell_renderers() on that view Column. In your signal handler, you should examine the new value and then store it in the Model if that is appropriate for your application. Iterating over Model Rows Gtk::TreeModel provides a C++ Standard Library-style container of its children, via the children() method. You can use the familiar begin() and end() methods iterator incrementing, like so: typedef Gtk::TreeModel::Children type_children; //minimise code length. type_children children = refModel->children(); for(type_children::iterator iter = children.begin(); iter != children.end(); ++iter) { Gtk::TreeModel::Row row = *iter; //Do something with the row - see above for set/get. } Row children When using a Gtk::TreeStore, the rows can have child rows, which can have their own children in turn. Use Gtk::TreeModel::Row::children() to get the container of child Rows: Gtk::TreeModel::Children children = row.children(); The Selection To find out what rows the user has selected, get the Gtk::TreeView::Selection object from the TreeView, like so: Glib::RefPtr<Gtk::TreeSelection> refTreeSelection = m_TreeView.get_selection(); Single or multiple selection By default, only single rows can be selected, but you can allow multiple selection by setting the mode, like so: refTreeSelection->set_mode(Gtk::SELECTION_MULTIPLE); The selected rows For single-selection, you can just call get_selected(), like so: TreeModel::iterator iter = refTreeSelection->get_selected(); if(iter) //If anything is selected { TreeModel::Row row = *iter; //Do something with the row. } For multiple-selection, you need to define a callback, and give it to selected_foreach(), selected_foreach_path(), or selected_foreach_iter(), like so: refTreeSelection->selected_foreach_iter( sigc::mem_fun(*this, &TheClass::selected_row_callback) ); void TheClass::selected_row_callback( const Gtk::TreeModel::iterator& iter) { TreeModel::Row row = *iter; //Do something with the row. } The "changed" signal To respond to the user clicking on a row or range of rows, connect to the signal like so: refTreeSelection->signal_changed().connect( sigc::mem_fun(*this, &Example_StockBrowser::on_selection_changed) ); Preventing row selection Maybe the user should not be able to select every item in your list or tree. For instance, in the gtk-demo, you can select a demo to see the source code, but it doesn't make any sense to select a demo category. To control which rows can be selected, use the set_select_function() method, providing a sigc::slot callback. For instance: m_refTreeSelection->set_select_function( sigc::mem_fun(*this, &DemoWindow::select_function) ); and then bool DemoWindow::select_function( const Glib::RefPtr<Gtk::TreeModel>& model, const Gtk::TreeModel::Path& path, bool) { const Gtk::TreeModel::iterator iter = model->get_iter(path); return iter->children().empty(); // only allow leaf nodes to be selected } Changing the selection To change the selection, specify a Gtk::TreeModel::iterator or Gtk::TreeModel::Row, like so: Gtk::TreeModel::Row row = m_refModel->children()[5]; //The fifth row. if(row) refTreeSelection->select(row); or Gtk::TreeModel::iterator iter = m_refModel->children().begin() if(iter) refTreeSelection->select(iter); Sorting The standard tree models (TreeStore and ListStore) derive from TreeSortable, so they offer sorting functionality. For instance, call set_sort_column(), to sort the model by the specified column. Or supply a callback function to set_sort_func() to implement a more complicated sorting algorithm. TreeSortable Reference Sorting by clicking on columns So that a user can click on a TreeView's column header to sort the TreeView's contents, call Gtk::TreeViewModel::set_sort_column(), supplying the model column on which model should be sorted when the header is clicked. For instance: Gtk::TreeView::Column* pColumn = treeview.get_column(0); if(pColumn) pColumn->set_sort_column(m_columns.m_col_id); Independently sorted views of the same model The TreeView already allows you to show the same TreeModel in two TreeView widgets. If you need one of these TreeViews to sort the model differently than the other then you should use a TreeModelSort instead of just, for instance, Gtk::TreeViewModel::set_sort_column(). TreeModelSort is a model that contains another model, presenting a sorted version of that model. For instance, you might add a sorted version of a model to a TreeView like so: Glib::RefPtr<Gtk::TreeModelSort> sorted_model = Gtk::TreeModelSort::create(model); sorted_model->set_sort_column(columns.m_col_name, Gtk::SORT_ASCENDING); treeview.set_model(sorted_model); Note, however, that the TreeView will provide iterators to the sorted model. You must convert them to iterators to the underlying child model in order to perform actions on that model. For instance: void ExampleWindow::on_button_delete() { Glib::RefPtr<Gtk::TreeSelection> refTreeSelection = m_treeview.get_selection(); if(refTreeSelection) { Gtk::TreeModel::iterator sorted_iter = m_refTreeSelection->get_selected(); if(sorted_iter) { Gtk::TreeModel::iterator iter = m_refModelSort->convert_iter_to_child_iter(sorted_iter); m_refModel->erase(iter); } } } TreeModelSort Reference Drag and Drop Gtk::TreeView already implments simple drag-and-drop when used with the Gtk::ListStore or Gtk::TreeStore models. If necessary, it also allows you to implement more complex behaviour when items are dragged and dropped, using the normal Drag and Drop API. Reorderable rows If you call Gtk::TreeView::set_reorderable() then your TreeView's items can be moved within the treeview itself. This is demonstrated in the TreeStore example. However, this does not allow you any control of which items can be dragged, and where they can be dropped. If you need that extra control then you might create a derived Gtk::TreeModel from Gtk::TreeStore or Gtk::ListStore and override the Gtk::TreeDragSource::row_draggable() and Gdk::TreeDragDest::row_drop_possible() virtual methods. You can examine the Gtk::TreeModel::Paths provided and allow or disallow dragging or dropping by returning true or false. This is demonstrated in the drag_and_drop example. Popup Context Menu Lots of people need to implement right-click context menus for TreeView's so we will explain how to do that here to save you some time. Apart from one or two points, it's much the same as a normal context menu, as described in the menus chapter. Handling <literal>button_press_event</literal> To detect a click of the right mouse button, you need to handle the button_press_event signal, and check exactly which button was pressed. Because the TreeView normally handles this signal completely, you need to either override the default signal handler in a derived TreeView class, or use connect_nofify() instead of connect(). You probably also want to call the default handler before doing anything else, so that the right-click will cause the row to be selected first. This is demonstrated in the Popup Custom Menu example. Examples ListStore This example has a Gtk::TreeView widget, with a Gtk::ListStore model.
TreeView - ListStore
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_quit(); //Tree model columns: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() { add(m_col_id); add(m_col_name); add(m_col_number); add(m_col_percentage);} Gtk::TreeModelColumn<unsigned int> m_col_id; Gtk::TreeModelColumn<Glib::ustring> m_col_name; Gtk::TreeModelColumn<short> m_col_number; Gtk::TreeModelColumn<int> m_col_percentage; }; ModelColumns m_Columns; //Child widgets: Gtk::Box m_VBox; Gtk::ScrolledWindow m_ScrolledWindow; Gtk::TreeView m_TreeView; Glib::RefPtr<Gtk::ListStore> m_refTreeModel; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Quit; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Button_Quit("Quit") { set_title("Gtk::TreeView (ListStore) example"); set_border_width(5); set_default_size(400, 200); add(m_VBox); //Add the TreeView, inside a ScrolledWindow, with the button underneath: m_ScrolledWindow.add(m_TreeView); //Only show the scrollbars when they are necessary: m_ScrolledWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_VBox.pack_start(m_ScrolledWindow); m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Quit, Gtk::PACK_SHRINK); m_ButtonBox.set_border_width(5); m_ButtonBox.set_layout(Gtk::BUTTONBOX_END); m_Button_Quit.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_quit) ); //Create the Tree model: m_refTreeModel = Gtk::ListStore::create(m_Columns); m_TreeView.set_model(m_refTreeModel); //Fill the TreeView's model Gtk::TreeModel::Row row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 1; row[m_Columns.m_col_name] = "Billy Bob"; row[m_Columns.m_col_number] = 10; row[m_Columns.m_col_percentage] = 15; row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 2; row[m_Columns.m_col_name] = "Joey Jojo"; row[m_Columns.m_col_number] = 20; row[m_Columns.m_col_percentage] = 40; row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 3; row[m_Columns.m_col_name] = "Rob McRoberts"; row[m_Columns.m_col_number] = 30; row[m_Columns.m_col_percentage] = 70; //Add the TreeView's view columns: //This number will be shown with the default numeric formatting. m_TreeView.append_column("ID", m_Columns.m_col_id); m_TreeView.append_column("Name", m_Columns.m_col_name); m_TreeView.append_column_numeric("Formatted number", m_Columns.m_col_number, "%010d" /* 10 digits, using leading zeroes. */); //Display a progress bar instead of a decimal number: Gtk::CellRendererProgress* cell = Gtk::manage(new Gtk::CellRendererProgress); int cols_count = m_TreeView.append_column("Some percentage", *cell); Gtk::TreeViewColumn* pColumn = m_TreeView.get_column(cols_count - 1); if(pColumn) { pColumn->add_attribute(cell->property_value(), m_Columns.m_col_percentage); } //Make all the columns reorderable: //This is not necessary, but it's nice to show the feature. //You can use TreeView::set_column_drag_function() to more //finely control column drag and drop. for(guint i = 0; i < 2; i++) { Gtk::TreeView::Column* pColumn = m_TreeView.get_column(i); pColumn->set_reorderable(); } show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_quit() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
TreeStore This example is very similar to the ListStore example, but uses a Gtk::TreeStore model instead, and adds children to the rows.
TreeView - TreeStore
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_quit(); void on_treeview_row_activated(const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column); //Tree model columns: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() { add(m_col_id); add(m_col_name); } Gtk::TreeModelColumn<int> m_col_id; Gtk::TreeModelColumn<Glib::ustring> m_col_name; }; ModelColumns m_Columns; //Child widgets: Gtk::Box m_VBox; Gtk::ScrolledWindow m_ScrolledWindow; Gtk::TreeView m_TreeView; Glib::RefPtr<Gtk::TreeStore> m_refTreeModel; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Quit; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Button_Quit("Quit") { set_title("Gtk::TreeView (TreeStore) example"); set_border_width(5); set_default_size(400, 200); add(m_VBox); //Add the TreeView, inside a ScrolledWindow, with the button underneath: m_ScrolledWindow.add(m_TreeView); //Only show the scrollbars when they are necessary: m_ScrolledWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_VBox.pack_start(m_ScrolledWindow); m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Quit, Gtk::PACK_SHRINK); m_ButtonBox.set_border_width(5); m_ButtonBox.set_layout(Gtk::BUTTONBOX_END); m_Button_Quit.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_quit) ); //Create the Tree model: m_refTreeModel = Gtk::TreeStore::create(m_Columns); m_TreeView.set_model(m_refTreeModel); //All the items to be reordered with drag-and-drop: m_TreeView.set_reorderable(); //Fill the TreeView's model Gtk::TreeModel::Row row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 1; row[m_Columns.m_col_name] = "Billy Bob"; Gtk::TreeModel::Row childrow = *(m_refTreeModel->append(row.children())); childrow[m_Columns.m_col_id] = 11; childrow[m_Columns.m_col_name] = "Billy Bob Junior"; childrow = *(m_refTreeModel->append(row.children())); childrow[m_Columns.m_col_id] = 12; childrow[m_Columns.m_col_name] = "Sue Bob"; row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 2; row[m_Columns.m_col_name] = "Joey Jojo"; row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 3; row[m_Columns.m_col_name] = "Rob McRoberts"; childrow = *(m_refTreeModel->append(row.children())); childrow[m_Columns.m_col_id] = 31; childrow[m_Columns.m_col_name] = "Xavier McRoberts"; //Add the TreeView's view columns: m_TreeView.append_column("ID", m_Columns.m_col_id); m_TreeView.append_column("Name", m_Columns.m_col_name); //Connect signal: m_TreeView.signal_row_activated().connect(sigc::mem_fun(*this, &ExampleWindow::on_treeview_row_activated) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_quit() { hide(); } void ExampleWindow::on_treeview_row_activated(const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* /* column */) { Gtk::TreeModel::iterator iter = m_refTreeModel->get_iter(path); if(iter) { Gtk::TreeModel::Row row = *iter; std::cout << "Row activated: ID=" << row[m_Columns.m_col_id] << ", Name=" << row[m_Columns.m_col_name] << std::endl; } } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Editable Cells This example is identical to the ListStore example, but it uses TreeView::append_column_editable() instead of TreeView::append_column().
TreeView - Editable Cells
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_quit(); void treeviewcolumn_validated_on_cell_data(Gtk::CellRenderer* renderer, const Gtk::TreeModel::iterator& iter); void cellrenderer_validated_on_editing_started(Gtk::CellEditable* cell_editable, const Glib::ustring& path); void cellrenderer_validated_on_edited(const Glib::ustring& path_string, const Glib::ustring& new_text); //Tree model columns: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() { add(m_col_id); add(m_col_name); add(m_col_foo); add(m_col_number); add(m_col_number_validated); } Gtk::TreeModelColumn<unsigned int> m_col_id; Gtk::TreeModelColumn<Glib::ustring> m_col_name; Gtk::TreeModelColumn<bool> m_col_foo; Gtk::TreeModelColumn<int> m_col_number; Gtk::TreeModelColumn<int> m_col_number_validated; }; ModelColumns m_Columns; //Child widgets: Gtk::Box m_VBox; Gtk::ScrolledWindow m_ScrolledWindow; Gtk::TreeView m_TreeView; Glib::RefPtr<Gtk::ListStore> m_refTreeModel; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Quit; //For the validated column: //You could also use a CellRendererSpin or a CellRendererProgress: Gtk::CellRendererText m_cellrenderer_validated; Gtk::TreeView::Column m_treeviewcolumn_validated; bool m_validate_retry; Glib::ustring m_invalid_text_for_retry; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include <cstdio> #include <cstdlib> #include "examplewindow.h" using std::sprintf; using std::strtol; ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Button_Quit("Quit"), m_validate_retry(false) { set_title("Gtk::TreeView Editable Cells example"); set_border_width(5); set_default_size(400, 200); add(m_VBox); //Add the TreeView, inside a ScrolledWindow, with the button underneath: m_ScrolledWindow.add(m_TreeView); //Only show the scrollbars when they are necessary: m_ScrolledWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_VBox.pack_start(m_ScrolledWindow); m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Quit, Gtk::PACK_SHRINK); m_ButtonBox.set_border_width(5); m_ButtonBox.set_layout(Gtk::BUTTONBOX_END); m_Button_Quit.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_quit) ); //Create the Tree model: m_refTreeModel = Gtk::ListStore::create(m_Columns); m_TreeView.set_model(m_refTreeModel); //Fill the TreeView's model Gtk::TreeModel::Row row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 1; row[m_Columns.m_col_name] = "Billy Bob"; row[m_Columns.m_col_foo] = true; row[m_Columns.m_col_number] = 10; row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 2; row[m_Columns.m_col_name] = "Joey Jojo"; row[m_Columns.m_col_foo] = true; row[m_Columns.m_col_number] = 20; row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 3; row[m_Columns.m_col_name] = "Rob McRoberts"; row[m_Columns.m_col_foo] = false; row[m_Columns.m_col_number] = 30; //Add the TreeView's view columns: //We use the *_editable convenience methods for most of these, //because the default functionality is enough: m_TreeView.append_column_editable("ID", m_Columns.m_col_id); m_TreeView.append_column_editable("Name", m_Columns.m_col_name); m_TreeView.append_column_editable("foo", m_Columns.m_col_foo); m_TreeView.append_column_numeric_editable("foo", m_Columns.m_col_number, "%010d"); //For this column, we create the CellRenderer ourselves, and connect our own //signal handlers, so that we can validate the data that the user enters, and //control how it is displayed. m_treeviewcolumn_validated.set_title("validated (<10)"); m_treeviewcolumn_validated.pack_start(m_cellrenderer_validated); m_TreeView.append_column(m_treeviewcolumn_validated); //Tell the view column how to render the model values: m_treeviewcolumn_validated.set_cell_data_func(m_cellrenderer_validated, sigc::mem_fun(*this, &ExampleWindow::treeviewcolumn_validated_on_cell_data) ); //Make the CellRenderer editable, and handle its editing signals: m_cellrenderer_validated.property_editable() = true; m_cellrenderer_validated.signal_editing_started().connect( sigc::mem_fun(*this, &ExampleWindow::cellrenderer_validated_on_editing_started) ); m_cellrenderer_validated.signal_edited().connect( sigc::mem_fun(*this, &ExampleWindow::cellrenderer_validated_on_edited) ); //If this was a CellRendererSpin then you would have to set the adjustment: //m_cellrenderer_validated.property_adjustment() = m_spin_adjustment; show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_quit() { hide(); } void ExampleWindow::treeviewcolumn_validated_on_cell_data( Gtk::CellRenderer* /* renderer */, const Gtk::TreeModel::iterator& iter) { //Get the value from the model and show it appropriately in the view: if(iter) { Gtk::TreeModel::Row row = *iter; int model_value = row[m_Columns.m_col_number_validated]; //This is just an example. //In this case, it would be easier to use append_column_editable() or //append_column_numeric_editable() char buffer[32]; sprintf(buffer, "%d", model_value); Glib::ustring view_text = buffer; m_cellrenderer_validated.property_text() = view_text; } } void ExampleWindow::cellrenderer_validated_on_editing_started( Gtk::CellEditable* cell_editable, const Glib::ustring& /* path */) { //Start editing with previously-entered (but invalid) text, //if we are allowing the user to correct some invalid data. if(m_validate_retry) { //This is the CellEditable inside the CellRenderer. Gtk::CellEditable* celleditable_validated = cell_editable; //It's usually an Entry, at least for a CellRendererText: Gtk::Entry* pEntry = dynamic_cast<Gtk::Entry*>(celleditable_validated); if(pEntry) { pEntry->set_text(m_invalid_text_for_retry); m_validate_retry = false; m_invalid_text_for_retry.clear(); } } } void ExampleWindow::cellrenderer_validated_on_edited( const Glib::ustring& path_string, const Glib::ustring& new_text) { Gtk::TreePath path(path_string); //Convert the inputed text to an integer, as needed by our model column: char* pchEnd = 0; int new_value = strtol(new_text.c_str(), &pchEnd, 10); if(new_value > 10) { //Prevent entry of numbers higher than 10. //Tell the user: Gtk::MessageDialog dialog(*this, "The number must be less than 10. Please try again.", false, Gtk::MESSAGE_ERROR); dialog.run(); //Start editing again, with the bad text, so that the user can correct it. //A real application should probably allow the user to revert to the //previous text. //Set the text to be used in the start_editing signal handler: m_invalid_text_for_retry = new_text; m_validate_retry = true; //Start editing again: m_TreeView.set_cursor(path, m_treeviewcolumn_validated, m_cellrenderer_validated, true /* start_editing */); } else { //Get the row from the path: Gtk::TreeModel::iterator iter = m_refTreeModel->get_iter(path); if(iter) { Gtk::TreeModel::Row row = *iter; //Put the new value in the model: row[m_Columns.m_col_number_validated] = new_value; } } } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Drag and Drop This example is much like the TreeStore example, but has 2 extra columns to indicate whether the row can be dragged, and whether it can receive drag-and-dropped rows. It uses a derived Gtk::TreeStore which overrides the virtual functions as described in the TreeView Drag and Drop section.
TreeView - Drag And Drop
源代码 File: treemodel_dnd.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_TREEMODEL_DND_H #define GTKMM_EXAMPLE_TREEMODEL_DND_H #include <gtkmm.h> class TreeModel_Dnd : public Gtk::TreeStore { protected: TreeModel_Dnd(); public: //Tree model columns: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() { add(m_col_id); add(m_col_name); add(m_col_draggable); add(m_col_receivesdrags); } Gtk::TreeModelColumn<int> m_col_id; Gtk::TreeModelColumn<Glib::ustring> m_col_name; Gtk::TreeModelColumn<bool> m_col_draggable; Gtk::TreeModelColumn<bool> m_col_receivesdrags; }; ModelColumns m_Columns; static Glib::RefPtr<TreeModel_Dnd> create(); protected: //Overridden virtual functions: virtual bool row_draggable_vfunc(const Gtk::TreeModel::Path& path) const; virtual bool row_drop_possible_vfunc(const Gtk::TreeModel::Path& dest, const Gtk::SelectionData& selection_data) const; }; #endif //GTKMM_EXAMPLE_TREEMODEL_DND_H File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> #include "treemodel_dnd.h" class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_quit(); //Child widgets: Gtk::Box m_VBox; Gtk::ScrolledWindow m_ScrolledWindow; Gtk::TreeView m_TreeView; Glib::RefPtr<TreeModel_Dnd> m_refTreeModel; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Quit; }; #endif //GTKMM_EXAMPLEWINDOW_H File: treemodel_dnd.cc (For use with gtkmm 3, not gtkmm 2) #include "treemodel_dnd.h" #include <iostream> TreeModel_Dnd::TreeModel_Dnd() { //We can't just call Gtk::TreeModel(m_Columns) in the initializer list //because m_Columns does not exist when the base class constructor runs. //And we can't have a static m_Columns instance, because that would be //instantiated before the gtkmm type system. //So, we use this method, which should only be used just after creation: set_column_types(m_Columns); } Glib::RefPtr<TreeModel_Dnd> TreeModel_Dnd::create() { return Glib::RefPtr<TreeModel_Dnd>( new TreeModel_Dnd() ); } bool TreeModel_Dnd::row_draggable_vfunc(const Gtk::TreeModel::Path& path) const { // Make the value of the "draggable" column determine whether this row can // be dragged: //TODO: Add a const version of get_iter to TreeModel: TreeModel_Dnd* unconstThis = const_cast<TreeModel_Dnd*>(this); const_iterator iter = unconstThis->get_iter(path); //const_iterator iter = get_iter(path); if(iter) { Row row = *iter; bool is_draggable = row[m_Columns.m_col_draggable]; return is_draggable; } return Gtk::TreeStore::row_draggable_vfunc(path); } bool TreeModel_Dnd::row_drop_possible_vfunc(const Gtk::TreeModel::Path& dest, const Gtk::SelectionData& selection_data) const { //Make the value of the "receives drags" column determine whether a row can be //dragged into it: //dest is the path that the row would have after it has been dropped: //But in this case we are more interested in the parent row: Gtk::TreeModel::Path dest_parent = dest; bool dest_is_not_top_level = dest_parent.up(); if(!dest_is_not_top_level || dest_parent.empty()) { //The user wants to move something to the top-level. //Let's always allow that. } else { //Get an iterator for the row at this path: //We must unconst this. This should not be necessary with a future version //of gtkmm. //TODO: Add a const version of get_iter to TreeModel: TreeModel_Dnd* unconstThis = const_cast<TreeModel_Dnd*>(this); const_iterator iter_dest_parent = unconstThis->get_iter(dest_parent); //const_iterator iter_dest_parent = get_iter(dest); if(iter_dest_parent) { Row row = *iter_dest_parent; bool receives_drags = row[m_Columns.m_col_receivesdrags]; return receives_drags; } } //You could also examine the row being dragged (via selection_data) //if you must look at both rows to see whether a drop should be allowed. //You could use //TODO: Add const version of get_from_selection_data(): Glib::RefPtr<const //Gtk::TreeModel> refThis = Glib::RefPtr<const Gtk::TreeModel>(this); // //Glib::RefPtr<Gtk::TreeModel> refThis = //Glib::RefPtr<Gtk::TreeModel>(const_cast<TreeModel_Dnd*>(this)); //refThis->reference(); //, true /* take_copy */) //Gtk::TreeModel::Path path_dragged_row; //Gtk::TreeModel::Path::get_from_selection_data(selection_data, refThis, //path_dragged_row); return Gtk::TreeStore::row_drop_possible_vfunc(dest, selection_data); } File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Button_Quit(Gtk::Stock::QUIT) { set_title("Gtk::TreeView (Drag and Drop) example"); set_border_width(5); set_default_size(400, 200); add(m_VBox); //Add the TreeView, inside a ScrolledWindow, with the button underneath: m_ScrolledWindow.add(m_TreeView); //Only show the scrollbars when they are necessary: m_ScrolledWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_VBox.pack_start(m_ScrolledWindow); m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Quit, Gtk::PACK_SHRINK); m_ButtonBox.set_border_width(5); m_ButtonBox.set_layout(Gtk::BUTTONBOX_END); m_Button_Quit.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_quit) ); //Create the Tree model: //Use our derived model, which overrides some Gtk::TreeDragDest and //Gtk::TreeDragSource virtual functions: //The columns are declared in the overridden TreeModel. m_refTreeModel = TreeModel_Dnd::create(); m_TreeView.set_model(m_refTreeModel); //Enable Drag-and-Drop of TreeView rows: //See also the derived TreeModel's *_vfunc overrides. m_TreeView.enable_model_drag_source(); m_TreeView.enable_model_drag_dest(); //Fill the TreeView's model Gtk::TreeModel::Row row = *(m_refTreeModel->append()); row[m_refTreeModel->m_Columns.m_col_id] = 1; row[m_refTreeModel->m_Columns.m_col_name] = "Billy Bob"; row[m_refTreeModel->m_Columns.m_col_draggable] = true; row[m_refTreeModel->m_Columns.m_col_receivesdrags] = true; Gtk::TreeModel::Row childrow = *(m_refTreeModel->append(row.children())); childrow[m_refTreeModel->m_Columns.m_col_id] = 11; childrow[m_refTreeModel->m_Columns.m_col_name] = "Billy Bob Junior"; childrow[m_refTreeModel->m_Columns.m_col_draggable] = true; childrow[m_refTreeModel->m_Columns.m_col_receivesdrags] = true; childrow = *(m_refTreeModel->append(row.children())); childrow[m_refTreeModel->m_Columns.m_col_id] = 12; childrow[m_refTreeModel->m_Columns.m_col_name] = "Sue Bob"; childrow[m_refTreeModel->m_Columns.m_col_draggable] = true; childrow[m_refTreeModel->m_Columns.m_col_receivesdrags] = true; row = *(m_refTreeModel->append()); row[m_refTreeModel->m_Columns.m_col_id] = 2; row[m_refTreeModel->m_Columns.m_col_name] = "Joey Jojo"; row[m_refTreeModel->m_Columns.m_col_draggable] = true; row[m_refTreeModel->m_Columns.m_col_receivesdrags] = true; row = *(m_refTreeModel->append()); row[m_refTreeModel->m_Columns.m_col_id] = 3; row[m_refTreeModel->m_Columns.m_col_name] = "Rob McRoberts"; row[m_refTreeModel->m_Columns.m_col_draggable] = true; row[m_refTreeModel->m_Columns.m_col_receivesdrags] = true; childrow = *(m_refTreeModel->append(row.children())); childrow[m_refTreeModel->m_Columns.m_col_id] = 31; childrow[m_refTreeModel->m_Columns.m_col_name] = "Xavier McRoberts"; childrow[m_refTreeModel->m_Columns.m_col_draggable] = true; childrow[m_refTreeModel->m_Columns.m_col_receivesdrags] = true; //Add the TreeView's view columns: m_TreeView.append_column("ID", m_refTreeModel->m_Columns.m_col_id); m_TreeView.append_column("Name", m_refTreeModel->m_Columns.m_col_name); m_TreeView.append_column_editable("Draggable", m_refTreeModel->m_Columns.m_col_draggable); m_TreeView.append_column_editable("Receives Drags", m_refTreeModel->m_Columns.m_col_receivesdrags); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_quit() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Popup Context Menu This example is much like the ListStore example, but derives a custom TreeView in order to override the button_press_event, and also to encapsulate the tree model code in our derived class. See the TreeView Popup Context Menu section.
TreeView - Popup Context Menu
源代码 File: treeview_withpopup.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_TREEVIEW_WITHPOPUP_H #define GTKMM_EXAMPLE_TREEVIEW_WITHPOPUP_H #include <gtkmm.h> class TreeView_WithPopup : public Gtk::TreeView { public: TreeView_WithPopup(); virtual ~TreeView_WithPopup(); protected: // Override Signal handler: // Alternatively, use signal_button_press_event().connect_notify() virtual bool on_button_press_event(GdkEventButton *ev); //Signal handler for popup menu items: void on_menu_file_popup_generic(); //Tree model columns: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() { add(m_col_id); add(m_col_name); } Gtk::TreeModelColumn<unsigned int> m_col_id; Gtk::TreeModelColumn<Glib::ustring> m_col_name; }; ModelColumns m_Columns; //The Tree model: Glib::RefPtr<Gtk::ListStore> m_refTreeModel; Gtk::Menu m_Menu_Popup; }; #endif //GTKMM_EXAMPLE_TREEVIEW_WITHPOPUP_H File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> #include "treeview_withpopup.h" class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_quit(); //Child widgets: Gtk::Box m_VBox; Gtk::ScrolledWindow m_ScrolledWindow; TreeView_WithPopup m_TreeView; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Quit; }; #endif //GTKMM_EXAMPLEWINDOW_H File: treeview_withpopup.cc (For use with gtkmm 3, not gtkmm 2) #include "treeview_withpopup.h" #include <iostream> TreeView_WithPopup::TreeView_WithPopup() { //Create the Tree model: m_refTreeModel = Gtk::ListStore::create(m_Columns); set_model(m_refTreeModel); //Fill the TreeView's model Gtk::TreeModel::Row row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 1; row[m_Columns.m_col_name] = "right-click on this"; row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 2; row[m_Columns.m_col_name] = "or this"; row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 3; row[m_Columns.m_col_name] = "or this, for a popup context menu"; //Add the TreeView's view columns: append_column("ID", m_Columns.m_col_id); append_column("Name", m_Columns.m_col_name); //Fill popup menu: Gtk::MenuItem* item = Gtk::manage(new Gtk::MenuItem("_Edit", true)); item->signal_activate().connect( sigc::mem_fun(*this, &TreeView_WithPopup::on_menu_file_popup_generic) ); m_Menu_Popup.append(*item); item = Gtk::manage(new Gtk::MenuItem("_Process", true)); item->signal_activate().connect( sigc::mem_fun(*this, &TreeView_WithPopup::on_menu_file_popup_generic) ); m_Menu_Popup.append(*item); item = Gtk::manage(new Gtk::MenuItem("_Remove", true)); item->signal_activate().connect( sigc::mem_fun(*this, &TreeView_WithPopup::on_menu_file_popup_generic) ); m_Menu_Popup.append(*item); m_Menu_Popup.accelerate(*this); m_Menu_Popup.show_all(); //Show all menu items when the menu pops up #ifndef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED signal_button_press_event() .connect(sigc::mem_fun(*this, &TreeView_WithPopup::on_button_press_event), false); #endif } TreeView_WithPopup::~TreeView_WithPopup() { } bool TreeView_WithPopup::on_button_press_event(GdkEventButton* event) { bool return_value = false; //Call base class, to allow normal handling, //such as allowing the row to be selected by the right-click: return_value = TreeView::on_button_press_event(event); //Then do our custom stuff: if( (event->type == GDK_BUTTON_PRESS) && (event->button == 3) ) { m_Menu_Popup.popup(event->button, event->time); } return return_value; } void TreeView_WithPopup::on_menu_file_popup_generic() { std::cout << "A popup menu item was selected." << std::endl; Glib::RefPtr<Gtk::TreeView::Selection> refSelection = get_selection(); if(refSelection) { Gtk::TreeModel::iterator iter = refSelection->get_selected(); if(iter) { int id = (*iter)[m_Columns.m_col_id]; std::cout << " Selected ID=" << id << std::endl; } } } File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Button_Quit("Quit") { set_title("Gtk::TreeView (ListStore) example"); set_border_width(5); set_default_size(400, 200); add(m_VBox); //Add the TreeView, inside a ScrolledWindow, with the button underneath: m_ScrolledWindow.add(m_TreeView); //Only show the scrollbars when they are necessary: m_ScrolledWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_VBox.pack_start(m_ScrolledWindow); m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Quit, Gtk::PACK_SHRINK); m_ButtonBox.set_border_width(5); m_ButtonBox.set_layout(Gtk::BUTTONBOX_END); m_Button_Quit.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_quit) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_quit() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Combo Boxes The ComboBox widget offers a list (or tree) of choices in a dropdown menu. If appropriate, it can show extra information about each item, such as text, a picture, a checkbox, or a progress bar. The ComboBox widget usually restricts the user to the available choices, but it can optionally have an Entry, allowing the user to enter arbitrary text if none of the available choices are suitable. The list is provided via a TreeModel, and columns from this model are added to the ComboBox's view with the ComboBox::pack_start() method. This provides flexibility and compile-time type-safety, but the ComboBoxText class provides a simpler text-based specialization in case that flexibility is not required. 参考 The model The model for a ComboBox can be defined and filled exactly as for a TreeView. For instance, you might derive a ComboBox class with one integer and one text column, like so: ModelColumns() { add(m_col_id); add(m_col_name); } Gtk::TreeModelColumn<int> m_col_id; Gtk::TreeModelColumn<Glib::ustring> m_col_name; }; ModelColumns m_columns; After appending rows to this model, you should provide the model to the ComboBox with the set_model() method. Then use the pack_start() or pack_end() methods to specify what columns will be displayed in the ComboBox. As with the TreeView you may either use the default cell renderer by passing the TreeModelColumn to the pack methods, or you may instantiate a specific CellRenderer and specify a particular mapping with either add_attribute() or set_cell_data_func(). Note that these methods are in the CellLayout base class. The chosen item To discover what item, if any, the user has chosen from the ComboBox, call ComboBox::get_active(). This returns a TreeModel::iterator that you can dereference to a Row in order to read the values in your columns. For instance, you might read an integer ID value from the model, even though you have chosen only to show the human-readable description in the Combo. For instance: Gtk::TreeModel::iterator iter = m_Combo.get_active(); if(iter) { Gtk::TreeModel::Row row = *iter; //Get the data for the selected row, using our knowledge //of the tree model: int id = row[m_Columns.m_col_id]; set_something_id_chosen(id); //Your own function. } else set_nothing_chosen(); //Your own function. Responding to changes You might need to react to every change of selection in the ComboBox, for instance to update other widgets. To do so, you should handle the changed signal. For instance: m_combo.signal_changed().connect( sigc::mem_fun(*this, &ExampleWindow::on_combo_changed) ); Full Example
ComboBox
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm/window.h> #include <gtkmm/comboboxtext.h> #include <gtkmm/liststore.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_combo_changed(); //Tree model columns: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() { add(m_col_id); add(m_col_name); } Gtk::TreeModelColumn<int> m_col_id; Gtk::TreeModelColumn<Glib::ustring> m_col_name; }; ModelColumns m_Columns; //Child widgets: Gtk::ComboBox m_Combo; Glib::RefPtr<Gtk::ListStore> m_refTreeModel; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/stock.h> #include <iostream> ExampleWindow::ExampleWindow() { set_title("ComboBox example"); //Create the Tree model: //m_refTreeModel = Gtk::TreeStore::create(m_Columns); m_refTreeModel = Gtk::ListStore::create(m_Columns); m_Combo.set_model(m_refTreeModel); //Fill the ComboBox's Tree Model: Gtk::TreeModel::Row row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 1; row[m_Columns.m_col_name] = "Billy Bob"; m_Combo.set_active(row); /* Gtk::TreeModel::Row childrow = *(m_refTreeModel->append(row.children())); childrow[m_Columns.m_col_id] = 11; childrow[m_Columns.m_col_name] = "Billy Bob Junior"; childrow = *(m_refTreeModel->append(row.children())); childrow[m_Columns.m_col_id] = 12; childrow[m_Columns.m_col_name] = "Sue Bob"; */ row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 2; row[m_Columns.m_col_name] = "Joey Jojo"; row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = 3; row[m_Columns.m_col_name] = "Rob McRoberts"; /* childrow = *(m_refTreeModel->append(row.children())); childrow[m_Columns.m_col_id] = 31; childrow[m_Columns.m_col_name] = "Xavier McRoberts"; */ //Add the model columns to the Combo (which is a kind of view), //rendering them in the default way: m_Combo.pack_start(m_Columns.m_col_id); m_Combo.pack_start(m_Columns.m_col_name); //Add the ComboBox to the window. add(m_Combo); //Connect signal handler: m_Combo.signal_changed().connect( sigc::mem_fun(*this, &ExampleWindow::on_combo_changed) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_combo_changed() { Gtk::TreeModel::iterator iter = m_Combo.get_active(); if(iter) { Gtk::TreeModel::Row row = *iter; if(row) { //Get the data for the selected row, using our knowledge of the tree //model: int id = row[m_Columns.m_col_id]; Glib::ustring name = row[m_Columns.m_col_name]; std::cout << " ID=" << id << ", name=" << name << std::endl; } } else std::cout << "invalid iter" << std::endl; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Simple Text Example
ComboBoxText
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm/window.h> #include <gtkmm/comboboxtext.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_combo_changed(); //Child widgets: Gtk::ComboBoxText m_Combo; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/stock.h> #include <iostream> ExampleWindow::ExampleWindow() { set_title("ComboBoxText example"); //Fill the combo: m_Combo.append("something"); m_Combo.append("something else"); m_Combo.append("something or other"); m_Combo.set_active(1); add(m_Combo); //Connect signal handler: m_Combo.signal_changed().connect(sigc::mem_fun(*this, &ExampleWindow::on_combo_changed) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_combo_changed() { Glib::ustring text = m_Combo.get_active_text(); if(!(text.empty())) std::cout << "Combo changed: " << text << std::endl; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
ComboBox with an Entry A ComboBox may contain an Entry widget for entering of arbitrary text, by specifying true for the constructor's has_entry parameter. The text column So that the Entry can interact with the drop-down list of choices, you must specify which of your model columns is the text column, with set_entry_text_column(). For instance: m_combo.set_entry_text_column(m_columns.m_col_name); When you select a choice from the drop-down menu, the value from this column will be placed in the Entry. The entry Because the user may enter arbitrary text, an active model row isn't enough to tell us what text the user has entered. Therefore, you should retrieve the Entry widget with the ComboBox::get_entry() method and call get_text() on that. Responding to changes When the user enters arbitrary text, it may not be enough to connect to the changed signal, which is emitted for every typed character. It is not emitted when the user presses the Enter key. Pressing the Enter key or moving the keyboard focus to another widget may signal that the user has finished entering text. To be notified of these events, connect to the Entry's activate and focus_out_event signals, like so Gtk::Entry* entry = m_Combo.get_entry(); if (entry) { // The Entry shall receive focus-out events. entry->add_events(Gdk::FOCUS_CHANGE_MASK); // Alternatively you can connect to m_Combo.signal_changed(). entry->signal_changed().connect(sigc::mem_fun(*this, &ExampleWindow::on_entry_changed) ); entry->signal_activate().connect(sigc::mem_fun(*this, &ExampleWindow::on_entry_activate) ); entry->signal_focus_out_event().connect(sigc::mem_fun(*this, &ExampleWindow::on_entry_focus_out_event) ); } The changed signals of ComboBox and Entry are both emitted for every change. It doesn't matter which one you connect to. But only Entry's focus_out_event signal is useful here. X events are described in more detail in the X Event signals section in the appendix. Full Example
ComboBox with Entry
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm/window.h> #include <gtkmm/combobox.h> #include <gtkmm/liststore.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_entry_changed(); void on_entry_activate(); bool on_entry_focus_out_event(GdkEventFocus* event); //Signal connection: sigc::connection m_ConnectionFocusOut; //Tree model columns: class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() { add(m_col_id); add(m_col_name); } Gtk::TreeModelColumn<Glib::ustring> m_col_id; //The data to choose - this must be text. Gtk::TreeModelColumn<Glib::ustring> m_col_name; }; ModelColumns m_Columns; //Child widgets: Gtk::ComboBox m_Combo; Glib::RefPtr<Gtk::ListStore> m_refTreeModel; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/stock.h> #include <iostream> ExampleWindow::ExampleWindow() : m_Combo(true /* has_entry */) { set_title("ComboBox example"); //Create the Tree model: //m_refTreeModel = Gtk::TreeStore::create(m_Columns); m_refTreeModel = Gtk::ListStore::create(m_Columns); m_Combo.set_model(m_refTreeModel); //Fill the ComboBox's Tree Model: Gtk::TreeModel::Row row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = "1"; row[m_Columns.m_col_name] = "Billy Bob"; /* Gtk::TreeModel::Row childrow = *(m_refTreeModel->append(row.children())); childrow[m_Columns.m_col_id] = 11; childrow[m_Columns.m_col_name] = "Billy Bob Junior"; childrow = *(m_refTreeModel->append(row.children())); childrow[m_Columns.m_col_id] = 12; childrow[m_Columns.m_col_name] = "Sue Bob"; */ row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = "2"; row[m_Columns.m_col_name] = "Joey Jojo"; row = *(m_refTreeModel->append()); row[m_Columns.m_col_id] = "3"; row[m_Columns.m_col_name] = "Rob McRoberts"; /* childrow = *(m_refTreeModel->append(row.children())); childrow[m_Columns.m_col_id] = 31; childrow[m_Columns.m_col_name] = "Xavier McRoberts"; */ //Add the model columns to the Combo (which is a kind of view), //rendering them in the default way: //This is automatically rendered when we use set_entry_text_column(). //m_Combo.pack_start(m_Columns.m_col_id); m_Combo.pack_start(m_Columns.m_col_name); m_Combo.set_entry_text_column(m_Columns.m_col_id); m_Combo.set_active(1); //Add the ComboBox to the window. add(m_Combo); //Connect signal handlers: Gtk::Entry* entry = m_Combo.get_entry(); if (entry) { // The Entry shall receive focus-out events. entry->add_events(Gdk::FOCUS_CHANGE_MASK); // Alternatively you can connect to m_Combo.signal_changed(). entry->signal_changed().connect(sigc::mem_fun(*this, &ExampleWindow::on_entry_changed) ); entry->signal_activate().connect(sigc::mem_fun(*this, &ExampleWindow::on_entry_activate) ); m_ConnectionFocusOut = entry->signal_focus_out_event(). connect(sigc::mem_fun(*this, &ExampleWindow::on_entry_focus_out_event) ); } else std::cout << "No Entry ???" << std::endl; show_all_children(); } ExampleWindow::~ExampleWindow() { // The focus_out signal may be emitted while m_Combo is being destructed. // The signal handler can generate critical messages, if it's called when // m_Combo has been partly destructed. m_ConnectionFocusOut.disconnect(); } void ExampleWindow::on_entry_changed() { Gtk::Entry* entry = m_Combo.get_entry(); if (entry) { std::cout << "on_entry_changed(): Row=" << m_Combo.get_active_row_number() << ", ID=" << entry->get_text() << std::endl; } } void ExampleWindow::on_entry_activate() { Gtk::Entry* entry = m_Combo.get_entry(); if (entry) { std::cout << "on_entry_activate(): Row=" << m_Combo.get_active_row_number() << ", ID=" << entry->get_text() << std::endl; } } bool ExampleWindow::on_entry_focus_out_event(GdkEventFocus* /* event */) { Gtk::Entry* entry = m_Combo.get_entry(); if (entry) { std::cout << "on_entry_focus_out_event(): Row=" << m_Combo.get_active_row_number() << ", ID=" << entry->get_text() << std::endl; return true; } return false; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Simple Text Example
ComboBoxText with Entry
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm/window.h> #include <gtkmm/comboboxtext.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_combo_changed(); void on_entry_activate(); bool on_entry_focus_out_event(GdkEventFocus* event); //Signal connection: sigc::connection m_ConnectionFocusOut; //Child widgets: Gtk::ComboBoxText m_Combo; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/stock.h> #include <iostream> ExampleWindow::ExampleWindow() : m_Combo(true /* has_entry */) { set_title("ComboBoxText example"); //Fill the combo: m_Combo.append("something"); m_Combo.append("something else"); m_Combo.append("something or other"); m_Combo.set_active(0); add(m_Combo); //Connect signal handlers: Gtk::Entry* entry = m_Combo.get_entry(); // Alternatively you can connect to entry->signal_changed(). m_Combo.signal_changed().connect(sigc::mem_fun(*this, &ExampleWindow::on_combo_changed) ); if (entry) { // The Entry shall receive focus-out events. entry->add_events(Gdk::FOCUS_CHANGE_MASK); entry->signal_activate().connect(sigc::mem_fun(*this, &ExampleWindow::on_entry_activate) ); m_ConnectionFocusOut = entry->signal_focus_out_event(). connect(sigc::mem_fun(*this, &ExampleWindow::on_entry_focus_out_event) ); } else std::cout << "No Entry ???" << std::endl; m_Combo.property_has_frame() = false; show_all_children(); } ExampleWindow::~ExampleWindow() { // The focus_out signal may be emitted while m_Combo is being destructed. // The signal handler can generate critical messages, if it's called when // m_Combo has been partly destructed. m_ConnectionFocusOut.disconnect(); } void ExampleWindow::on_combo_changed() { std::cout << "on_combo_changed(): Row=" << m_Combo.get_active_row_number() << ", Text=" << m_Combo.get_active_text() << std::endl; } void ExampleWindow::on_entry_activate() { std::cout << "on_entry_activate(): Row=" << m_Combo.get_active_row_number() << ", Text=" << m_Combo.get_active_text() << std::endl; } bool ExampleWindow::on_entry_focus_out_event(GdkEventFocus* /* event */) { std::cout << "on_entry_focus_out_event(): Row=" << m_Combo.get_active_row_number() << ", Text=" << m_Combo.get_active_text() << std::endl; return true; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
TextView The TextView widget can be used to display and edit large amounts of formatted text. Like the TreeView, it has a model/view design. In this case the TextBuffer is the model. The Buffer Gtk::TextBuffer is a model containing the data for the Gtk::TextView, like the Gtk::TreeModel used by Gtk::TreeView. This allows two or more Gtk::TextViews to share the same TextBuffer, and allows those TextBuffers to be displayed slightly differently. Or you could maintain several Gtk::TextBuffers and choose to display each one at different times in the same Gtk::TextView widget. The TextView creates its own default TextBuffer, which you can access via the get_buffer() method. 参考 Iterators Tags and Formatting Tags To specify that some text in the buffer should have specific formatting, you must define a tag to hold that formatting information, and then apply that tag to the region of text. For instance, to define the tag and its properties: Glib::RefPtr<Gtk::TextBuffer::Tag> refTagMatch = Gtk::TextBuffer::Tag::create(); refTagMatch->property_background() = "orange"; You can specify a name for the Tag when using the create() method, but it is not necessary. The Tag class has many other properties. 参考 TagTable Each Gtk::TextBuffer uses a Gtk::TextBuffer::TagTable, which contains the Tags for that buffer. 2 or more TextBuffers may share the same TagTable. When you create Tags you should add them to the TagTable. For instance: Glib::RefPtr<Gtk::TextBuffer::TagTable> refTagTable = Gtk::TextBuffer::TagTable::create(); refTagTable->add(refTagMatch); //Hopefully a future version of gtkmm will have a set_tag_table() method, //for use after creation of the buffer. Glib::RefPtr<Gtk::TextBuffer> refBuffer = Gtk::TextBuffer::create(refTagTable); You can also use get_tag_table() to get, and maybe modify, the TextBuffer's default TagTable instead of creating one explicitly. 参考 Applying Tags If you have created a Tag and added it to the TagTable, you may apply that tag to part of the TextBuffer so that some of the text is displayed with that formatting. You define the start and end of the range of text by specifying Gtk::TextBuffer::iterators. For instance: refBuffer->apply_tag(refTagMatch, iterRangeStart, iterRangeStop); Or you could specify the tag when first inserting the text: refBuffer->insert_with_tag(iter, "Some text", refTagMatch); You can apply more than one Tag to the same text, by using apply_tag() more than once, or by using insert_with_tags(). The Tags might specify different values for the same properties, but you can resolve these conflicts by using Tag::set_priority(). Marks TextBuffer iterators are generally invalidated when the text changes, but you can use a Gtk::TextBuffer::Mark to remember a position in these situations. For instance, Glib::RefPtr<Gtk::TextBuffer::Mark> refMark = refBuffer->create_mark(iter); You can then use the get_iter() method later to create an iterator for the Mark's new position. There are two built-in Marks - insert and select_bound, which you can access with TextBuffer's get_insert() and get_selection_bound() methods. 参考 The View As mentioned above, each TextView has a TextBuffer, and one or more TextView can share the same TextBuffer. Like the TreeView, you should probably put your TextView inside a ScrolledWindow to allow the user to see and move around the whole text area with scrollbars. 参考 Default formatting TextView has various methods which allow you to change the presentation of the buffer for this particular view. Some of these may be overridden by the Gtk::TextTags in the buffer, if they specify the same things. For instance, set_left_margin(), set_right_margin(), set_indent(), etc. Scrolling Gtk::TextView has various scroll_to_*() methods. These allow you to ensure that a particular part of the text buffer is visible. For instance, your application's Find feature might use Gtk::TextView::scroll_to_iter() to show the found text. Widgets and ChildAnchors You can embed widgets, such as Gtk::Buttons, in the text. Each such child widget needs a ChildAnchor. ChildAnchors are associated with iterators. For instance, to create a child anchor at a particular position, use Gtk::TextBuffer::create_child_anchor(): Glib::RefPtr<Gtk::TextChildAnchor> refAnchor = refBuffer->create_child_anchor(iter); Then, to add a widget at that position, use Gtk::TextView::add_child_at_anchor(): m_TextView.add_child_at_anchor(m_Button, refAnchor); 参考 Examples 简单的例子
TextView
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: void fill_buffers(); //Signal handlers: void on_button_quit(); void on_button_buffer1(); void on_button_buffer2(); //Child widgets: Gtk::Box m_VBox; Gtk::ScrolledWindow m_ScrolledWindow; Gtk::TextView m_TextView; Glib::RefPtr<Gtk::TextBuffer> m_refTextBuffer1, m_refTextBuffer2; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Quit, m_Button_Buffer1, m_Button_Buffer2; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Button_Quit(Gtk::Stock::QUIT), m_Button_Buffer1("Use buffer 1"), m_Button_Buffer2("Use buffer 2") { set_title("Gtk::TextView example"); set_border_width(5); set_default_size(400, 200); add(m_VBox); //Add the TreeView, inside a ScrolledWindow, with the button underneath: m_ScrolledWindow.add(m_TextView); //Only show the scrollbars when they are necessary: m_ScrolledWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_VBox.pack_start(m_ScrolledWindow); //Add buttons: m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Buffer1, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Buffer2, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Quit, Gtk::PACK_SHRINK); m_ButtonBox.set_border_width(5); m_ButtonBox.set_spacing(5); m_ButtonBox.set_layout(Gtk::BUTTONBOX_END); //Connect signals: m_Button_Quit.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_quit) ); m_Button_Buffer1.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_buffer1) ); m_Button_Buffer2.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_buffer2) ); fill_buffers(); on_button_buffer1(); show_all_children(); } void ExampleWindow::fill_buffers() { m_refTextBuffer1 = Gtk::TextBuffer::create(); m_refTextBuffer1->set_text("This is the text from TextBuffer #1."); m_refTextBuffer2 = Gtk::TextBuffer::create(); m_refTextBuffer2->set_text( "This is some alternative text, from TextBuffer #2."); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_quit() { hide(); } void ExampleWindow::on_button_buffer1() { m_TextView.set_buffer(m_refTextBuffer1); } void ExampleWindow::on_button_buffer2() { m_TextView.set_buffer(m_refTextBuffer2); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Menus and Toolbars There are specific APIs for Menus and toolbars, but you should usually deal with them together, using the UIManager to define Actions which you can then arrange in menus and toolbars. In this way you can handle activation of the action instead of responding to the menu and toolbar items separately. And you can enable or disable both the menu and toolbar item via the action. This involves the use of the Gtk::ActionGroup, Gtk::Action, and UIManager classes, all of which should be instantiated via their create() methods, which return RefPtrs. Actions First create the Actions and add them to an ActionGroup, with ActionGroup::add(). The arguments to Action::create() specify the action's name and how it will appear in menus and toolbars. Use stock items where possible so that you don't need to specify the label, accelerator, icon, and tooltips, and so you can use pre-existing translations. You can also specify a signal handler when calling ActionGroup::add(). This signal handler will be called when the action is activated via either a menu item or a toolbar button. Note that you must specify actions for sub menus as well as menu items. For instance: m_refActionGroup = Gtk::ActionGroup::create(); m_refActionGroup->add( Gtk::Action::create("MenuFile", "_File") ); m_refActionGroup->add( Gtk::Action::create("New", Gtk::Stock::NEW), sigc::mem_fun(*this, &ExampleWindow::on_action_file_new) ); m_refActionGroup->add( Gtk::Action::create("ExportData", "Export Data"), sigc::mem_fun(*this, &ExampleWindow::on_action_file_open) ); m_refActionGroup->add( Gtk::Action::create("Quit", Gtk::Stock::QUIT), sigc::mem_fun(*this, &ExampleWindow::on_action_file_quit) ); Note that this is where we specify the names of the actions as they will be seen by users in menus and toolbars. Therefore, this is where you should make strings translatable, by putting them inside the _() macro. When we use the Gtk::Stock items, of course, translations are automatically available. UIManager Next you should create a UIManager and add the ActionGroup to the UIManager with insert_action_group() At this point is also a good idea to tell the parent window to respond to the specified keyboard shortcuts, by using add_accel_group(). For instance, Glib::RefPtr<Gtk::UIManager> m_refUIManager = Gtk::UIManager::create(); m_refUIManager->insert_action_group(m_refActionGroup); add_accel_group(m_refUIManager->get_accel_group()); Then, you can define the actual visible layout of the menus and toolbars, and add the UI layout to the UIManager. This "ui string" uses an XML format, in which you should mention the names of the actions that you have already created. For instance: Glib::ustring ui_info = "<ui>" " <menubar name='MenuBar'>" " <menu action='MenuFile'>" " <menuitem action='New'/>" " <menuitem action='Open'/>" " <separator/>" " <menuitem action='Quit'/>" " </menu>" " <menu action='MenuEdit'>" " <menuitem action='Cut'/>" " <menuitem action='Copy'/>" " <menuitem action='Paste'/>" " </menu>" " </menubar>" " <toolbar name='ToolBar'>" " <toolitem action='Open'/>" " <toolitem action='Quit'/>" " </toolbar>" "</ui>"; m_refUIManager->add_ui_from_string(ui_info); Remember that these names are just the identifiers that we used when creating the actions. They are not the text that the user will see in the menus and toolbars. We provided those human-readable names when we created the actions. To instantiate a Gtk::MenuBar or Gtk::Toolbar which you can actually show, you should use the UIManager::get_widget() method, and then add the widget to a container. For instance: Gtk::Widget* pMenubar = m_refUIManager->get_widget("/MenuBar"); pBox->add(*pMenuBar, Gtk::PACK_SHRINK); Popup Menus Menus are normally just added to a window, but they can also be displayed temporarily as the result of a mouse button click. For instance, a context menu might be displayed when the user clicks their right mouse button. The UI layout for a popup menu should use the popup node. For instance: Glib::ustring ui_info = "<ui>" " <popup name='PopupMenu'>" " <menuitem action='ContextEdit'/>" " <menuitem action='ContextProcess'/>" " <menuitem action='ContextRemove'/>" " </popup>" "</ui>"; m_refUIManager->add_ui_from_string(ui_info); To show the popup menu, use Gtk::Menu's popup() method, providing the button identifier and the time of activation, as provided by the button_press_event signal, which you will need to handle anyway. For instance: bool ExampleWindow::on_button_press_event(GdkEventButton* event) { if( (event->type == GDK_BUTTON_PRESS) && (event->button == 3) ) { m_Menu_Popup->popup(event->button, event->time); return true; //It has been handled. } else return false; } Examples Main Menu example
Main Menu
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_menu_file_new_generic(); void on_menu_file_quit(); void on_menu_others(); void on_menu_choices_one(); void on_menu_choices_two(); //Child widgets: Gtk::Box m_Box; Glib::RefPtr<Gtk::UIManager> m_refUIManager; Glib::RefPtr<Gtk::ActionGroup> m_refActionGroup; Glib::RefPtr<Gtk::RadioAction> m_refChoiceOne, m_refChoiceTwo; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/stock.h> #include <iostream> ExampleWindow::ExampleWindow() : m_Box(Gtk::ORIENTATION_VERTICAL) { set_title("main menu example"); set_default_size(200, 200); add(m_Box); // put a MenuBar at the top of the box and other stuff below it. //Create actions for menus and toolbars: m_refActionGroup = Gtk::ActionGroup::create(); //File|New sub menu: m_refActionGroup->add(Gtk::Action::create("FileNewStandard", Gtk::Stock::NEW, "_New", "Create a new file"), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_new_generic)); m_refActionGroup->add(Gtk::Action::create("FileNewFoo", Gtk::Stock::NEW, "New Foo", "Create a new foo"), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_new_generic)); m_refActionGroup->add(Gtk::Action::create("FileNewGoo", Gtk::Stock::NEW, "_New Goo", "Create a new goo"), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_new_generic)); //File menu: m_refActionGroup->add(Gtk::Action::create("FileMenu", "File")); //Sub-menu. m_refActionGroup->add(Gtk::Action::create("FileNew", Gtk::Stock::NEW)); m_refActionGroup->add(Gtk::Action::create("FileQuit", Gtk::Stock::QUIT), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_quit)); //Edit menu: m_refActionGroup->add(Gtk::Action::create("EditMenu", "Edit")); m_refActionGroup->add(Gtk::Action::create("EditCopy", Gtk::Stock::COPY), sigc::mem_fun(*this, &ExampleWindow::on_menu_others)); m_refActionGroup->add(Gtk::Action::create("EditPaste", Gtk::Stock::PASTE), sigc::mem_fun(*this, &ExampleWindow::on_menu_others)); m_refActionGroup->add(Gtk::Action::create("EditSomething", "Something"), Gtk::AccelKey("<control><alt>S"), sigc::mem_fun(*this, &ExampleWindow::on_menu_others)); //Choices menu, to demonstrate Radio items m_refActionGroup->add( Gtk::Action::create("ChoicesMenu", "Choices") ); Gtk::RadioAction::Group group_userlevel; m_refChoiceOne = Gtk::RadioAction::create(group_userlevel, "ChoiceOne", "One"); m_refActionGroup->add(m_refChoiceOne, sigc::mem_fun(*this, &ExampleWindow::on_menu_choices_one) ); m_refChoiceTwo = Gtk::RadioAction::create(group_userlevel, "ChoiceTwo", "Two"); m_refActionGroup->add(m_refChoiceTwo, sigc::mem_fun(*this, &ExampleWindow::on_menu_choices_two) ); //Help menu: m_refActionGroup->add( Gtk::Action::create("HelpMenu", "Help") ); m_refActionGroup->add( Gtk::Action::create("HelpAbout", Gtk::Stock::HELP), sigc::mem_fun(*this, &ExampleWindow::on_menu_others) ); m_refUIManager = Gtk::UIManager::create(); m_refUIManager->insert_action_group(m_refActionGroup); add_accel_group(m_refUIManager->get_accel_group()); //Layout the actions in a menubar and toolbar: Glib::ustring ui_info = "<ui>" " <menubar name='MenuBar'>" " <menu action='FileMenu'>" " <menu action='FileNew'>" " <menuitem action='FileNewStandard'/>" " <menuitem action='FileNewFoo'/>" " <menuitem action='FileNewGoo'/>" " </menu>" " <separator/>" " <menuitem action='FileQuit'/>" " </menu>" " <menu action='EditMenu'>" " <menuitem action='EditCopy'/>" " <menuitem action='EditPaste'/>" " <menuitem action='EditSomething'/>" " </menu>" " <menu action='ChoicesMenu'>" " <menuitem action='ChoiceOne'/>" " <menuitem action='ChoiceTwo'/>" " </menu>" " <menu action='HelpMenu'>" " <menuitem action='HelpAbout'/>" " </menu>" " </menubar>" " <toolbar name='ToolBar'>" " <toolitem action='FileNewStandard'/>" " <toolitem action='FileQuit'/>" " </toolbar>" "</ui>"; try { m_refUIManager->add_ui_from_string(ui_info); } catch(const Glib::Error& ex) { std::cerr << "building menus failed: " << ex.what(); } //Get the menubar and toolbar widgets, and add them to a container widget: Gtk::Widget* pMenubar = m_refUIManager->get_widget("/MenuBar"); if(pMenubar) m_Box.pack_start(*pMenubar, Gtk::PACK_SHRINK); Gtk::Widget* pToolbar = m_refUIManager->get_widget("/ToolBar") ; if(pToolbar) m_Box.pack_start(*pToolbar, Gtk::PACK_SHRINK); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_menu_file_quit() { hide(); //Closes the main window to stop the app->run(). } void ExampleWindow::on_menu_file_new_generic() { std::cout << "A File|New menu item was selected." << std::endl; } void ExampleWindow::on_menu_others() { std::cout << "A menu item was selected." << std::endl; } void ExampleWindow::on_menu_choices_one() { Glib::ustring message; if(m_refChoiceOne->get_active()) message = "Choice 1 was selected."; else message = "Choice 1 was deselected"; std::cout << message << std::endl; } void ExampleWindow::on_menu_choices_two() { Glib::ustring message; if(m_refChoiceTwo->get_active()) message = "Choice 2 was selected."; else message = "Choice 2 was deselected"; std::cout << message << std::endl; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Popup Menu example
Popup Menu
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: virtual bool on_button_press_event(GdkEventButton* event); void on_menu_file_popup_generic(); //Child widgets: Gtk::Box m_Box; Gtk::EventBox m_EventBox; Gtk::Label m_Label; Glib::RefPtr<Gtk::UIManager> m_refUIManager; Glib::RefPtr<Gtk::ActionGroup> m_refActionGroup; Gtk::Menu* m_pMenuPopup; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/stock.h> #include <iostream> ExampleWindow::ExampleWindow() : m_Box(Gtk::ORIENTATION_VERTICAL), m_Label("Right-click to see the popup menu."), m_pMenuPopup(0) /* m_Image(Gtk::Stock::DIALOG_QUESTION, Gtk::ICON_SIZE_MENU) */ { set_title("popup example"); set_default_size(200, 200); add(m_Box); //Add an event box that can catch button_press events: m_Box.pack_start(m_EventBox); m_EventBox.signal_button_press_event().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_press_event) ); m_EventBox.add(m_Label); //Create actions: //Fill menu: m_refActionGroup = Gtk::ActionGroup::create(); //File|New sub menu: //These menu actions would normally already exist for a main menu, because a //context menu should not normally contain menu items that are only available //via a context menu. m_refActionGroup->add(Gtk::Action::create("ContextMenu", "Context Menu")); m_refActionGroup->add(Gtk::Action::create("ContextEdit", "Edit"), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_popup_generic)); m_refActionGroup->add(Gtk::Action::create("ContextProcess", "Process"), Gtk::AccelKey("<control>P"), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_popup_generic)); m_refActionGroup->add(Gtk::Action::create("ContextRemove", "Remove"), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_popup_generic)); //TODO: /* //Add a ImageMenuElem: menulist.push_back( Gtk::Menu_Helpers::ImageMenuElem("_Something", m_Image, sigc::mem_fun(*this, &ExampleWindow::on_menu_file_popup_generic) ) ) ; */ m_refUIManager = Gtk::UIManager::create(); m_refUIManager->insert_action_group(m_refActionGroup); add_accel_group(m_refUIManager->get_accel_group()); //Layout the actions in a menubar and toolbar: Glib::ustring ui_info = "<ui>" " <popup name='PopupMenu'>" " <menuitem action='ContextEdit'/>" " <menuitem action='ContextProcess'/>" " <menuitem action='ContextRemove'/>" " </popup>" "</ui>"; try { m_refUIManager->add_ui_from_string(ui_info); } catch(const Glib::Error& ex) { std::cerr << "building menus failed: " << ex.what(); } //Get the menu: m_pMenuPopup = dynamic_cast<Gtk::Menu*>( m_refUIManager->get_widget("/PopupMenu")); if(!m_pMenuPopup) g_warning("menu not found"); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_menu_file_popup_generic() { std::cout << "A popup menu item was selected." << std::endl; } bool ExampleWindow::on_button_press_event(GdkEventButton* event) { if( (event->type == GDK_BUTTON_PRESS) && (event->button == 3) ) { if(m_pMenuPopup) m_pMenuPopup->popup(event->button, event->time); return true; //It has been handled. } else return false; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
ToolPalette A ToolPalette is similar to a Toolbar but can contain a grid of items, categorized into groups. The user may hide or expand each group. As in a toolbar, the items may be displayed as only icons, as only text, or as icons with text. The ToolPalette's items might be dragged or simply activated. For instance, the user might drag objects to a canvas to create new items there. Or the user might click an item to activate a certain brush size in a drawing application. ToolItemGroups should be added to the tool pallete via the base class's Gtk::Container::add() method, for instance like so: Gtk::ToolItemGroup* group_brushes = Gtk::manage(new Gtk::ToolItemGroup("Brushes")); m_ToolPalette.add(*group_brushes); Gtk::ToolItems can then be added to the group. For instance, like so: Gtk::ToolButton* button = Gtk::manage(new Gtk::ToolButton(icon, "Big")); button->set_tooltip_text("Big Brush); group_brushes->insert(*button); You might then handle the ToolButton's clicked signal. Alternatively, you could allow the item to be dragged to another widget, by calling Gtk::ToolPalette::add_drag_dest() and then using Gtk::ToolPalette::get_drag_item() in the other widget's drag_data_received signal handler. ToolPalette Reference ToolItemGroup Reference ToolItem Reference Drag and Drop Call add_drag_dest() to allow items or groups to be dragged from the tool palette to a particular destination widget. You can then use get_drag_item() to discover which ToolItem or ToolItemGroup is being dragged. You can use dynamic_cast to discover whether is it an item or a group. For instance, you might use this in your drag_data_received signal handler, to add a dropped item, or to show a suitable icon while dragging. See the Drag and Drop chapter for general advice about Drag and Drop with gtkmm. ToolPalette Example This example adds a ToolPalette and a DrawingArea to a window and allows the user to drag icons from the tool palette to the drawing area. The tool palette contains several groups of items. The combo boxes allow the user to change the style and orientation of the tool palette.
ToolPalette
源代码 File: canvas.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_CANVAS_H #define GTKMM_EXAMPLE_CANVAS_H #include <gtkmm.h> // This little canvas class is only here // because gtkmm does not have a canvas class yet. // Applications should probably use GooCanvas::Canvas (goocanvasmm) instead. class Canvas : public Gtk::DrawingArea { public: Canvas(); virtual ~Canvas(); private: class CanvasItem { public: CanvasItem(Gtk::Widget* canvas, Gtk::ToolButton* button, double x, double y) { const Gtk::StockID stock_id(button->get_stock_id()); this->pixbuf = canvas->render_icon_pixbuf(stock_id, Gtk::ICON_SIZE_DIALOG); this->x = x; this->y = y; } Glib::RefPtr<Gdk::Pixbuf> pixbuf; double x, y; }; void item_draw(const CanvasItem *item, const Cairo::RefPtr<Cairo::Context>& cr, bool preview); virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr); virtual void on_drag_data_received(const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, const Gtk::SelectionData& selection_data, guint info, guint time); virtual bool on_drag_motion(const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, guint time); virtual bool on_drag_drop(const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, guint time); virtual void on_drag_leave(const Glib::RefPtr<Gdk::DragContext>& context, guint time); bool m_drag_data_requested_for_drop; //So we know what to do in on_drag_data_received(). CanvasItem* m_drop_item; typedef std::vector<CanvasItem*> type_vec_items; type_vec_items m_canvas_items; }; #endif //GTKMM_EXAMPLE_CANVAS_H File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> #include "canvas.h" class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); private: void load_stock_items(); void load_toggle_items(); void load_special_items(); //Signal handlers: void on_combo_orientation_changed(); void on_combo_style_changed(); //Tree model columns: class ModelColumnsOrientation : public Gtk::TreeModel::ColumnRecord { public: ModelColumnsOrientation() { add(m_col_value); add(m_col_name); } Gtk::TreeModelColumn<Gtk::Orientation> m_col_value; Gtk::TreeModelColumn<Glib::ustring> m_col_name; }; ModelColumnsOrientation m_ColumnsOrientation; //Tree model columns: class ModelColumnsStyle : public Gtk::TreeModel::ColumnRecord { public: ModelColumnsStyle() { add(m_col_value); add(m_col_name); } Gtk::TreeModelColumn<int> m_col_value; //We use int to also allow -1 Gtk::TreeModelColumn<Glib::ustring> m_col_name; }; ModelColumnsStyle m_ColumnsStyle; //Child widgets: Gtk::Box m_VBox; Gtk::Box m_HBox; Gtk::ComboBox m_ComboOrientation; Glib::RefPtr<Gtk::ListStore> m_refTreeModelOrientation; Gtk::ComboBox m_ComboStyle; Glib::RefPtr<Gtk::ListStore> m_refTreeModelStyle; Gtk::ToolPalette m_ToolPalette; Gtk::ScrolledWindow m_ScrolledWindowPalette; Gtk::ScrolledWindow m_ScrolledWindowCanvas; Canvas m_Canvas; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" static bool sort_predicate(const Gtk::StockID& a, const Gtk::StockID& b) { return a.get_string() < b.get_string(); } void ExampleWindow::load_stock_items() { Gtk::ToolItemGroup* group_af = Gtk::manage(new Gtk::ToolItemGroup("Stock Icons (A-F)")); m_ToolPalette.add(*group_af); Gtk::ToolItemGroup* group_gn = Gtk::manage(new Gtk::ToolItemGroup("Stock Icons (G-N)")); m_ToolPalette.add(*group_gn); Gtk::ToolItemGroup* group_or = Gtk::manage(new Gtk::ToolItemGroup("Stock Icons (O-R)")); m_ToolPalette.add(*group_or); Gtk::ToolItemGroup* group_sz = Gtk::manage(new Gtk::ToolItemGroup("Stock Icons (S-Z)")); m_ToolPalette.add(*group_sz); // Obtain the IDs of all stock items: typedef std::vector<Gtk::StockID> type_vecIDs; type_vecIDs vecIDs = Gtk::Stock::get_ids(); std::sort(vecIDs.begin(), vecIDs.end(), &sort_predicate); Gtk::ToolItemGroup* group = 0; // Iterate through them, populating the ListStore as appropriate: for(type_vecIDs::const_iterator iterIDs = vecIDs.begin(); iterIDs != vecIDs.end(); ++iterIDs) { const Gtk::StockID& stockid = *iterIDs; const Glib::ustring str = stockid.get_string(); if(str.size() < 4) continue; switch(str[4]) { case 'a': group = group_af; break; case 'g': group = group_gn; break; case 'o': group = group_or; break; case 's': group = group_sz; break; default: //Use the previous group //(They are sorted.) break; } if(!group) continue; Gtk::ToolButton* button = Gtk::manage(new Gtk::ToolButton(stockid)); button->set_tooltip_text(str); button->set_is_important(); group->insert(*button); Gtk::StockItem stockitem; if(!Gtk::StockItem::lookup(stockid, stockitem) || stockitem.get_label().empty()) button->set_label(str); } } void ExampleWindow::load_toggle_items() { Gtk::ToolItemGroup* group = Gtk::manage(new Gtk::ToolItemGroup("Radio Item")); m_ToolPalette.add(*group); Gtk::RadioToolButton::Group radio_group; for(int i = 1; i <= 10; ++i) { const Glib::ustring label = Glib::ustring::compose("#%1", i); Gtk::RadioToolButton* button = Gtk::manage(new Gtk::RadioToolButton()); button->set_group(radio_group); button->set_label(label); group->insert(*button); } } static Gtk::ToolItem* create_entry_item(const Glib::ustring& text) { Gtk::Entry* entry = Gtk::manage(new Gtk::Entry()); entry->set_text(text); entry->set_width_chars(5); Gtk::ToolItem* item = Gtk::manage(new Gtk::ToolItem()); item->add(*entry); return item; } void ExampleWindow::load_special_items() { Gtk::ToolItemGroup* group = Gtk::manage(new Gtk::ToolItemGroup()); Gtk::Button *label_button = Gtk::manage(new Gtk::Button("Advanced Features")); label_button->show(); group->set_label_widget(*label_button); m_ToolPalette.add(*group); Gtk::ToolItem* item = create_entry_item ("homogeneous=false"); group->insert(*item); //TODO: Add Gtk::Container::set_child_property(). gtk_container_child_set (GTK_CONTAINER (group->gobj()), GTK_WIDGET (item->gobj()), "homogeneous", FALSE, NULL); item = create_entry_item ("homogeneous=FALSE, expand=TRUE"); group->insert(*item); gtk_container_child_set (GTK_CONTAINER (group->gobj()), GTK_WIDGET (item->gobj()), "homogeneous", FALSE, "expand", TRUE, NULL); item = create_entry_item ("homogeneous=FALSE, expand=TRUE, fill=FALSE"); group->insert(*item); gtk_container_child_set (GTK_CONTAINER (group->gobj()), GTK_WIDGET (item->gobj()), "homogeneous", FALSE, "expand", TRUE, "fill", FALSE, NULL); item = create_entry_item ("homogeneous=FALSE, expand=TRUE, new-row=TRUE"); group->insert(*item); gtk_container_child_set (GTK_CONTAINER (group->gobj()), GTK_WIDGET (item->gobj()), "homogeneous", FALSE, "expand", TRUE, "new-row", TRUE, NULL); item = Gtk::manage(new Gtk::ToolButton(Gtk::Stock::GO_UP)); item->set_tooltip_text("Show on vertical palettes only"); group->insert(*item); item->set_visible_horizontal(false); item = Gtk::manage(new Gtk::ToolButton(Gtk::Stock::GO_FORWARD)); item->set_tooltip_text("Show on horizontal palettes only"); group->insert(*item); item->set_visible_vertical(false); item = Gtk::manage(new Gtk::ToolButton(Gtk::Stock::FULLSCREEN)); item->set_tooltip_text("Expanded this item"); group->insert(*item); gtk_container_child_set (GTK_CONTAINER (group->gobj()), GTK_WIDGET (item->gobj()), "homogeneous", FALSE, "expand", TRUE, NULL); item = Gtk::manage(new Gtk::ToolButton(Gtk::Stock::HELP)); item->set_tooltip_text("A regular item"); group->insert(*item); } ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL, 6), m_HBox(Gtk::ORIENTATION_HORIZONTAL, 6) { set_title("Gtk::ToolPalette example"); set_size_request(600, 600); set_border_width(6); add(m_VBox); //The Orientation ComboBox: m_refTreeModelOrientation = Gtk::ListStore::create(m_ColumnsOrientation); Gtk::TreeModel::Row row = *(m_refTreeModelOrientation->append()); row[m_ColumnsOrientation.m_col_value] = Gtk::ORIENTATION_HORIZONTAL; row[m_ColumnsOrientation.m_col_name] = "Horizontal";\ row = *(m_refTreeModelOrientation->append()); row[m_ColumnsOrientation.m_col_value] = Gtk::ORIENTATION_VERTICAL; row[m_ColumnsOrientation.m_col_name] = "Vertical"; m_ComboOrientation.set_model(m_refTreeModelOrientation); m_VBox.pack_start(m_ComboOrientation, Gtk::PACK_SHRINK); m_ComboOrientation.pack_start(m_ColumnsOrientation.m_col_name); m_ComboOrientation.signal_changed().connect( sigc::mem_fun(*this, &ExampleWindow::on_combo_orientation_changed) ); m_ComboOrientation.set_active(row); //The Style ComboBox: m_refTreeModelStyle = Gtk::ListStore::create(m_ColumnsStyle); row = *(m_refTreeModelStyle->append()); row[m_ColumnsStyle.m_col_value] = Gtk::TOOLBAR_TEXT; row[m_ColumnsStyle.m_col_name] = "Text";\ row = *(m_refTreeModelStyle->append()); row[m_ColumnsStyle.m_col_value] = Gtk::TOOLBAR_BOTH; row[m_ColumnsStyle.m_col_name] = "Both"; row = *(m_refTreeModelStyle->append()); row[m_ColumnsStyle.m_col_value] = Gtk::TOOLBAR_BOTH_HORIZ; row[m_ColumnsStyle.m_col_name] = "Both: Horizontal"; row = *(m_refTreeModelStyle->append()); row[m_ColumnsStyle.m_col_value] = Gtk::TOOLBAR_ICONS; row[m_ColumnsStyle.m_col_name] = "Icons"; row = *(m_refTreeModelStyle->append()); row[m_ColumnsStyle.m_col_value] = -1; // A custom meaning for this demo. row[m_ColumnsStyle.m_col_name] = "Default"; m_ComboStyle.set_model(m_refTreeModelStyle); m_VBox.pack_start(m_ComboStyle, Gtk::PACK_SHRINK); m_ComboStyle.pack_start(m_ColumnsStyle.m_col_name); m_ComboStyle.signal_changed().connect( sigc::mem_fun(*this, &ExampleWindow::on_combo_style_changed) ); m_ComboStyle.set_active(row); //Add and fill the ToolPalette: load_stock_items(); load_toggle_items(); load_special_items(); m_VBox.pack_start(m_HBox, Gtk::PACK_EXPAND_WIDGET); m_ScrolledWindowPalette.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); m_ScrolledWindowPalette.set_border_width(6); m_ScrolledWindowPalette.add(m_ToolPalette); m_HBox.pack_start(m_ScrolledWindowPalette); on_combo_orientation_changed(); m_ScrolledWindowCanvas.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS); m_ScrolledWindowCanvas.set_border_width(6); m_ScrolledWindowCanvas.add(m_Canvas); m_ScrolledWindowCanvas.set_size_request(200, -1); m_HBox.pack_start(m_ScrolledWindowCanvas); m_ToolPalette.add_drag_dest(m_Canvas, Gtk::DEST_DEFAULT_HIGHLIGHT, Gtk::TOOL_PALETTE_DRAG_ITEMS, Gdk::ACTION_COPY); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_combo_orientation_changed() { Gtk::TreeModel::iterator iter = m_ComboOrientation.get_active(); if(!iter) return; Gtk::TreeModel::Row row = *iter; const Gtk::Orientation value = row[m_ColumnsOrientation.m_col_value]; m_ToolPalette.set_orientation(value); if(value == Gtk::ORIENTATION_HORIZONTAL) m_ScrolledWindowPalette.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_NEVER); else m_ScrolledWindowPalette.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); } void ExampleWindow::on_combo_style_changed() { Gtk::TreeModel::iterator iter = m_ComboStyle.get_active(); if(!iter) return; Gtk::TreeModel::Row row = *iter; const int value = row[m_ColumnsStyle.m_col_value]; if(value == -1) m_ToolPalette.unset_style(); else m_ToolPalette.set_style((Gtk::ToolbarStyle)value); } File: canvas.cc (For use with gtkmm 3, not gtkmm 2) #include "canvas.h" #include <iostream> Canvas::Canvas() : m_drag_data_requested_for_drop(false), m_drop_item() { set_app_paintable(); } Canvas::~Canvas() { while(!m_canvas_items.empty()) { type_vec_items::iterator iter = m_canvas_items.begin(); CanvasItem* item = *iter; delete item; m_canvas_items.erase(iter); } if(m_drop_item) delete m_drop_item; } void Canvas::item_draw(const CanvasItem *item, const Cairo::RefPtr<Cairo::Context>& cr, bool preview) { if(!item || !item->pixbuf) return; const double cx = item->pixbuf->get_width(); const double cy = item->pixbuf->get_height(); Gdk::Cairo::set_source_pixbuf(cr, item->pixbuf, item->x - cx * 0.5, item->y - cy * 0.5); if(preview) cr->paint_with_alpha(0.6); else cr->paint(); } bool Canvas::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { cr->set_source_rgb(1.0, 1.0, 1.0); const Gtk::Allocation allocation = get_allocation(); cr->rectangle(0, 0, allocation.get_width(), allocation.get_height()); cr->fill(); for(type_vec_items::iterator iter = m_canvas_items.begin(); iter != m_canvas_items.end(); ++iter ) { item_draw(*iter, cr, false); } if(m_drop_item) item_draw (m_drop_item, cr, true); return true; } bool Canvas::on_drag_motion(const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, guint time) { m_drag_data_requested_for_drop = false; //It's for drag-motion instead. if(m_drop_item) { // We already have a drop indicator so just update its position. m_drop_item->x = x; m_drop_item->y = y; queue_draw(); context->drag_status(Gdk::ACTION_COPY, time); } else { // Request DnD data for creating a drop indicator. // This will cause on_drag_data_received() to be called. const Glib::ustring target = drag_dest_find_target(context); if (target.empty()) return false; drag_get_data(context, target, time); } Gtk::DrawingArea::on_drag_motion(context, x, y, time); return true; } void Canvas::on_drag_data_received(const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, const Gtk::SelectionData& selection_data, guint info, guint time) { // Find the tool button which is the source of this DnD operation. Gtk::Widget* widget = drag_get_source_widget(context); Gtk::ToolPalette* drag_palette = dynamic_cast<Gtk::ToolPalette*>(widget); while(widget && !drag_palette) { widget = widget->get_parent(); drag_palette = dynamic_cast<Gtk::ToolPalette*>(widget); } Gtk::ToolItem* drag_item = 0; if(drag_palette) drag_item = drag_palette->get_drag_item(selection_data); // Create a drop indicator when a tool button was found: Gtk::ToolButton* button = dynamic_cast<Gtk::ToolButton*>(drag_item); if(!button) return; if(m_drop_item) { delete m_drop_item; m_drop_item = 0; } CanvasItem* item = new CanvasItem(this, button, x, y); if(m_drag_data_requested_for_drop) { m_canvas_items.push_back(item); // Signal that the item was accepted and then redraw. context->drag_finish(true /* success */, false /* del */, time); } else { m_drop_item = item; // We are getting this data due to a request in drag_motion, // rather than due to a request in drag_drop, so we are just // supposed to call gdk_drag_status (), not actually paste in // the data. context->drag_status(Gdk::ACTION_COPY, time); } queue_draw(); Gtk::DrawingArea::on_drag_data_received(context, x, y, selection_data, info, time); } bool Canvas::on_drag_drop(const Glib::RefPtr<Gdk::DragContext>& context, int /* x */, int /* y */, guint time) { // Request DnD data for creating a dopped item. // This will cause on_drag_data_received() to be called. const Glib::ustring target = drag_dest_find_target(context); if (target.empty()) return false; m_drag_data_requested_for_drop = true; drag_get_data(context, target, time); return true; } void Canvas::on_drag_leave(const Glib::RefPtr<Gdk::DragContext>& context, guint time) { //This signal is emitted to clean up the item used for drag-motion, //either when the cursor moves out of the widget or when we drop. if(!m_drop_item) return; delete m_drop_item; m_drop_item = 0; queue_draw(); Gtk::DrawingArea::on_drag_leave(context, time); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Adjustments gtkmm has various widgets that can be visually adjusted using the mouse or the keyboard, such as the Range widgets (described in the Range Widgets section). There are also a few widgets that display some adjustable part of a larger area, such as the Viewport widget. These widgets have Gtk::Adjustment objects that express this common part of their API. So that applications can react to changes, for instance when a user moves a scrollbar, Gtk::Adjustment has a changed signal. You can then use the get_changed() method to discover the new value. Creating an Adjustment The Gtk::Adjustment constructor is as follows: Gtk::Adjustment(float value, float lower, float upper, float step_increment = 1, float page_increment = 10, float page_size = 0); The value argument is the initial value of the adjustment, usually corresponding to the topmost or leftmost position of an adjustable widget. The lower and upper arguments specifies the possible range of values which the adjustment can hold. The step_increment argument specifies the smaller of the two increments by which the user can change the value, while the page_increment is the larger one. The page_size argument usually corresponds somehow to the visible area of a panning widget. The upper argument is used to represent the bottom most or right most coordinate in a panning widget's child. Using Adjustments the Easy Way The adjustable widgets can be roughly divided into those which use and require specific units for these values, and those which treat them as arbitrary numbers. The group which treats the values as arbitrary numbers includes the Range widgets (Scrollbar and Scale), the ScaleButton widget, and the SpinButton widget. These widgets are typically "adjusted" directly by the user with the mouse or keyboard. They will treat the lower and upper values of an adjustment as a range within which the user can manipulate the adjustment's value. By default, they will only modify the value of an adjustment. The other group includes the Viewport widget and the ScrolledWindow widget. All of these widgets use pixel values for their adjustments. These are also typically adjusted indirectly using scrollbars. While all widgets which use adjustments can either create their own adjustments or use ones you supply, you'll generally want to let this particular category of widgets create its own adjustments. If you share an adjustment object between a Scrollbar and a TextView widget, manipulating the scrollbar will automagically adjust the TextView widget. You can set it up like this: // creates its own adjustments Gtk::TextView textview; // uses the newly-created adjustment for the scrollbar as well Gtk::Scrollbar vscrollbar (textview.get_vadjustment(), Gtk::ORIENTATION_VERTICAL); Adjustment Internals OK, you say, that's nice, but what if I want to create my own handlers to respond when the user adjusts a Range widget or a SpinButton. To access the value of a Gtk::Adjustment, you can use the get_value() and set_value() methods: As mentioned earlier, Gtk::Adjustment can emit signals. This is, of course, how updates happen automatically when you share an Adjustment object between a Scrollbar and another adjustable widget; all adjustable widgets connect signal handlers to their adjustment's value_changed signal, as can your program. So, for example, if you have a Scale widget, and you want to change the rotation of a picture whenever its value changes, you would create a signal handler like this: void cb_rotate_picture (Gtk::Widget *picture) { picture->set_rotation (adj->value); ... and connect it to the scale widget's adjustment like this: adj.value_changed.connect(sigc::bind<Widget*>(sigc::mem_fun(*this, &cb_rotate_picture), picture)); What if a widget reconfigures the upper or lower fields of its Adjustment, such as when a user adds more text to a text widget? In this case, it emits the changed signal. Range widgets typically connect a handler to this signal, which changes their appearance to reflect the change - for example, the size of the slider in a scrollbar will grow or shrink in inverse proportion to the difference between the lower and upper values of its Adjustment. You probably won't ever need to attach a handler to this signal, unless you're writing a new type of range widget. adjustment->changed(); Widgets Without X-Windows Some Widgets do not have an associated X-Window, so they therefore do not receive X events. This means that the signals described in the X event signals section will not be emitted. If you want to capture events for these widgets you can use a special container called Gtk::EventBox, which is described in the EventBox section. Here is a list of some of these Widgets: Gtk::Alignment Gtk::Arrow Gtk::AspectFrame Gtk::Bin Gtk::Box Gtk::Button Gtk::CheckButton Gtk::Fixed Gtk::Frame Gtk::Grid Gtk::Image Gtk::Label Gtk::MenuItem Gtk::Notebook Gtk::Paned Gtk::RadioButton Gtk::Range Gtk::ScrolledWindow Gtk::Separator Gtk::Table (deprecated from gtkmm version 3.4) Gtk::Toolbar These widgets are mainly used for decoration or layout, so you won't often need to capture events on them. They are intended to have no X-Window in order to improve performance. EventBox Some gtkmm widgets don't have associated X windows; they draw on their parents' windows. Because of this, they cannot receive events. Also, if they are incorrectly sized, they don't clip, so you can get messy overwriting etc. To receive events on one of these widgets, you can place it inside an EventBox widget and then call Gtk::Widget::set_events() on the EventBox before showing it. Although the name EventBox emphasises the event-handling method, the widget can also be used for clipping (and more; see the example below). The constructor for Gtk::EventBox is: Gtk::EventBox(); A child widget can be added to the EventBox using: event_box.add(child_widget); 参考 示例 The following example demonstrates both uses of an EventBox - a label is created that is clipped to a small box, and set up so that a mouse-click on the label causes the program to exit. Resizing the window reveals varying amounts of the label.
EventBox
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: virtual bool on_eventbox_button_press(GdkEventButton* event); //Child widgets: Gtk::EventBox m_EventBox; Gtk::Label m_Label; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_Label("Click here to quit, quit, quit, quit, quit") { set_title ("EventBox"); set_border_width(10); add(m_EventBox); m_EventBox.add(m_Label); //Clip the label short: m_Label.set_size_request(110, 20); //And bind an action to it: m_EventBox.set_events(Gdk::BUTTON_PRESS_MASK); m_EventBox.signal_button_press_event().connect( sigc::mem_fun(*this, &ExampleWindow::on_eventbox_button_press) ); m_EventBox.set_tooltip_text("Click me!"); show_all_children(); } ExampleWindow::~ExampleWindow() { } bool ExampleWindow::on_eventbox_button_press(GdkEventButton*) { hide(); return true; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Dialogs Dialogs are used as secondary windows, to provide specific information or to ask questions. Gtk::Dialog windows contain a few pre-packed widgets to ensure consistency, and a run() method which blocks until the user dismisses the dialog. There are several derived Dialog classes which you might find useful. Gtk::MessageDialog is used for most simple notifications. But at other times you might need to derive your own dialog class to provide more complex functionality. To pack widgets into a custom dialog, you should pack them into the Gtk::Box, available via get_content_area(). To just add a Button to the bottom of the Dialog, you could use the add_button() method. The run() method returns an int. This may be a value from the Gtk::ResponseType if the user closed the dialog by clicking a standard button, or it could be the custom response value that you specified when using add_button(). 参考 MessageDialog MessageDialog is a convenience class, used to create simple, standard message dialogs, with a message, an icon, and buttons for user response. You can specify the type of message and the text in the constructor, as well as specifying standard buttons via the Gtk::ButtonsType enum. 参考 示例
MessageDialog
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_info_clicked(); void on_button_question_clicked(); //Child widgets: Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Info, m_Button_Question; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/messagedialog.h> #include <iostream> ExampleWindow::ExampleWindow() : m_ButtonBox(Gtk::ORIENTATION_VERTICAL), m_Button_Info("Show Info MessageDialog"), m_Button_Question("Show Question MessageDialog") { set_title("Gtk::MessageDialog example"); add(m_ButtonBox); m_ButtonBox.pack_start(m_Button_Info); m_Button_Info.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_info_clicked) ); m_ButtonBox.pack_start(m_Button_Question); m_Button_Question.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_question_clicked) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_info_clicked() { Gtk::MessageDialog dialog(*this, "This is an INFO MessageDialog"); dialog.set_secondary_text( "And this is the secondary text that explains things."); dialog.run(); } void ExampleWindow::on_button_question_clicked() { Gtk::MessageDialog dialog(*this, "This is a QUESTION MessageDialog", false /* use_markup */, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_OK_CANCEL); dialog.set_secondary_text( "And this is the secondary text that explains things."); int result = dialog.run(); //Handle the response: switch(result) { case(Gtk::RESPONSE_OK): { std::cout << "OK clicked." << std::endl; break; } case(Gtk::RESPONSE_CANCEL): { std::cout << "Cancel clicked." << std::endl; break; } default: { std::cout << "Unexpected button clicked." << std::endl; break; } } } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
FileChooserDialog The FileChooserDialog is suitable for use with "Open" or "Save" menu items. Most of the useful member methods for this class are actually in the Gtk::FileChooser base class. 参考 示例
FileChooser
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_file_clicked(); void on_button_folder_clicked(); //Child widgets: Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_File, m_Button_Folder; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_ButtonBox(Gtk::ORIENTATION_VERTICAL), m_Button_File("Choose File"), m_Button_Folder("Choose Folder") { set_title("Gtk::FileSelection example"); add(m_ButtonBox); m_ButtonBox.pack_start(m_Button_File); m_Button_File.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_file_clicked) ); m_ButtonBox.pack_start(m_Button_Folder); m_Button_Folder.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_folder_clicked) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_folder_clicked() { Gtk::FileChooserDialog dialog("Please choose a folder", Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER); dialog.set_transient_for(*this); //Add response buttons the the dialog: dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button("Select", Gtk::RESPONSE_OK); int result = dialog.run(); //Handle the response: switch(result) { case(Gtk::RESPONSE_OK): { std::cout << "Select clicked." << std::endl; std::cout << "Folder selected: " << dialog.get_filename() << std::endl; break; } case(Gtk::RESPONSE_CANCEL): { std::cout << "Cancel clicked." << std::endl; break; } default: { std::cout << "Unexpected button clicked." << std::endl; break; } } } void ExampleWindow::on_button_file_clicked() { Gtk::FileChooserDialog dialog("Please choose a file", Gtk::FILE_CHOOSER_ACTION_OPEN); dialog.set_transient_for(*this); //Add response buttons the the dialog: dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK); //Add filters, so that only certain file types can be selected: Glib::RefPtr<Gtk::FileFilter> filter_text = Gtk::FileFilter::create(); filter_text->set_name("Text files"); filter_text->add_mime_type("text/plain"); dialog.add_filter(filter_text); Glib::RefPtr<Gtk::FileFilter> filter_cpp = Gtk::FileFilter::create(); filter_cpp->set_name("C/C++ files"); filter_cpp->add_mime_type("text/x-c"); filter_cpp->add_mime_type("text/x-c++"); filter_cpp->add_mime_type("text/x-c-header"); dialog.add_filter(filter_cpp); Glib::RefPtr<Gtk::FileFilter> filter_any = Gtk::FileFilter::create(); filter_any->set_name("Any files"); filter_any->add_pattern("*"); dialog.add_filter(filter_any); //Show the dialog and wait for a user response: int result = dialog.run(); //Handle the response: switch(result) { case(Gtk::RESPONSE_OK): { std::cout << "Open clicked." << std::endl; //Notice that this is a std::string, not a Glib::ustring. std::string filename = dialog.get_filename(); std::cout << "File selected: " << filename << std::endl; break; } case(Gtk::RESPONSE_CANCEL): { std::cout << "Cancel clicked." << std::endl; break; } default: { std::cout << "Unexpected button clicked." << std::endl; break; } } } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
ColorChooserDialog The ColorChooserDialog allows the user to choose a color. The ColorButton opens a color selection dialog when it is clicked. 参考 示例
ColorChooserDialog
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_color_button_color_set(); void on_button_dialog_clicked(); //Child widgets: Gtk::Box m_VBox; Gtk::ColorButton m_ColorButton; Gtk::Button m_Button_Dialog; Gtk::DrawingArea m_DrawingArea; //To show the color. Gdk::RGBA m_Color; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL, 5), m_Button_Dialog("Choose Color") { set_title("Gtk::ColorChooserDialog example"); set_default_size(200, 200); add(m_VBox); m_VBox.pack_start(m_ColorButton, Gtk::PACK_SHRINK); m_ColorButton.signal_color_set().connect(sigc::mem_fun(*this, &ExampleWindow::on_color_button_color_set) ); m_VBox.pack_start(m_Button_Dialog, Gtk::PACK_SHRINK); m_Button_Dialog.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_dialog_clicked) ); //Set start color: m_Color.set_red(0.0); m_Color.set_green(0.0); m_Color.set_blue(1.0); m_Color.set_alpha(1.0); //opaque m_ColorButton.set_rgba(m_Color); m_DrawingArea.override_background_color(m_Color); m_VBox.pack_start(m_DrawingArea); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_color_button_color_set() { //Store the chosen color, and show it: m_Color = m_ColorButton.get_rgba(); m_DrawingArea.override_background_color(m_Color); } void ExampleWindow::on_button_dialog_clicked() { Gtk::ColorChooserDialog dialog("Please choose a color"); dialog.set_transient_for(*this); //Get the previously selected color: dialog.set_rgba(m_Color); const int result = dialog.run(); //Handle the response: switch(result) { case Gtk::RESPONSE_OK: { //Store the chosen color, and show it: m_Color = dialog.get_rgba(); m_ColorButton.set_rgba(m_Color); m_DrawingArea.override_background_color(m_Color); break; } case Gtk::RESPONSE_CANCEL: { std::cout << "Cancel clicked." << std::endl; break; } default: { std::cout << "Unexpected button clicked: " << result << std::endl; break; } } } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
FontChooserDialog The FontChooserDialog allows the user to choose a font. The FontButton opens a font chooser dialog when it is clicked. 参考 示例
FontChooserDialog
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_font_button_font_set(); void on_button_dialog_clicked(); //Child widgets: Gtk::ButtonBox m_ButtonBox; Gtk::FontButton m_FontButton; Gtk::Button m_Button_Dialog; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_ButtonBox(Gtk::ORIENTATION_VERTICAL), m_FontButton("Sans 10"), m_Button_Dialog("Choose Font") { set_title("Gtk::FontChooserDialog example"); add(m_ButtonBox); m_ButtonBox.pack_start(m_FontButton); m_FontButton.set_use_font(true); m_FontButton.set_use_size(true); m_FontButton.signal_font_set().connect(sigc::mem_fun(*this, &ExampleWindow::on_font_button_font_set) ); m_ButtonBox.pack_start(m_Button_Dialog); m_Button_Dialog.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_dialog_clicked) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_font_button_font_set() { Glib::ustring font_name = m_FontButton.get_font_name(); std::cout << "Font chosen: " << font_name << std::endl; } void ExampleWindow::on_button_dialog_clicked() { Gtk::FontChooserDialog dialog("Please choose a font", *this); //Get the previously selected font name from the FontButton: dialog.set_font(m_FontButton.get_font_name()); int result = dialog.run(); //Handle the response: switch(result) { case Gtk::RESPONSE_OK: { Glib::ustring font_name = dialog.get_font(); std::cout << "Font chosen: " << font_name << std::endl; m_FontButton.set_font_name(font_name); break; } case Gtk::RESPONSE_CANCEL: { std::cout << "Cancel clicked." << std::endl; break; } default: { std::cout << "Unexpected button clicked: " << result << std::endl; break; } } } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Non-modal AboutDialog The AboutDialog offers a simple way to display information about a program, like its logo, name, copyright, website and license. Most dialogs in this chapter are modal, that is, they freeze the rest of the application while they are shown. It's also possible to create a non-modal dialog, which does not freeze other windows in the application. The following example shows a non-modal AboutDialog. This is perhaps not the kind of dialog you would normally make non-modal, but non-modal dialogs can be useful in other cases. E.g. gedit's search-and-replace dialog is non-modal. 参考 示例
AboutDialog
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_clicked(); void on_about_dialog_response(int response_id); //Child widgets: Gtk::Box m_VBox; Gtk::Label m_Label; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button; Gtk::AboutDialog m_Dialog; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Label("The AboutDialog is non-modal. " "You can select parts of this text while the AboutDialog is shown."), m_ButtonBox(Gtk::ORIENTATION_VERTICAL), m_Button("Show AboutDialog") { set_title("Gtk::AboutDialog example"); add(m_VBox); m_VBox.pack_start(m_Label); m_Label.set_line_wrap(true); m_Label.set_selectable(true); m_VBox.pack_start(m_ButtonBox); m_ButtonBox.pack_start(m_Button); m_Button.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_clicked) ); m_Dialog.set_transient_for(*this); m_Dialog.set_program_name("Example application"); m_Dialog.set_version("1.0.0"); m_Dialog.set_copyright("Murray Cumming"); m_Dialog.set_comments("This is just an example application."); m_Dialog.set_license("LGPL"); m_Dialog.set_website("http://www.gtkmm.org"); m_Dialog.set_website_label("gtkmm website"); std::vector<Glib::ustring> list_authors; list_authors.push_back("Murray Cumming"); list_authors.push_back("Somebody Else"); list_authors.push_back("AN Other"); m_Dialog.set_authors(list_authors); m_Dialog.signal_response().connect( sigc::mem_fun(*this, &ExampleWindow::on_about_dialog_response) ); show_all_children(); // The widget must be realized and mapped before grab_focus() is called. // That's why it's called after show_all_children(). m_Button.grab_focus(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_about_dialog_response(int response_id) { std::cout << response_id << ", close=" << Gtk::RESPONSE_CLOSE << ", cancel=" << Gtk::RESPONSE_CANCEL << ", delete_event=" << Gtk::RESPONSE_DELETE_EVENT << std::endl; if((response_id == Gtk::RESPONSE_CLOSE) || (response_id == Gtk::RESPONSE_CANCEL) ) { m_Dialog.hide(); } } void ExampleWindow::on_button_clicked() { m_Dialog.show(); //Bring it to the front, in case it was already shown: m_Dialog.present(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
The Drawing Area Widget The DrawingArea widget is a blank window that gives you the freedom to create any graphic you desire. Along with that freedom comes the responsibility to handle draw signals on the widget. When a widget is first shown, or when it is covered and then uncovered again it needs to redraw itself. Most widgets have code to do this, but the DrawingArea does not, allowing you to write your own draw signal handler to determine how the contents of the widget will be drawn. This is most often done by overriding the virtual on_draw() member function. GTK+ uses the Cairo drawing API. With gtkmm, you may use the cairomm C++ API for cairo. You can draw very sophisticated shapes using Cairo, but the methods to do so are quite basic. Cairo provides methods for drawing straight lines, curved lines, and arcs (including circles). These basic shapes can be combined to create more complex shapes and paths which can be filled with solid colors, gradients, patterns, and other things. In addition, Cairo can perform complex transformations, do compositing of images, and render antialiased text. Cairo and Pango Although Cairo can render text, it's not meant to be a replacement for Pango. Pango is a better choice if you need to perform more advanced text rendering such as wrapping or ellipsizing text. Drawing text with Cairo should only be done if the text is part of a graphic. In this section of the tutorial, we'll cover the basic Cairo drawing model, describe each of the basic drawing elements in some detail (with examples), and then present a simple application that uses Cairo to draw a custom clock widget. The Cairo Drawing Model The basic concept of drawing in Cairo involves defining 'invisible' paths and then stroking or filling them to make them visible. To do any drawing in gtkmm with Cairo, you must first create a Cairo::Context object. This class holds all of the graphics state parameters that describe how drawing is to be done. This includes information such as line width, color, the surface to draw to, and many other things. This allows the actual drawing functions to take fewer arguments to simplify the interface. In gtkmm, a Cairo::Context is created by calling the Gdk::Window::create_cairo_context() function. Since Cairo contexts are reference-counted objects, this function returns a Cairo::RefPtr<Cairo::Context> object. The following example shows how to set up a Cairo context with a foreground color of red and a width of 2. Any drawing functions that use this context will use these settings. Gtk::DrawingArea myArea; Cairo::RefPtr<Cairo::Context> myContext = myArea.get_window()->create_cairo_context(); myContext->set_source_rgb(1.0, 0.0, 0.0); myContext->set_line_width(2.0); Each Cairo::Context is associated with a particular Gdk::Window, so the first line of the above example creates a Gtk::DrawingArea widget and the second line uses its associated Gdk::Window to create a Cairo::Context object. The final two lines change the graphics state of the context. There are a number of graphics state variables that can be set for a Cairo context. The most common context attributes are color (using set_source_rgb() or set_source_rgba() for translucent colors), line width (using set_line_width()), line dash pattern (using set_dash()), line cap style (using set_line_cap()), and line join style (using set_line_join()), and font styles (using set_font_size(), set_font_face() and others). There are many other settings as well, such as transformation matrices, fill rules, whether to perform antialiasing, and others. For further information, see the cairomm API documentation. The current state of a Cairo::Context can be saved to an internal stack of saved states and later be restored to the state it was in when you saved it. To do this, use the save() method and the restore() method. This can be useful if you need to temporarily change the line width and color (or any other graphics setting) in order to draw something and then return to the previous settings. In this situation, you could call Cairo::Context::save(), change the graphics settings, draw the lines, and then call Cairo::Context::restore() to restore the original graphics state. Multiple calls to save() and restore() can be nested; each call to restore() restores the state from the matching paired save(). It is good practice to put all modifications to the graphics state between save()/restore() function calls. For example, if you have a function that takes a Cairo::Context reference as an argument, you might implement it as follows: void doSomething(const Cairo::RefPtr<Cairo::Context>& context, int x) { context->save(); // change graphics state // perform drawing operations context->restore(); } The virtual on_draw() method provides a Cairo context that you shall use for drawing in the Gtk::DrawingArea widget. It is not necessary to save and restore this Cairo context in on_draw(). Drawing Straight Lines Now that we understand the basics of the Cairo graphics library, we're almost ready to start drawing. We'll start with the simplest of drawing elements: the straight line. But first you need to know a little bit about Cairo's coordinate system. The origin of the Cairo coordinate system is located in the upper-left corner of the window with positive x values to the right and positive y values going down. Since the Cairo graphics library was written with support for multiple output targets (the X window system, PNG images, OpenGL, etc), there is a distinction between user-space and device-space coordinates. The mapping between these two coordinate systems defaults to one-to-one so that integer values map roughly to pixels on the screen, but this setting can be adjusted if desired. Sometimes it may be useful to scale the coordinates so that the full width and height of a window both range from 0 to 1 (the 'unit square') or some other mapping that works for your application. This can be done with the Cairo::Context::scale() function. 示例 In this example, we'll construct a small but fully functional gtkmm program and draw some lines into the window. The lines are drawn by creating a path and then stroking it. A path is created using the functions Cairo::Context::move_to() and Cairo::Context::line_to(). The function move_to() is similar to the act of lifting your pen off of the paper and placing it somewhere else -- no line is drawn between the point you were at and the point you moved to. To draw a line between two points, use the line_to() function. After you've finished creating your path, you still haven't drawn anything visible yet. To make the path visible, you must use the function stroke() which will stroke the current path with the line width and style specified in your Cairo::Context object. After stroking, the current path will be cleared so that you can start on your next path. Many Cairo drawing functions have a _preserve() variant. Normally drawing functions such as clip(), fill(), or stroke() will clear the current path. If you use the _preserve() variant, the current path will be retained so that you can use the same path with the next drawing function.
Drawing Area - Lines
源代码 File: myarea.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_MYAREA_H #define GTKMM_EXAMPLE_MYAREA_H #include <gtkmm/drawingarea.h> class MyArea : public Gtk::DrawingArea { public: MyArea(); virtual ~MyArea(); protected: //Override default signal handler: virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr); }; #endif // GTKMM_EXAMPLE_MYAREA_H File: myarea.cc (For use with gtkmm 3, not gtkmm 2) #include "myarea.h" #include <cairomm/context.h> MyArea::MyArea() { } MyArea::~MyArea() { } bool MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { Gtk::Allocation allocation = get_allocation(); const int width = allocation.get_width(); const int height = allocation.get_height(); // coordinates for the center of the window int xc, yc; xc = width / 2; yc = height / 2; cr->set_line_width(10.0); // draw red lines out from the center of the window cr->set_source_rgb(0.8, 0.0, 0.0); cr->move_to(0, 0); cr->line_to(xc, yc); cr->line_to(0, height); cr->move_to(xc, yc); cr->line_to(width, yc); cr->stroke(); return true; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "myarea.h" #include <gtkmm/application.h> #include <gtkmm/window.h> int main(int argc, char** argv) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); Gtk::Window win; win.set_title("DrawingArea"); MyArea area; win.add(area); area.show(); return app->run(win); } This program contains a single class, MyArea, which is a subclass of Gtk::DrawingArea and contains an on_draw() member function. This function is called whenever the image in the drawing area needs to be redrawn. It is passed a Cairo::RefPtr pointer to a Cairo::Context that we use for the drawing. The actual drawing code sets the color we want to use for drawing by using set_source_rgb() which takes arguments defining the Red, Green, and Blue components of the desired color (valid values are between 0 and 1). After setting the color, we created a new path using the functions move_to() and line_to(), and then stroked this path with stroke(). Drawing with relative coordinates In the example above we drew everything using absolute coordinates. You can also draw using relative coordinates. For a straight line, this is done with the function Cairo::Context::rel_line_to().
Line styles In addition to drawing basic straight lines, there are a number of things that you can customize about a line. You've already seen examples of setting a line's color and width, but there are others as well. If you've drawn a series of lines that form a path, you may want them to join together in a certain way. Cairo offers three different ways to join lines together: Miter, Bevel, and Round. These are show below:
Different join types in Cairo
The line join style is set using the function Cairo::Context::set_line_join(). Line ends can have different styles as well. The default style is for the line to start and stop exactly at the destination points of the line. This is called a Butt cap. The other options are Round (uses a round ending, with the center of the circle at the end point) or Square (uses a squared ending, with the center of the square at the end point). This setting is set using the function Cairo::Context::set_line_cap(). There are other things you can customize as well, including creating dashed lines and other things. For more information, see the Cairo API documentation.
Drawing thin lines If you try to draw one pixel wide lines, you may notice that the line sometimes comes up blurred and wider than it ought to be. This happens because Cairo will try to draw from the selected position, to both sides (half to each), so if you're positioned right on the intersection of the pixels, and want a one pixel wide line, Cairo will try to use half of each adjacent pixel, which isn't possible (a pixel is the smallest unit possible). This happens when the width of the line is an odd number of pixels (not just one pixel). The trick is to position in the middle of the pixel where you want the line to be drawn, and thus guaranteeing you get the desired results. See Cairo FAQ.
Drawing Area - Thin Lines
源代码 File: myarea.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_MYAREA_H #define GTKMM_EXAMPLE_MYAREA_H #include <gtkmm/drawingarea.h> class MyArea : public Gtk::DrawingArea { public: MyArea(); virtual ~MyArea(); void fix_lines(bool fix = true); void force_redraw(); protected: //Override default signal handler: virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr); private: double m_fix; }; #endif // GTKMM_EXAMPLE_MYAREA_H File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm/window.h> #include <gtkmm/grid.h> #include <gtkmm/checkbutton.h> #include "myarea.h" class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_toggled(); private: Gtk::Grid m_Container; MyArea m_Area_Lines; Gtk::CheckButton m_Button_FixLines; }; #endif //GTKMM_EXAMPLEWINDOW_H File: myarea.cc (For use with gtkmm 3, not gtkmm 2) #include "myarea.h" MyArea::MyArea() : m_fix (0) { set_size_request (200, 100); } MyArea::~MyArea() { } bool MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { Gtk::Allocation allocation = get_allocation(); const int width = allocation.get_width(); const int height = allocation.get_height(); cr->set_line_width(1.0); // draw one line, every two pixels // without the 'fix', you won't notice any space between the lines, // since each one will occupy two pixels (width) for (int i = 0; i < width; i += 2) { cr->move_to(i + m_fix, 0); cr->line_to(i + m_fix, height); } cr->stroke(); return true; } // Toogle between both values (0 or 0.5) void MyArea::fix_lines(bool fix) { // to get the width right, we have to draw in the middle of the pixel m_fix = fix ? 0.5 : 0.0; force_redraw(); } // force the redraw of the image void MyArea::force_redraw() { Glib::RefPtr<Gdk::Window> win = get_window(); if (win) { Gdk::Rectangle r(0, 0, get_allocation().get_width(), get_allocation().get_height()); win->invalidate_rect(r, false); } } File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_Button_FixLines("Fix lines") { set_title("Thin lines example"); m_Container.set_orientation(Gtk::ORIENTATION_HORIZONTAL); m_Container.add(m_Area_Lines); m_Container.add(m_Button_FixLines); add(m_Container); m_Button_FixLines.signal_toggled().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_toggled)); // Synchonize the drawing in m_Area_Lines with the state of the toggle button. on_button_toggled(); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_toggled() { m_Area_Lines.fix_lines(m_Button_FixLines.get_active()); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char* argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Drawing Curved Lines In addition to drawing straight lines Cairo allows you to easily draw curved lines (technically a cubic Bézier spline) using the Cairo::Context::curve_to() and Cairo::Context::rel_curve_to() functions. These functions take coordinates for a destination point as well as coordinates for two 'control' points. This is best explained using an example, so let's dive in. 示例 This simple application draws a curve with Cairo and displays the control points for each end of the curve.
Drawing Area - Lines
源代码 File: myarea.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_MYAREA_H #define GTKMM_EXAMPLE_MYAREA_H #include <gtkmm/drawingarea.h> class MyArea : public Gtk::DrawingArea { public: MyArea(); virtual ~MyArea(); protected: //Override default signal handler: virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr); }; #endif // GTKMM_EXAMPLE_MYAREA_H File: myarea.cc (For use with gtkmm 3, not gtkmm 2) #include "myarea.h" #include <cairomm/context.h> MyArea::MyArea() { } MyArea::~MyArea() { } bool MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { Gtk::Allocation allocation = get_allocation(); const int width = allocation.get_width(); const int height = allocation.get_height(); double x0=0.1, y0=0.5, // start point x1=0.4, y1=0.9, // control point #1 x2=0.6, y2=0.1, // control point #2 x3=0.9, y3=0.5; // end point // scale to unit square (0 to 1 width and height) cr->scale(width, height); cr->set_line_width(0.05); // draw curve cr->move_to(x0, y0); cr->curve_to(x1, y1, x2, y2, x3, y3); cr->stroke(); // show control points cr->set_source_rgba(1, 0.2, 0.2, 0.6); cr->move_to(x0, y0); cr->line_to (x1, y1); cr->move_to(x2, y2); cr->line_to (x3, y3); cr->stroke(); return true; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "myarea.h" #include <gtkmm/application.h> #include <gtkmm/window.h> int main(int argc, char** argv) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); Gtk::Window win; win.set_title("DrawingArea"); MyArea area; win.add(area); area.show(); return app->run(win); } The only difference between this example and the straight line example is in the on_draw() function, but there are a few new concepts and functions introduced here, so let's examine them briefly. We make a call to Cairo::Context::scale(), passing in the width and height of the drawing area. This scales the user-space coordinate system such that the width and height of the widget are both equal to 1.0 'units'. There's no particular reason to scale the coordinate system in this case, but sometimes it can make drawing operations easier. The call to Cairo::Context::curve_to() should be fairly self-explanatory. The first pair of coordinates define the control point for the beginning of the curve. The second set of coordinates define the control point for the end of the curve, and the last set of coordinates define the destination point. To make the concept of control points a bit easier to visualize, a line has been draw from each control point to the end-point on the curve that it is associated with. Note that these control point lines are both translucent. This is achieved with a variant of set_source_rgb() called set_source_rgba(). This function takes a fourth argument specifying the alpha value of the color (valid values are between 0 and 1).
Drawing Arcs and Circles With Cairo, the same function is used to draw arcs, circles, or ellipses: Cairo::Context::arc(). This function takes five arguments. The first two are the coordinates of the center point of the arc, the third argument is the radius of the arc, and the final two arguments define the start and end angle of the arc. All angles are defined in radians, so drawing a circle is the same as drawing an arc from 0 to 2 * M_PI radians. An angle of 0 is in the direction of the positive X axis (in user-space). An angle of M_PI/2 radians (90 degrees) is in the direction of the positive Y axis (in user-space). Angles increase in the direction from the positive X axis toward the positive Y axis. So with the default transformation matrix, angles increase in a clockwise direction. (Remember that the positive Y axis points downwards.) To draw an ellipse, you can scale the current transformation matrix by different amounts in the X and Y directions. For example, to draw an ellipse with center at x, y and size width, height: context->save(); context->translate(x, y); context->scale(width / 2.0, height / 2.0); context->arc(0.0, 0.0, 1.0, 0.0, 2 * M_PI); context->restore(); 示例 Here's an example of a simple program that draws an arc, a circle and an ellipse into a drawing area.
Drawing Area - Arcs
源代码 File: myarea.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_MYAREA_H #define GTKMM_EXAMPLE_MYAREA_H #include <gtkmm/drawingarea.h> class MyArea : public Gtk::DrawingArea { public: MyArea(); virtual ~MyArea(); protected: //Override default signal handler: virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr); }; #endif // GTKMM_EXAMPLE_MYAREA_H File: myarea.cc (For use with gtkmm 3, not gtkmm 2) #include "myarea.h" #include <cairomm/context.h> #include <cmath> MyArea::MyArea() { } MyArea::~MyArea() { } bool MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { // This is where we draw on the window Gtk::Allocation allocation = get_allocation(); const int width = allocation.get_width(); const int height = allocation.get_height(); const int lesser = MIN(width, height); // coordinates for the center of the window int xc, yc; xc = width / 2; yc = height / 2; cr->set_line_width(lesser * 0.02); // outline thickness changes // with window size // first draw a simple unclosed arc cr->save(); cr->arc(width / 3.0, height / 4.0, lesser / 4.0, -(M_PI / 5.0), M_PI); cr->close_path(); // line back to start point cr->set_source_rgb(0.0, 0.8, 0.0); cr->fill_preserve(); cr->restore(); // back to opaque black cr->stroke(); // outline it // now draw a circle cr->save(); cr->arc(xc, yc, lesser / 4.0, 0.0, 2.0 * M_PI); // full circle cr->set_source_rgba(0.0, 0.0, 0.8, 0.6); // partially translucent cr->fill_preserve(); cr->restore(); // back to opaque black cr->stroke(); // and finally an ellipse double ex, ey, ew, eh; // center of ellipse ex = xc; ey = 3.0 * height / 4.0; // ellipse dimensions ew = 3.0 * width / 4.0; eh = height / 3.0; cr->save(); cr->translate(ex, ey); // make (ex, ey) == (0, 0) cr->scale(ew / 2.0, eh / 2.0); // for width: ew / 2.0 == 1.0 // for height: eh / 2.0 == 1.0 cr->arc(0.0, 0.0, 1.0, 0.0, 2 * M_PI); // 'circle' centered at (0, 0) // with 'radius' of 1.0 cr->set_source_rgba(0.8, 0.0, 0.0, 0.7); cr->fill_preserve(); cr->restore(); // back to opaque black cr->stroke(); return true; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "myarea.h" #include <gtkmm/application.h> #include <gtkmm/window.h> int main(int argc, char** argv) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); Gtk::Window win; win.set_title("DrawingArea"); MyArea area; win.add(area); area.show(); return app->run(win); } There are a couple of things to note about this example code. Again, the only real difference between this example and the previous ones is the on_draw() function, so we'll limit our focus to that function. In addition, the first part of the function is nearly identical to the previous examples, so we'll skip that portion. Note that in this case, we've expressed nearly everything in terms of the height and width of the window, including the width of the lines. Because of this, when you resize the window, everything scales with the window. Also note that there are three drawing sections in the function and each is wrapped with a save()/restore() pair so that we're back at a known state after each drawing. The section for drawing an arc introduces one new function, close_path(). This function will in effect draw a straight line from the current point back to the first point in the path. There is a significant difference between calling close_path() and manually drawing a line back to the starting point, however. If you use close_path(), the lines will be nicely joined together. If you use line_to() instead, the lines will end at the same point, but Cairo won't do any special joining. Drawing counter-clockwise The function Cairo::Context::arc_negative() is exactly the same as Cairo::Context::arc() but the angles go the opposite direction.
Drawing Text Drawing Text with Pango Text is drawn via Pango Layouts. The easiest way to create a Pango::Layout is to use Gtk::Widget::create_pango_layout(). Once created, the layout can be manipulated in various ways, including changing the text, font, etc. Finally, the layout can be rendered using the Pango::Layout::show_in_cairo_context() method. 示例 Here is an example of a program that draws some text, some of it upside-down. The Printing chapter contains another example of drawing text.
Drawing Area - Text
源代码 File: myarea.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_MYAREA_H #define GTKMM_EXAMPLE_MYAREA_H #include <gtkmm/drawingarea.h> class MyArea : public Gtk::DrawingArea { public: MyArea(); virtual ~MyArea(); protected: //Override default signal handler: virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr); private: void draw_rectangle(const Cairo::RefPtr<Cairo::Context>& cr, int width, int height); void draw_text(const Cairo::RefPtr<Cairo::Context>& cr, int rectangle_width, int rectangle_height); }; #endif // GTKMM_EXAMPLE_MYAREA_H File: myarea.cc (For use with gtkmm 3, not gtkmm 2) #include "myarea.h" MyArea::MyArea() { } MyArea::~MyArea() { } bool MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { Gtk::Allocation allocation = get_allocation(); const int width = allocation.get_width(); const int height = allocation.get_height(); const int rectangle_width = width; const int rectangle_height = height / 2; // Draw a black rectangle cr->set_source_rgb(0.0, 0.0, 0.0); draw_rectangle(cr, rectangle_width, rectangle_height); // and some white text cr->set_source_rgb(1.0, 1.0, 1.0); draw_text(cr, rectangle_width, rectangle_height); // flip the image vertically // see http://www.cairographics.org/documentation/cairomm/reference/classCairo_1_1Matrix.html // the -1 corresponds to the yy part (the flipping part) // the height part is a translation (we could have just called cr->translate(0, height) instead) // it's height and not height / 2, since we want this to be on the second part of our drawing // (otherwise, it would draw over the previous part) Cairo::Matrix matrix(1.0, 0.0, 0.0, -1.0, 0.0, height); // apply the matrix cr->transform(matrix); // white rectangle cr->set_source_rgb(1.0, 1.0, 1.0); draw_rectangle(cr, rectangle_width, rectangle_height); // black text cr->set_source_rgb(0.0, 0.0, 0.0); draw_text(cr, rectangle_width, rectangle_height); return true; } void MyArea::draw_rectangle(const Cairo::RefPtr<Cairo::Context>& cr, int width, int height) { cr->rectangle(0, 0, width, height); cr->fill(); } void MyArea::draw_text(const Cairo::RefPtr<Cairo::Context>& cr, int rectangle_width, int rectangle_height) { // http://developer.gnome.org/pangomm/unstable/classPango_1_1FontDescription.html Pango::FontDescription font; font.set_family("Monospace"); font.set_weight(Pango::WEIGHT_BOLD); // http://developer.gnome.org/pangomm/unstable/classPango_1_1Layout.html Glib::RefPtr<Pango::Layout> layout = create_pango_layout("Hi there!"); layout->set_font_description(font); int text_width; int text_height; //get the text dimensions (it updates the variables -- by reference) layout->get_pixel_size(text_width, text_height); // Position the text in the middle cr->move_to((rectangle_width-text_width)/2, (rectangle_height-text_height)/2); layout->show_in_cairo_context(cr); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "myarea.h" #include <gtkmm/application.h> #include <gtkmm/window.h> int main(int argc, char* argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); Gtk::Window window; window.set_title("Drawing text example"); MyArea area; window.add(area); area.show(); return app->run(window); }
Drawing Images There is a method for drawing from a Gdk::Pixbuf to a Cairo::Context. A Gdk::Pixbuf buffer is a useful wrapper around a collection of pixels, which can be read from files, and manipulated in various ways. Probably the most common way of creating Gdk::Pixbufs is to use Gdk::Pixbuf::create_from_file(), which can read an image file, such as a png file into a pixbuf ready for rendering. The Gdk::Pixbuf can be rendered by setting it as the source pattern of the Cairo context with Gdk::Cairo::set_source_pixbuf(). Then draw the image with either Cairo::Context::paint() (to draw the whole image), or Cairo::Context::rectangle() and Cairo::Context::fill() (to fill the specified rectangle). set_source_pixbuf() is not a member of Cairo::Context. It takes a Cairo::Context as its first parameter. Here is a small bit of code to tie it all together: (Note that usually you wouldn't load the image every time in the draw signal handler! It's just shown here to keep it all together.) bool MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { Glib::RefPtr<Gdk::Pixbuf> image = Gdk::Pixbuf::create_from_file("myimage.png"); // Draw the image at 110, 90, except for the outermost 10 pixels. Gdk::Cairo::set_source_pixbuf(cr, image, 100, 80); cr->rectangle(110, 90, image->get_width()-20, image->get_height()-20); cr->fill(); return true; } 示例 Here is an example of a simple program that draws an image.
Drawing Area - Image
源代码 File: myarea.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_MYAREA_H #define GTKMM_EXAMPLE_MYAREA_H #include <gtkmm/drawingarea.h> #include <gdkmm/pixbuf.h> class MyArea : public Gtk::DrawingArea { public: MyArea(); virtual ~MyArea(); protected: //Override default signal handler: virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr); Glib::RefPtr<Gdk::Pixbuf> m_image; }; #endif // GTKMM_EXAMPLE_MYAREA_H File: myarea.cc (For use with gtkmm 3, not gtkmm 2) #include "myarea.h" #include <cairomm/context.h> #include <gdkmm/general.h> // set_source_pixbuf() #include <glibmm/fileutils.h> #include <iostream> MyArea::MyArea() { try { // The fractal image has been created by the XaoS program. // http://xaos.sourceforge.net m_image = Gdk::Pixbuf::create_from_file("fractal_image.png"); } catch(const Glib::FileError& ex) { std::cerr << "FileError: " << ex.what() << std::endl; } catch(const Gdk::PixbufError& ex) { std::cerr << "PixbufError: " << ex.what() << std::endl; } // Show at least a quarter of the image. if (m_image) set_size_request(m_image->get_width()/2, m_image->get_height()/2); } MyArea::~MyArea() { } bool MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { if (!m_image) return false; Gtk::Allocation allocation = get_allocation(); const int width = allocation.get_width(); const int height = allocation.get_height(); // Draw the image in the middle of the drawing area, or (if the image is // larger than the drawing area) draw the middle part of the image. Gdk::Cairo::set_source_pixbuf(cr, m_image, (width - m_image->get_width())/2, (height - m_image->get_height())/2); cr->paint(); return true; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "myarea.h" #include <gtkmm/application.h> #include <gtkmm/window.h> int main(int argc, char** argv) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); Gtk::Window win; win.set_title("DrawingArea"); win.set_default_size(300, 200); MyArea area; win.add(area); area.show(); return app->run(win); }
Example Application: Creating a Clock with Cairo Now that we've covered the basics of drawing with Cairo, let's try to put it all together and create a simple application that actually does something. The following example uses Cairo to create a custom Clock widget. The clock has a second hand, a minute hand, and an hour hand, and updates itself every second. 源代码 File: clock.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_CLOCK_H #define GTKMM_EXAMPLE_CLOCK_H #include <gtkmm/drawingarea.h> class Clock : public Gtk::DrawingArea { public: Clock(); virtual ~Clock(); protected: //Override default signal handler: virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr); bool on_timeout(); double m_radius; double m_line_width; }; #endif // GTKMM_EXAMPLE_CLOCK_H File: clock.cc (For use with gtkmm 3, not gtkmm 2) #include <ctime> #include <cmath> #include <cairomm/context.h> #include <glibmm/main.h> #include "clock.h" Clock::Clock() : m_radius(0.42), m_line_width(0.05) { Glib::signal_timeout().connect( sigc::mem_fun(*this, &Clock::on_timeout), 1000 ); #ifndef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED //Connect the signal handler if it isn't already a virtual method override: signal_draw().connect(sigc::mem_fun(*this, &Clock::on_draw), false); #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED } Clock::~Clock() { } bool Clock::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { Gtk::Allocation allocation = get_allocation(); const int width = allocation.get_width(); const int height = allocation.get_height(); // scale to unit square and translate (0, 0) to be (0.5, 0.5), i.e. // the center of the window cr->scale(width, height); cr->translate(0.5, 0.5); cr->set_line_width(m_line_width); cr->save(); cr->set_source_rgba(0.337, 0.612, 0.117, 0.9); // green cr->paint(); cr->restore(); cr->arc(0, 0, m_radius, 0, 2 * M_PI); cr->save(); cr->set_source_rgba(1.0, 1.0, 1.0, 0.8); cr->fill_preserve(); cr->restore(); cr->stroke_preserve(); cr->clip(); //clock ticks for (int i = 0; i < 12; i++) { double inset = 0.05; cr->save(); cr->set_line_cap(Cairo::LINE_CAP_ROUND); if(i % 3 != 0) { inset *= 0.8; cr->set_line_width(0.03); } cr->move_to( (m_radius - inset) * cos (i * M_PI / 6), (m_radius - inset) * sin (i * M_PI / 6)); cr->line_to ( m_radius * cos (i * M_PI / 6), m_radius * sin (i * M_PI / 6)); cr->stroke(); cr->restore(); /* stack-pen-size */ } // store the current time time_t rawtime; time(&rawtime); struct tm * timeinfo = localtime (&rawtime); // compute the angles of the indicators of our clock double minutes = timeinfo->tm_min * M_PI / 30; double hours = timeinfo->tm_hour * M_PI / 6; double seconds= timeinfo->tm_sec * M_PI / 30; cr->save(); cr->set_line_cap(Cairo::LINE_CAP_ROUND); // draw the seconds hand cr->save(); cr->set_line_width(m_line_width / 3); cr->set_source_rgba(0.7, 0.7, 0.7, 0.8); // gray cr->move_to(0, 0); cr->line_to(sin(seconds) * (m_radius * 0.9), -cos(seconds) * (m_radius * 0.9)); cr->stroke(); cr->restore(); // draw the minutes hand cr->set_source_rgba(0.117, 0.337, 0.612, 0.9); // blue cr->move_to(0, 0); cr->line_to(sin(minutes + seconds / 60) * (m_radius * 0.8), -cos(minutes + seconds / 60) * (m_radius * 0.8)); cr->stroke(); // draw the hours hand cr->set_source_rgba(0.337, 0.612, 0.117, 0.9); // green cr->move_to(0, 0); cr->line_to(sin(hours + minutes / 12.0) * (m_radius * 0.5), -cos(hours + minutes / 12.0) * (m_radius * 0.5)); cr->stroke(); cr->restore(); // draw a little dot in the middle cr->arc(0, 0, m_line_width / 3.0, 0, 2 * M_PI); cr->fill(); return true; } bool Clock::on_timeout() { // force our program to redraw the entire clock. Glib::RefPtr<Gdk::Window> win = get_window(); if (win) { Gdk::Rectangle r(0, 0, get_allocation().get_width(), get_allocation().get_height()); win->invalidate_rect(r, false); } return true; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "clock.h" #include <gtkmm/application.h> #include <gtkmm/window.h> int main(int argc, char** argv) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); Gtk::Window win; win.set_title("Cairomm Clock"); Clock c; win.add(c); c.show(); return app->run(win); } As before, almost all of the interesting stuff is done in the draw signal handler on_draw(). Before we dig into the draw signal handler, notice that the constructor for the Clock widget connects a handler function on_timeout() to a timer with a timeout period of 1000 milliseconds (1 second). This means that on_timeout() will get called once per second. The sole responsibility of this function is to invalidate the window so that gtkmm will be forced to redraw it. Now let's take a look at the code that performs the actual drawing. The first section of on_draw() should be pretty familiar by now. This example again scales the coordinate system to be a unit square so that it's easier to draw the clock as a percentage of window size so that it will automatically scale when the window size is adjusted. Furthermore, the coordinate system is scaled over and down so that the (0, 0) coordinate is in the very center of the window. The function Cairo::Context::paint() is used here to set the background color of the window. This function takes no arguments and fills the current surface (or the clipped portion of the surface) with the source color currently active. After setting the background color of the window, we draw a circle for the clock outline, fill it with white, and then stroke the outline in black. Notice that both of these actions use the _preserve variant to preserve the current path, and then this same path is clipped to make sure than our next lines don't go outside the outline of the clock. After drawing the outline, we go around the clock and draw ticks for every hour, with a larger tick at 12, 3, 6, and 9. Now we're finally ready to implement the time-keeping functionality of the clock, which simply involves getting the current values for hours, minutes and seconds, and drawing the hands at the correct angles.
Drag and Drop Gtk::Widget has several methods and signals which are prefixed with "drag_". These are used for Drag and Drop. Sources and Destinations Things are dragged from sources to be dropped on destinations. Each source and destination has infomation about the data formats that it can send or receive, provided by Gtk::TargetEntry items. A drop destination will only accept a dragged item if they both share a compatible Gtk::TargetEntry item. Appropriate signals will then be emitted, telling the signal handlers which Gtk::TargetEntry was used. Gtk::TargetEntry objects contain this information: target: A name, such as "STRING" info: An identifier which will be sent to your signals to tell you which TargetEntry was used. flags: Used only for drag and drop, this specifies whether the data may be dragged to other widgets and applications, or only to the same ones. 方法 Widgets can be identified as sources or destinations using these Gtk::Widget methods: void drag_source_set(const ArrayHandle_TargetEntry& targets, GdkModifierType start_button_mask, GdkDragAction actions); targets is a container of Gtk::TargetEntry (std::list<Gtk::TargetEntry> or std::vector<Gtk::TargetEntry>, for instance) elements. start_button_mask is an ORed combination of values, which specify which modifier key or mouse button must be pressed to start the drag. actions is an ORed combination of values, which specified which Drag and Drop operations will be possible from this source - for instance, copy, move, or link. The user can choose between the actions by using modifier keys, such as Shift to change from copy to move, and this will be shown by a different cursor. void drag_dest_set(const ArrayHandle_TargetEntry& targets, GtkDestDefaults flags, GdkDragAction actions); flags is an ORed combination of values which indicates how the widget will respond visually to Drag and Drop items. actions indicates the Drag and Drop actions which this destination can receive - see the description above. 信号 When a drop destination has accepted a dragged item, certain signals will be emitted, depending on what action has been selected. For instance, the user might have held down the Shift key to specify a move rather than a copy. Remember that the user can only select the actions which you have specified in your calls to drag_dest_set() and drag_source_set(). Copy The source widget will emit these signals, in this order: drag_begin: Provides DragContext. drag_motion: Provides DragContext and coordinates. You can call the drag_status() method of the DragContext to indicate which target will be accepted. drag_get: Provides info about the dragged data format, and a GtkSelectionData structure, in which you should put the requested data. drag_drop: Provides DragContext and coordinates. drag_end: Provides DragContext. The destination widget will emit this signal, after the source destination has emitted the drag_get signal: drag_data_received: Provides info about the dragged data format, and a GtkSelectionData structure which contains the dropped data. You should call the drag_finish() method of the DragContext to indicate whether the operation was successful. Move During a move, the source widget will also emit this signal: drag_delete: Gives the source the opportunity to delete the original data if that's appropriate. DragContext The drag and drop signals provide a DragContext, which contains some information about the drag and drop operation and can be used to influence the process. For instance, you can discover the source widget, or change the drag and drop icon, by using the set_icon() methods. More importantly, you should call the drag_finish() method from your drag_data_received signal handler to indicate whether the drop was successful. 示例 Here is a very simple example, demonstrating a drag and drop Copy operation:
Drag and Drop
源代码 File: dndwindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_DNDWINDOW_H #define GTKMM_EXAMPLE_DNDWINDOW_H #include <gtkmm/box.h> #include <gtkmm/label.h> #include <gtkmm/window.h> #include <gtkmm/button.h> class DnDWindow : public Gtk::Window { public: DnDWindow(); virtual ~DnDWindow(); protected: //Signal handlers: void on_button_drag_data_get( const Glib::RefPtr<Gdk::DragContext>& context, Gtk::SelectionData& selection_data, guint info, guint time); void on_label_drop_drag_data_received( const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, const Gtk::SelectionData& selection_data, guint info, guint time); //Member widgets: Gtk::Box m_HBox; Gtk::Button m_Button_Drag; Gtk::Label m_Label_Drop; }; #endif // GTKMM_EXAMPLE_DNDWINDOW_H File: dndwindow.cc (For use with gtkmm 3, not gtkmm 2) #include "dndwindow.h" #include <iostream> DnDWindow::DnDWindow() : m_Button_Drag("Drag Here\n"), m_Label_Drop("Drop here\n") { set_title("DnD example"); add(m_HBox); //Targets: std::vector<Gtk::TargetEntry> listTargets; listTargets.push_back( Gtk::TargetEntry("STRING") ); listTargets.push_back( Gtk::TargetEntry("text/plain") ); //Drag site: //Make m_Button_Drag a DnD drag source: m_Button_Drag.drag_source_set(listTargets); //Connect signals: m_Button_Drag.signal_drag_data_get().connect(sigc::mem_fun(*this, &DnDWindow::on_button_drag_data_get)); m_HBox.pack_start(m_Button_Drag); //Drop site: //Make m_Label_Drop a DnD drop destination: m_Label_Drop.drag_dest_set(listTargets); //Connect signals: m_Label_Drop.signal_drag_data_received().connect(sigc::mem_fun(*this, &DnDWindow::on_label_drop_drag_data_received) ); m_HBox.pack_start(m_Label_Drop); show_all(); } DnDWindow::~DnDWindow() { } void DnDWindow::on_button_drag_data_get( const Glib::RefPtr<Gdk::DragContext>&, Gtk::SelectionData& selection_data, guint, guint) { selection_data.set(selection_data.get_target(), 8 /* 8 bits format */, (const guchar*)"I'm Data!", 9 /* the length of I'm Data! in bytes */); } void DnDWindow::on_label_drop_drag_data_received( const Glib::RefPtr<Gdk::DragContext>& context, int, int, const Gtk::SelectionData& selection_data, guint, guint time) { const int length = selection_data.get_length(); if((length >= 0) && (selection_data.get_format() == 8)) { std::cout << "Received \"" << selection_data.get_data_as_string() << "\" in label " << std::endl; } context->drag_finish(false, false, time); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "dndwindow.h" #include <gtkmm/application.h> int main (int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); DnDWindow dndWindow; //Shows the window and returns when it is closed. return app->run(dndWindow); } There is a more complex example in examples/others/dnd.
The Clipboard Simple text copy-paste functionality is provided for free by widgets such as Gtk::Entry and Gtk::TextView, but you might need special code to deal with your own data formats. For instance, a drawing program would need special code to allow copy and paste within a view, or between documents. You can usually pretend that Gtk::Clipboard is a singleton. You can get the default clipboard instance with Gtk::Clipboard::get(). This is probably the only clipboard you will ever need. Your application doesn't need to wait for clipboard operations, particularly between the time when the user chooses Copy and then later chooses Paste. Most Gtk::Clipboard methods take sigc::slots which specify callback methods. When Gtk::Clipboard is ready, it will call these methods, either providing the requested data, or asking for data. 参考 Targets Different applications contain different types of data, and they might make that data available in a variety of formats. gtkmm calls these data types targets. For instance, gedit can supply and receive the "UTF8_STRING" target, so you can paste data into gedit from any application that supplies that target. Or two different image editing applications might supply and receive a variety of image formats as targets. As long as one application can receive one of the targets that the other supplies then you will be able to copy data from one to the other. A target can be in a variety of binary formats. This chapter, and the examples, assume that the data is 8-bit text. This would allow us to use an XML format for the clipboard data. However this would probably not be appropriate for binary data such as images. Gtk::Clipboard provides overloads that allow you to specify the format in more detail if necessary. The Drag and Drop API uses the same mechanism. You should probably use the same data targets and formats for both Clipboard and Drag and Drop operations. Copy When the user asks to copy some data, you should tell the Clipboard what targets are available, and provide the callback methods that it can use to get the data. At this point you should store a copy of the data, to be provided when the clipboard calls your callback method in response to a paste. For instance, Glib::RefPtr<Gtk::Clipboard> refClipboard = Gtk::Clipboard::get(); //Targets: std::vector<Gtk::TargetEntry> targets; targets.push_back( Gtk::TargetEntry("example_custom_target") ); targets.push_back( Gtk::TargetEntry("UTF8_STRING") ); refClipboard->set( targets, sigc::mem_fun(*this, &ExampleWindow::on_clipboard_get), sigc::mem_fun(*this, &ExampleWindow::on_clipboard_clear) ); Your callback will then provide the stored data when the user chooses to paste the data. For instance: void ExampleWindow::on_clipboard_get( Gtk::SelectionData& selection_data, guint /* info */) { const std::string target = selection_data.get_target(); if(target == "example_custom_target") selection_data.set("example_custom_target", m_ClipboardStore); } The ideal example below can supply more than one clipboard target. The clear callback allows you to free the memory used by your stored data when the clipboard replaces its data with something else. Paste When the user asks to paste data from the Clipboard, you should request a specific format and provide a callback method which will be called with the actual data. For instance: refClipboard->request_contents("example_custom_target", sigc::mem_fun(*this, &ExampleWindow::on_clipboard_received) ); Here is an example callback method: void ExampleWindow::on_clipboard_received( const Gtk::SelectionData& selection_data) { Glib::ustring clipboard_data = selection_data.get_data_as_string(); //Do something with the pasted data. } Discovering the available targets To find out what targets are currently available on the Clipboard for pasting, call the request_targets() method, specifying a method to be called with the information. For instance: refClipboard->request_targets( sigc::mem_fun(*this, &ExampleWindow::on_clipboard_received_targets) ); In your callback, compare the vector of available targets with those that your application supports for pasting. You could enable or disable a Paste menu item, depending on whether pasting is currently possible. For instance: void ExampleWindow::on_clipboard_received_targets( const std::vector<Glib::ustring>& targets) { const bool bPasteIsPossible = std::find(targets.begin(), targets.end(), example_target_custom) != targets.end(); // Enable/Disable the Paste button appropriately: m_Button_Paste.set_sensitive(bPasteIsPossible); } Examples Simple This example allows copy and pasting of application-specific data, using the standard text target. Although this is simple, it's not ideal because it does not identify the Clipboard data as being of a particular type.
Clipboard - Simple
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_copy(); void on_button_paste(); void on_clipboard_text_received(const Glib::ustring& text); //Child widgets: Gtk::Box m_VBox; Gtk::Label m_Label; Gtk::Grid m_Grid; Gtk::ToggleButton m_ButtonA1, m_ButtonA2, m_ButtonB1, m_ButtonB2; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Copy, m_Button_Paste; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Label("Select cells in the grid, click Copy, then open a second " "instance of this example to try pasting the copied data."), m_ButtonA1("A1"), m_ButtonA2("A2"), m_ButtonB1("B1"), m_ButtonB2("B2"), m_Button_Copy(Gtk::Stock::COPY), m_Button_Paste(Gtk::Stock::PASTE) { set_title("Gtk::Clipboard example"); set_border_width(12); add(m_VBox); m_VBox.pack_start(m_Label, Gtk::PACK_SHRINK); //Fill Grid: m_VBox.pack_start(m_Grid); m_Grid.set_row_homogeneous(true); m_Grid.set_column_homogeneous(true); m_Grid.attach(m_ButtonA1, 0, 0, 1, 1); m_Grid.attach(m_ButtonA2, 1, 0, 1, 1); m_Grid.attach(m_ButtonB1, 0, 1, 1, 1); m_Grid.attach(m_ButtonB2, 1, 1, 1, 1); //Add ButtonBox to bottom: m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_VBox.set_spacing(6); //Fill ButtonBox: m_ButtonBox.set_layout(Gtk::BUTTONBOX_END); m_ButtonBox.pack_start(m_Button_Copy, Gtk::PACK_SHRINK); m_Button_Copy.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_copy) ); m_ButtonBox.pack_start(m_Button_Paste, Gtk::PACK_SHRINK); m_Button_Paste.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_paste) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_copy() { //Build a string representation of the stuff to be copied: //Ideally you would use XML, with an XML parser here: Glib::ustring strData; strData += m_ButtonA1.get_active() ? "1" : "0"; strData += m_ButtonA2.get_active() ? "1" : "0"; strData += m_ButtonB1.get_active() ? "1" : "0"; strData += m_ButtonB2.get_active() ? "1" : "0"; Glib::RefPtr<Gtk::Clipboard> refClipboard = Gtk::Clipboard::get(); refClipboard->set_text(strData); } void ExampleWindow::on_button_paste() { //Tell the clipboard to call our method when it is ready: Glib::RefPtr<Gtk::Clipboard> refClipboard = Gtk::Clipboard::get(); refClipboard->request_text(sigc::mem_fun(*this, &ExampleWindow::on_clipboard_text_received) ); } void ExampleWindow::on_clipboard_text_received(const Glib::ustring& text) { //See comment in on_button_copy() about this silly clipboard format. if(text.size() >= 4) { m_ButtonA1.set_active( text[0] == '1' ); m_ButtonA2.set_active( text[1] == '1' ); m_ButtonB1.set_active( text[2] == '1' ); m_ButtonB2.set_active( text[3] == '1' ); } } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { //APPLICATION_NON_UNIQUE because it shall be possible to run several //instances of this application simultaneously. Glib::RefPtr<Gtk::Application> app = Gtk::Application::create( argc, argv, "org.gtkmm.example", Gio::APPLICATION_NON_UNIQUE); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Ideal This is like the simple example, but it Defines a custom clipboard target, though the format of that target is still text. It supports pasting of 2 targets - both the custom one and a text one that creates an arbitrary text representation of the custom data. It uses request_targets() and the owner_change signal and disables the Paste button if it can't use anything on the clipboard.
Clipboard - Ideal
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_copy(); void on_button_paste(); void on_clipboard_owner_change(GdkEventOwnerChange* event); void on_clipboard_get(Gtk::SelectionData& selection_data, guint info); void on_clipboard_clear(); void on_clipboard_received(const Gtk::SelectionData& selection_data); void on_clipboard_received_targets(const std::vector<Glib::ustring>& targets); virtual void update_paste_status(); //Disable the paste button if there is nothing to paste. //Child widgets: Gtk::Box m_VBox; Gtk::Label m_Label; Gtk::Grid m_Grid; Gtk::ToggleButton m_ButtonA1, m_ButtonA2, m_ButtonB1, m_ButtonB2; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Copy, m_Button_Paste; Glib::ustring m_ClipboardStore; //Keep copied stuff here, until it is pasted. This could be a big complex data structure. }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <algorithm> namespace { //These should usually be MIME types. const char example_target_custom[] = "gtkmmclipboardexample"; const char example_target_text[] = "UTF8_STRING"; } // anonymous namespace ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Label("Select cells in the grid, click Copy, then open a second instance " "of this example to try pasting the copied data.\nOr try pasting the " "text representation into gedit."), m_ButtonA1("A1"), m_ButtonA2("A2"), m_ButtonB1("B1"), m_ButtonB2("B2"), m_Button_Copy(Gtk::Stock::COPY), m_Button_Paste(Gtk::Stock::PASTE) { set_title("Gtk::Clipboard example"); set_border_width(12); add(m_VBox); m_VBox.pack_start(m_Label, Gtk::PACK_SHRINK); //Fill Grid: m_VBox.pack_start(m_Grid); m_Grid.set_row_homogeneous(true); m_Grid.set_column_homogeneous(true); m_Grid.attach(m_ButtonA1, 0, 0, 1, 1); m_Grid.attach(m_ButtonA2, 1, 0, 1, 1); m_Grid.attach(m_ButtonB1, 0, 1, 1, 1); m_Grid.attach(m_ButtonB2, 1, 1, 1, 1); //Add ButtonBox to bottom: m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_VBox.set_spacing(6); //Fill ButtonBox: m_ButtonBox.set_layout(Gtk::BUTTONBOX_END); m_ButtonBox.pack_start(m_Button_Copy, Gtk::PACK_SHRINK); m_Button_Copy.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_copy) ); m_ButtonBox.pack_start(m_Button_Paste, Gtk::PACK_SHRINK); m_Button_Paste.signal_clicked().connect(sigc::mem_fun(*this, &ExampleWindow::on_button_paste) ); //Connect a signal handler that will be called when the contents of //the clipboard change. Gtk::Clipboard::get()->signal_owner_change().connect(sigc::mem_fun(*this, &ExampleWindow::on_clipboard_owner_change) ); show_all_children(); update_paste_status(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_copy() { //Build a string representation of the stuff to be copied: //Ideally you would use XML, with an XML parser here: Glib::ustring strData; strData += m_ButtonA1.get_active() ? "1" : "0"; strData += m_ButtonA2.get_active() ? "1" : "0"; strData += m_ButtonB1.get_active() ? "1" : "0"; strData += m_ButtonB2.get_active() ? "1" : "0"; Glib::RefPtr<Gtk::Clipboard> refClipboard = Gtk::Clipboard::get(); //Targets: std::vector<Gtk::TargetEntry> targets; targets.push_back( Gtk::TargetEntry(example_target_custom) ); targets.push_back( Gtk::TargetEntry(example_target_text) ); refClipboard->set(targets, sigc::mem_fun(*this, &ExampleWindow::on_clipboard_get), sigc::mem_fun(*this, &ExampleWindow::on_clipboard_clear) ); //Store the copied data until it is pasted: //(Must be done after the call to refClipboard->set(), because that call //may trigger a call to on_clipboard_clear.) m_ClipboardStore = strData; update_paste_status(); } void ExampleWindow::on_button_paste() { //Tell the clipboard to call our method when it is ready: Glib::RefPtr<Gtk::Clipboard> refClipboard = Gtk::Clipboard::get(); refClipboard->request_contents(example_target_custom, sigc::mem_fun(*this, &ExampleWindow::on_clipboard_received) ); update_paste_status(); } void ExampleWindow::on_clipboard_owner_change(GdkEventOwnerChange*) { update_paste_status(); } void ExampleWindow::on_clipboard_get(Gtk::SelectionData& selection_data, guint /* info */) { // info corresponds to the optional info parameter in Gtk::TargetEntry's // constructor. We don't use that, so we use selection_data's target instead. const std::string target = selection_data.get_target(); if(target == example_target_custom) { // This set() override uses an 8-bit text format for the data. selection_data.set(example_target_custom, m_ClipboardStore); } else if(target == example_target_text) { //Build some arbitrary text representation of the data, //so that people see something when they paste into a text editor: Glib::ustring text_representation; text_representation += m_ButtonA1.get_active() ? "A1, " : ""; text_representation += m_ButtonA2.get_active() ? "A2, " : ""; text_representation += m_ButtonB1.get_active() ? "B1, " : ""; text_representation += m_ButtonB2.get_active() ? "B2, " : ""; selection_data.set_text(text_representation); } else { g_warning("ExampleWindow::on_clipboard_get(): " "Unexpected clipboard target format."); } } void ExampleWindow::on_clipboard_clear() { //This isn't really necessary. I guess it might save memory. m_ClipboardStore.clear(); } void ExampleWindow::on_clipboard_received( const Gtk::SelectionData& selection_data) { const std::string target = selection_data.get_target(); //It should always be this, because that's what we asked for when calling //request_contents(). if(target == example_target_custom) { Glib::ustring clipboard_data = selection_data.get_data_as_string(); //See comment in on_button_copy() about this silly clipboard format. if(clipboard_data.size() >= 4) { m_ButtonA1.set_active( clipboard_data[0] == '1' ); m_ButtonA2.set_active( clipboard_data[1] == '1' ); m_ButtonB1.set_active( clipboard_data[2] == '1' ); m_ButtonB2.set_active( clipboard_data[3] == '1' ); } } } void ExampleWindow::update_paste_status() { //Disable the paste button if there is nothing to paste. Glib::RefPtr<Gtk::Clipboard> refClipboard = Gtk::Clipboard::get(); //Discover what targets are available: refClipboard->request_targets(sigc::mem_fun(*this, &ExampleWindow::on_clipboard_received_targets) ); } void ExampleWindow::on_clipboard_received_targets( const std::vector<Glib::ustring>& targets) { const bool bPasteIsPossible = std::find(targets.begin(), targets.end(), example_target_custom) != targets.end(); // Enable/Disable the Paste button appropriately: m_Button_Paste.set_sensitive(bPasteIsPossible); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { //APPLICATION_NON_UNIQUE because it shall be possible to run several //instances of this application simultaneously. Glib::RefPtr<Gtk::Application> app = Gtk::Application::create( argc, argv, "org.gtkmm.example", Gio::APPLICATION_NON_UNIQUE); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Printing At the application development level, gtkmm's printing API provides dialogs that are consistent across applications and allows us of Cairo's common drawing API, with Pango-driven text rendering. In the implementation of this common API, platform-specific backends and printer-specific drivers are used. PrintOperation The primary object is Gtk::PrintOperation, allocated for each print operation. To handle page drawing connect to its signals, or inherit from it and override the default virtual signal handlers. PrintOperation automatically handles all the settings affecting the print loop. 信号 The PrintOperation::run() method starts the print loop, during which various signals are emitted: begin_print: You must handle this signal, because this is where you create and set up a Pango::Layout using the provided Gtk::PrintContext, and break up your printing output into pages. paginate: Pagination is potentially slow so if you need to monitor it you can call the PrintOperation::set_show_progress() method and handle this signal. For each page that needs to be rendered, the following signals are emitted: request_page_setup: Provides a PrintContext, page number and Gtk::PageSetup. Handle this signal if you need to modify page setup on a per-page basis. draw_page: You must handle this signal, which provides a PrintContext and a page number. The PrintContext should be used to create a Cairo::Context into which the provided page should be drawn. To render text, iterate over the Pango::Layout you created in the begin_print handler. end_print: A handler for it is a safe place to free any resources related to a PrintOperation. If you have your custom class that inherits from PrintOperation, it is naturally simpler to do it in the destructor. done: This signal is emitted when printing is finished, meaning when the print data is spooled. Note that the provided Gtk::PrintOperationResult may indicate that an error occurred. In any case you probably want to notify the user about the final status. status_changed: Emitted whenever a print job's status changes, until it is finished. Call the PrintOperation::set_track_print_status() method to monitor the job status after spooling. To see the status, use get_status() or get_status_string(). 参考 Page setup The PrintOperation class has a method called set_default_page_setup() which selects the default paper size, orientation and margins. To show a page setup dialog from your application, use the Gtk::run_page_setup_dialog() method, which returns a Gtk::PageSetup object with the chosen settings. Use this object to update a PrintOperation and to access the selected Gtk::PaperSize, Gtk::PageOrientation and printer-specific margins. You should save the chosen Gtk::PageSetup so you can use it again if the page setup dialog is shown again. For instance, //Within a class that inherits from Gtk::Window and keeps m_refPageSetup and m_refSettings as members... Glib::RefPtr<Gtk::PageSetup> new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, m_refSettings); m_refPageSetup = new_page_setup; 参考 The Cairo coordinate system, in the draw_page handler, is automatically rotated to the current page orientation. It is normally within the printer margins, but you can change that via the PrintOperation::set_use_full_page() method. The default measurement unit is device pixels. To select other units, use the PrintOperation::set_unit() method. Rendering text Text rendering is done using Pango. The Pango::Layout object for printing should be created by calling the PrintContext::create_pango_layout() method. The PrintContext object also provides the page metrics, via get_width() and get_height(). The number of pages can be set with PrintOperation::set_n_pages(). To actually render the Pango text in on_draw_page, get a Cairo::Context with PrintContext::get_cairo_context() and show the Pango::LayoutLines that appear within the requested page number. See an example of exactly how this can be done. Asynchronous operations By default, PrintOperation::run() returns when a print operation is completed. If you need to run a non-blocking print operation, call PrintOperation::set_allow_async(). Note that set_allow_async() is not supported on all platforms, however the done signal will still be emitted. run() may return PRINT_OPERATION_RESULT_IN_PROGRESS. To track status and handle the result or error you need to implement signal handlers for the done and status_changed signals: For instance, // in class ExampleWindow's method... Glib::RefPtr<PrintOperation> op = PrintOperation::create(); // ...set up op... op->signal_done().connect(sigc::bind(sigc::mem_fun(*this, &ExampleWindow::on_printoperation_done), op)); // run the op Second, check for an error and connect to the status_changed signal. For instance: void ExampleWindow::on_printoperation_done(Gtk::PrintOperationResult result, const Glib::RefPtr<PrintOperation>& op) { if (result == Gtk::PRINT_OPERATION_RESULT_ERROR) //notify user else if (result == Gtk::PRINT_OPERATION_RESULT_APPLY) //Update PrintSettings with the ones used in this PrintOperation if (! op->is_finished()) op->signal_status_changed().connect(sigc::bind(sigc::mem_fun(*this, &ExampleWindow::on_printoperation_status_changed), op)); } Finally, check the status. For instance, void ExampleWindow::on_printoperation_status_changed(const Glib::RefPtr<PrintFormOperation>& op) { if (op->is_finished()) //the print job is finished else //get the status with get_status() or get_status_string() //update UI } Export to PDF The 'Print to file' option is available in the print dialog, without the need for extra implementation. However, it is sometimes useful to generate a pdf file directly from code. For instance, Glib::RefPtr<Gtk::PrintOperation> op = Gtk::PrintOperation::create(); // ...set up op... op->set_export_filename("test.pdf"); Gtk::PrintOperationResult res = op->run(Gtk::PRINT_OPERATION_ACTION_EXPORT); Extending the print dialog You may add a custom tab to the print dialog: Set the title of the tab via PrintOperation::set_custom_tab_label(), create a new widget and return it from the create_custom_widget signal handler. You'll probably want this to be a container widget, packed with some others. Get the data from the widgets in the custom_widget_apply signal handler. Although the custom_widget_apply signal provides the widget you previously created, to simplify things you can keep the widgets you expect to contain some user input as class members. For example, let's say you have a Gtk::Entry called m_Entry as a member of your CustomPrintOperation class: Gtk::Widget* CustomPrintOperation::on_create_custom_widget() { set_custom_tab_label("My custom tab"); Gtk::Box* hbox = new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 8); hbox->set_border_width(6); Gtk::Label* label = Gtk::manage(new Gtk::Label("Enter some text: ")); hbox->pack_start(*label, false, false); label->show(); hbox->pack_start(m_Entry, false, false); m_Entry.show(); return hbox; } void CustomPrintOperation::on_custom_widget_apply(Gtk::Widget* /* widget */) { Glib::ustring user_input = m_Entry.get_text(); //... } The example in examples/book/printing/advanced demonstrates this. Preview The native GTK+ print dialog has a preview button, but you may also start a preview directly from an application: // in a class that inherits from Gtk::Window... Glib::RefPtr<PrintOperation> op = PrintOperation::create(); // ...set up op... op->run(Gtk::PRINT_OPERATION_ACTION_PREVIEW, *this); On Unix, the default preview handler uses an external viewer program. On Windows, the native preview dialog will be shown. If necessary you may override this behaviour and provide a custom preview dialog. See the example located in /examples/book/printing/advanced. 示例 Simple The following example demonstrates how to print some input from a user interface. It shows how to implement on_begin_print and on_draw_page, as well as how to track print status and update the print settings.
Printing - Simple
源代码 File: printformoperation.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_PRINT_FORM_OPERATION_H #define GTKMM_PRINT_FORM_OPERATION_H #include <gtkmm.h> #include <pangomm.h> #include <vector> //We derive our own class from PrintOperation, //so we can put the actual print implementation here. class PrintFormOperation : public Gtk::PrintOperation { public: static Glib::RefPtr<PrintFormOperation> create(); virtual ~PrintFormOperation(); void set_name(const Glib::ustring& name) { m_Name = name; } void set_comments(const Glib::ustring& comments) { m_Comments = comments; } protected: PrintFormOperation(); //PrintOperation default signal handler overrides: virtual void on_begin_print(const Glib::RefPtr<Gtk::PrintContext>& context); virtual void on_draw_page(const Glib::RefPtr<Gtk::PrintContext>& context, int page_nr); Glib::ustring m_Name; Glib::ustring m_Comments; Glib::RefPtr<Pango::Layout> m_refLayout; std::vector<int> m_PageBreaks; // line numbers where a page break occurs }; #endif // GTKMM_PRINT_FORM_OPERATION_H File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class PrintFormOperation; class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: void build_main_menu(); void print_or_preview(Gtk::PrintOperationAction print_action); //PrintOperation signal handlers. //We handle these so can get necessary information to update the UI or print settings. //Our derived PrintOperation class also overrides some default signal handlers. void on_printoperation_status_changed(const Glib::RefPtr<PrintFormOperation>& operation); void on_printoperation_done(Gtk::PrintOperationResult result, const Glib::RefPtr<PrintFormOperation>& operation); //Action signal handlers: void on_menu_file_new(); void on_menu_file_page_setup(); void on_menu_file_print_preview(); void on_menu_file_print(); void on_menu_file_quit(); //Printing-related objects: Glib::RefPtr<Gtk::PageSetup> m_refPageSetup; Glib::RefPtr<Gtk::PrintSettings> m_refSettings; //Child widgets: Gtk::Box m_VBox; Gtk::Grid m_Grid; Gtk::Label m_NameLabel; Gtk::Entry m_NameEntry; Gtk::Label m_SurnameLabel; Gtk::Entry m_SurnameEntry; Gtk::Label m_CommentsLabel; Gtk::ScrolledWindow m_ScrolledWindow; Gtk::TextView m_TextView; Glib::RefPtr<Gtk::TextBuffer> m_refTextBuffer; unsigned m_ContextId; Gtk::Statusbar m_Statusbar; Glib::RefPtr<Gtk::UIManager> m_refUIManager; Glib::RefPtr<Gtk::ActionGroup> m_refActionGroup; }; #endif //GTKMM_EXAMPLEWINDOW_H File: printformoperation.cc (For use with gtkmm 3, not gtkmm 2) #include "printformoperation.h" PrintFormOperation::PrintFormOperation() { } PrintFormOperation::~PrintFormOperation() { } Glib::RefPtr<PrintFormOperation> PrintFormOperation::create() { return Glib::RefPtr<PrintFormOperation>(new PrintFormOperation()); } void PrintFormOperation::on_begin_print( const Glib::RefPtr<Gtk::PrintContext>& print_context) { //Create and set up a Pango layout for PrintData based on the passed //PrintContext: We then use this to calculate the number of pages needed, and //the lines that are on each page. m_refLayout = print_context->create_pango_layout(); Pango::FontDescription font_desc("sans 12"); m_refLayout->set_font_description(font_desc); const double width = print_context->get_width(); const double height = print_context->get_height(); m_refLayout->set_width(static_cast<int>(width * Pango::SCALE)); //Set and mark up the text to print: Glib::ustring marked_up_form_text; marked_up_form_text += "<b>Name</b>: " + m_Name + "\n\n"; marked_up_form_text += "<b>Comments</b>: " + m_Comments; m_refLayout->set_markup(marked_up_form_text); //Set the number of pages to print by determining the line numbers //where page breaks occur: const int line_count = m_refLayout->get_line_count(); Glib::RefPtr<Pango::LayoutLine> layout_line; double page_height = 0; for (int line = 0; line < line_count; ++line) { Pango::Rectangle ink_rect, logical_rect; layout_line = m_refLayout->get_line(line); layout_line->get_extents(ink_rect, logical_rect); const double line_height = logical_rect.get_height() / 1024.0; if (page_height + line_height > height) { m_PageBreaks.push_back(line); page_height = 0; } page_height += line_height; } set_n_pages(m_PageBreaks.size() + 1); } void PrintFormOperation::on_draw_page( const Glib::RefPtr<Gtk::PrintContext>& print_context, int page_nr) { //Decide which lines we need to print in order to print the specified page: int start_page_line = 0; int end_page_line = 0; if(page_nr == 0) { start_page_line = 0; } else { start_page_line = m_PageBreaks[page_nr - 1]; } if(page_nr < static_cast<int>(m_PageBreaks.size())) { end_page_line = m_PageBreaks[page_nr]; } else { end_page_line = m_refLayout->get_line_count(); } //Get a Cairo Context, which is used as a drawing board: Cairo::RefPtr<Cairo::Context> cairo_ctx = print_context->get_cairo_context(); //We'll use black letters: cairo_ctx->set_source_rgb(0, 0, 0); //Render Pango LayoutLines over the Cairo context: Pango::LayoutIter iter = m_refLayout->get_iter(); double start_pos = 0; int line_index = 0; do { if(line_index >= start_page_line) { Glib::RefPtr<Pango::LayoutLine> layout_line = iter.get_line(); Pango::Rectangle logical_rect = iter.get_line_logical_extents(); int baseline = iter.get_baseline(); if (line_index == start_page_line) { start_pos = logical_rect.get_y() / 1024.0; } cairo_ctx->move_to(logical_rect.get_x() / 1024.0, baseline / 1024.0 - start_pos); layout_line->show_in_cairo_context(cairo_ctx); } line_index++; } while(line_index < end_page_line && iter.next_line()); } File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include "printformoperation.h" #include <iostream> #include <pangomm.h> const Glib::ustring app_title = "gtkmm Printing Example"; ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_NameLabel("Name"), m_SurnameLabel("Surname"), m_CommentsLabel("Comments") { m_refPageSetup = Gtk::PageSetup::create(); m_refSettings = Gtk::PrintSettings::create(); m_ContextId = m_Statusbar.get_context_id(app_title); set_title(app_title); set_default_size(400, 300); add(m_VBox); build_main_menu(); m_VBox.pack_start(m_Grid); //Arrange the widgets inside the grid: m_Grid.set_row_spacing(5); m_Grid.set_column_spacing(5); m_Grid.attach(m_NameLabel, 0, 0, 1, 1); m_Grid.attach(m_NameEntry, 1, 0, 1, 1); m_Grid.attach(m_SurnameLabel, 0, 1, 1, 1); m_Grid.attach(m_SurnameEntry, 1, 1, 1, 1); //Add the TextView, inside a ScrolledWindow: m_ScrolledWindow.add(m_TextView); //Only show the scrollbars when they are necessary: m_ScrolledWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_Grid.attach(m_CommentsLabel, 0, 2, 1, 1); m_Grid.attach(m_ScrolledWindow, 1, 2, 1, 1); m_ScrolledWindow.set_hexpand(true); m_ScrolledWindow.set_vexpand(true); m_refTextBuffer = Gtk::TextBuffer::create(); m_TextView.set_buffer(m_refTextBuffer); m_VBox.pack_start(m_Statusbar); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::build_main_menu() { //Create actions for menus and toolbars: m_refActionGroup = Gtk::ActionGroup::create(); //File menu: m_refActionGroup->add( Gtk::Action::create("FileMenu", "_File")); m_refActionGroup->add( Gtk::Action::create("New", Gtk::Stock::NEW), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_new)); m_refActionGroup->add( Gtk::Action::create("PageSetup", "Page _Setup"), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_page_setup)); m_refActionGroup->add( Gtk::Action::create("PrintPreview", "Print Preview"), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_print_preview)); m_refActionGroup->add( Gtk::Action::create("Print", Gtk::Stock::PRINT), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_print)); m_refActionGroup->add( Gtk::Action::create("Quit", Gtk::Stock::QUIT), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_quit)); m_refUIManager = Gtk::UIManager::create(); m_refUIManager->insert_action_group(m_refActionGroup); add_accel_group(m_refUIManager->get_accel_group()); //Layout the actions in a menubar and toolbar: Glib::ustring ui_info = "<ui>" " <menubar name='MenuBar'>" " <menu action='FileMenu'>" " <menuitem action='New'/>" " <menuitem action='PageSetup'/>" " <menuitem action='PrintPreview'/>" " <menuitem action='Print'/>" " <separator/>" " <menuitem action='Quit'/>" " </menu>" " </menubar>" " <toolbar name='ToolBar'>" " <toolitem action='New'/>" " <toolitem action='Print'/>" " <separator/>" " <toolitem action='Quit'/>" " </toolbar>" "</ui>"; try { m_refUIManager->add_ui_from_string(ui_info); } catch(const Glib::Error& ex) { std::cerr << "building menus failed: " << ex.what(); } //Get the menubar and toolbar widgets, and add them to a container widget: Gtk::Widget* pMenubar = m_refUIManager->get_widget("/MenuBar"); if(pMenubar) m_VBox.pack_start(*pMenubar, Gtk::PACK_SHRINK); Gtk::Widget* pToolbar = m_refUIManager->get_widget("/ToolBar") ; if(pToolbar) m_VBox.pack_start(*pToolbar, Gtk::PACK_SHRINK); } void ExampleWindow::on_printoperation_status_changed( const Glib::RefPtr<PrintFormOperation>& operation) { Glib::ustring status_msg; if (operation->is_finished()) { status_msg = "Print job completed."; } else { //You could also use get_status(). status_msg = operation->get_status_string(); } m_Statusbar.push(status_msg, m_ContextId); } void ExampleWindow::on_printoperation_done(Gtk::PrintOperationResult result, const Glib::RefPtr<PrintFormOperation>& operation) { //Printing is "done" when the print data is spooled. if (result == Gtk::PRINT_OPERATION_RESULT_ERROR) { Gtk::MessageDialog err_dialog(*this, "Error printing form", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); err_dialog.run(); } else if (result == Gtk::PRINT_OPERATION_RESULT_APPLY) { //Update PrintSettings with the ones used in this PrintOperation: m_refSettings = operation->get_print_settings(); } if (! operation->is_finished()) { //We will connect to the status-changed signal to track status //and update a status bar. In addition, you can, for example, //keep a list of active print operations, or provide a progress dialog. operation->signal_status_changed().connect(sigc::bind(sigc::mem_fun(*this, &ExampleWindow::on_printoperation_status_changed), operation)); } } void ExampleWindow::print_or_preview(Gtk::PrintOperationAction print_action) { //Create a new PrintOperation with our PageSetup and PrintSettings: //(We use our derived PrintOperation class) Glib::RefPtr<PrintFormOperation> print = PrintFormOperation::create(); print->set_name(m_NameEntry.get_text() + " " + m_SurnameEntry.get_text()); print->set_comments(m_refTextBuffer->get_text(false /*Don't include hidden*/)); print->set_track_print_status(); print->set_default_page_setup(m_refPageSetup); print->set_print_settings(m_refSettings); print->signal_done().connect(sigc::bind(sigc::mem_fun(*this, &ExampleWindow::on_printoperation_done), print)); try { print->run(print_action /* print or preview */, *this); } catch (const Gtk::PrintError& ex) { //See documentation for exact Gtk::PrintError error codes. std::cerr << "An error occurred while trying to run a print operation:" << ex.what() << std::endl; } } void ExampleWindow::on_menu_file_new() { //Clear entries and textview: m_NameEntry.set_text(""); m_SurnameEntry.set_text(""); m_refTextBuffer->set_text(""); m_TextView.set_buffer(m_refTextBuffer); } void ExampleWindow::on_menu_file_page_setup() { //Show the page setup dialog, asking it to start with the existing settings: Glib::RefPtr<Gtk::PageSetup> new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, m_refSettings); //Save the chosen page setup dialog for use when printing, previewing, or //showing the page setup dialog again: m_refPageSetup = new_page_setup; } void ExampleWindow::on_menu_file_print_preview() { print_or_preview(Gtk::PRINT_OPERATION_ACTION_PREVIEW); } void ExampleWindow::on_menu_file_print() { print_or_preview(Gtk::PRINT_OPERATION_ACTION_PRINT_DIALOG); } void ExampleWindow::on_menu_file_quit() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Recently Used Documents gtkmm provides an easy way to manage recently used documents. The classes involved in implementing this functionality are RecentManager, RecentChooserDialog, RecentChooserMenu, RecentChooserWidget, RecentAction, and RecentFilter. Each item in the list of recently used files is identified by its URI, and can have associated metadata. The metadata can be used to specify how the file should be displayed, a description of the file, its mime type, which application registered it, whether it's private to the registering application, and several other things. RecentManager RecentManager acts as a database of recently used files. You use this class to register new files, remove files from the list, or look up recently used files. There is one list of recently used files per user. You can create a new RecentManager, but you'll most likely just want to use the default one. You can get a reference to the default RecentManager with get_default(). RecentManager is the model of a model-view pattern, where the view is a class that implements the RecentChooser interface. Adding Items to the List of Recent Files To add a new file to the list of recent documents, in the simplest case, you only need to provide the URI. For example: Glib::RefPtr<Gtk::RecentManager> recent_manager = Gtk::RecentManager::get_default(); recent_manager->add_item(uri); If you want to register a file with metadata, you can pass a RecentManager::Data parameter to add_item(). The metadata that can be set on a particular file item is as follows: app_exec: The command line to be used to launch this resource. This string may contain the "f" and "u" escape characters which will be expanded to the resource file path and URI respectively app_name: The name of the application that registered the resource description: A short description of the resource as a UTF-8 encoded string display_name: The name of the resource to be used for display as a UTF-8 encoded string groups: A list of groups associated with this item. Groups are essentially arbitrary strings associated with a particular resource. They can be thought of as 'categories' (such as "email", "graphics", etc) or tags for the resource. is_private: Whether this resource should be visible only to applications that have registered it or not mime_type: The MIME type of the resource In addition to adding items to the list, you can also look up items from the list and modify or remove items. Looking up Items in the List of Recent Files To look up recently used files, RecentManager provides several functions. To look up a specific item by its URI, you can use the lookup_item() function, which will return a RecentInfo class. If the specified URI did not exist in the list of recent files, lookup_item() throws a RecentManagerError exception. For example: Glib::RefPtr<Gtk::RecentInfo> info; try { info = recent_manager->lookup_item(uri); } catch(const Gtk::RecentManagerError& ex) { std::cerr << "RecentManagerError: " << ex.what() << std::endl; } if (info) { // item was found } A RecentInfo object is essentially an object containing all of the metadata about a single recently-used file. You can use this object to look up any of the properties listed above. If you don't want to look for a specific URI, but instead want to get a list of all recently used items, RecentManager provides the get_items() function. The return value of this function is a std::vector of all recently used files. The following code demonstrates how you might get a list of recently used files: std::vector< Glib::RefPtr<Gtk::RecentInfo> > info_list = recent_manager->get_items(); The maximum age of items in the recently used files list can be set with Gtk::Settings::property_gtk_recent_files_max_age(). Default value: 30 days. Modifying the List of Recent Files There may be times when you need to modify the list of recent files. For instance, if a file is moved or renamed, you may need to update the file's location in the recent files list so that it doesn't point to an incorrect location. You can update an item's location by using move_item(). In addition to changing a file's URI, you can also remove items from the list, either one at a time or by clearing them all at once. The former is accomplished with remove_item(), the latter with purge_items(). The functions move_item(), remove_item() and purge_items() have no effect on the actual files that are referred to by the URIs, they only modify the list of recent files. RecentChooser RecentChooser is an interface that can be implemented by widgets displaying the list of recently used files. gtkmm provides four built-in implementations for choosing recent files: RecentChooserWidget, RecentChooserDialog, RecentChooserMenu, and RecentAction. RecentChooserWidget is a simple widget for displaying a list of recently used files. RecentChooserWidget is the basic building block for RecentChooserDialog, but you can embed it into your user interface if you want to. RecentChooserMenu and RecentAction allow you to list recently used files as a menu. Simple RecentChooserDialog example Shown below is a simple example of how to use the RecentChooserDialog and the RecentAction classes in a program. This simple program has a menubar with a Recent Files Dialog menu item. When you select this menu item, a dialog pops up showing the list of recently used files. If this is the first time you're using a program that uses the Recent Files framework, the dialog may be empty at first. Otherwise it should show the list of recently used documents registered by other applications. After selecting the Recent Files Dialog menu item, you should see something similar to the following window. 源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_menu_file_recent_files_item(); void on_menu_file_recent_files_dialog(); void on_menu_file_quit(); void on_menu_file_new(); //Child widgets: Gtk::Box m_Box; Glib::RefPtr<Gtk::UIManager> m_refUIManager; Glib::RefPtr<Gtk::ActionGroup> m_refActionGroup; Glib::RefPtr<Gtk::RecentAction> m_refRecentAction; Glib::RefPtr<Gtk::RecentManager> m_refRecentManager; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/stock.h> #include <iostream> ExampleWindow::ExampleWindow() : m_Box(Gtk::ORIENTATION_VERTICAL), m_refRecentManager(Gtk::RecentManager::get_default()) { set_title("recent files example"); set_default_size(200, 200); //We can put a MenuBar at the top of the box and other stuff below it. add(m_Box); //Create actions for menus and toolbars: m_refActionGroup = Gtk::ActionGroup::create(); //File menu: m_refActionGroup->add( Gtk::Action::create("FileMenu", "_File") ); m_refActionGroup->add( Gtk::Action::create("FileNew", Gtk::Stock::NEW), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_new)); //A recent-files submenu: m_refRecentAction = Gtk::RecentAction::create("FileRecentFiles", "_Recent Files"); m_refActionGroup->add(m_refRecentAction); //Connect to RecentChooser's item_activated signal //instead of Action's activate signal: m_refRecentAction->signal_item_activated().connect( sigc::mem_fun(*this, &ExampleWindow::on_menu_file_recent_files_item) ); //A menu item to open the recent-files dialog: m_refActionGroup->add( Gtk::Action::create("FileRecentDialog", "Recent Files _Dialog"), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_recent_files_dialog) ); m_refActionGroup->add( Gtk::Action::create("FileQuit", Gtk::Stock::QUIT), sigc::mem_fun(*this, &ExampleWindow::on_menu_file_quit) ); m_refUIManager = Gtk::UIManager::create(); m_refUIManager->insert_action_group(m_refActionGroup); add_accel_group(m_refUIManager->get_accel_group()); //Layout the actions in a menubar and toolbar: Glib::ustring ui_info = "<ui>" " <menubar name='MenuBar'>" " <menu action='FileMenu'>" " <menuitem action='FileNew'/>" " <menuitem action='FileRecentFiles'/>" " <menuitem action='FileRecentDialog'/>" " <separator/>" " <menuitem action='FileQuit'/>" " </menu>" " </menubar>" " <toolbar name='ToolBar'>" " <toolitem action='FileNew'/>" " <toolitem action='FileQuit'/>" " </toolbar>" "</ui>"; try { m_refUIManager->add_ui_from_string(ui_info); } catch(const Glib::Error& ex) { std::cerr << "building menus failed: " << ex.what(); } //Get the menubar and toolbar widgets, and add them to a container widget: Gtk::Widget* pMenubar = m_refUIManager->get_widget("/MenuBar"); if(pMenubar) m_Box.pack_start(*pMenubar, Gtk::PACK_SHRINK); Gtk::Widget* pToolbar = m_refUIManager->get_widget("/ToolBar"); if(pToolbar) m_Box.pack_start(*pToolbar, Gtk::PACK_SHRINK); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_menu_file_new() { std::cout << " New File" << std::endl; } void ExampleWindow::on_menu_file_quit() { hide(); //Closes the main window to stop the app->run(). } void ExampleWindow::on_menu_file_recent_files_item() { std::cout << "URI selected = " << m_refRecentAction->get_current_uri() << std::endl; } void ExampleWindow::on_menu_file_recent_files_dialog() { Gtk::RecentChooserDialog dialog(*this, "Recent Files", m_refRecentManager); dialog.add_button("Select File", Gtk::RESPONSE_OK); dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); const int response = dialog.run(); dialog.hide(); if(response == Gtk::RESPONSE_OK) { std::cout << "URI selected = " << dialog.get_current_uri() << std::endl; } } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); } The constructor for ExampleWindow creates the menu using UIManager (see for more information). It then adds the menu and the toolbar to the window. Filtering Recent Files For any of the RecentChooser classes, if you don't wish to display all of the items in the list of recent files, you can filter the list to show only those that you want. You can filter the list with the help of the RecentFilter class. This class allows you to filter recent files by their name (add_pattern()), their mime type (add_mime_type()), the application that registered them (add_application()), or by a custom filter function (add_custom()). It also provides the ability to filter based on how long ago the file was modified and which groups it belongs to. After you've created and set up the filter to match only the items you want, you can apply a filter to a chooser widget with the RecentChooser::add_filter() function. Plugs and Sockets Overview From time to time, it may be useful to be able to embed a widget from another application within your application. gtkmm allows you to do this with the Gtk::Socket and Gtk::Plug classes. It is not anticipated that very many applications will need this functionality, but in the rare case that you need to display a widget that is running in a completely different process, these classes can be very helpful. The communication between a Socket and a Plug follows the XEmbed protocol. This protocol has also been implemented in other toolkits (e.g. Qt), which allows the same level of integration when embedding a Qt widget in GTK+ or vice versa. The way that Sockets and Plugs work together is through their window ids. Both a Socket and a Plug have IDs that can be retrieved with their get_id() member functions. The use of these IDs will be explained below in . Sockets A Socket is a special kind of container widget that provides the ability to embed widgets from one process into another process in a way that is transparent to the user. Plugs A Plug is a special kind of Window that can be plugged into a Socket. Besides the normal properties and methods of Gtk::Window, a Plug provides a constructor that takes the ID of a Socket, which will automatically embed the Plug into the Socket that matches that ID. Since a Plug is just a special type of Gtk::Window class, you can add containers or widgets to it like you would to any other window. Connecting Plugs and Sockets After a Socket or Plug object is realized, you can obtain its ID with its get_id() function. This ID can then be shared with other processes so that other processes know how to connect to each other. There are two basic strategies that can be used: Create a Socket object in one process and pass the ID of that Socket to another process so that it can create a Plug object by specifying the given Socket ID in its constructor. There is no way to assign a Plug to a particular Socket after creation, so you must pass the Socket ID to the Plug's constructor. Create a Plug independantly from any particular Socket and pass the ID of the Plug to other processes that need to use it. The ID of the Plug can be associated with a particular Socket object using the Socket::add_id() function. This is the approach used in the example below. Plugs and Sockets Example The following is a simple example of using sockets and plugs. The method of communication between processes is deliberately kept very simple: The Plug writes its ID out to a text file named plug.id and the process with the socket reads the ID from this file. In a real program, you may want to use a more sophisticated method of inter-process communication. 源代码 File: socket.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include <fstream> #include <gtkmm.h> #include <gtkmm/socket.h> using namespace std; const char* id_filename = "plug.id"; void plug_added() { cout << "A plug was added" << endl; } bool plug_removed() { cout << "A Plug was removed" << endl; return true; } class MySocketWindow : public Gtk::Window { public: MySocketWindow() { ifstream infile(id_filename); if (infile) { Gtk::Socket* socket = Gtk::manage(new Gtk::Socket()); add(*socket); socket->signal_plug_added().connect(sigc::ptr_fun(plug_added)); socket->signal_plug_removed().connect(sigc::ptr_fun(plug_removed)); ::Window plug_id = 0; infile >> plug_id; infile.close(); socket->add_id(plug_id); } else { Gtk::Label* label = Gtk::manage( new Gtk::Label( "Plug id file not found.\n Make sure plug is running.")); add(*label); set_size_request(150, 50); } show_all(); } }; int main(int argc, char** argv) { // The plug and the socket have different application ids, so they can run // simultaneously. Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example.socket"); MySocketWindow win; app->run(win); return 0; } File: plug.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include <fstream> #include <gtkmm.h> #include <gtkmm/plug.h> #include <glib/gstdio.h> using namespace std; const char* id_filename = "plug.id"; void on_embed() { cout << "I've been embedded." << endl; } class MyPlug : public Gtk::Plug { public: MyPlug() : m_label("I am the plug") { set_size_request(150, 100); add(m_label); signal_embedded().connect(sigc::ptr_fun(on_embed)); show_all_children(); } private: Gtk::Label m_label; }; int main(int argc, char** argv) { // The plug and the socket have different application ids, so they can run // simultaneously. Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug"); MyPlug plug; plug.show(); ofstream out(id_filename); out << plug.get_id(); out.close(); cout << "The window ID is: " << plug.get_id() << endl; app->run(plug); // remove the ID file when the program exits g_remove(id_filename); return 0; } This example creates two executable programs: socket and plug. The idea is that socket has an application window that will embed a widget from the plug program. The way this example is designed, plug must be running first before starting socket. To see the example in action, execute the following commands in order from within the example directory: Start the plug program and send it to the background (or just use a different terminal). $ ./plug & After which you should see something like the following: The window ID is: 69206019 Then start the socket program: $ ./socket After starting socket, you should see the following output in the terminal: I've been embedded. A plug was added The first line of output is from plug, after it has been notified that it has been embedded inside of a Socket. The second line was emitted by socket in response to its plug_added signal. If everything was done as described above, the socket window should look roughly like the following: If for some reason the Socket couldn't attach the Plug, the window would look something like this: Keyboard Events X events differ in some ways from other signals. These differences are described in the X Event signals section in the appendix. Here we will use keyboard events to show how X events can be used in a program. Overview Whenever you press or release a key, an event is emitted. You can connect a signal handler to handle such events. To receive the keyboard events, you must first call the Gtk::Widget::add_events() function with a bit mask of the events you're interested in. The event signal handler will receive an argument that depends on the type of event. For keyboard events it's a GdkEventKey*. As discribed in the appendix, the event signal handler returns a bool value, to indicate that the signal is fully handled (true) or allow event propagation (false). To determine which key was pressed or released, you read the value of GdkEventKey::keyval and compare it with a constant in the <gdk/gdkkeysyms.h> header file. The states of modifier keys (shift, ctrl, etc.) are available as bit-flags in GdkEventKey::state. Here's a simple example: bool on_key_press_or_release_event(GdkEventKey* event) { if (event->type == GDK_KEY_PRESS && event->keyval == GDK_KEY_1 && (event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)) == GDK_MOD1_MASK) { handle_alt_1_press(); // GDK_MOD1_MASK is normally the Alt key return true; } return false; } Gtk::Entry m_entry; // in a class definition // in the class constructor m_entry.signal_key_press_event().connect( sigc::ptr_fun(&on_key_press_or_release_event) ); m_entry.signal_key_release_event().connect( sigc::ptr_fun(&on_key_press_or_release_event) ); m_entry.add_events(Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK); 示例 In this example there are three keyboard shortcuts: Alt+1 selects the first radio button, Alt+2 selects the second one, and the Esc key hides (closes) the window. The default event signal handler is overridden, as described in the Overriding default signal handlers section in the appendix.
Keyboard Events - Simple
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); private: //Override default signal handler: virtual bool on_key_press_event(GdkEventKey* event); Gtk::Grid m_container; Gtk::RadioButton m_first; Gtk::RadioButton m_second; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" ExampleWindow::ExampleWindow() { set_title("Keyboard Events"); set_border_width(10); add(m_container); // Radio buttons: m_first.set_label("First"); m_second.set_label("Second"); Gtk::RadioButton::Group group = m_first.get_group(); m_second.set_group(group); m_first.set_active(); // Main Container: m_container.add(m_first); m_container.add(m_second); // Events. // We override the default event signal handler. add_events(Gdk::KEY_PRESS_MASK); show_all_children(); } bool ExampleWindow::on_key_press_event(GdkEventKey* event) { //GDK_MOD1_MASK -> the 'alt' key(mask) //GDK_KEY_1 -> the '1' key //GDK_KEY_2 -> the '2' key //select the first radio button, when we press alt + 1 if((event->keyval == GDK_KEY_1) && (event->state &(GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)) == GDK_MOD1_MASK) { m_first.set_active(); //returning true, cancels the propagation of the event return true; } else if((event->keyval == GDK_KEY_2) && (event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)) == GDK_MOD1_MASK) { //and the second radio button, when we press alt + 2 m_second.set_active(); return true; } else if(event->keyval == GDK_KEY_Escape) { //close the window, when the 'esc' key is pressed hide(); return true; } //if the event has not been handled, call the base class return Gtk::Window::on_key_press_event(event); } ExampleWindow::~ExampleWindow() { } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Event Propagation Event propagation means that, when an event is emitted on a particular widget, it can be passed to its parent widget (and that widget can pass it to its parent, and so on) and, if the parent has an event handler, that handler will be called. Contrary to other events, keyboard events are first sent to the toplevel window (Gtk::Window), where it will be checked for any keyboard shortcuts that may be set (accelerator keys and mnemonics, used for selecting menu items from the keyboard). After this (and assuming the event wasn't handled), it is sent to the widget which has focus, and the propagation begins from there. The event will propagate until it reaches the top-level widget, or until you stop the propagation by returning true from an event handler. Notice, that after canceling an event, no other function will be called (even if it is from the same widget). 示例 In this example there are three event handlers that are called after Gtk::Window's default event handler, one in the Gtk::Entry, one in the Gtk::Grid and one in the Gtk::Window. In the Gtk::Window, we have also the default handler overridden (on_key_release_event()), and another handler being called before the default handler (windowKeyReleaseBefore()). The purpose of this example is to show the steps the event takes when it is emitted. When you write in the entry, a key release event will be emitted, which will go first to the toplevel window (Gtk::Window), since we have one event handler set to be called before, that's what is called first (windowKeyReleaseBefore()). Then the default handler is called (which we have overridden), and after that the event is sent to the widget that has focus, the Entry in our example and, depending on whether we let it propagate, it can reach the Grid's and the Window's event handlers. If it propagates, the text you're writing will appear in the Label above the Entry.
Keyboard Events - Event Propagation
源代码 File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EVENT_PROPAGATION_H #define GTKMM_EVENT_PROPAGATION_H #include <gtkmm.h> class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); private: //Override default signal handler: virtual bool on_key_release_event(GdkEventKey* event); bool entryKeyRelease(GdkEventKey* event); bool gridKeyRelease(GdkEventKey* event); bool windowKeyReleaseBefore(GdkEventKey* event); bool windowKeyRelease(GdkEventKey* event); Gtk::Grid m_container; Gtk::Label m_label; Gtk::Entry m_entry; Gtk::CheckButton m_checkbutton_can_propagate; }; #endif //GTKMM_EVENT_PROPAGATION_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <iostream> ExampleWindow::ExampleWindow() { add(m_container); set_title("Event Propagation"); set_border_width(10); m_label.set_label("A label"); m_checkbutton_can_propagate.set_label("Can Propagate"); m_checkbutton_can_propagate.set_active(); // Main Container m_container.set_orientation(Gtk::ORIENTATION_VERTICAL); m_container.add(m_label); m_container.add(m_entry); m_container.add(m_checkbutton_can_propagate); // Events add_events(Gdk::KEY_RELEASE_MASK); m_entry.signal_key_release_event().connect( sigc::mem_fun(*this, &ExampleWindow::entryKeyRelease)); m_container.signal_key_release_event().connect( sigc::mem_fun(*this, &ExampleWindow::gridKeyRelease)); // Called before the default event signal handler. signal_key_release_event().connect( sigc::mem_fun(*this, &ExampleWindow::windowKeyReleaseBefore), false); // Called after the default event signal handler. signal_key_release_event().connect( sigc::mem_fun(*this, &ExampleWindow::windowKeyRelease)); show_all_children(); } //By changing the return value we allow, or don't allow, the event to propagate to other elements. bool ExampleWindow::entryKeyRelease(GdkEventKey* /* event */ ) { std::cout << "Entry" << std::endl; if(m_checkbutton_can_propagate.get_active()) { return false; } return true; } bool ExampleWindow::gridKeyRelease(GdkEventKey* /* event */ ) { std::cout << "Grid" << std::endl; //Let it propagate: return false; } bool ExampleWindow::windowKeyReleaseBefore(GdkEventKey* /* event */ ) { std::cout << "Window before" << std::endl; return false; } bool ExampleWindow::on_key_release_event(GdkEventKey* event) { std::cout << "Window overridden" << std::endl; // call base class function (to get the normal behaviour) return Gtk::Window::on_key_release_event(event); } // This will set the entry's text in the label, every time a key is pressed. bool ExampleWindow::windowKeyRelease(GdkEventKey* /* event */ ) { std::cout << "Window after"; //checking if the entry is on focus, otherwise the label would get changed by pressing keys //on the window (when the entry is not on focus), even if m_checkbutton_can_propagate wasn't active if(m_entry.has_focus()) { m_label.set_text(m_entry.get_text()); std::cout << ", " << m_entry.get_text(); } std::cout << std::endl; return true; } ExampleWindow::~ExampleWindow() { } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Timeouts, I/O and Idle Functions Timeouts You may be wondering how to make gtkmm do useful work while it's idling along. Happily, you have several options. Using the following methods you can create a timeout method that will be called every few milliseconds. sigc::connection Glib::SignalTimeout::connect(const sigc::slot<bool>& slot, unsigned int interval, int priority = Glib::PRIORITY_DEFAULT); The first argument is a slot you wish to have called when the timeout occurs. The second argument is the number of milliseconds between calls to that method. You receive a sigc::connection object that can be used to deactivate the connection using its disconnect() method: my_connection.disconnect(); Another way of destroying the connection is your signal handler. It has to be of the type sigc::slot<bool>. As you see from the definition your signal handler has to return a value of the type bool. A definition of a sample method might look like this: bool MyCallback() { std::cout << "Hello World!\n" << std::endl; return true; } You can stop the timeout method by returning false from your signal handler. Therefore, if you want your method to be called repeatedly, it should return true. Here's an example of this technique: 源代码 File: timerexample.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_TIMEREXAMPLE_H #define GTKMM_EXAMPLE_TIMEREXAMPLE_H #include <gtkmm.h> #include <iostream> #include <map> class TimerExample : public Gtk::Window { public: TimerExample(); protected: // signal handlers void on_button_add_timer(); void on_button_delete_timer(); void on_button_quit(); // This is the callback function the timeout will call bool on_timeout(int timer_number); // Member data: Gtk::Box m_Box; Gtk::Button m_ButtonAddTimer, m_ButtonDeleteTimer, m_ButtonQuit; // Keep track of the timers being added: int m_timer_number; // These two constants are initialized in the constructor's member initializer: const int count_value; const int timeout_value; // STL map for storing our connections std::map<int, sigc::connection> m_timers; // STL map for storing our timer values. // Each timer counts back from COUNT_VALUE to 0 and is removed when it reaches 0 std::map<int, int> m_counters; }; #endif // GTKMM_EXAMPLE_TIMEREXAMPLE_H File: timerexample.cc (For use with gtkmm 3, not gtkmm 2) #include "timerexample.h" TimerExample::TimerExample() : m_Box(Gtk::ORIENTATION_HORIZONTAL, 10), // use Gtk::Stock wherever possible for buttons, etc. m_ButtonAddTimer(Gtk::Stock::ADD), m_ButtonDeleteTimer(Gtk::Stock::REMOVE), m_ButtonQuit(Gtk::Stock::QUIT), m_timer_number(0), // start numbering the timers at 0 count_value(5), // each timer will count down 5 times before disconnecting timeout_value(1500) // 1500 ms = 1.5 seconds { set_border_width(10); add(m_Box); m_Box.pack_start(m_ButtonAddTimer); m_Box.pack_start(m_ButtonDeleteTimer); m_Box.pack_start(m_ButtonQuit); // Connect the three buttons: m_ButtonQuit.signal_clicked().connect(sigc::mem_fun(*this, &TimerExample::on_button_quit)); m_ButtonAddTimer.signal_clicked().connect(sigc::mem_fun(*this, &TimerExample::on_button_add_timer)); m_ButtonDeleteTimer.signal_clicked().connect(sigc::mem_fun(*this, &TimerExample::on_button_delete_timer)); show_all_children(); } void TimerExample::on_button_quit() { hide(); } void TimerExample::on_button_add_timer() { // Creation of a new object prevents long lines and shows us a little // how slots work. We have 0 parameters and bool as a return value // after calling sigc::bind. sigc::slot<bool> my_slot = sigc::bind(sigc::mem_fun(*this, &TimerExample::on_timeout), m_timer_number); // This is where we connect the slot to the Glib::signal_timeout() sigc::connection conn = Glib::signal_timeout().connect(my_slot, timeout_value); // Remember the connection: m_timers[m_timer_number] = conn; // Initialize timer count: m_counters[m_timer_number] = count_value + 1; // Print some info to the console for the user: std::cout << "added timeout " << m_timer_number++ << std::endl; } void TimerExample::on_button_delete_timer() { // any timers? if(m_timers.empty()) { // no timers left std::cout << "Sorry, there are no timers left." << std::endl; } else { // get the number of the first timer int timer_number = m_timers.begin()->first; // Give some info to the user: std::cout << "manually disconnecting timer " << timer_number << std::endl; // Remove the entry in the counter values m_counters.erase(timer_number); // Diconnect the signal handler: m_timers[timer_number].disconnect(); // Forget the connection: m_timers.erase(timer_number); } } bool TimerExample::on_timeout(int timer_number) { // Print the timer: std::cout << "This is timer " << timer_number; // decrement and check counter value if (--m_counters[timer_number] == 0) { std::cout << " being disconnected" << std::endl; // delete the counter entry in the STL MAP m_counters.erase(timer_number); // delete the connection entry in the STL MAP m_timers.erase(timer_number); // Note that we do not have to explicitly call disconnect() on the // connection since Gtk::Main does this for us when we return false. return false; } // Print the timer value std::cout << " - " << m_counters[timer_number] << "/" << count_value << std::endl; // Keep going (do not disconnect yet): return true; } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "timerexample.h" #include <gtkmm/application.h> int main (int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); TimerExample example; return app->run(example); } Monitoring I/O A nifty feature of Glib (one of the libraries underlying gtkmm) is the ability to have it check for data on a file descriptor for you. This is especially useful for networking applications. The following method is used to do this: sigc::connection Glib::SignalInput::connect(const sigc::slot<bool,Glib::IOCondition>& slot, int fd, Glib::IOCondition condition, int priority = Glib::PRIORITY_DEFAULT); The first argument is a slot you wish to have called when then the specified event (see argument 3) occurs on the file descriptor you specify using argument two. Argument three may be one or more (using |) of: Glib::IO_IN - Call your method when there is data ready for reading on your file descriptor. Glib::IO_OUT - Call your method when the file descriptor is ready for writing. Glib::IO_PRI - Call your method when the file descriptor has urgent data to be read. Glib::IO_ERR - Call your method when an error has occurred on the file descriptor. Glib::IO_HUP - Call your method when hung up (the connection has been broken usually for pipes and sockets). The return value is a sigc::connection that may be used to stop monitoring this file descriptor using its disconnect() method. The slot signal handler should be declared as follows: bool input_callback(Glib::IOCondition condition); where condition is as specified above. As usual the slot is created with sigc::mem_fun() (for a member method of an object.), or sigc::ptr_fun() (for a function). A little example follows. To use the example just execute it from a terminal; it doesn't create a window. It will create a pipe named testfifo in the current directory. Then start another shell and execute echo "Hello" > testfifo. The example will print each line you enter until you execute echo "Q" > testfifo. 源代码 File: main.cc (For use with gtkmm 3, not gtkmm 2) #include <build/config.h> #include <gtkmm/application.h> #include <glibmm/main.h> #include <glibmm/iochannel.h> #include <fcntl.h> #include <iostream> #include <unistd.h> //The SUN Forte compiler puts F_OK here. //The SUN Forte compiler needs these for mkfifo: #include <sys/types.h> #include <sys/stat.h> Glib::RefPtr<Gtk::Application> app; int read_fd; Glib::RefPtr<Glib::IOChannel> iochannel; /* send to the fifo with: echo "Hello" > testfifo quit the program with: echo "Q" > testfifo */ // this will be our signal handler for read operations // it will print out the message sent to the fifo // and quit the program if the message was 'Q'. bool MyCallback(Glib::IOCondition io_condition) { if ((io_condition & Glib::IO_IN) == 0) { std::cerr << "Invalid fifo response" << std::endl; } else { Glib::ustring buf; iochannel->read_line(buf); std::cout << buf; if (buf == "Q\n") app->quit(); } return true; } int main(int argc, char *argv[]) { app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); if (access("testfifo", F_OK) == -1) { // fifo doesn't exit - create it #ifdef HAVE_MKFIFO if (mkfifo("testfifo", 0666) != 0) { std::cerr << "error creating fifo" << std::endl; return -1; } #else std::cerr << "error creating fifo: This platform does not have mkfifo()" << std::endl; #endif //HAVE_MKFIFO } read_fd = open("testfifo", O_RDONLY); if (read_fd == -1) { std::cerr << "error opening fifo" << std::endl; return -1; } // connect the signal handler Glib::signal_io().connect(sigc::ptr_fun(MyCallback), read_fd, Glib::IO_IN); // Creates a iochannel from the file descriptor iochannel = Glib::IOChannel::create_from_fd(read_fd); // and last but not least - run the application main loop app->run(); // now remove the temporary fifo if(unlink("testfifo")) std::cerr << "error removing fifo" << std::endl; return 0; } Idle Functions If you want to specify a method that gets called when nothing else is happening, use the following: sigc::connection Glib::SignalIdle::connect(const sigc::slot<bool>& slot, int priority = Glib::PRIORITY_DEFAULT_IDLE); This causes gtkmm to call the specified method whenever nothing else is happening. You can add a priority (lower numbers are higher priorities). There are two ways to remove the signal handler: calling disconnect() on the sigc::connection object, or returning false in the signal handler, which should be declared as follows: bool idleFunc(); Since this is very similar to the methods above this explanation should be sufficient to understand what's going on. However, here's a little example: 源代码 File: idleexample.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_IDLEEXAMPLE_H #define GTKMM_EXAMPLE_IDLEEXAMPLE_H #include <gtkmm.h> #include <iostream> class IdleExample : public Gtk::Window { public: IdleExample(); protected: // Signal Handlers: bool on_timer(); bool on_idle(); void on_button_clicked(); // Member data: Gtk::Box m_Box; Gtk::Button m_ButtonQuit; Gtk::ProgressBar m_ProgressBar_c; Gtk::ProgressBar m_ProgressBar_d; }; #endif // GTKMM_EXAMPLE_IDLEEXAMPLE_H File: idleexample.cc (For use with gtkmm 3, not gtkmm 2) #include "idleexample.h" IdleExample::IdleExample() : m_Box(Gtk::ORIENTATION_VERTICAL, 5), m_ButtonQuit(Gtk::Stock::QUIT) { set_border_width(5); // Put buttons into container // Adding a few widgets: add(m_Box); m_Box.pack_start( *Gtk::manage(new Gtk::Label("Formatting Windows drive C:"))); m_Box.pack_start( *Gtk::manage(new Gtk::Label("100 MB")) ); m_Box.pack_start(m_ProgressBar_c); m_Box.pack_start( *Gtk::manage(new Gtk::Label("")) ); m_Box.pack_start( *Gtk::manage(new Gtk::Label("Formatting Windows drive D:"))); m_Box.pack_start( *Gtk::manage(new Gtk::Label("5000 MB")) ); m_Box.pack_start(m_ProgressBar_d); Gtk::Box* hbox = Gtk::manage( new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL,10)); m_Box.pack_start(*hbox); hbox->pack_start(m_ButtonQuit, Gtk::PACK_EXPAND_PADDING); // Connect the signal handlers: m_ButtonQuit.signal_clicked().connect( sigc::mem_fun(*this, &IdleExample::on_button_clicked) ); // formatting drive c in timeout signal handler - called once every 50ms Glib::signal_timeout().connect( sigc::mem_fun(*this, &IdleExample::on_timer), 50 ); // formatting drive d in idle signal handler - called as quickly as possible Glib::signal_idle().connect( sigc::mem_fun(*this, &IdleExample::on_idle) ); show_all_children(); } void IdleExample::on_button_clicked() { hide(); } // this timer callback function is executed once every 50ms (set in connection // above). Use timeouts when speed is not critical. (ie periodically updating // something). bool IdleExample::on_timer() { double value = m_ProgressBar_c.get_fraction(); // Update progressbar 1/500th each time: m_ProgressBar_c.set_fraction(value + 0.002); return value < 0.99; // return false when done } // This idle callback function is executed as often as possible, hence it is // ideal for processing intensive tasks. bool IdleExample::on_idle() { double value = m_ProgressBar_d.get_fraction(); // Update progressbar 1/5000th each time: m_ProgressBar_d.set_fraction(value + 0.0002); return value < 0.99; // return false when done } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "idleexample.h" #include <gtkmm/application.h> int main (int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); IdleExample example; return app->run(example); } This example points out the difference of idle and timeout methods a little. If you need methods that are called periodically, and speed is not very important, then you want timeout methods. If you want methods that are called as often as possible (like calculating a fractal in background), then use idle methods. Try executing the example and increasing the system load. The upper progress bar will increase steadily; the lower one will slow down. Memory management 组件 Normal C++ memory management gtkmm allows the programmer to control the lifetime (that is, the construction and destruction) of any widget in the same manner as any other C++ object. This flexibility allows you to use new and delete to create and destroy objects dynamically or to use regular class members (that are destroyed automatically when the class is destroyed) or to use local instances (that are destroyed when the instance goes out of scope). This flexibility is not present in some C++ GUI toolkits, which restrict the programmer to only a subset of C++'s memory management features. Here are some examples of normal C++ memory management: Class Scope widgets If a programmer does not need dynamic memory allocation, automatic widgets in class scope may be used. One advantage of automatic widgets in class scope is that memory management is grouped in one place. The programmer does not risk memory leaks from failing to delete a widget. The primary disadvantage of using class scope widgets is revealing the class implementation rather than the class interface in the class header. #include <gtkmm/button.h> #include <gtkmm/window.h> class Foo : public Gtk::Window { private: Gtk::Button theButton; // will be destroyed when the Foo object is destroyed }; Function scope widgets If a programmer does not need a class scope widget, a function scope widget may also be used. The advantages to function scope over class scope are the increased data hiding and reduced dependencies. { Gtk::Button aButton; aButton.show(); ... app->run(); } Dynamic allocation with new and delete Although, in most cases, the programmer will prefer to allow containers to automatically destroy their children using Gtk::manage() (see below), the programmer is not required to use Gtk::manage(). The traditional new and delete operators may also be used. Gtk::Button* pButton = new Gtk::Button("Test"); // do something useful with pButton delete pButton; Here, the programmer deletes pButton to prevent a memory leak. Managed Widgets Alternatively, you can let a widget's container control when the widget is destroyed. In most cases, you want a widget to last only as long as the container it is in. To delegate the management of a widget's lifetime to its container, first create it with Gtk::manage() and pack it into its container with Gtk::Container::add(), Gtk::Box::pack_start(), or a similar method. Now the widget will be destroyed whenever its container is destroyed. Dynamic allocation with manage() and add() gtkmm provides the manage() function and add() methods to create and destroy widgets. Every widget except a top-level window must be added or packed into a container in order to be displayed. The manage() function marks a widget so that when the widget is added to a container, the container becomes responsible for deleting the widget. MyContainer::MyContainer() { Gtk::Button* pButton = Gtk::manage(new Gtk::Button("Test")); add(*pButton); //add *pButton to MyContainer } Now, when objects of type MyContainer are destroyed, the button will also be deleted. It is no longer necessary to delete pButton to free the button's memory; its deletion has been delegated to the MyContainer object. Of course, a top-level container will not be added to another container. The programmer is responsible for destroying the top-level container using one of the traditional C++ techniques. For instance, your top-level Window might just be an instance in your main() function. Shared resources Some objects, such as Gdk::Pixbufs and Pango::Fonts, are obtained from a shared store. Therefore you cannot instantiate your own instances. These classes typically inherit from Glib::Object. Rather than requiring you to reference and unreference these objects, gtkmm uses the Glib::RefPtr<> smartpointer. Cairomm has its own smartpointer, Cairo::RefPtr<>. Objects such as Gdk::Pixbuf can only be instantiated with a create() function. For instance, Glib::RefPtr<Gdk::Pixbuf> pixbuf = Gdk::Pixbuf::create_from_file(filename); You have no way of getting a bare Gdk::Pixbuf. In the example, pixbuf is a smart pointer, so you can do this, much like a normal pointer: int width = 0; if(pixbuf) { width = pixbuf->get_width(); } When pixbuf goes out of scope an unref() will happen in the background and you don't need to worry about it anymore. There's no new so there's no delete. If you copy a RefPtr, for instance Glib::RefPtr<Gdk::Pixbuf> pixbuf2 = pixbuf; , or if you pass it as a method argument or a return type, then RefPtr will do any necessary referencing to ensure that the instance will not be destroyed until the last RefPtr has gone out of scope. See the appendix for detailed information about RefPtr. If you wish to learn more about smartpointers, you might look in these books: Bjarne Stroustrup, "The C++ Programming Language" - section 14.4.2 Nicolai M. Josuttis, "The C++ Standard Library" - section 4.2 Glade and Gtk::Builder Although you can use C++ code to instantiate and arrange widgets, this can soon become tedious and repetitive. And it requires a recompilation to show changes. The Glade application allows you to layout widgets on screen and then save an XML description of the arrangement. Your application can then use the Gtk::Builder API to load that XML file at runtime and obtain a pointer to specifically named widget instances. This has the following advantages: Less C++ code is required. UI changes can be seen more quickly, so UIs are able to improve. Designers without programming skills can create and edit UIs. You still need C++ code to deal with User Interface changes triggered by user actions, but using Gtk::Builder for the widget layout allows you to focus on implementing that functionality. Loading the .glade file Gtk::Builder must be used via a Glib::RefPtr. Like all such classes, you need to use a create() method to instantiate it. For instance, Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("basic.glade"); This will instantiate the windows defined in the .glade file, though they will not be shown immediately unless you have specified that via the Properties window in Glade. To instantiate just one window, or just one of the child widgets, you can specify the name of a widget as the second parameter. For instance, Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("basic.glade", "treeview_products"); Accessing widgets To access a widget, for instance to show() a dialog, use the get_widget() method, providing the widget's name. This name should be specified in the Glade Properties window. If the widget could not be found, or is of the wrong type, then the pointer will be set to 0. Gtk::Dialog* pDialog = 0; builder->get_widget("DialogBasic", pDialog); Gtk::Builder checks for a null pointer, and checks that the widget is of the expected type, and will show warnings on the command line about these. Remember that you are not instantiating a widget with get_widget(), you are just obtaining a pointer to one that already exists. You will always receive a pointer to the same instance when you call get_widget() on the same Gtk::Builder, with the same widget name. The widgets are instantiated during Gtk::Builder::create_from_file(). get_widget() returns child widgets that are manage()ed (see the Memory Management chapter), so they will be deleted when their parent container is deleted. So, if you get only a child widget from Gtk::Builder, instead of a whole window, then you must either put it in a Container or delete it. Windows (such as Dialogs) cannot be managed because they have no parent container, so you must delete them at some point. 示例 This simple example shows how to load a Glade file at runtime and access the widgets with Gtk::Builder. 源代码 File: main.cc (For use with gtkmm 3, not gtkmm 2) #include <gtkmm.h> #include <iostream> Gtk::Dialog* pDialog = 0; static void on_button_clicked() { if(pDialog) pDialog->hide(); //hide() will cause main::run() to end. } int main (int argc, char **argv) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); //Load the GtkBuilder file and instantiate its widgets: Glib::RefPtr<Gtk::Builder> refBuilder = Gtk::Builder::create(); try { refBuilder->add_from_file("basic.glade"); } catch(const Glib::FileError& ex) { std::cerr << "FileError: " << ex.what() << std::endl; return 1; } catch(const Glib::MarkupError& ex) { std::cerr << "MarkupError: " << ex.what() << std::endl; return 1; } catch(const Gtk::BuilderError& ex) { std::cerr << "BuilderError: " << ex.what() << std::endl; return 1; } //Get the GtkBuilder-instantiated Dialog: refBuilder->get_widget("DialogBasic", pDialog); if(pDialog) { //Get the GtkBuilder-instantiated Button, and connect a signal handler: Gtk::Button* pButton = 0; refBuilder->get_widget("quit_button", pButton); if(pButton) { pButton->signal_clicked().connect( sigc::ptr_fun(on_button_clicked) ); } app->run(*pDialog); } delete pDialog; return 0; } Using derived widgets You can use Glade to layout your own custom widgets derived from gtkmm widget classes. This keeps your code organized and encapsulated. Of course you won't see the exact appearance and properties of your derived widget in Glade, but you can specify its location and child widgets and the properties of its gtkmm base class. Use Gtk::Builder::get_widget_derived() like so: DerivedDialog* pDialog = 0; builder->get_widget_derived("DialogBasic", pDialog); Your derived class must have a constructor that takes a pointer to the underlying C type, and the Gtk::Builder instance. All relevant classes of gtkmm typedef their underlying C type as BaseObjectType (Gtk::Dialog typedefs BaseObjectType as GtkDialog, for instance). You must call the base class's constructor in the initialization list, providing the C pointer. For instance, DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder) : Gtk::Dialog(cobject) { } You could then encapsulate the manipulation of the child widgets in the constructor of the derived class, maybe using get_widget() or get_widget_derived() again. For instance, DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder) : Gtk::Dialog(cobject), m_builder(builder), m_pButton(0) { //Get the Glade-instantiated Button, and connect a signal handler: m_builder->get_widget("quit_button", m_pButton); if(m_pButton) { m_pButton->signal_clicked().connect( sigc::mem_fun(*this, &DerivedDialog::on_button_quit) ); } } 示例 This example shows how to load a Glade file at runtime and access the widgets via a derived class. 源代码 File: deriveddialog.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_DERIVED_DIALOG_H #define GTKMM_EXAMPLE_DERIVED_DIALOG_H #include <gtkmm.h> class DerivedDialog : public Gtk::Dialog { public: DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& refGlade); virtual ~DerivedDialog(); protected: //Signal handlers: void on_button_quit(); Glib::RefPtr<Gtk::Builder> m_refGlade; Gtk::Button* m_pButton; }; #endif //GTKMM_EXAMPLE_DERIVED_WINDOW_H File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "deriveddialog.h" #include <iostream> int main (int argc, char **argv) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); //Load the Glade file and instiate its widgets: Glib::RefPtr<Gtk::Builder> refBuilder = Gtk::Builder::create(); try { refBuilder->add_from_file("derived.glade"); } catch(const Glib::FileError& ex) { std::cerr << "FileError: " << ex.what() << std::endl; return 1; } catch(const Glib::MarkupError& ex) { std::cerr << "MarkupError: " << ex.what() << std::endl; return 1; } catch(const Gtk::BuilderError& ex) { std::cerr << "BuilderError: " << ex.what() << std::endl; return 1; } //Get the GtkBuilder-instantiated dialog:: DerivedDialog* pDialog = 0; refBuilder->get_widget_derived("DialogDerived", pDialog); if(pDialog) { //Start: app->run(*pDialog); } delete pDialog; return 0; } File: deriveddialog.cc (For use with gtkmm 3, not gtkmm 2) #include "deriveddialog.h" DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& refGlade) : Gtk::Dialog(cobject), m_refGlade(refGlade), m_pButton(0) { //Get the Glade-instantiated Button, and connect a signal handler: m_refGlade->get_widget("quit_button", m_pButton); if(m_pButton) { m_pButton->signal_clicked().connect( sigc::mem_fun(*this, &DerivedDialog::on_button_quit) ); } } DerivedDialog::~DerivedDialog() { } void DerivedDialog::on_button_quit() { hide(); //hide() will cause main::run() to end. } Internationalization and Localization gtkmm applications can easily support multiple languages, including non-European languages such as Chinese and right-to-left languages such as Arabic. An appropriately-written and translated gtkmm application will use the appropriate language at runtime based on the user's environment. You might not anticipate the need to support additional languages, but you can never rule it out. And it's easier to develop the application properly in the first place rather than retrofitting later. The process of writing source code that allows for translation is called internationalization, often abbreviated to i18n. The Localization process, sometimes abbreviated as l10n, provides translated text for other languages, based on that source code. The main activity in the internationalization process is finding strings seen by users and marking them for translation. You do not need to do it all at once - if you set up the necessary project infrastructure correctly then your application will work normally regardless of how many strings you've covered. String literals should be typed in the source code in English, but surrounded by a macro. The gettext (or intltool) utility can then extract the marked strings for translation, and substitute the translated text at runtime. Preparing your project In the instructions below we will assume that you will not be using gettext directly, but intltool, which was written specifically for GNOME. intltool uses gettext(), which extracts strings from source code, but intltool can also combine strings from other files, for example from desktop menu details, and GUI resource files such as Glade files, into standard gettext .pot/.po files. We also assume that you are using autotools (e.g. automake and autoconf) to build your project, and that you are using ./autogen.sh from gnome-common, which, among other things, takes care of some intltool initialization. Create a sub-directory named po in your project's root directory. This directory will eventually contain all of your translations. Within it, create a file named LINGUAS and a file named POTFILES.in. It is common practice to also create a ChangeLog file in the po directory so that translators can keep track of translation changes. LINGUAS contains an alphabetically sorted list of codes identifying the languages for which your program is translated (comment lines starting with a # are ignored). Each language code listed in the LINGUAS file must have a corresponding .po file. So, if your program has German and Japanese translations, your LINGUAS file would look like this: # keep this file sorted alphabetically, one language code per line de ja (In addition, you'd have the files ja.po and de.po in your po directory which contain the German and Japanese translations, respectively.) POTFILES.in is a list of paths to all files which contain strings marked up for translation, starting from the project root directory. So for example, if your project sources were located in a subdirectory named src, and you had two files that contained strings that should be translated, your POTFILES.in file might look like this: src/main.cc src/other.cc If you are using gettext directly, you can only mark strings for translation if they are in source code file. However, if you use intltool, you can mark strings for translation in a variety of other file formats, including Glade UI files, xml, .desktop files and several more. So, if you have designed some of the application UI in Glade then also add your .glade files to the list in POTFILES.in. Now that there is a place to put your translations, you need to initialize intltool and gettext. Add the following code to your configure.ac, substituting 'programname' with the name of your program: IT_PROG_INTLTOOL([0.35.0]) GETTEXT_PACKAGE=programname AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [The domain to use with gettext]) AM_GLIB_GNU_GETTEXT PROGRAMNAME_LOCALEDIR=[${datadir}/locale] AC_SUBST(PROGRAMNAME_LOCALEDIR) This PROGRAMNAME_LOCALEDIR variable will be used later in the Makefile.am file, to define a macro that will be used when you initialize gettext in your source code. In the top-level Makefile.am: Add po to the SUBDIRS variable. Without this, your translations won't get built and installed when you build the program Define INTLTOOL_FILES as: INTLTOOL_FILES = intltool-extract.in \ intltool-merge.in \ intltool-update.in Add INTLTOOL_FILES to the EXTRA_DIST list of files. This ensures that when you do a make dist, these commands will be included in the source tarball. Update your DISTCLEANFILES: DISTCLEANFILES = ... intltool-extract \ intltool-merge \ intltool-update \ po/.intltool-merge-cache In your src/Makefile.am, update your AM_CPPFLAGS to add the following preprocessor macro definition: AM_CPPFLAGS = ... -DPROGRAMNAME_LOCALEDIR=\"${PROGRAMNAME_LOCALEDIR}\" This macro will be used when you initialize gettext in your source code. Marking strings for translation String literals should be typed in the source code in English, but they should be surrounded by a call to the gettext() function. These strings will be extracted for translation and the translations may be used at runtime instead of the original English strings. The GNU gettext package allows you to mark strings in source code, extract those strings for translation, and use the translated strings in your application. However, Glib defines gettext() support macros which are shorter wrappers in an easy-to-use form. To use these macros, include <glibmm/i18n.h>, and then, for example, substitute: display_message("Getting ready for i18n."); with: display_message(_("Getting ready for i18n.")); For reference, it is possible to generate a file which contains all strings which appear in your code, even if they are not marked for translation, together with file name and line number references. To generate such a file named my-strings, execute the following command, within the source code directory: xgettext -a -o my-strings --omit-header *.cc *.h Finally, to let you program use the translation for the current locale, add this code to the beginning of your main.cc file, to initialize gettext. bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); How gettext works intltool / xgettext script extracts the strings and puts them in a mypackage.pot file. The translators of your application create their translations by first copying this .pot file to a localename.po file. A locale identifies a language and an encoding for that language, including date and numerical formats. Later, when the text in your source code has changed, the msmerge script is used to update the localename.po files from the regenerated .pot file. At install time, the .po files are converted to a binary format (with the extension .mo) and placed in a system-wide directory for locale files, for example /usr/share/locale/. When the application runs, the gettext library checks the system-wide directory to see if there is a .mo file for the user's locale environment (you can set the locale with, for instance, "export LANG=de_DE.UTF-8" from a bash console). Later, when the program reaches a gettext call, it looks for a translation of a particular string. If none is found, the original string is used. Testing and adding translations To convince yourself that you've done well, you may wish to add a translation for a new locale. In order to do that, go to the po subdirectory of your project and execute the following command: intltool-update --pot That will create a file named programname.pot. Now copy that file to languagecode.po, such as de.po or hu.po. Also add that language code to LINGUAS. The .po file contains a header and a list of English strings, with space for the translated strings to be entered. Make sure you set the encoding of the .po file (specified in the header, but also as content) to UTF-8. It's possible that certain strings will be marked as fuzzy in the .po file. These translations will not substitute the original string. To make them appear, simply remove the fuzzy tag. Resources More information about what lies behind the internationalization and localization process is presented and demonstrated in: Internationalizing GNOME applications Intltool README How to use Git for GNOME translators gettext manual gtkmm_hello example package gnomemm_hello example package Expecting UTF8 A properly internationalized application will not make assumptions about the number of bytes in a character. That means that you shouldn't use pointer arithmetic to step through the characters in a string, and it means you shouldn't use std::string or standard C functions such as strlen() because they make the same assumption. However, you probably already avoid bare char* arrays and pointer arithmetic by using std::string, so you just need to start using Glib::ustring instead. See the Basics chapter about Glib::ustring. Glib::ustring and std::iostreams Unfortunately, the integration with the standard iostreams is not completely foolproof. gtkmm converts Glib::ustrings to a locale-specific encoding (which usually is not UTF-8) if you output them to an ostream with operator<<. Likewise, retrieving Glib::ustrings from istream with operator>> causes a conversion in the opposite direction. But this scheme breaks down if you go through a std::string, e.g. by inputting text from a stream to a std::string and then implicitly converting it to a Glib::ustring. If the string contained non-ASCII characters and the current locale is not UTF-8 encoded, the result is a corrupted Glib::ustring. You can work around this with a manual conversion. For instance, to retrieve the std::string from a ostringstream: std::ostringstream output; output.imbue(std::locale("")); // use the user's locale for this stream output << percentage << " % done"; label->set_text(Glib::locale_to_utf8(output.str())); Pitfalls There are a few common mistakes that you would discover eventually yourself. But this section might help you to avoid them. Same strings, different semantics Sometimes two english strings are identical but have different meanings in different contexts, so they would probably not be identical when translated. Since the English strings are used as look-up keys, this causes problems. In these cases, you should add extra characters to the strings. For instance, use "jumps[noun]" and "jumps[verb]" instead of just "jumps" and strip them again outside the gettext call. If you add extra characters you should also add a comment for the translators before the gettext call. Such comments will be shown in the .po files. For instance: // note to translators: don't translate the "[noun]" part - it is // just here to distinguish the string from another "jumps" string text = strip(gettext("jumps[noun]"), "[noun]"); Composition of strings C programmers use sprintf() to compose and concatenate strings. C++ favours streams, but unfortunately, this approach makes translation difficult, because each fragment of text is translated separately, without allowing the translators to rearrange them according to the grammar of the language. For instance, this code would be problematic: std::cout << _("Current amount: ") << amount << _(" Future: ") << future << std::endl; label.set_text(_("Really delete ") + filename + _(" now?")); So you should either avoid this situation or use Glib::ustring::compose() which supports syntax such as: std::cout << Glib::ustring::compose( _("Current amount: %1 Future: %2"), amount, future) << std::endl; label.set_text(Glib::ustring::compose(_("Really delete %1 now?"), filename)); Assuming the displayed size of strings You never know how much space a string will take on screen when translated. It might very possibly be twice the size of the original English string. Luckily, most gtkmm widgets will expand at runtime to the required size. Unusual words You should avoid cryptic abbreviations, slang, or jargon. They are usually difficult to translate, and are often difficult for even native speakers to understand. For instance, prefer "application" to "app" Using non-ASCII characters in strings Currently, gettext does not support non-ASCII characters (i.e. any characters with a code above 127) in source code. For instance, you cannot use the copyright sign (©). To work around this, you could write a comment in the source code just before the string, telling the translators to use the special character if it is available in their languages. For english, you could then make an American English en_US.po translation which used that special character. Getting help with translations If your program is free software, there is a whole GNOME subproject devoted to helping you make translations, the GNOME Translation Project. The way it works is that you upload your source code to a git repository where translators can access it, then contact the gnome-i18n mailing list and ask to have your program added to the list of modules to translate. Then you make sure you update the file POTFILES.in in the po/ subdirectory (intltool-update -M can help with this) so that the translators always access updated myprogram.pot files, and simply freeze the strings at least a couple of days before you make a new release, announcing it on gnome-i18n. Depending on the number of strings your program contains and how popular it is, the translations will then start to tick in as languagename.po files. Note that most language teams only consist of 1-3 persons, so if your program contains a lot of strings, it might last a while before anyone has the time to look at it. Also, most translators do not want to waste their time (translating is a very time-consuming task) so if they do not assess your project as being really serious (in the sense that it is polished and being maintained) they may decide to spend their time on some other project. Custom Widgets gtkmm makes it very easy to derive new widgets by inheriting from an existing widget class, either by deriving from a container and adding child widgets, or by deriving from a single-item widget, and changing its behaviour. But you might occasionally find that no suitable starting point already exists. In this case, you can implement a widget from scratch. Custom Containers When deriving from Gtk::Container, you should override the following virtual methods: get_request_mode_vfunc(): Return what Gtk::SizeRequestMode is preferred by the container. get_preferred_width_vfunc(): Calculate the minimum and natural width of the container. get_preferred_height_vfunc(): Calculate the minimum and natural height of the container. get_preferred_width_for_height_vfunc(): Calculate the minimum and natural width of the container, if it would be given the specified height. get_preferred_height_for_width_vfunc(): Calculate the minimum and natural height of the container, if it would be given the specified width. on_size_allocate(): Position the child widgets, given the height and width that the container has actually been given. forall_vfunc(): Call the same callback for each of the children. on_add(): Add a child widget to the container. on_remove(): Remove a child widget from the container. child_type_vfunc(): Return what type of child can be added. The get_request_mode_vfunc(), get_preferred_width_vfunc(), get_preferred_height_vfunc(), get_preferred_width_for_height_vfunc(), get_preferred_height_for_width_vfunc(), and on_size_allocate() virtual methods control the layout of the child widgets. For instance, if your container has 2 child widgets, with one below the other, your get_request_mode_vfunc() might request height-for-width layout. Then your get_preferred_width_vfunc() might report the maximum of the widths of the child widgets, and get_preferred_height_for_width_vfunc() might report the sum of their heights. If you want padding between the child widgets then you would add that to the width and height too. Your widget's container will use this result to ensure that your widget gets enough space, and not less. By examining each widget's parent, and its parent, this logic will eventually decide the size of the top-level window. You are not guaranteed to get the Gtk::SizeRequestMode that you request. Therefore all four of the get_preferred_xxx_vfunc() methods must return sensible values. on_size_allocate() receives the actual height and width that the parent container has decided to give to your widget. This might be more than the minimum, or even more than the natural size, for instance if the top-level window has been expanded. You might choose to ignore the extra space and leave a blank area, or you might choose to expand your child widgets to fill the space, or you might choose to expand the padding between your widgets. It's your container, so you decide. Don't forget to call set_allocation() inside your on_size_allocate() implementation to actually use the allocated space that has been offered by the parent container. Unless your container is a top-level window that derives from Gtk::Window, you should probably also call Gtk::Widget::set_has_window(false) in your constructor. This means that your container does not create its own Gdk::Window, but uses its parent's window. (Note the difference between Gtk::Window and Gdk::Window.) If your container does need its own Gdk::Window, and does not derive from Gtk::Window, you must also override the on_realize() method as described in the Custom Widgets section. And unless your container draws directly onto the underlying Gdk::Window, you should probably call set_redraw_on_allocate(false) to improve performance. By overriding forall_vfunc() you can allow applications to operate on all of the container's child widgets. For instance, show_all_children() uses this to find all the child widgets and show them. Although your container might have its own method to set the child widgets, you should still provide an implementation for the virtual on_add() and on_remove() methods from the base class, so that the add() and remove() methods will do something appropriate if they are called. Your implementation of the child_type_vfunc() method should report the type of widget that may be added to your container, if it is not yet full. This is usually Gtk::Widget::get_type() to indicate that the container may contain any class derived from Gtk::Widget. If the container may not contain any more widgets, then this method should return G_TYPE_NONE. 示例 This example implements a container with two child widgets, one above the other. Of course, in this case it would be far simpler just to use a vertical Gtk::Box.
Custom Container
源代码 File: mycontainer.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_CUSTOM_CONTAINER_MYCONTAINER_H #define GTKMM_CUSTOM_CONTAINER_MYCONTAINER_H #include <gtkmm/container.h> class MyContainer : public Gtk::Container { public: MyContainer(); virtual ~MyContainer(); void set_child_widgets(Gtk::Widget& child_one, Gtk::Widget& child_two); protected: //Overrides: virtual Gtk::SizeRequestMode get_request_mode_vfunc() const; virtual void get_preferred_width_vfunc(int& minimum_width, int& natural_width) const; virtual void get_preferred_height_for_width_vfunc(int width, int& minimum_height, int& natural_height) const; virtual void get_preferred_height_vfunc(int& minimum_height, int& natural_height) const; virtual void get_preferred_width_for_height_vfunc(int height, int& minimum_width, int& natural_width) const; virtual void on_size_allocate(Gtk::Allocation& allocation); virtual void forall_vfunc(gboolean include_internals, GtkCallback callback, gpointer callback_data); virtual void on_add(Gtk::Widget* child); virtual void on_remove(Gtk::Widget* child); virtual GType child_type_vfunc() const; Gtk::Widget* m_child_one; Gtk::Widget* m_child_two; }; #endif //GTKMM_CUSTOM_CONTAINER_MYCONTAINER_H File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> #include "mycontainer.h" class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_quit(); //Child widgets: Gtk::Box m_VBox; MyContainer m_MyContainer; Gtk::Button m_Button_One; Gtk::Label m_Label_Two; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Quit; }; #endif //GTKMM_EXAMPLEWINDOW_H File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Button_One("Child One"), m_Label_Two("Child 2"), m_Button_Quit("Quit") { set_title("Custom Container example"); set_border_width(6); set_default_size(400, 200); add(m_VBox); //Add the child widgets to the custom container: m_MyContainer.set_child_widgets(m_Button_One, m_Label_Two); m_Label_Two.set_alignment(1.0, 0.5); m_VBox.pack_start(m_MyContainer, Gtk::PACK_EXPAND_WIDGET); m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Quit, Gtk::PACK_SHRINK); m_ButtonBox.set_border_width(6); m_ButtonBox.set_layout(Gtk::BUTTONBOX_END); m_Button_Quit.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_quit) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_quit() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); } File: mycontainer.cc (For use with gtkmm 3, not gtkmm 2) #include <iostream> #include <algorithm> // std::max #include "mycontainer.h" MyContainer::MyContainer() : m_child_one(0), m_child_two(0) { set_has_window(false); set_redraw_on_allocate(false); } MyContainer::~MyContainer() { /* // These calls to Gtk::Widget::unparent() are necessary if MyContainer is // deleted before its children. But if you use a version of gtkmm where bug // https://bugzilla.gnome.org/show_bug.cgi?id=605728 // has not been fixed (gtkmm 3.7.10 or earlier) and the children are deleted // before the container, these calls can make the program crash. // That's because on_remove() is not called, when the children are deleted. if (m_child_one) m_child_one->unparent(); if (m_child_two) m_child_two->unparent(); */ } void MyContainer::set_child_widgets(Gtk::Widget& child_one, Gtk::Widget& child_two) { m_child_one = &child_one; m_child_two = &child_two; m_child_one->set_parent(*this); m_child_two->set_parent(*this); } //This example container is a simplified VBox with at most two children. Gtk::SizeRequestMode MyContainer::get_request_mode_vfunc() const { return Gtk::SIZE_REQUEST_HEIGHT_FOR_WIDTH; } //Discover the total amount of minimum space and natural space needed by //this container and its children. void MyContainer::get_preferred_width_vfunc(int& minimum_width, int& natural_width) const { int child_minimum_width[2] = {0, 0}; int child_natural_width[2] = {0, 0}; if(m_child_one && m_child_one->get_visible()) m_child_one->get_preferred_width(child_minimum_width[0], child_natural_width[0]); if(m_child_two && m_child_two->get_visible()) m_child_two->get_preferred_width(child_minimum_width[1], child_natural_width[1]); //Request a width equal to the width of the widest visible child. minimum_width = std::max(child_minimum_width[0], child_minimum_width[1]); natural_width = std::max(child_natural_width[0], child_natural_width[1]); } void MyContainer::get_preferred_height_for_width_vfunc(int width, int& minimum_height, int& natural_height) const { int child_minimum_height[2] = {0, 0}; int child_natural_height[2] = {0, 0}; int nvis_children = 0; if(m_child_one && m_child_one->get_visible()) { ++nvis_children; m_child_one->get_preferred_height_for_width(width, child_minimum_height[0], child_natural_height[0]); } if(m_child_two && m_child_two->get_visible()) { ++nvis_children; m_child_two->get_preferred_height_for_width(width, child_minimum_height[1], child_natural_height[1]); } //The allocated height will be divided equally among the visible children. //Request a height equal to the number of visible children times the height //of the highest child. minimum_height = nvis_children * std::max(child_minimum_height[0], child_minimum_height[1]); natural_height = nvis_children * std::max(child_natural_height[0], child_natural_height[1]); } void MyContainer::get_preferred_height_vfunc(int& minimum_height, int& natural_height) const { int child_minimum_height[2] = {0, 0}; int child_natural_height[2] = {0, 0}; int nvis_children = 0; if(m_child_one && m_child_one->get_visible()) { ++nvis_children; m_child_one->get_preferred_height(child_minimum_height[0], child_natural_height[0]); } if(m_child_two && m_child_two->get_visible()) { ++nvis_children; m_child_two->get_preferred_height(child_minimum_height[1], child_natural_height[1]); } //The allocated height will be divided equally among the visible children. //Request a height equal to the number of visible children times the height //of the highest child. minimum_height = nvis_children * std::max(child_minimum_height[0], child_minimum_height[1]); natural_height = nvis_children * std::max(child_natural_height[0], child_natural_height[1]); } void MyContainer::get_preferred_width_for_height_vfunc(int height, int& minimum_width, int& natural_width) const { int child_minimum_width[2] = {0, 0}; int child_natural_width[2] = {0, 0}; int nvis_children = 0; //Get number of visible children. if(m_child_one && m_child_one->get_visible()) ++nvis_children; if(m_child_two && m_child_two->get_visible()) ++nvis_children; if(nvis_children > 0) { //Divide the height equally among the visible children. const int height_per_child = height / nvis_children; if(m_child_one && m_child_one->get_visible()) m_child_one->get_preferred_width_for_height(height_per_child, child_minimum_width[0], child_natural_width[0]); if(m_child_two && m_child_two->get_visible()) m_child_two->get_preferred_width_for_height(height_per_child, child_minimum_width[1], child_natural_width[1]); } //Request a width equal to the width of the widest child. minimum_width = std::max(child_minimum_width[0], child_minimum_width[1]); natural_width = std::max(child_natural_width[0], child_natural_width[1]); } void MyContainer::on_size_allocate(Gtk::Allocation& allocation) { //Do something with the space that we have actually been given: //(We will not be given heights or widths less than we have requested, though //we might get more.) //Use the offered allocation for this container: set_allocation(allocation); //Get number of visible children. int nvis_children = 0; if(m_child_one && m_child_one->get_visible()) ++nvis_children; if(m_child_two && m_child_two->get_visible()) ++nvis_children; if(nvis_children <= 0) return; //Assign space to the children: Gtk::Allocation child_allocation_one; Gtk::Allocation child_allocation_two; //Place the first child at the top-left: child_allocation_one.set_x( allocation.get_x() ); child_allocation_one.set_y( allocation.get_y() ); //Make it take up the full width available: child_allocation_one.set_width( allocation.get_width() ); if(m_child_one && m_child_one->get_visible()) { //Divide the height equally among the visible children. child_allocation_one.set_height( allocation.get_height() / nvis_children); m_child_one->size_allocate(child_allocation_one); } else child_allocation_one.set_height(0); //Place the second child below the first child: child_allocation_two.set_x( allocation.get_x() ); child_allocation_two.set_y( allocation.get_y() + child_allocation_one.get_height()); //Make it take up the full width available: child_allocation_two.set_width( allocation.get_width() ); //Make it take up the remaining height: child_allocation_two.set_height( allocation.get_height() - child_allocation_one.get_height()); if(m_child_two && m_child_two->get_visible()) m_child_two->size_allocate(child_allocation_two); } void MyContainer::forall_vfunc(gboolean, GtkCallback callback, gpointer callback_data) { if(m_child_one) callback(m_child_one->gobj(), callback_data); if(m_child_two) callback(m_child_two->gobj(), callback_data); } void MyContainer::on_add(Gtk::Widget* child) { if(!m_child_one) { m_child_one = child; m_child_one->set_parent(*this); } else if(!m_child_two) { m_child_two = child; m_child_two->set_parent(*this); } } void MyContainer::on_remove(Gtk::Widget* child) { if(child) { const bool visible = child->get_visible(); bool found = false; if(child == m_child_one) { m_child_one = 0; found = true; } else if(child == m_child_two) { m_child_two = 0; found = true; } if(found) { child->unparent(); if(visible) queue_resize(); } } } GType MyContainer::child_type_vfunc() const { //If there is still space for one widget, then report the type of widget that //may be added. if(!m_child_one || !m_child_two) return Gtk::Widget::get_type(); else { //No more widgets may be added. return G_TYPE_NONE; } }
Custom Widgets By deriving directly from Gtk::Widget you can do all the drawing for your widget directly, instead of just arranging child widgets. For instance, a Gtk::Label draws the text of the label, but does not do this by using other widgets. When deriving from Gtk::Widget, you should override the following virtual methods. The methods marked (optional) need not be overridden in all custom widgets. The base class's methods may be appropriate. get_request_mode_vfunc(): (optional) Return what Gtk::SizeRequestMode is preferred by the widget. get_preferred_width_vfunc(): Calculate the minimum and natural width of the widget. get_preferred_height_vfunc(): Calculate the minimum and natural height of the widget. get_preferred_width_for_height_vfunc(): Calculate the minimum and natural width of the widget, if it would be given the specified height. get_preferred_height_for_width_vfunc(): Calculate the minimum and natural height of the widget, if it would be given the specified width. on_size_allocate(): Position the widget, given the height and width that it has actually been given. on_realize(): Associate a Gdk::Window with the widget. on_unrealize(): (optional) Break the association with the Gdk::Window. on_map(): (optional) on_unmap(): (optional) on_draw(): Draw on the supplied Cairo::Context. The first 6 methods in the previous table are also overridden in custom containers. They are briefly described in the Custom Containers section. Most custom widgets need their own Gdk::Window to draw on. Then you can call Gtk::Widget::set_has_window(true) in your constructor. (This is the default value.) If you do not call set_has_window(false), you must override on_realize() and call Gtk::Widget::set_realized() and Gtk::Widget::set_window() from there. 示例 This example implements a widget which draws a Penrose triangle.
Custom Widget
源代码 File: mywidget.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_CUSTOM_WIDGET_MYWIDGET_H #define GTKMM_CUSTOM_WIDGET_MYWIDGET_H #include <gtkmm/widget.h> #include <gtkmm/cssprovider.h> class MyWidget : public Gtk::Widget { public: MyWidget(); virtual ~MyWidget(); protected: //Overrides: virtual Gtk::SizeRequestMode get_request_mode_vfunc() const; virtual void get_preferred_width_vfunc(int& minimum_width, int& natural_width) const; virtual void get_preferred_height_for_width_vfunc(int width, int& minimum_height, int& natural_height) const; virtual void get_preferred_height_vfunc(int& minimum_height, int& natural_height) const; virtual void get_preferred_width_for_height_vfunc(int height, int& minimum_width, int& natural_width) const; virtual void on_size_allocate(Gtk::Allocation& allocation); virtual void on_map(); virtual void on_unmap(); virtual void on_realize(); virtual void on_unrealize(); virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr); Glib::RefPtr<Gdk::Window> m_refGdkWindow; Glib::RefPtr<Gtk::CssProvider> m_refStyleProvider; int m_scale; }; #endif //GTKMM_CUSTOM_WIDGET_MYWIDGET_H File: examplewindow.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLEWINDOW_H #define GTKMM_EXAMPLEWINDOW_H #include <gtkmm.h> #include "mywidget.h" class ExampleWindow : public Gtk::Window { public: ExampleWindow(); virtual ~ExampleWindow(); protected: //Signal handlers: void on_button_quit(); //Child widgets: Gtk::Box m_VBox; MyWidget m_MyWidget; Gtk::ButtonBox m_ButtonBox; Gtk::Button m_Button_Quit; }; #endif //GTKMM_EXAMPLEWINDOW_H File: mywidget.cc (For use with gtkmm 3, not gtkmm 2) #include "mywidget.h" #include <gdkmm/general.h> // for cairo helper functions #include <iostream> //#include <gtk/gtkwidget.h> //For GTK_IS_WIDGET() #include <cstring> MyWidget::MyWidget() : //The GType name will actually be gtkmm__CustomObject_mywidget Glib::ObjectBase("mywidget"), Gtk::Widget(), m_scale(1000) { set_has_window(true); //This shows the GType name, which must be used in the CSS file. std::cout << "GType name: " << G_OBJECT_TYPE_NAME(gobj()) << std::endl; //This shows that the GType still derives from GtkWidget: //std::cout << "Gtype is a GtkWidget?:" << GTK_IS_WIDGET(gobj()) << std::endl; //Install a style so that an aspect of this widget may be themed via a CSS //style sheet file: gtk_widget_class_install_style_property(GTK_WIDGET_CLASS( G_OBJECT_GET_CLASS(gobj())), g_param_spec_int("example_scale", "Scale of Example Drawing", "The scale to use when drawing. This is just a silly example.", G_MININT, G_MAXINT, 500, G_PARAM_READABLE) ); m_refStyleProvider = Gtk::CssProvider::create(); Glib::RefPtr<Gtk::StyleContext> refStyleContext = get_style_context(); refStyleContext->add_provider(m_refStyleProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); try { m_refStyleProvider->load_from_path("custom_gtk.css"); } catch(const Glib::Error& ex) { std::cerr << "Gtk::CssProvider::load_from_path() failed: " << ex.what() << std::endl; } } MyWidget::~MyWidget() { } Gtk::SizeRequestMode MyWidget::get_request_mode_vfunc() const { //Accept the default value supplied by the base class. return Gtk::Widget::get_request_mode_vfunc(); } //Discover the total amount of minimum space and natural space needed by //this widget. //Let's make this simple example widget always need minimum 60 by 50 and //natural 100 by 70. void MyWidget::get_preferred_width_vfunc(int& minimum_width, int& natural_width) const { minimum_width = 60; natural_width = 100; } void MyWidget::get_preferred_height_for_width_vfunc(int /* width */, int& minimum_height, int& natural_height) const { minimum_height = 50; natural_height = 70; } void MyWidget::get_preferred_height_vfunc(int& minimum_height, int& natural_height) const { minimum_height = 50; natural_height = 70; } void MyWidget::get_preferred_width_for_height_vfunc(int /* height */, int& minimum_width, int& natural_width) const { minimum_width = 60; natural_width = 100; } void MyWidget::on_size_allocate(Gtk::Allocation& allocation) { //Do something with the space that we have actually been given: //(We will not be given heights or widths less than we have requested, though //we might get more) //Use the offered allocation for this container: set_allocation(allocation); if(m_refGdkWindow) { m_refGdkWindow->move_resize( allocation.get_x(), allocation.get_y(), allocation.get_width(), allocation.get_height() ); } } void MyWidget::on_map() { //Call base class: Gtk::Widget::on_map(); } void MyWidget::on_unmap() { //Call base class: Gtk::Widget::on_unmap(); } void MyWidget::on_realize() { //Do not call base class Gtk::Widget::on_realize(). //It's intended only for widgets that set_has_window(false). set_realized(); //Get the themed style from the CSS file: get_style_property("example_scale", m_scale); std::cout << "m_scale (example_scale from the theme/css-file) is: " << m_scale << std::endl; if(!m_refGdkWindow) { //Create the GdkWindow: GdkWindowAttr attributes; memset(&attributes, 0, sizeof(attributes)); Gtk::Allocation allocation = get_allocation(); //Set initial position and size of the Gdk::Window: attributes.x = allocation.get_x(); attributes.y = allocation.get_y(); attributes.width = allocation.get_width(); attributes.height = allocation.get_height(); attributes.event_mask = get_events () | Gdk::EXPOSURE_MASK; attributes.window_type = GDK_WINDOW_CHILD; attributes.wclass = GDK_INPUT_OUTPUT; m_refGdkWindow = Gdk::Window::create(get_parent_window(), &attributes, GDK_WA_X | GDK_WA_Y); set_window(m_refGdkWindow); //set colors override_background_color(Gdk::RGBA("red")); override_color(Gdk::RGBA("blue")); //make the widget receive expose events m_refGdkWindow->set_user_data(gobj()); } } void MyWidget::on_unrealize() { m_refGdkWindow.reset(); //Call base class: Gtk::Widget::on_unrealize(); } bool MyWidget::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { const double scale_x = (double)get_allocation().get_width() / m_scale; const double scale_y = (double)get_allocation().get_height() / m_scale; // paint the background Gdk::Cairo::set_source_rgba(cr, get_style_context()->get_background_color()); cr->paint(); // draw the foreground Gdk::Cairo::set_source_rgba(cr, get_style_context()->get_color()); cr->move_to(155.*scale_x, 165.*scale_y); cr->line_to(155.*scale_x, 838.*scale_y); cr->line_to(265.*scale_x, 900.*scale_y); cr->line_to(849.*scale_x, 564.*scale_y); cr->line_to(849.*scale_x, 438.*scale_y); cr->line_to(265.*scale_x, 100.*scale_y); cr->line_to(155.*scale_x, 165.*scale_y); cr->move_to(265.*scale_x, 100.*scale_y); cr->line_to(265.*scale_x, 652.*scale_y); cr->line_to(526.*scale_x, 502.*scale_y); cr->move_to(369.*scale_x, 411.*scale_y); cr->line_to(633.*scale_x, 564.*scale_y); cr->move_to(369.*scale_x, 286.*scale_y); cr->line_to(369.*scale_x, 592.*scale_y); cr->move_to(369.*scale_x, 286.*scale_y); cr->line_to(849.*scale_x, 564.*scale_y); cr->move_to(633.*scale_x, 564.*scale_y); cr->line_to(155.*scale_x, 838.*scale_y); cr->stroke(); return true; } File: examplewindow.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" ExampleWindow::ExampleWindow() : m_VBox(Gtk::ORIENTATION_VERTICAL), m_Button_Quit("Quit") { set_title("Custom Widget example"); set_border_width(6); set_default_size(400, 200); add(m_VBox); m_VBox.pack_start(m_MyWidget, Gtk::PACK_EXPAND_WIDGET); m_MyWidget.show(); m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK); m_ButtonBox.pack_start(m_Button_Quit, Gtk::PACK_SHRINK); m_ButtonBox.set_border_width(6); m_ButtonBox.set_layout(Gtk::BUTTONBOX_END); m_Button_Quit.signal_clicked().connect( sigc::mem_fun(*this, &ExampleWindow::on_button_quit) ); show_all_children(); } ExampleWindow::~ExampleWindow() { } void ExampleWindow::on_button_quit() { hide(); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "examplewindow.h" #include <gtkmm/application.h> int main(int argc, char *argv[]) { Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example"); ExampleWindow window; //Shows the window and returns when it is closed. return app->run(window); }
Multi-threaded programs The constraints glibmm provides the normal set of thread launching functions, mutexes, condition variables and scoped locking classes required for writing multi-threaded programs using C++. However, care is required when writing programs based on gtkmm using multiple threads of execution, arising from the fact that libsigc++, and in particular sigc::trackable, are not thread-safe. That's because none of the complex interactions that occur behind the scenes when using libsigc++ are protected by a mutex or other means of synchronization. These interactions arise from the fact that, amongst other things, a class inheriting from sigc::trackable will, via that inheritance, have a std::list object keeping track of slots created by calls to sigc::mem_fun() representing any of its non-static methods (more particularly it keeps a list of callbacks which will null the connected slots on its destruction). Each sigc::slot object also keeps, via sigc::slot_rep, its own sigc::trackable object to track any sigc::connection objects which it needs to inform about its demise, and also has a function to deregister itself from any sigc::trackable on disconnection or destruction. sigc::signal objects also keep lists of slots, which will be updated by a call to their connect() method or calls to any sigc::connection object relating to such a connection. The rules This requires a number of rules to be observed when writing multi-threaded programs using gtkmm. These are set out below, but one point to note is that extra care is required when deriving classes from sigc::trackable, because the effects are unintuitive (see particularly points 4 and 5 below). Use Glib::Dispatcher to invoke gtkmm functions from worker threads (this is dealt with in more detail in the next section). A sigc::signal object should be regarded as owned by the thread which created it. Only that thread should connect a sigc::slot object to the signal object, and only that thread should emit() or call operator()() on the signal, or null any connected sigc::slot object. It follows (amongst other things) that any signal object provided by a gtkmm widget should only be operated on in the main GUI thread and any object deriving from sigc::trackable having its non-static methods referenced by slots connected to the signal object should only be destroyed in that thread. Any sigc::connection object should be regarded as owned by the thread in which the method returning the sigc::connection object was called. Only that thread should call sigc::connection methods on the object. A sigc::slot object created by a call to sigc::mem_fun() which references a method of a class deriving from sigc::trackable should never be copied to another thread, nor destroyed by a different thread than the one which created it. (One consequence of this is that Glib::Threads::Thread::create() should not be called with a slot argument created by a call to sigc::mem_fun() which represents a method of such a class. It is however safe to pass Glib::Threads::Thread::create() a function object representing such a method by using, say, boost::bind() or, in C++11, std::bind() or a C++11 lambda expression.) If a particular class object derives from sigc::trackable, only one thread should create sigc::slot objects representing any of the class's non-static methods by calling sigc::mem_fun(). The first thread to create such a slot should be regarded as owning the relevant object for the purpose of creating further slots referencing any of its non-static methods using that function, or nulling those slots by disconnecting them or destroying the trackable object. Although glib is itself thread-safe, any glibmm wrappers which use libsigc++ will not be. So for example, only the thread in which a main loop runs should call Glib::SignalIdle::connect(), Glib::SignalIO::connect(), Glib::SignalTimeout::connect(), Glib::SignalTimeout::connect_seconds for that main loop, or manipulate any sigc::connection object returned by them. The connect*_once() variants, Glib::SignalIdle::connect_once(), Glib::SignalTimeout::connect_once(), Glib::SignalTimeout::connect_seconds_once(), are thread-safe for any case where the slot is not created by a call to sigc::mem_fun() which represents a method of a class deriving from sigc::trackable. This is similar to Glib::Threads::Thread::create() as mentioned in point 4. Using Glib::Dispatcher The slots connected to sigc::signal objects execute in the thread which calls emit() or operator()() on the signal. Glib::Dispatcher does not behave this way: instead its connected slots execute in the thread in which the Glib::Dispatcher object was constructed (which must have a glib main loop). If a Glib::Dispatcher object is constructed in the main GUI thread (which will therefore be the receiver thread), any worker thread can emit on it and have the connected slots safely execute gtkmm functions. Some thread safety rules on the use of Glib::Dispatcher still apply. As mentioned, a Glib::Dispatcher object must be constructed in the receiver thread (the thread in whose main loop it will execute its connected slots). By default this is the main program thread, although there is a Glib::Dispatcher constructor which can take the Glib::MainContext object of any thread which has a main loop. Only the receiver thread should call connect() on the Glib::Dispatcher object, or manipulate any related sigc::connection object, unless additional synchronization is employed. However, any worker thread can safely emit on the Glib::Dispatcher object without any locking once the receiver thread has connected the slots, provided that it is constructed before the worker thread is started (if it is constructed after the thread has started, additional synchronization will normally be required to ensure visibility). Aside from the fact that connected slots always execute in the receiver thread, Glib::Dispatcher objects are similar to sigc::signal<void> objects. They therefore cannot pass unbound arguments nor return a value. The best way to pass unbound arguments is with a thread-safe (asynchronous) queue. At the time of writing glibmm does not have one, although most people writing multi-threaded code will have one available to them (they are relatively easy to write although there are subtleties in combining thread safety with strong exception safety). A Glib::Dispatcher object can be emitted on by the receiver thread as well as by a worker thread, although this should be done within reasonable bounds. On unix-like systems Glib::Dispatcher objects share a single common pipe, which could in theory at least fill up on a very heavily loaded system running a program with a very large number of Dispatcher objects in use. Were the pipe to fill up before the receiver thread's main loop has had an opportunity to read from it to empty it, and the receiver thread attempt to emit and so write to it when it is in that condition, the receiver thread would block on the write, so deadlocking. Where the receiver thread is to emit, a normal sigc::signal<void> object could of course be used instead. Recommended Techniques This section is simply a gathering of wisdom, general style guidelines and hints for creating gtkmm applications. Use GNU autoconf and automake! They are your friends :) Automake examines C files, determines how they depend on each other, and generates a Makefile so the files can be compiled in the correct order. Autoconf permits automatic configuration of software installation, handling a large number of system quirks to increase portability. Subclass Widgets to better organize your code. You should probably subclass your main Window at least. Then you can make your child Widgets and signal handlers members of that class. Create your own signals instead of passing pointers around. Objects can communicate with each other via signals and signal handlers. This is much simpler than objects holding pointers to each other and calling each other's methods. gtkmm's classes uses special versions of sigc::signal, but you should use normal sigc::signals, as described in the libsigc++ documentation. Application Lifetime Most applications will have only one Window, or only one main window. These applications can use the Gtk::Application::run(Gtk::Window&) overload. It shows the window and returns when the window has been hidden. This might happen when the user closes the window, or when your code decides to hide() the window. You can prevent the user from closing the window (for instance, if there are unsaved changes) by overriding Gtk::Window::on_delete_event(). Most of our examples use this technique. Using a <application>gtkmm</application> widget Our examples all tend to have the same structure. They follow these steps for using a Widget: Declare a variable of the type of Widget you wish to use, generally as member variable of a derived container class. You could also declare a pointer to the widget type, and then create it with new in your code. Even when using the widget via a pointer, it's still probably best to make that pointer a member variable of a container class so that you can access it later. Set the attributes of the widget. If the widget has no default constructor, then you will need to initialize the widget in the initalizer list of your container class's constructor. Connect any signals you wish to use to the appropriate handlers. Pack the widget into a container using the appropriate call, e.g. Gtk::Container::add() or pack_start(). Call show() to display the widget. Gtk::Widget::show() lets gtkmm know that we have finished setting the attributes of the widget, and that it is ready to be displayed. You can use Gtk::Widget::hide() to make it disappear again. The order in which you show the widgets is not important, but we do suggest that you show the top-level window last; this way, the whole window will appear with its contents already drawn. Otherwise, the user will first see a blank window, into which the widgets will be gradually drawn. Contributing This document, like so much other great software out there, was created for free by volunteers. If you are at all knowledgeable about any aspect of gtkmm that does not already have documentation, please consider contributing to this document. Ideally, we would like you to provide a patch to the docs/tutorial/C/gtkmm-tutorial-in.xml file. This file is currently in the gtkmm-documentation module in GNOME git. If you do decide to contribute, please post your contribution to the gtkmm mailing list at <gtkmm-list@gnome.org>. Also, be aware that the entirety of this document is free, and any addition you provide must also be free. That is, people must be able to use any portion of your examples in their programs, and copies of this document (including your contribution) may be distributed freely. The RefPtr smartpointer Glib::RefPtr is a smartpointer. Specifically, it is a reference-counting smartpointer. You might be familiar with std::auto_ptr<>, which is also a smartpointer, but Glib::RefPtr<> is much simpler, and more useful. We expect a future version of the C++ Standard Library to contain a reference-counting shared smartpointer, and a future version of gtkmm might possibly use that instead. 参考 A smartpointer acts much like a normal pointer. Here are a few examples. Copying You can copy RefPtrs, just like normal pointers. But unlike normal pointers, you don't need to worry about deleting the underlying instance. Glib::RefPtr<Gdk::Pixbuf> refPixbuf = Gdk::Pixbuf::create_from_file(filename); Glib::RefPtr<Gdk::Pixbuf> refPixbuf2 = refPixbuf; Of course this means that you can store RefPtrs in standard containers, such as std::vector or std::list. std::list< Glib::RefPtr<Gdk::Pixbuf> > listPixbufs; Glib::RefPtr<Gdk::Pixbuf> refPixbuf = Gdk::Pixbuf::create_from_file(filename); listPixbufs.push_back(refPixbuf); Dereferencing You can dereference a smartpointer with the -> operator, to call the methods of the underlying instance, just like a normal pointer. Glib::RefPtr<Gdk::Pixbuf> refPixbuf = Gdk::Pixbuf::create_from_file(filename); int width = refPixbuf->get_width(); But unlike most smartpointers, you can't use the * operator to access the underlying instance. Glib::RefPtr<Gdk::Pixbuf> refPixbuf = Gdk::Pixbuf::create_from_file(filename); Gdk::Pixbuf& underlying = *refPixbuf; //Syntax error - will not compile. Casting You can cast RefPtrs to base types, just like normal pointers. Glib::RefPtr<Gtk::TreeStore> refStore = Gtk::TreeStore::create(columns); Glib::RefPtr<Gtk::TreeModel> refModel = refStore; This means that any method which takes a const Glib::RefPtr<BaseType> argument can also take a const Glib::RefPtr<DerivedType>. The cast is implicit, just as it would be for a normal pointer. You can also cast to a derived type, but the syntax is a little different than with a normal pointer. Glib::RefPtr<Gtk::TreeStore> refStore = Glib::RefPtr<Gtk::TreeStore>::cast_dynamic(refModel); Glib::RefPtr<Gtk::TreeStore> refStore2 = Glib::RefPtr<Gtk::TreeStore>::cast_static(refModel); Checking for null Just like normal pointers, you can check whether a RefPtr points to anything. Glib::RefPtr<Gtk::TreeModel> refModel = m_TreeView.get_model(); if(refModel) { int cols_count = refModel->get_n_columns(); ... } But unlike normal pointers, RefPtrs are automatically initialized to null so you don't need to remember to do that yourself. Constness The use of the const keyword in C++ is not always clear. You might not realise that const Something* declares a pointer to a const Something. The pointer can be changed, but not the Something that it points to. Therefore, the RefPtr equivalent of Something* for a method parameter is const Glib::RefPtr<Something>&, and the equivalent of const Something* is const Glib::RefPtr<const Something>&. The const ... & around both is just for efficiency, like using const std::string& instead of std::string for a method parameter to avoid unnecessary copying. 信号 Connecting signal handlers gtkmm widget classes have signal accessor methods, such as Gtk::Button::signal_clicked(), which allow you to connect your signal handler. Thanks to the flexibility of libsigc++, the callback library used by gtkmm, the signal handler can be almost any kind of function, but you will probably want to use a class method. Among GTK+ C coders, these signal handlers are often named callbacks. Here's an example of a signal handler being connected to a signal: #include <gtkmm/button.h> void on_button_clicked() { std::cout << "Hello World" << std::endl; } main() { Gtk::Button button("Hello World"); button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked)); } There's rather a lot to think about in this (non-functional) code. First let's identify the parties involved: The signal handler is on_button_clicked(). We're hooking it up to the Gtk::Button object called button. When the Button emits its clicked signal, on_button_clicked() will be called. Now let's look at the connection again: ... button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked)); ... Note that we don't pass a pointer to on_button_clicked() directly to the signal's connect() method. Instead, we call sigc::ptr_fun(), and pass the result to connect(). sigc::ptr_fun() generates a sigc::slot. A slot is an object which looks and feels like a function, but is actually an object. These are also known as function objects, or functors. sigc::ptr_fun() generates a slot for a standalone function or static method. sigc::mem_fun() generates a slot for a member method of a particular instance. Here's a slightly larger example of slots in action: void on_button_clicked(); class some_class { void on_button_clicked(); }; some_class some_object; main() { Gtk::Button button; button.signal_clicked().connect( sigc::ptr_fun(&on_button_clicked) ); button.signal_clicked().connect( sigc::mem_fun(some_object, &some_class::on_button_clicked) ); } The first call to connect() is just like the one we saw last time; nothing new here. The next is more interesting. sigc::mem_fun() is called with two arguments. The first argument is some_object, which is the object that our new slot will be pointing at. The second argument is a pointer to one of its methods. This particular version of sigc::mem_fun() creates a slot which will, when "called", call the pointed-to method of the specified object, in this case some_object.on_button_clicked(). Another thing to note about this example is that we made the call to connect() twice for the same signal object. This is perfectly fine - when the button is clicked, both signal handlers will be called. We just told you that the button's clicked signal is expecting to call a method with no arguments. All signals have requirements like this - you can't hook a function with two arguments to a signal expecting none (unless you use an adapter, such as sigc::bind(), of course). Therefore, it's important to know what type of signal handler you'll be expected to connect to a given signal. Writing signal handlers To find out what type of signal handler you can connect to a signal, you can look it up in the reference documentation or the header file. Here's an example of a signal declaration you might see in the gtkmm headers: Glib::SignalProxy1<bool, Gtk::DirectionType> signal_focus() Other than the signal's name (focus), two things are important to note here: the number following the word SignalProxy at the beginning (1, in this case), and the types in the list (bool and Gtk::DirectionType). The number indicates how many arguments the signal handler should have; the first type, bool, is the type that the signal handler should return; and the next type, Gtk::DirectionType, is the type of this signal's first, and only, argument. By looking at the reference documentation, you can see the names of the arguments too. The same principles apply for signals which have more arguments. Here's one with three (taken from <gtkmm/editable.h>): Glib::SignalProxy3<void, const Glib::ustring&, int, int*> signal_insert_text() It follows the same form. The number 3 at the end of the type's name indicates that our signal handler will need three arguments. The first type in the type list is void, so that should be our signal handler's return type. The following three types are the argument types, in order. Our signal handler's prototype could look like this: void on_insert_text(const Glib::ustring& text, int length, int* position); Disconnecting signal handlers Let's take another look at a Signal's connect method: sigc::signal<void,int>::iterator signal<void,int>::connect( const sigc::slot<void,int>& ); Notice that the return value is of type sigc::signal<void,int>::iterator. This can be implicitely converted into a sigc::connection which in turn can be used to control the connection. By keeping a connection object you can disconnect its associated signal handler using the method sigc::connection::disconnect(). Overriding default signal handlers So far we've told you to perform actions in response to button-presses and the like by handling signals. That's certainly a good way to do things, but it's not the only way. Instead of laboriously connecting signal handlers to signals, you can simply make a new class which inherits from a widget - say, a Button - and then override the default signal handler, such as Button::on_clicked(). This can be a lot simpler than hooking up signal handlers for everything. Subclassing isn't always the best way to accomplish things. It is only useful when you want the widget to handle its own signal by itself. If you want some other class to handle the signal then you'll need to connect a separate handler. This is even more true if you want several objects to handle the same signal, or if you want one signal handler to respond to the same signal from different objects. gtkmm classes are designed with overriding in mind; they contain virtual member methods specifically intended to be overridden. Let's look at an example of overriding: #include <gtkmm/button.h> class OverriddenButton : public Gtk::Button { protected: virtual void on_clicked(); } void OverriddenButton::on_clicked() { std::cout << "Hello World" << std::endl; // call the base class's version of the method: Gtk::Button::on_clicked(); } Here we define a new class called OverriddenButton, which inherits from Gtk::Button. The only thing we change is the on_clicked() method, which is called whenever Gtk::Button emits the clicked signal. This method prints "Hello World" to stdout, and then calls the original, overridden method, to let Gtk::Button do what it would have done had we not overridden. You don't always need to call the parent's method; there are times when you might not want to. Note that we called the parent method after writing "Hello World", but we could have called it before. In this simple example, it hardly matters much, but there are times when it will. With signals, it's not quite so easy to change details like this, and you can do something here which you can't do at all with connected signal handlers: you can call the parent method in the middle of your custom code. Binding extra arguments If you use one signal handler to catch the same signal from several widgets, you might like that signal handler to receive some extra information. For instance, you might want to know which button was clicked. You can do this with sigc::bind(). Here's some code from the helloworld2 example, which you will encounter later. m_button1.signal_clicked().connect( sigc::bind<Glib::ustring>( sigc::mem_fun(*this, &HelloWorld::on_button_clicked), "button 1") ); This says that we want the signal to send an extra Glib::ustring argument to the signal handler, and that the value of that argument should be "button 1". Of course we will need to add that extra argument to the declaration of our signal handler: virtual void on_button_clicked(Glib::ustring data); Of course, a normal "clicked" signal handler would have no arguments. sigc::bind() is not commonly used, but you might find it helpful sometimes. If you are familiar with GTK+ programming then you have probably noticed that this is similar to the extra gpointer data arguments which all GTK+ callbacks have. This is generally overused in GTK+ to pass information that should be stored as member data in a derived widget, but widget derivation is very difficult in C. We have far less need of this hack in gtkmm. X Event signals The Widget class has some special signals which correspond to the underlying X-Windows events. These are suffixed by _event; for instance, Widget::signal_button_pressed_event(). You might occasionally find it useful to handle X events when there's something you can't accomplish with normal signals. Gtk::Button, for example, does not send mouse-pointer coordinates with its clicked signal, but you could handle button_pressed_event if you needed this information. X events are also often used to handle key-presses. These signals behave slightly differently. The value returned from the signal handler indicates whether it has fully "handled" the event. If the value is false then gtkmm will pass the event on to the next signal handler. If the value is true then no other signal handlers will need to be called. Handling an X event doesn't affect the Widget's other signals. If you handle button_pressed_event for Gtk::Button, you'll still be able to get the clicked signal. They are emitted at (nearly) the same time. Note also that not all widgets receive all X events by default. To receive additional X events, you can use Gtk::Widget::set_events() before showing the widget, or Gtk::Widget::add_events() after showing the widget. However, some widgets must first be placed inside an EventBox widget. See the Widgets Without X-Windows chapter. Here's a simple example: bool on_button_press(GdkEventButton* event); Gtk::Button button("label"); button.signal_button_press_event().connect( sigc::ptr_fun(&on_button_press) ); When the mouse is over the button and a mouse button is pressed, on_button_press() will be called. GdkEventButton is a structure containing the event's parameters, such as the coordinates of the mouse pointer at the time the button was pressed. There are several different types of GdkEvent structures for the various events. Signal Handler sequence By default, your signal handlers are called after any previously-connected signal handlers. However, this can be a problem with the X Event signals. For instance, the existing signal handlers, or the default signal handler, might return true to stop other signal handlers from being called. To specify that your signal handler should be called before the other signal handlers, so that it will always be called, you can specify false for the optional after parameter. For instance, button.signal_button_press_event().connect( sigc::ptr_fun(&on_mywindow_button_press), false ); The event is delivered first to the widget the event occurred in. If all signal handlers in that widget return false (indicating that the event has not been handled), then the signal will be propagated to the parent widget and emitted there. This continues all the way up to the top-level widget if no one handles the event. Exceptions in signal handlers When a program is aborted because of an unhandled C++ exception, it's sometimes possible to use a debugger to find the location where the exception was thrown. This is more difficult than usual if the exception was thrown from a signal handler. This section describes primarily what you can expect on a Linux system, when you use the gdb debugger. First, let's look at a simple example where an exception is thrown from a normal function (no signal handler). // without_signal.cc #include <gtkmm.h> bool throwSomething() { throw "Something"; return true; } int main(int argc, char** argv) { throwSomething(); Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.without_signal"); return app->run(); } Here is an excerpt from a gdb session. Only the most interesting parts of the output are shown. > gdb without_signal (gdb) run terminate called after throwing an instance of 'char const*' Program received signal SIGABRT, Aborted. (gdb) backtrace #7 0x08048864 in throwSomething () at without_signal.cc:6 #8 0x0804887d in main (argc=1, argv=0xbfffecd4) at without_signal.cc:12 You can see that the exception was thrown from without_signal.cc, line 6 (throw "Something";). Now let's see what happens when an exception is thrown from a signal handler. Here's the source code. // with_signal.cc #include <gtkmm.h> bool throwSomething() { throw "Something"; return true; } int main(int argc, char** argv) { Glib::signal_timeout().connect(sigc::ptr_fun(throwSomething), 500); Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.with_signal"); app->hold(); return app->run(); } And here's an excerpt from a gdb session. > gdb with_signal (gdb) run (with_signal:2703): glibmm-ERROR **: unhandled exception (type unknown) in signal handler Program received signal SIGTRAP, Trace/breakpoint trap. (gdb) backtrace #2 0x0063c6ab in glibmm_unexpected_exception () at exceptionhandler.cc:77 #3 Glib::exception_handlers_invoke () at exceptionhandler.cc:150 #4 0x0063d370 in glibmm_source_callback (data=0x804d620) at main.cc:212 #13 0x002e1b31 in Gtk::Application::run (this=0x804f300) at application.cc:178 #14 0x08048ccc in main (argc=1, argv=0xbfffecd4) at with_signal.cc:16 The exception is caught in glibmm, and the program ends with a call to g_error(). Other exceptions may result in different behaviour, but in any case the exception from a signal handler is caught in glibmm or gtkmm, and gdb can't see where it was thrown. To see where the exception is thrown, you can use the gdb command catch throw. > gdb with_signal (gdb) catch throw Catchpoint 1 (throw) (gdb) run Catchpoint 1 (exception thrown), 0x00714ff0 in __cxa_throw () (gdb) backtrace #0 0x00714ff0 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6 #1 0x08048bd4 in throwSomething () at with_signal.cc:6 (gdb) continue Continuing. (with_signal:2375): glibmm-ERROR ** unhandled exception (type unknown) in signal handler Program received signal SIGTRAP, Trace/breakpoint trap. If there are many caught exceptions before the interesting uncaught one, this method can be tedious. It can be automated with the following gdb commands. (gdb) catch throw (gdb) commands (gdb) backtrace (gdb) continue (gdb) end (gdb) set pagination off (gdb) run These commands will print a backtrace from each throw and continue. The backtrace from the last (or possibly the last but one) throw before the program stops, is the interesting one. Creating your own signals Now that you've seen signals and signal handlers in gtkmm, you might like to use the same technique to allow interaction between your own classes. That's actually very simple by using the libsigc++ library directly. This isn't purely a gtkmm or GUI issue. gtkmm uses libsigc++ to implement its proxy wrappers for the GTK+ signal system, but for new, non-GTK+ signals, you can create pure C++ signals, using the sigc::signal<> template. For instance, to create a signal that sends 2 parameters, a bool and an int, just declare a sigc::signal, like so: sigc::signal<void, bool, int> signal_something; You could just declare that signal as a public member variable, but some people find that distasteful and prefer to make it available via an accessor method, like so: class Server { public: //signal accessor: typedef sigc::signal<void, bool, int> type_signal_something; type_signal_something signal_something(); protected: type_signal_something m_signal_something; }; Server::type_signal_something Server::signal_something() { return m_signal_something; } You can then connect to the signal using the same syntax used when connecting to gtkmm signals. For instance, server.signal_something().connect( sigc::mem_fun(client, &Client::on_server_something) ); 示例 This is a full working example that defines and uses custom signals. 源代码 File: client.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_CLIENT_H #define GTKMM_EXAMPLE_CLIENT_H #include <sigc++/sigc++.h> //Client must inherit from sigc::trackable. //because libsigc++ needs to keep track of the lifetime of signal handlers. class Client : public sigc::trackable { public: Client(); virtual ~Client(); //Signal handler: void on_server_something(bool a, int b); }; #endif //GTKMM_EXAMPLE_CLIENT_H File: server.h (For use with gtkmm 3, not gtkmm 2) #ifndef GTKMM_EXAMPLE_SERVER_H #define GTKMM_EXAMPLE_SERVER_H #include <sigc++/sigc++.h> class Server { public: Server(); virtual ~Server(); void do_something(); //signal accessor: typedef sigc::signal<void, bool, int> type_signal_something; type_signal_something signal_something(); protected: type_signal_something m_signal_something; }; #endif //GTKMM_EXAMPLE_SERVER_H File: server.cc (For use with gtkmm 3, not gtkmm 2) #include "server.h" #include <iostream> Server::Server() { } Server::~Server() { } Server::type_signal_something Server::signal_something() { return m_signal_something; } void Server::do_something() { m_signal_something.emit(false, 5); } File: main.cc (For use with gtkmm 3, not gtkmm 2) #include "server.h" #include "client.h" #include <iostream> int main(int, char**) { Server server; Client client; //Connect a Server signal to the signal handler in Client. server.signal_something().connect(sigc::mem_fun(client, &Client::on_server_something) ); std::cout << "Before Server::do_something()" << std::endl; //Tell the server to do something that will eventually cause it to emit the //"something" signal. server.do_something(); // Client::on_server_something() will run before // Server::do_something() has completed. std::cout << "After Server::do_something()" << std::endl; return 0; } File: client.cc (For use with gtkmm 3, not gtkmm 2) #include "client.h" #include <iostream> Client::Client() { } Client::~Client() { } void Client::on_server_something(bool a, int b) { std::cout << "Client::on_server_something() called with these parameters: " << a << ", " << b << std::endl; } Comparison with other signalling systems (An aside: GTK+ calls this scheme "signalling"; the sharp-eyed reader with GUI toolkit experience will note that this same design is often seen under the name of "broadcaster-listener" (e.g., in Metrowerks' PowerPlant framework for the Macintosh). It works in much the same way: one sets up broadcasters, and then connects listeners to them; the broadcaster keeps a list of the objects listening to it, and when someone gives the broadcaster a message, it calls all of its objects in its list with the message. In gtkmm, signal objects play the role of broadcasters, and slots play the role of listeners - sort of. More on this later.) gtkmm signal handlers are strongly-typed, whereas GTK+ C code allows you to connect a callback with the wrong number and type of arguments, leading to a segfault at runtime. And, unlike Qt, gtkmm achieves this without modifying the C++ language. Re. Overriding signal handlers: You can do this in the straight-C world of GTK+ too; that's what GTK's object system is for. But in GTK+, you have to go through some complicated procedures to get object-oriented features like inheritance and overloading. In C++, it's simple, since those features are supported in the language itself; you can let the compiler do the dirty work. This is one of the places where the beauty of C++ really comes out. One wouldn't think of subclassing a GTK+ widget simply to override its action method; it's just too much trouble. In GTK+, you almost always use signals to get things done, unless you're writing a new widget. But because overriding methods is so easy in C++, it's entirely practical - and sensible - to subclass a button for that purpose. <application>gtkmm</application> and Win32 One of the major advantages of gtkmm is that it is crossplatform. gtkmm programs written on other platforms such as GNU/Linux can generally be transferred to Windows (and vice versa) with few modifications to the source. gtkmm currently works with the MingW/GCC3.4 compiler and Microsoft Visual C++ 2005 or later (including the freely available express editions) on the Windows platform. There is an installer available for gtkmm on Microsoft Windows. Refer to http://live.gnome.org/gtkmm/MSWindows for instructions how to use it. Building <application>gtkmm</application> on Win32 Please see http://live.gnome.org/gtkmm/MSWindows/BuildingGtkmm for instructions on how to build gtkmm on Windws. Working with gtkmm's Source Code If you are interested in helping out with the development of gtkmm, or fixing a bug in gtkmm, you'll probably need to build the development version of gtkmm. However, you should not install a development version over your stable version. Instead, you should install it alongside your existing gtkmm installation, in a separate path. The easiest way to do this is using jhbuild. jhbuild is a program that makes building GNOME software much easier by calculating dependencies and building things in the correct order. This section will give a brief explanation of how to set up jhbuild to build and install gtkmm from the source repository (git). For up-to-date information on jhbuild, please refer to the jhbuild manual. If you need assistance using jhbuild, you should ask for help on the gnome-love mailing list. Note that to build gtkmm from git, you'll often need to build all of its dependencies from git as well. jhbuild makes this easier than it would normally be, but it will take quite a while to build and install them all. You will probably encounter build problems, though these will usually be corrected quickly if you report them. Setting up jhbuild To set up jhbuild, follow the basic installation instructions from the jhbuild manual. After you have installed jhbuild, you should copy the sample jhbuild configuration file into your home directory by executing the following command from the jhbuild directory: $ cp examples/sample.jhbuildrc ~/.jhbuildrc The gtkmm module is defined in the gnome-suites-core-deps-3.x.modules moduleset, so edit your .jhbuildrc file and set your moduleset setting to the latest version e.g. like so: moduleset = 'gnome-suites-core-deps-3.4' After setting the correct moduleset, you need to tell jhbuild which module or modules to build. To build gtkmm and all of its dependencies, set modules like so: modules = [ 'gtkmm' ] You can build several modules by setting the modules variable to a meta-package, e.g. meta-gnome-core, or listing more than one module name. The modules variable specifies which modules will be built when you don't explicitly specify anything on the command line. You can always build a different moduleset later by specifying it on the commandline (e.g. jhbuild build gtkmm). Setting a prefix By default, jhbuild's configuration is configured to install all software built with jhbuild under the /opt/gnome prefix. You can choose a different prefix, but it is recommended that you keep this prefix different from other software that you've installed (don't set it to /usr!) If you've followed the jhbuild instructions then this prefix belongs to your user, so you don't need to run jhbuild as root. When you downloaded jhbuild from the git repository, you got a number of .modules files, specifying dependencies between modules. By default jhbuild does not use the downloaded versions of these files, but reads the latest versions in the git repository. This is usually what you want. If you don't want it, use the use_local_modulesets variable in .jhbuildrc. Installing and Using the git version of <application>gtkmm</application> Once you've configured jhbuild as described above, building gtkmm should be relatively straightforward. The first time you run jhbuild, you should run the following sequence of commands to ensure that jhbuild has the required tools and verify that it is set up correctly: $ jhbuild bootstrap $ jhbuild sanitycheck Installing <application>gtkmm</application> with <application>jhbuild</application> If everything worked correctly, you should be able to build gtkmm and all of its dependencies from git by executing jhbuild build (or, if you didn't specify gtkmm in the modules variable, with the command jhbuild build gtkmm). This command will build and install a series of modules and will probably take quite a long time the first time through. After the first time, however, it should go quite a bit faster since it only needs to rebuild files that changed since the last build. Alternatively, after you've built and installed gtkmm the first time, you can rebuild gtkmm by itself (without rebuilding all of its dependencies) with the command jhbuild buildone gtkmm. Using the git version of <application>gtkmm</application> After you've installed the git version of gtkmm, you're ready to start using and experimenting with it. In order to use the new version of gtkmm you've just installed, you need to set some environment variables so that your configure script knows where to find the new libraries. Fortunately, jhbuild offers an easy solution to this problem. Executing the command jhbuild shell will start a new shell with all of the correct environment variables set. Now if you re-configure and build your project just as you usually do, it should link against the newly installed libraries. To return to your previous environment, simply exit the jhbuild shell. Once you've built your software, you'll need to run your program within the jhbuild environment as well. To do this, you can again use the jhbuild shell command to start a new shell with the jhbuild environment set up. Alternatively, you can execute a one-off command in the jhbuild environment using the following command: jhbuild run command-name. In this case, the command will be run with the correct environment variables set, but will return to your previous environment after the program exits. Wrapping C Libraries with gmmproc gtkmm uses the gmmproc tool to generate most of its source code, using .defs files that define the APIs of GObject-based libraries. So it's quite easy to create additional gtkmm-style wrappers of other glib/GObject-based libraries. This involves a variety of tools, some of them crufty, but at least they work, and has been used successfully by several projects. The build structure Generation of the source code for a gtkmm-style wrapper API requires use of tools such as gmmproc and generate_wrap_init.pl. In theory you could write your own build files to use these appropriately, but a much better option is to make use of the build infrastructure provided by the mm-common module. To get started, it helps a lot to pick an existing binding module as an example to look at. For instance, let's pretend that we are wrapping a C library called libexample. It provides a GObject-based API with types named, for instance, ExampleThing and ExampleStuff. Copying the skeleton project Typically our wrapper library would be called libsomethingmm. We can start by copying the skeleton source tree from the mm-common module. $ git clone git://git.gnome.org/mm-common $ cp -a mm-common/skeletonmm libsomethingmm This provides a directory structure for the source .hg and .ccg files and the generated .h and .cc files, with filelist.am Automake include files that can specify the various files in use, in terms of generic Automake variables. The directory structure usually looks like this, after we have renamed the directories appropriately: libsomethingmm: The top-level directory. libsomething: Contains the main include file and the pkg-config .pc file. src: Contains .hg and .ccg source files. libsomethingmm: Contains generated and hand-written .h and .cc files. private: Contains generated *_p.h files. As well as renaming the directories, we should rename some of the source files. For instance: $ for f in $(find libsomethingmm -depth -name '*skeleton*'); do \ d="${f%/*}"; b="${f##*/}"; mv "$f" "$d/${b//skeleton/libsomething}"; \ done A number of the skeleton files must still be filled in with project-specific content later. Note that files ending in .in will be used to generate files with the same name but without the .in suffix, by replacing some variables with actual values during the configure stage. Modifying build files Now we edit the files to adapt them to our needs. You might prefer to use a multiple-file search-replace utility for this, such as regexxer. Note that nearly all of the files provided with the skeleton source tree contain placeholder text. Thus, the substitutions should be performed globally, and not be limited to the Automake and Autoconf files. All mentions of skeleton should be replaced by the correct name of the C library you are wrapping, such as "something" or "libsomething". In the same manner, all instances of SKELETON should be replaced by "SOMETHING" or "LIBSOMETHING", and all occurrences of Skeleton changed to "Something". Likewise, replace all instances of Joe Hacker by the name of the intended copyright holder, which is probably you. Do the same for the joe@example.com email address. configure.ac In configure.ac, The AC_CONFIG_SRCDIR() line must mention a file in our source tree. We can edit this later if we don't yet know the names of any of the files that we will create. It is common for binding modules to track the version number of the library they are wrapping. So, for instance, if the C library is at version 1.23.4, then the initial version of the binding module would be 1.23.0. However, avoid starting with an even minor version number as that usually indicates a stable release. The AC_CONFIG_HEADERS() line is used to generate two or more configuration header files. The first header file in the list contains all configuration macros which are set during the configure run. The remaining headers in the list contain only a subset of configuration macros and their corresponding configh.h.in file will not be autogenerated. The reason for this separation is that the namespaced configuration headers are installed with your library and define publically visible macros. The AC_SUBST([SOMETHINGMM_MODULES], ['...']) line may need to be modified to check for the correct dependencies. The AC_CONFIG_FILES() block must mention the correct directory names, as described above. Makefile.am files Next we must adapt the various Makefile.am files: In skeleton/src/Makefile.am we must mention the correct values for the generic variables that are used elsewhere in the build system: binding_name The name of the library, such as libsomethingmm. wrap_init_flags Additional command-line flags passed to the generate_wrap_init.pl script, such as the C++ namespace and the parent directory prefix of include files. In skeleton/skeletonmm/Makefile.am we must mention the correct values for the generic variables that are used elsewhere in the build system: lib_LTLIBRARIES This variable must mention the correct library name, and this library name must be used to form the _SOURCES, _LDFLAGS, and _LIBADD variable names. It is permissible to use variables substituted by configure like @SOMETHINGMM_API_VERSION@ as part of the variable names. AM_CPPFLAGS The command line options passed to the C preprocessor. AM_CXXFLAGS The command line options passed to the C++ compiler. Creating .hg and .ccg files We should now create our first .hg and .ccg files, to wrap one of the objects in the C library. One pair of example source files already exists: skeleton.ccg and skeleton.hg. Create copies of these files as necessary. We must mention all of our .hg and .ccg files in the skeleton/src/filelist.am file, typically in the files_hg variable. Any additional non-generated .h and .cc source files may be placed in skeleton/skeletonmm/ and listed in skeleton/skeletonmm/filelist.am, typically in the files_extra_h and files_extra_cc variables. In the .hg and .ccg files section you can learn about the syntax used in these files. Generating the .defs files. The .defs files are text files, in a lisp format, that describe the API of a C library, including its objects (GObjects, widgets, interfaces, boxed-types and plain structs) functions enums signals properties vfuncs At the moment, we have separate tools for generating different parts of these .defs, so we split them up into separate files. For instance, in the gtk/src directory of the gtkmm sources, you will find these files: gtk.defs Includes the other files. gtk_methods.defs Objects and functions. gtk_enums.defs Enumerations. gtk_signals.defs Signals and properties. gtk_vfuncs.defs vfuncs (function pointer member fields in structs), written by hand. Generating the methods .defs This .defs file describes objects and their functions. It is generated by the h2def.py script which you can find in glibmm's tools/defs_gen directory. For instance, $ ./h2def.py /usr/include/gtk-3.0/gtk/*.h > gtk_methods.defs Generating the enums .defs This .defs file describes enum types and their possible values. It is generated by the enum.pl script which you can find in glibmm's tools directory. For instance, $ ./enum.pl /usr/include/gtk-3.0/gtk/*.h > gtk_enums.defs Generating the signals and properties .defs This .defs file describes signals and properties. It is generated by the special extra_defs utility that is in every wrapping project, such as gtkmm/tools/extra_defs_gen/. For instance $ cd tools/extra_defs_gen $ ./generate_extra_defs > gtk_signals.defs You must edit the source code of your own generate_extra_defs tool in order to generate the .defs for the GObject C types that you wish to wrap. In the skeleton source tree, the source file is named codegen/extradefs/generate_extra_defs_skeleton.cc. If not done so already, the file should be renamed, with the basename of your new binding substituted for the skeleton placeholder. The codegen/Makefile.am file should also mention the new source filename. Then edit the .cc file to specify the correct types. For instance, your main() function might look like this: #include <libsomething.h> int main(int, char**) { something_init(); std::cout << get_defs(EXAMPLE_TYPE_SOMETHING) << get_defs(EXAMPLE_TYPE_THING); return 0; } Writing the vfuncs .defs This .defs file describes virtual functions (vfuncs). It must be written by hand. There is no skeleton to start from. You can look at gtkmm's gtk/src/gtk_vfuncs.defs file. The .hg and .ccg files The .hg and .ccg source files are very much like .h and .cc C++ source files, but they contain extra macros, such as _CLASS_GOBJECT() and _WRAP_METHOD(), from which gmmproc generates appropriate C++ source code, usually at the same position in the header. Any additional C++ source code will be copied verbatim into the corresponding .h or .cc file. A .hg file will typically include some headers and then declare a class, using some macros to add API or behaviour to this class. For instance, gtkmm's button.hg looks roughly like this: #include <gtkmm/bin.h> #include <gtkmm/activatable.h> #include <gtkmm/stockid.h> _DEFS(gtkmm,gtk) _PINCLUDE(gtkmm/private/bin_p.h) namespace Gtk { class Button : public Bin, public Activatable { _CLASS_GTKOBJECT(Button,GtkButton,GTK_BUTTON,Gtk::Bin,GtkBin) _IMPLEMENTS_INTERFACE(Activatable) public: _CTOR_DEFAULT explicit Button(const Glib::ustring& label, bool mnemonic = false); explicit Button(const StockID& stock_id); _WRAP_METHOD(void set_label(const Glib::ustring& label), gtk_button_set_label) ... _WRAP_SIGNAL(void clicked(), "clicked") ... _WRAP_PROPERTY("label", Glib::ustring) }; } // namespace Gtk The macros in this example do the following: _DEFS() Specifies the destination directory for generated sources, and the name of the main .defs file that gmmproc should parse. _PINCLUDE() Tells gmmproc to include a header from the generated private/button_p.h file. _CLASS_GTKOBJECT() Tells gmmproc to add some typedefs, constructors, and standard methods to this class, as appropriate when wrapping a widget. _IMPLEMENTS_INTERFACE() Tells gmmproc to add initialization code for the interface. _CTOR_DEFAULT Add a default constructor. _WRAP_METHOD(), _WRAP_SIGNAL(), and _WRAP_PROPERTY() Add methods to wrap parts of the C API. The .h and .cc files will be generated from the .hg and .ccg files by processing them with gmmproc like so, though this happens automatically when using the above build structure: $ cd gtk/src $ /usr/lib/glibmm-2.4/proc/gmmproc -I ../../tools/m4 --defs . button . ./../gtkmm Notice that we provided gmmproc with the path to the .m4 convert files, the path to the .defs file, the name of a .hg file, the source directory, and the destination directory. You should avoid including the C header from your C++ header, to avoid polluting the global namespace, and to avoid exporting unnecessary public API. But you will need to include the necessary C headers from your .ccg file. The macros are explained in more detail in the following sections. m4 Conversions The macros that you use in the .hg and .ccg files often need to know how to convert a C++ type to a C type, or vice-versa. gmmproc takes this information from an .m4 file in your tools/m4/ directory. This allows it to call a C function in the implementation of your C++ method, passing the appropriate parameters to that C functon. For instance, this tells gmmproc how to convert a GtkTreeView pointer to a Gtk::TreeView pointer: _CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)') $3 will be replaced by the parameter name when this conversion is used by gmmproc. Some extra macros make this easier and consistent. Look in gtkmm's .m4 files for examples. For instance: _CONVERSION(`PrintSettings&',`GtkPrintSettings*',__FR2P) _CONVERSION(`const PrintSettings&',`GtkPrintSettings*',__FCR2P) _CONVERSION(`const Glib::RefPtr<Printer>&',`GtkPrinter*',__CONVERT_REFPTR_TO_P($3)) m4 Initializations Often when wrapping methods, it is desirable to store the return of the C function in what is called an output parameter. In this case, the C++ method returns void but an output parameter in which to store the value of the C function is included in the argument list of the C++ method. gmmproc allows such functionality, but appropriate initialization macros must be included to tell gmmproc how to initialize the C++ parameter from the return of the C function. For example, if there was a C function that returned a GtkWidget* and for some reason, instead of having the C++ method also return the widget, it was desirable to have the C++ method place the widget in a specified output parameter, an initialization macro such as the following would be necessary: _INITIALIZATION(`Gtk::Widget&',`GtkWidget*',`$3 = Glib::wrap($4)') $3 will be replaced by the output parameter name of the C++ method and $4 will be replaced by the return of the C function when this initialization is used by gmmproc. For convenience, $1 will also be replaced by the C++ type without the ampersand (&) and $2 will be replaced by the C type. Class macros The class macro declares the class itself and its relationship with the underlying C type. It generates some internal constructors, the member gobject_, typedefs, the gobj() accessors, type registration, and the Glib::wrap() method, among other things. Other macros, such as _WRAP_METHOD() and _WRAP_SIGNAL() may only be used after a call to a _CLASS_* macro. _CLASS_GOBJECT This macro declares a wrapper for a type that is derived from GObject, but whose wrapper is not derived from Gtk::Object. _CLASS_GOBJECT( C++ class, C class, C casting macro, C++ base class, C base class ) For instance, from accelgroup.hg: _CLASS_GOBJECT(AccelGroup, GtkAccelGroup, GTK_ACCEL_GROUP, Glib::Object, GObject) _CLASS_GTKOBJECT This macro declares a wrapper for a type whose wrapper is derived from Gtk::Object, such as a widget or dialog. _CLASS_GTKOBJECT( C++ class, C class, C casting macro, C++ base class, C base class ) For instance, from button.hg: _CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Bin, GtkBin) You will typically use this macro when the class already derives from Gtk::Object. For instance, you will use it when wrapping a GTK+ Widget, because Gtk::Widget derives from Gtk::Object. You might also derive non-widget classes from Gtk::Object so they can be used without Glib::RefPtr. For instance, they could then be instantiated with Gtk::manage() or on the stack as a member variable. This is convenient, but you should use this only when you are sure that true reference-counting is not needed. We consider it useful for widgets. _CLASS_BOXEDTYPE This macro declares a wrapper for a non-GObject struct, registered with g_boxed_type_register_static(). _CLASS_BOXEDTYPE( C++ class, C class, new function, copy function, free function ) For instance, for Gdk::Color: _CLASS_BOXEDTYPE(Color, GdkColor, NONE, gdk_color_copy, gdk_color_free) _CLASS_BOXEDTYPE_STATIC This macro declares a wrapper for a simple assignable struct such as GdkRectangle. It is similar to _CLASS_BOXEDTYPE, but the C struct is not allocated dynamically. _CLASS_BOXEDTYPE_STATIC( C++ class, C class ) For instance, for Gdk::Rectangle: _CLASS_BOXEDTYPE_STATIC(Rectangle, GdkRectangle) _CLASS_OPAQUE_COPYABLE This macro declares a wrapper for an opaque struct that has copy and free functions. The new, copy and free functions will be used to instantiate the default constructor, copy constructor and destructor. _CLASS_OPAQUE_COPYABLE( C++ class, C class, new function, copy function, free function ) For instance, from stockitem.hg: _CLASS_OPAQUE_COPYABLE(StockItem, GtkStockItem, NONE, gtk_stock_item_copy, gtk_stock_item_free) _CLASS_OPAQUE_REFCOUNTED This macro declares a wrapper for a reference-counted opaque struct. The C++ wrapper cannot be directly instantiated and can only be used with Glib::RefPtr. _CLASS_OPAQUE_REFCOUNTED( C++ class, C class, new function, ref function, unref function ) For instance, for Pango::Coverage: _CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, pango_coverage_ref, pango_coverage_unref) _CLASS_GENERIC This macro can be used to wrap structs which don't fit into any specialized category. _CLASS_GENERIC( C++ class, C class ) For instance, for Pango::AttrIter: _CLASS_GENERIC(AttrIter, PangoAttrIterator) _CLASS_INTERFACE This macro declares a wrapper for a type that is derived from GTypeInterface. _CLASS_INTERFACE( C++ class, C class, C casting macro, C interface struct, Base C++ class (optional), Base C class (optional) ) For instance, from celleditable.hg: _CLASS_INTERFACE(CellEditable, GtkCellEditable, GTK_CELL_EDITABLE, GtkCellEditableIface) Two extra parameters are optional, for the case that the interface derives from another interface, which should be the case when the GInterface has another GInterface as a prerequisitite. For instance, from loadableicon.hg: _CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon) Constructor macros The _CTOR_DEFAULT() and _WRAP_CTOR() macros add constructors, wrapping the specified *_new() C functions. These macros assume that the C object has properties with the same names as the function parameters, as is usually the case, so that it can supply the parameters directly to a g_object_new() call. These constructors never actually call the *_new() C functions, because gtkmm must actually instantiate derived GTypes, and the *_new() C functions are meant only as convenience functions for C programmers. When using _CLASS_GOBJECT(), the constructors should be protected (rather than public) and each constructor should have a corresponding _WRAP_CREATE() in the public section. This prevents the class from being instantiated without using a RefPtr. For instance: class ActionGroup : public Glib::Object { _CLASS_GOBJECT(ActionGroup, GtkActionGroup, GTK_ACTION_GROUP, Glib::Object, GObject) protected: _WRAP_CTOR(ActionGroup(const Glib::ustring& name = Glib::ustring()), gtk_action_group_new) public: _WRAP_CREATE(const Glib::ustring& name = Glib::ustring()) _CTOR_DEFAULT This macro creates a default constructor with no arguments. _WRAP_CTOR This macro creates a constructor with arguments, equivalent to a *_new() C function. It won't actually call the *_new() function, but will simply create an equivalent constructor with the same argument types. It takes a C++ constructor signature, and a C function name. It also takes an optional extra argument: errthrow This tells gmmproc that the C *_new() has a final GError** parameter which should be ignored. When wrapping constructors, it is possible for gmmproc to generate convenience overloads of the wrapped constructors if the C function has parameters that are optional (ie. the C API allows null for those parameters). For instance, to specify if a parameter is optional, the _WRAP_CTOR() macro would look something like the following: _WRAP_CTOR(ToolButton(Widget& icon_widget, const Glib::ustring& label{?}), gtk_tool_button_new) The {?} following the name of the label parameter means that that parameter is optional. In this case, gmmproc will generate an extra constructor without that parameter. It is also possible to have the order of the parameters of the constructor different from that of the C function by using gmmproc's C++ to C parameter mapping functionality. Using this functionality, it is possible to map a C++ parameter to a C parameter by specifying the C parameter name. For instance, assuming that the declaration of the gtk_tool_button_new() function is the following: GtkToolItem* gtk_tool_button_new(GtkWidget* icon_widget, const gchar* label); The parameters of the wrapped constructor could be reordered using the following: _WRAP_CTOR(ToolButton(const Glib::ustring& label{label}, Widget& icon_widget{icon_widget}), gtk_tool_button_new) The {param_name} following each of the names of the parameters tells gmmproc to map those C++ parameters to the C parameters with the given names. Since the C++ parameter names correspond to the C ones, the above could be re-written as: _WRAP_CTOR(ToolButton(const Glib::ustring& label{.}, Widget& icon_widget{.}), gtk_tool_button_new) This same optional parameter syntax and parameter reordering is available for _WRAP_CREATE(). Additional create() overloads would be generated by gmmproc without the specified optional parameters. Hand-coding constructors When a constructor must be partly hand written because, for instance, the *_new() C function's parameters do not correspond directly to object properties, or because the *_new() C function does more than call g_object_new(), the _CONSTRUCT() macro may be used in the .ccg file to save some work. The _CONSTRUCT macro takes a series of property names and values. For instance, from button.ccg: Button::Button(const Glib::ustring& label, bool mnemonic) : _CONSTRUCT("label", label.c_str(), "use_underline", gboolean(mnemonic)) {} Method macros _WRAP_METHOD This macro generates the C++ method to wrap a C function. _WRAP_METHOD( C++ method signature, C function name) For instance, from entry.hg: _WRAP_METHOD(void set_text(const Glib::ustring& text), gtk_entry_set_text) The C function (e.g. gtk_entry_set_text) is described more fully in the .defs file, and the convert*.m4 files contain the necessary conversion from the C++ parameter type to the C parameter type. This macro also generates doxygen documentation comments based on the *_docs.xml and *_docs_override.xml files. There are some optional extra arguments: refreturn Do an extra reference() on the return value, in case the C function does not provide a reference. errthrow Use the last GError* parameter of the C function to throw an exception. deprecated Puts the generated code in #ifdef blocks. Text about the deprecation can be specified as an optional parameter. constversion Just call the non-const version of the same function, instead of generating almost duplicate code. ifdef Puts the generated code in #ifdef blocks. slot_name Tells _WRAP_METHOD() the name of the slot parameter of the method, if it has one. This enables gmmproc to generate code to copy the slot and pass the copy on to the C function in its final gpointer user_data parameter. The slot_callback option must also be used to specify the name of the glue callback function to also pass on to the C function. slot_callback Used in conjunction with the slot_name option to tell _WRAP_METHOD() the name of the glue callback function that handles extracting the slot and then calling it. The address of this callback is also passed on to the C function that the method wraps. no_slot_copy Tells gmmproc not to pass a copy of the slot to the C function, if the method has one. Instead the slot itself is passed. The slot parameter name and the glue callback function must have been specified with the slot_name and slot_callbback options respectively. As with _WRAP_CTOR() it is possible to specify if there are any optional parameters. If that is the case, gmmproc will generate convenience overload methods without those parameters. For example: _WRAP_METHOD(void get_preferred_size(Requisition& minimum_size, Requisition& natural_size{?}) const, gtk_widget_get_preferred_size) Would indicate that the natural_size parameter is optional because its name ends with {?}. In this case, gmmproc would generate a method overload without that parameter. Also, as with _WRAP_CTOR(), it is possible to reorder the parameters of the C++ method by using gmmproc's C++ to C parameter mapping functionality. Using this functionality, it is possible to map a C++ parameter to a C parameter by specifying the C parameter name. For example, if the gtk_widget_set_device_events() declaration is the following: void gtk_widget_set_device_events(GtkWidget* widget, GdkDevice* device, GdkEventMask events); Something like the following would change the order of the parameters in the C++ method: _WRAP_METHOD(void set_device_events(Gdk::EventMask events{events}, const Glib::RefPtr<const Gdk::Device>& device{device}), gtk_widget_set_device_events) The {param_name} following each of the names of the parameters tells gmmproc to map those C++ parameters to the C parameters with the given names. Since the C++ parameter names correspond to the C ones, the above could be re-written as: _WRAP_METHOD(void set_device_events(Gdk::EventMask events{.}, const Glib::RefPtr<const Gdk::Device>& device{.}), gtk_widget_set_device_events) With _WRAP_METHOD() it is also possible to include an output parameter in the C++ method declaration in which the return of the C function would be placed and to have the C++ method return void. To do that, simply include the output parameter declaration in the C++ method declaration appending a {OUT} to the output parameter name. For example, if gtk_widget_get_request_mode() is declared as the following: GtkSizeRequestMode gtk_widget_get_request_mode(GtkWidget* widget); And having the C++ method set an output parameter is desired instead of returning a SizeRequestMode, something like the following could be used: _WRAP_METHOD(void get_request_mode(SizeRequestMode& mode{OUT}) const, gtk_widget_get_request_mode) the {OUT} appended to the name of the mode output parameter tells gmmproc to place the return of the C function in that output parameter. In this case, however, a necessary initialization macro like the following would also have to be specified: _INITIALIZATION(`SizeRequestMode&',`GtkSizeRequestMode',`$3 = (SizeRequestMode)($4)') Which could also be written as: _INITIALIZATION(`SizeRequestMode&',`GtkSizeRequestMode',`$3 = ($1)($4)') _WRAP_METHOD() also supports setting C++ output parameters from C output parameters if the C function being wrapped has any. Suppose, for example, that we want to wrap the following C function that returns a value in its C output parameter rect: gboolean gtk_icon_view_get_cell_rect(GtkIconView* icon_view, GtkTreePath* path, GtkCellRenderer* cell, GdkRectangle* rect); To have gmmproc place the value returned in the C++ rect output parameter once the C function returns, something like the following _WRAP_METHOD() directive could be used: _WRAP_METHOD(bool get_cell_rect(const TreeModel::Path& path, const CellRenderer& cell, Gdk::Rectangle& rect{>>}) const, gtk_icon_view_get_cell_rect) The {>>} following the rect parameter name indicates that the C++ output parameter should be set from the value returned in the C parameter from the C function. gmmproc will generate a declaration of a temporary variable in which to store the value of the C output parameter and a statement that sets the C++ output parameter from the temporary variable. In this case it may be necessary to have an _INITIALIZATION() describing how to set a Gdk::Rectangle& from a GdkRectangle* such as the following: _INITIALIZATION(`Gdk::Rectangle&',`GdkRectangle', `$3 = Glib::wrap(&($4))') Selecting which C++ types should be used is also important when wrapping C API. Though it's usually obvious what C++ types should be used in the C++ method, here are some hints: Objects used via RefPtr: Pass the RefPtr as a const reference. For instance, const Glib::RefPtr<Gtk::Action>& action. Const Objects used via RefPtr: If the object should not be changed by the function, then make sure that the object is const, even if the RefPtr is already const. For instance, const Glib::RefPtr<const Gtk::Action>& action. Wrapping GList* and GSList* parameters: First, you need to discover what objects are contained in the list's data field for each item, usually by reading the documentation for the C function. The list can then be wrapped by a std::vector type. For instance, std::vector< Glib::RefPtr<Action> >. You may need to define a Traits type to specify how the C and C++ types should be converted. Wrapping GList* and GSList* return types: You must discover whether the caller should free the list and whether it should release the items in the list, again by reading the documentation of the C function. With this information you can choose the ownership (none, shallow or deep) for the m4 conversion rule, which you should probably put directly into the .hg file because the ownership depends on the function rather than the type. For instance: #m4 _CONVERSION(`GSList*',`std::vector<Widget*>',`Glib::SListHandler<Widget*>::slist_to_vector($3, Glib::OWNERSHIP_SHALLOW)') _WRAP_METHOD_DOCS_ONLY This macro is like _WRAP_METHOD(), but it generates only the documentation for a C++ method that wraps a C function. Use this when you must hand-code the method, but you want to use the documentation that would be generated if the method was generated. _WRAP_METHOD_DOCS_ONLY(C function name) For instance, from container.hg: _WRAP_METHOD_DOCS_ONLY(gtk_container_remove) _IGNORE / _IGNORE_SIGNAL gmmproc will warn you on stdout about functions and signals that you have forgotten to wrap, helping to ensure that you are wrapping the complete API. But if you don't want to wrap some functions or signals, or if you chose to hand-code some methods then you can use the _IGNORE() or _IGNORE_SIGNAL() macro to make gmmproc stop complaining. _IGNORE(C function name 1, C function name2, etc) _IGNORE_SIGNAL(C signal name 1, C signal name2, etc) For instance, from buttonbox.hg: _IGNORE(gtk_button_box_set_spacing, gtk_button_box_get_spacing) _WRAP_SIGNAL This macro generates the C++ libsigc++-style signal to wrap a C GObject signal. It actually generates a public accessor method, such as signal_clicked(), which returns a proxy object. gmmproc uses the .defs file to discover the C parameter types and the .m4 convert files to discover appropriate type conversions. _WRAP_SIGNAL( C++ signal handler signature, C signal name) For instance, from button.hg: _WRAP_SIGNAL(void clicked(),"clicked") Signals usually have function pointers in the GTK struct, with a corresponding enum value and a g_signal_new() in the .c file. There are some optional extra arguments: no_default_handler Do not generate an on_something() virtual method to allow easy overriding of the default signal handler. Use this when adding a signal with a default signal handler would break the ABI by increasing the size of the class's virtual function table. custom_default_handler Generate a declaration of the on_something() virtual method in the .h file, but do not generate a definition in the .cc file. Use this when you must generate the definition by hand. custom_c_callback Do not generate a C callback function for the signal. Use this when you must generate the callback function by hand. refreturn Do an extra reference() on the return value of the on_something() virtual method, in case the C function does not provide a reference. ifdef Puts the generated code in #ifdef blocks. _WRAP_PROPERTY This macro generates the C++ method to wrap a C GObject property. You must specify the property name and the wanted C++ type for the property. gmmproc uses the .defs file to discover the C type and the .m4 convert files to discover appropriate type conversions. _WRAP_PROPERTY(C property name, C++ type) For instance, from button.hg: _WRAP_PROPERTY("label", Glib::ustring) _WRAP_VFUNC This macro generates the C++ method to wrap a virtual C function. _WRAP_VFUNC( C++ method signature, C function name) For instance, from widget.hg: _WRAP_VFUNC(SizeRequestMode get_request_mode() const, get_request_mode) The C function (e.g. get_request_mode) is described more fully in the *_vfuncs.defs file, and the convert*.m4 files contain the necessary conversion from the C++ parameter type to the C parameter type. There are some optional extra arguments: refreturn Do an extra reference() on the return value of the something_vfunc() function, in case the virtual C function does not provide a reference. refreturn_ctype Do an extra reference() on the return value of an overridden something_vfunc() function in the C callback function, in case the calling C function expects it to provide a reference. errthrow Use the last GError* parameter of the C virtual function (if there is one) to throw an exception. custom_vfunc Do not generate a definition of the vfunc in the .cc file. Use this when you must generate the vfunc by hand. custom_vfunc_callback Do not generate a C callback function for the vfunc. Use this when you must generate the callback function by hand. ifdef Puts the generated code in #ifdef blocks. A rule to which there may be exceptions: If the virtual C function returns a pointer to an object derived from GObject, i.e. a reference-counted object, then the virtual C++ function shall return a Glib::RefPtr<> object. One of the extra arguments refreturn or refreturn_ctype is required. Other macros _IMPLEMENTS_INTERFACE This macro generates initialization code for the interface. _IMPLEMENTS_INTERFACE(C++ interface name) For instance, from button.hg: _IMPLEMENTS_INTERFACE(Activatable) There is one optional extra argument: ifdef Puts the generated code in #ifdef blocks. _WRAP_ENUM This macro generates a C++ enum to wrap a C enum. You must specify the desired C++ name and the name of the underlying C enum. For instance, from widget.hg: _WRAP_ENUM(WindowType, GdkWindowType) If the enum is not a GType, you must pass a third parameter NO_GTYPE. This is the case when there is no *_get_type() function for the C enum, but be careful that you don't just need to include an extra header for that function. You should also file a bug against the C API, because all enums should be registered as GTypes. For example, from icontheme.hg: _WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE) _WRAP_GERROR This macro generates a C++ exception class, derived from Glib::Error, with a Code enum and a code() method. You must specify the desired C++ name, the name of the corresponding C enum, and the prefix for the C enum values. This exception can then be thrown by methods which are generated from _WRAP_METHOD() with the errthrow option. For instance, from pixbuf.hg: _WRAP_GERROR(PixbufError, GdkPixbufError, GDK_PIXBUF_ERROR) _MEMBER_GET / _MEMBER_SET Use these macros if you're wrapping a simple struct or boxed type that provides direct access to its data members, to create getters and setters for the data members. _MEMBER_GET(C++ name, C name, C++ type, C type) _MEMBER_SET(C++ name, C name, C++ type, C type) For example, in rectangle.hg: _MEMBER_GET(x, x, int, int) _MEMBER_GET_PTR / _MEMBER_SET_PTR Use these macros to automatically provide getters and setters for a data member that is a pointer type. For the getter function, it will create two methods, one const and one non-const. _MEMBER_GET_PTR(C++ name, C name, C++ type, C type) _MEMBER_SET_PTR(C++ name, C name, C++ type, C type) For example, for Pango::Analysis in item.hg: // _MEMBER_GET_PTR(engine_lang, lang_engine, EngineLang*, PangoEngineLang*) // It's just a comment. It's difficult to find a real-world example. _MEMBER_GET_GOBJECT / _MEMBER_SET_GOBJECT Use these macros to provide getters and setters for a data member that is a GObject type that must be referenced before being returned. _MEMBER_GET_GOBJECT(C++ name, C name, C++ type, C type) _MEMBER_SET_GOBJECT(C++ name, C name, C++ type, C type) For example, in Pangomm, layoutline.hg: _MEMBER_GET_GOBJECT(layout, layout, Pango::Layout, PangoLayout*) Basic Types Some of the basic types that are used in C APIs have better alternatives in C++. For example, there's no need for a gboolean type since C++ has bool. The following list shows some commonly-used types in C APIs and what you might convert them to in a C++ wrapper library. Basic Type equivalents C type C++ type gbooleanbool gintint guintguint gdoubledouble gunichargunichar gchar*Glib::ustring (or std::string for filenames) Hand-coded source files You might want to include additional source files that will not be generated by gmmproc from .hg and .ccg files. You can simply place these in your libsomething/libsomethingmm directory and mention them in the Makefile.am in the files_extra_h and files_extra_cc variables. Initialization Your library must be initialized before it can be used, to register the new types that it makes available. Also, the C library that you are wrapping might have its own initialization function that you should call. You can do this in an init() function that you can place in hand-coded init.h and init.cc files. This function should initialize your dependencies (such as the C function, and gtkmm) and call your generated wrap_init() function. For instance: void init() { Gtk::Main::init_gtkmm_internals(); //Sets up the g type system and the Glib::wrap() table. wrap_init(); //Tells the Glib::wrap() table about the libsomethingmm classes. } The implementation of the wrap_init() method in wrap_init.cc is generated by generate_wrap_init.pl, but the declaration in wrap_init.h is hand-coded, so you will need to adjust wrap_init.h so that the init() function appears in the correct C++ namespace. Problems in the C API. You are likely to encounter some problems in the library that you are wrapping, particularly if it is a new project. Here are some common problems, with solutions. Unable to predeclare structs By convention, structs are declared in glib/GTK+-style headers like so: typedef struct _ExampleWidget ExampleWidget; struct _ExampleWidget { ... }; The extra typedef allows the struct to be used in a header without including its full definition, simply by predeclaring it, by repeating that typedef. This means that you don't have to include the C library's header in your C++ header, thus keeping it out of your public API. gmmproc assumes that this technique was used, so you will see compiler errors if that is not the case. This compiler error might look like this: example-widget.h:56: error: using typedef-name 'ExampleWidget' after 'struct' ../../libexample/libexamplemm/example-widget.h:34: error: 'ExampleWidget' has a previous declaration here make[4]: *** [example-widget.lo] Error 1 or this: example-widget.h:60: error: '_ExampleWidget ExampleWidget' redeclared as different kind of symbol ../../libexample/libexamplemm/example-widget.h:34: error: previous declaration of 'typedef struct _ExampleWidget ExampleWidget' This is easy to correct in the C library, so do send a patch to the relevant maintainer. Lack of properties By convention, glib/GTK+-style objects have *_new() functions, such as example_widget_new() that do nothing more than call g_object_new() and return the result. The input parameters are supplied to g_object_new() along with the names of the properties for which they are values. For instance, GtkWidget* example_widget_new(int something, const char* thing) { return g_object_new (EXAMPLE_TYPE_WIDGET, "something", something, "thing", thing, NULL); } This allows language bindings to implement their own equivalents (such as C++ constructors), without using the *_new() function. This is often necessary so that they can actually instantiate a derived GType, to add their own hooks for signal handlers and vfuncs. At the least, the _new() function should not use any private API (functions that are only in a .c file). Even when there are no functions, we can sometimes reimplement 2 or 3 lines of code in a _new() function as long as those lines of code use API that is available to us. Another workaround is to add a *_construct() function that the C++ constructor can call after instantiating its own type. For instance, GtkWidget* example_widget_new(int something, const char* thing) { ExampleWidget* widget; widget = g_object_new (EXAMPLE_TYPE_WIDGET, NULL); example_widget_construct(widget, "something", something, "thing", thing); } void example_widget_construct(ExampleWidget* widget, int something, const char* thing) { //Do stuff that uses private API: widget->priv->thing = thing; do_something(something); } Adding properties, and ensuring that they interact properly with each other, is relatively difficult to correct in the C library, but it is possible, so do file a bug and try to send a patch to the relevant maintainer. Documentation In general, gtkmm-style projects use Doxygen, which reads specially formatted C++ comments and generates HTML documentation. You may write these doxygen comments directly in the header files. Reusing C documentation You might wish to reuse documentation that exists for the C library that you are wrapping. GTK-style C libraries typically use gtk-doc and therefore have source code comments formatted for gtk-doc and some extra documentation in .sgml and .xml files. The docextract_to_xml.py script, from glibmm's tools/defs_gen directory, can read these files and generate an .xml file that gmmproc can use to generate doxygen comments. gmmproc will even try to transform the documentation to make it more appropriate for a C++ API. For instance, ./docextract_to_xml.py -s ~/checkout/gnome/gtk+/gtk/ -s ~/checkout/gnome/gtk+/docs/reference/gtk/ > gtk_docs.xml Because this automatic transformation is not always appropriate, you might want to provide hand-written text for a particular method. You can do this by copying the XML node for the function from your something_docs.xml file to the something_docs_override.xml file and changing the contents. Documentation build structure If you copied the skeleton source tree in mm-common and substituted the placeholder text, then you will already have suitable Makefile.am and Doxyfile.in files. With the mm-common build setup, the list of Doxygen input files is not defined in the Doxygen configuration file, but passed along from make to the standard input of doxygen. The input file list is defined by the doc_input variable in the Makefile.am file.
usr/share/help-langpack/zh_CN/file-roller/archive-create.page0000644000373100047300000000767612303664113026037 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

Add files or folders to a new archive. Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
创建新归档文件

Create a new archive with Archive Manager by following these steps:

Click the Create a new archive toolbar button, or click Archive New….

The file chooser will open: name your new archive file and choose the location for it to be saved to, then click Create to continue.

In this dialog, you may also choose the file format that you want to use: available extensions are listed at the bottom. If you do not choose a file format, the new archive will be a tar.gz.

By clicking Other Options you can set a password, or split your new archive into smaller, individual files by selecting the relevant option and specifying the volume for each part in MB.

Add the desired files to your archive by clicking the Add files to the archive toolbar button, or by clicking EditAdd files…. Archive Manager also allows you to add whole folders by clicking the Add a folder to the archive toolbar button, or selecting Edit Add a folder.

当您添加一个文件夹到归档文件时,程序会提供一些选项:

Whether to include subfolders or not.

Choose which files should be included.

Select which subfolders or files are to be excluded.

Not all archive file formats support folders — if the file format that you are using does not, you will not be warned. If the file format that you are using does not support folders, the files from the folders will be added, but not the folder itself.

Once you finish adding files, the archive is ready; you do not need to save it.

usr/share/help-langpack/zh_CN/file-roller/archive-edit.page0000644000373100047300000000570512303664113025510 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

修改归档文件中的内容。 Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
编辑归档文件

With Archive Manager you can edit an existing archive by adding new files, removing unwanted ones or by renaming them. You can work with folders in the same way as with files.

Add files

Add files to an existing archive by following the instructions for creating an archive.

Remove files

选择文件。

点击编辑删除,或右键点击已选择的文件,选择删除

Rename files

选择文件。

点击编辑重命名...,或右键点击已选择的文件,选择重命名...

Enter the new file name into the dialog which has opened.

通过点击重命名来确认名称。

usr/share/help-langpack/zh_CN/file-roller/archive-extract.page0000644000373100047300000000657612303664113026244 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

Extract files or folders from your archive. Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
提取归档文件

Extract files from an archive using Archive Manager by following these steps:

打开归档文件。

Click Archive Extract… or click Extract in the toolbar button.

Choose where you want the archive to be extracted to in the file chooser. This will be the destination folder.

See advanced options for extracting archives for more extraction options.

点击提取

If an archive is protected by a password, Archive Manager will request it. Type in the password and click OK.

该应用将在新对话框中为您显示进度条。如果提取成功完成,程序将询问您如何操作:

Quit to close Archive Manager.

Show the files to view the destination folder with Files.

Close the dialog.

usr/share/help-langpack/zh_CN/file-roller/archive-extract-advanced-options.page0000644000373100047300000000721712303664113031471 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

指定归档文件提取的偏好设置(首选项)。 Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
归档文件提取的高级选项

Archive Manager offers different options for extracting an archive. You can see these options in the file chooser dialog, that is used for choosing the location for the extracted files. At the bottom of this dialog, you can decide if you want to extract:

<gui>所有文件</gui>

All the files and folders in the archive will be extracted.

<gui>已选择的文件</gui>

Archive Manager extracts only the selected files.

You need to select the files that you wish to extract before you click Archive Extract…. Do this by clicking on the file name. Use Ctrl and Shift keys, to select more than one file.

<gui>文件</gui>

You can type in the names of the files that you want to extract. Separate individual files using a semicolon (;)

The file name needs to be followed by a file extension. You can use the asterisk (*) as a wild card. For example, to select all .txt files, type *.txt.

You can specify in the file chooser dialog whether you want to:

<gui>Keep directory structure</gui>

Tick this option if you want to keep the directory structure as it is in your archive.

<gui>Do not overwrite newer files</gui>

该选项将不覆盖那些修改日期比归档中更新的现有同名文件。

这些动作会在对话框底部列出。

usr/share/help-langpack/zh_CN/file-roller/archive-open.page0000644000373100047300000000543412303664113025523 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

打开已有归档文件。 Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
打开归档文件

You can open an existing archive with Archive Manager by:

clicking the Open toolbar button

clicking Archive Open…

You may also use the Open Recent option by:

clicking the Open a recently used archive toolbar button and selecting a file

clicking Archive Open Recent to see the list of recently used archives

If Archive Manager cannot open your recently used archive and shows the error message The file doesn't exist, it may be that the location of the archive file has changed. You can try using the Open option to search for it.

usr/share/help-langpack/zh_CN/file-roller/archive-view.page0000644000373100047300000000721612303664113025534 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

查看已有归档文件及其内容。 Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
查看归档文件

There are two ways to view an archive:

查看所有文件

Click ViewView All Files. Archive Manager will list all files inside the archive. You will see their names, sizes, types, dates of the last modification and locations.

You may use the column headings mentioned above (name, size…) to sort the files in your archive. Do this by clicking on them; you can toggle to sort in reverse order.

以文件夹查看

该视图显示传统的目录结构。要使用该视图,可点击查看以文件夹查看

While viewing your archive in this way, you can press F9, or click View Folders option, to see a tree view of the folders in the side pane. It allows you to navigate easily between folders.

打开归档文件中的文件

Open files which are in your archive by double-clicking on the file name, or by right-clicking on the file name and selecting Open. Archive Manager will open the file with the default application for that file type.

Open the file with a different application by following these steps:

Right click on the file.

Click Open With….

Select the application that you want to use and click Select.

usr/share/help-langpack/zh_CN/file-roller/index.page0000644000373100047300000000372112303664113024247 0ustar langpacklangpack00000000000000 Archive Manager Help Archive Manager Help Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
<media type="image" mime="image/png" src="figures/file-roller-icon.png"> </media> Archive Manager
管理归档文件
高级选项
故障排除
usr/share/help-langpack/zh_CN/file-roller/introduction.page0000644000373100047300000000561712303664113025667 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

Introduction to the GNOME Archive Manager. Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
简介

Archive Manager is an application for managing archive files, for example, .zip or .tar files; it is designed to be easy to use. Archive Manager provides all the tools that are necessary for creating, modifying and extracting archives.

An archive consists of one or more files and folders, along with metadata. It may be encrypted in part or as a whole. Archive files are useful for storing data and transferring it between computers as they allow you to collect multiple files into one.

With Archive Manager you can:

create a new archive

view the content of an existing archive

view a file contained in an archive

modify existing archives

extract files from an archive

Viewing an archive with <gui>Archive Manager</gui>

Screenshot of the Archive Manager main window.

usr/share/help-langpack/zh_CN/file-roller/keyboard-shortcuts.page0000644000373100047300000001025612303664113026775 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

The list of shortcuts in Archive Manager. Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
键盘快捷键

Using keyboard shortcuts can help speed up work-flow. In the table below is a list of shortcuts which can be used in Archive Manager.

创建新归档文件

CtrlN

打开归档文件

CtrlO

提取归档文件

CtrlE

查看归档文件属性

Alt回车

关闭

CtrlW

剪切

CtrlX

复制

CtrlC

粘贴

CtrlV

重命名归档中的文件或文件夹

F2

全选

CtrlA

全部不选

ShiftCtrlA

查找

CtrlF

删除归档文件中的文件/文件夹

Delete

在侧栏面板中显示文件夹树型视图

F9

以文件列表形式查看归档文件中的内容

Ctrl1

以文件夹结构形式查看归档文件中的内容

Ctrl2

停止操作

Esc

刷新

CtrlR

View help

F1

usr/share/help-langpack/zh_CN/file-roller/password-protection.page0000644000373100047300000000743712303664113027176 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

为您的归档文件设置密码。 Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
密码保护

You can encrypt an archive with a password so that only you and those with whom you choose to share the password are able to access it. Note that the password can still be guessed, so for highest security, use a good password.

Archive Manager allows you to encrypt an archive with a password only in specific circumstances.

在新归档文件中设置密码以加密数据,可通过下面步骤:

Start creating a new archive.

At the bottom of the file chooser dialog you can choose a File Format and enter a password into the Password field in Other Options.

You may not be able to type a password, because not all archive types support encryption, so choose an archive type that can be password protected before setting a password.

Continue with creating a new archive.

通过设置密码保护已有的归档文件:

Open an archive.

Click EditPassword….

Type a password into the Password field.

If you want to encrypt the list of files tick Encrypt the file list too.

Click OK to continue.

Archive Manager will encrypt only new files which will be added to the archive!

usr/share/help-langpack/zh_CN/file-roller/supported-formats.page0000644000373100047300000000650712303664113026643 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

Archive Manager works with a number of different file formats. Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
支持的文件格式

File formats that are supported by Archive Manager include:

纯归档文件

AIX Small Indexed Archive (.ar)

ISO-9660 CD 光盘镜像 [只读模式] (.iso)

磁带归档文件(.tar)

归档并压缩的文件

Java 归档文件(.jar)

WinRAR 压缩归档文件 (.rar)

压缩的磁带归档文件:

gzip (.tar.gz, .tgz)

bzip (.tar.bz, .tbz)

bzip2 (.tar.bz2, .tbz2)

lzop (.tar.lzo, .tzo)

7zip (.tar.7z)

xz (.tar.xz)

Cabinet File (.cab)

ZIP 归档格式漫画书 (.cbz)

ZIP 归档文件 (.zip)

ZOO 压缩归档文件 (.zoo)

For some file formats, Archive Manager may require additional plugins.

usr/share/help-langpack/zh_CN/file-roller/test-integrity.page0000644000373100047300000000424612303664113026136 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

Check the archive for errors. Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
测试完整性

Archive Manager allows you to check whether the compressed data in an archive contains any errors. Do this by clicking ArchiveTest Integrity.

测试结果对话框会弹出。您将看到测试的文件列表,在底部也会有测试摘要。

完整性测试可以验证您的数据是否损坏。

usr/share/help-langpack/zh_CN/file-roller/troubleshooting-archive-open.page0000644000373100047300000000453012303664113030744 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

我无法打开归档文件。 Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
打开归档文件问题

If you cannot open an existing archive with Archive Manager, check the format of your file. Some types of archive may require additional plugins; the installation process for these varies between different distributions.

If Archive Manager cannot open a recently used archive, it may be that the location of this archive file has changed. See the help page about opening an archive for further information.

usr/share/help-langpack/zh_CN/file-roller/troubleshooting-password.page0000644000373100047300000000413212303664113030224 0ustar langpacklangpack00000000000000 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

创作共同署名,相同方式同享许可 3.0

我已经设置密码,但它无法保护整个归档文件。 Zhang Miao mymzhang@gmail.com 2009 TeliuTe teliute@163.com 2010 YunQiang Su wzssyqa@gmail.com 2010 tuhaihe 1132321739qq@gmail.com 2012
设置密码问题

Archive Manager does not add password protection for an existing archive. While working with such an archive, you can only set a password for newly added files. To do this, follow instructions on Password protection page.

usr/share/help-langpack/zh_CN/gnome-calculator/base.page0000644000373100047300000000174412300453146025074 0ustar langpacklangpack00000000000000 数值进制

要用特定的数制输入一个数,请使用 下标。下面的数是等价的。

1001011₂

113₈

75

4B₁₆

编程模式 里,有二进制按钮(CtrlB)、八进制按钮 (CtrlO) 和十六进制按钮 (CtrlH)。

要设置运算结果的数制,请在 结果格式 中更改。

要更改当前结果的数制,点击一个数制按钮或按 CtrlD 显示十进制格式。

usr/share/help-langpack/zh_CN/gnome-calculator/functions.page0000644000373100047300000000405512300453146026170 0ustar langpacklangpack00000000000000 函数

函数可以用插入函数名和参数的方法,如果参数不是数字或 变量,那么要用括号括起来。

sin 30

abs (5−9)

下面是预定义的函数。

abs

Absolute Value

cos

Cosine

cosh

Hyperbolic Cosine

frac

小数部分

int

整数部分

ln

Natural Logarithm

log

Logarithm

not

Boolean NOT

ones

反码

sin

Sine

sinh

Hyperbolic Sine

sqrt

Square Root

tan

Tangent

tanh

Hyperbolic Tangent

twos

补码

Calculator does not support user-defined functions.

usr/share/help-langpack/zh_CN/gnome-calculator/modulus.page0000644000373100047300000000052512300453146025646 0ustar langpacklangpack00000000000000 取模运算

取模运算使用 mod 操作符。

9 mod 5

usr/share/help-langpack/zh_CN/gnome-calculator/trigonometry.page0000644000373100047300000000213612300453146026720 0ustar langpacklangpack00000000000000 三角函数

三角函数可以执行 sin、cos 和 tan 函数。

sin 45

The angle units used can be changed from the CalculatorPreferences menu. Trigonometry buttons are visible when in Advanced mode.

在函数的最后添加“h”,则为双曲线函数。

sinh 0.34

反函数是既可以输入使用反函数符号 ⁻¹ (CtrlI) 也可以在一个函数前面加“a”。下面两个式子是等价的。

sin⁻¹ 0.5

asin 0.5

要输入 π,按键盘组合键 CtrlP

usr/share/help-langpack/zh_CN/gnome-calculator/conv-character.page0000644000373100047300000000072312300453146027055 0ustar langpacklangpack00000000000000 字符代码

程序模式,点 á 按钮会弹出一个转换字符到字符代码的对话框。

字符转换不能使用键盘操作。

usr/share/help-langpack/zh_CN/gnome-calculator/legal.xml0000644000373100047300000000101412300453146025120 0ustar langpacklangpack00000000000000

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.

As a special exception, the copyright holders give you permission to copy, modify, and distribute the example code contained in this document under the terms of your choosing, without restriction.

usr/share/help-langpack/zh_CN/gnome-calculator/financial.page0000644000373100047300000000415312300453146026103 0ustar langpacklangpack00000000000000 财务函数

在财务模式中下列按钮可用。

复利

计算投资增值一定量需要的复利周期数,每个复利期的利率固定。

Ddb

使用双倍余额递减法计算资产在指定时间内的折旧额。

Fv

计算投资的未来值,按约定付款基数的固定利率下每期等额付款。

Gpm

按产品成本及期望的毛利润率,计算某产品的转售价格。

Pmt

计算一笔贷款的分期支付额,支付活动在每个支付期末进行。

Pv

计算一项投资的现值,该投资基于投资期各支付期间的一系列等量支付。

Rate

计算某投资增加到某一未来值所需的每期利率,在期间内的复利周期数。

Sln

计算某项资产在一段时间期限内的直线折旧额。直线折旧法在资产的使用期限内平均分担可折旧值。使用期限为资产折旧的期间数,通常为年数。

Syd

计算资产在指定时间期限内的折旧额,使用年数总和法。这种折旧方法会加快折旧的速度,因此前期比后期发生更多折旧费用。使用期限指该资产折旧期数,通常情况为年。

期数

计算期限内普通年金积累到某一未来值需要的付款期数,按某一每期利率。

财务函数不能使用键盘来执行。

usr/share/help-langpack/zh_CN/gnome-calculator/logarithm.page0000644000373100047300000000140612300453146026143 0ustar langpacklangpack00000000000000 常用对数

对数运算可以使用 log函数。

log 100

要计算一个不同底数的对数,请在对数函数后面使用 下标。

log₂ 32

要进行自然对数运算,请使用 ln 函数。

ln 1.32

欧拉数可以用 变量 e

e^1.32

usr/share/help-langpack/zh_CN/gnome-calculator/absolute.page0000644000373100047300000000062412300453146025774 0ustar langpacklangpack00000000000000 绝对值

绝对值运算使用 | 符号,或 abs 函数。

|−1|

abs (−1)

usr/share/help-langpack/zh_CN/gnome-calculator/number-display.page0000644000373100047300000000233012300453146027105 0ustar langpacklangpack00000000000000 结果格式

显示结果的格式,可以在 计算器首选项 菜单中更改。

十进制

结果显示为十进制数

“科学”

结果显示为 科学计数

工程

结果以科学计数法显示,指数始终为 3 的倍数。

二进制

结果显示为 二进制数

八进制

结果显示为 八进制数

十六进制

结果显示为 十六进制数

十进制数的小数点,是否后面补零,是否千分位分隔,也可以进行配置。

usr/share/help-langpack/zh_CN/gnome-calculator/variables.page0000644000373100047300000000221612300453146026125 0ustar langpacklangpack00000000000000 变量

要赋值给一个变量,请使用 = 或在 高级模式 中,选择一个变量用 x 按钮赋值。变量名只能包含大小写字母。

x=5

value=82

变量可以用在任何等式中,用来替代所赋数值。变量可以用 x 按钮插入。

6x+3

xy−3x+7y−21

下面的变量是预定义好的。

ans

上次运算结果

e

Euler's Number

π

Pi

rand

在 [0,1] 之间的随机值(在每次读取时改变)

usr/share/help-langpack/zh_CN/gnome-calculator/factorial.page0000644000373100047300000000055612300453146026126 0ustar langpacklangpack00000000000000 阶乘

阶乘用 ! 符号输入,要计算 6 的阶乘,按如下操作:

6!

usr/share/help-langpack/zh_CN/gnome-calculator/power.page0000644000373100047300000000203512300453146025310 0ustar langpacklangpack00000000000000 幂和根

幂是通过在一个数后面加上 上标。

一个数的倒数可以通过输入倒数符号 ⁻¹ (CtrlI)。

3⁻¹

幂运算也可以使用 ^ 符号。这使幂成为一个代数式。

5^(6−2)

如果您的键盘上没有 ^ 键,也可以使用两个 *

平方根运算可以使用根号(CtrlR)。

√2

n 次根式运算,可以在根号前面使用 下标。

₃√2

usr/share/help-langpack/zh_CN/gnome-calculator/conv-length.page0000644000373100047300000000105212300453146026376 0ustar langpacklangpack00000000000000 长度/面积/体积

要转换两个长度、面积和体积单位,请使用 in 操作符。

6 meters in inches

1 acre in cm²

1 pint in mL

长度/面积/体积转换必须使用键盘来执行。

usr/share/help-langpack/zh_CN/gnome-calculator/index.page0000644000373100047300000000155012300453146025264 0ustar langpacklangpack00000000000000 Robert Ancell robert.ancell@gmail.com <media type="image" src="figures/logo32.png"/> Calculator Help
用户界面
表达式
转换
财务运算
usr/share/help-langpack/zh_CN/gnome-calculator/conv-currency.page0000644000373100047300000000111412300453146026746 0ustar langpacklangpack00000000000000 货币

要转换货币,请在 财务模式 中使用货币相关控件。

您也可以用键盘和 in 操作符来转换货币。

13.65 USD in GBP

货币信息是一个大约值,不应该用于财务决策。

usr/share/help-langpack/zh_CN/gnome-calculator/equation.page0000644000373100047300000000172612300453146026007 0ustar langpacklangpack00000000000000 0 基本式子

表达式在标准数学模式中输入,例如 7 加 2 如下操作:

7+2

要得到结果,用鼠标点 = 按钮,或者按键盘上的回车键。

计算顺序遵守数学运算法则 - 先乘除后加减。下面的式子结果为 1 (3×2 = 6,7−6 = 1)。

7−3×2

可以用括号来改变运算顺序,下面的式子结果为 8 (7−3 = 4,4×2 = 8)。

(7−3)×2

要清除显示,点击 Clr 按钮或按 Escape 键。

usr/share/help-langpack/zh_CN/gnome-calculator/scientific.page0000644000373100047300000000155512300453146026302 0ustar langpacklangpack00000000000000 科学计数

要输入一个科学计数值,使用 ×10x 按钮(CtrlE)。数字模式 自动变为上标。要输入 2×10¹⁰⁰,从尾数(2)开始输入:

2

然后点科学计数按钮(或者按 CtrlE):

2×10

然后输入指数 (100):

2×10¹⁰⁰

要让结果用科学计数格式,在 结果格式 里更改。

usr/share/help-langpack/zh_CN/gnome-calculator/superscript.page0000644000373100047300000000162212300453146026540 0ustar langpacklangpack00000000000000 _ 上标和下标

一些等式中可能需要输入带有上标和下标的数,例如:

x³+2x²−5

要输入一个上标数,用鼠标点 ↑n and ↓n 按钮。当激活一种模式后,再点击输入的数字将是上标或下标。要返回到普通模式,再次点击激活的按钮。

要用键盘输入上标,在输入数字的时候按住 Ctrl 键,按住 Alt 是下标。

当接着输入一个非数字字符时(如 +),也会回到普通模式。

usr/share/help-langpack/zh_CN/gnome-calculator/percentage.page0000644000373100047300000000123212300453146026267 0ustar langpacklangpack00000000000000 百分数

百分比运算使用 %

如果使用加减,加减的是这个值的百分数。下面的式子计算了 140 元和 15% 税物品的价格(140 + (15÷100)×140):

140+15%

在其他百分号情况,结果是100里的一部分。下面的式子计算了80个苹果的四分之一((25÷100)×80):

25%×80

usr/share/help-langpack/zh_CN/gnome-calculator/mouse.page0000644000373100047300000000167512300453146025315 0ustar langpacklangpack00000000000000 使用鼠标

All equations can be entered using the mouse. To access all buttons there are a number of modes that can be selected from the Mode menu.

“基本”

基本运算 提供一套按钮

高级

Provides buttons suitable for advanced mathematics such as

财务

财务运算 提供一套按钮

编程

为计算机编程提供一套按钮

usr/share/help-langpack/zh_CN/gnome-calculator/keyboard.page0000644000373100047300000000200712300453147025754 0ustar langpacklangpack00000000000000 使用键盘

所有的表达式都可以用键盘输入。

下列组合键可以用于输入,可能在您的键盘上不可用的符号。

×

*

÷

/

^

* 两次

CtrlR

π

CtrlP

要输入 上标 numbers,请使用 Ctrl 数字,下标用Alt 数字

usr/share/help-langpack/zh_CN/gnome-calculator/boolean.page0000644000373100047300000000125612300453147025600 0ustar langpacklangpack00000000000000 逻辑运算

逻辑运算可以用 AND、OR 和 XOR 操作符。

010011₂ AND 110101₂

编程模式 这些按钮是可用的。

NOT 函数 反转一个数的每一数位。字的大小在 计算器首选项 菜单中设置。

NOT 010011₂

usr/share/help-langpack/zh_CN/gnome-calculator/factorize.page0000644000373100047300000000063512300453147026147 0ustar langpacklangpack00000000000000 因式分解

您可以将当前显示的数进行因式分解,通过点 fact 按钮,这个按钮在 编程模式 下可见。

usr/share/help-langpack/zh_CN/gnome-calculator/complex.page0000644000373100047300000000047712300453147025634 0ustar langpacklangpack00000000000000 复数

Complex numbers are not supported in Calculator.

usr/share/help-langpack/zh_CN/gnome-calculator/conv-time.page0000644000373100047300000000070612300453147026061 0ustar langpacklangpack00000000000000 时间

要转换两个时间单位,请使用 in 操作符。

3 years in hours

时间转换必须使用键盘来执行。

usr/share/help-langpack/zh_CN/gnome-calculator/conv-base.page0000644000373100047300000000070212300453147026031 0ustar langpacklangpack00000000000000 数值进制

要转换输入数(或一个式子的结果)的进制,在 计算器首选项 菜单的 结果格式 中更改。

usr/share/help-langpack/zh_CN/gnome-calculator/conv-weight.page0000644000373100047300000000070512300453147026411 0ustar langpacklangpack00000000000000 质量

要转换两个质量单位,请使用 in 操作符。

1kg in pounds

质量转换必须使用键盘来执行。

usr/share/help-langpack/zh_CN/gedit/gedit-printing-select.page0000644000373100047300000000414212315065506026223 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 Only Printing Certain Pages

You can selectively print only certain pages from the document. For example, if you enter the page numbers "1,3,5-7,9", then only pages 1, 3, 5, 6, 7 and 9 will be printed. To print pages of your choice:

Select File Print….

In the General tab in the Print dialog choose Pages from the Range section.

Type the numbers of the pages you want to print from the document, separated by commas. Use a dash to specify a range of pages.

usr/share/help-langpack/zh_CN/gedit/gedit-tabs.page0000644000373100047300000000432412315065506024047 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Daniel Neel dneelyep@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 添加和删除标签

gedit 中使用标签,可以让您在一个窗口中同时操作多个文件,当前窗口中显示的文档标签要比别的标签稍大些,较小的标签指示其他可用的文件。

添加标签

要添加一个新标签,按组合键 CtrlN,新出来的标签将会放在标签栏的最右边。

删除标签

要移除一个标签,点击标签右边的 X 按钮,要关闭所有打开的标签,按组合键 CtrlShiftW

usr/share/help-langpack/zh_CN/gedit/gedit-edit-as-root.page0000644000373100047300000000360612315065506025427 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 以 root(管理员)身份编辑文件

以 root 身份编辑文件可能带来潜在危险,会因操作失误而损坏系统,请特别小心使用 root 身份编辑文件。

要以 root 身份编辑文件,在终端运行下列命令:

sudo gedit

使用 sudo 命令,正确输入自己的密码后,打开 gedit

作为 sudo 命令的替代,您也可以通过输入下列命令来获取管理员权限:

su -

然后您就可以运行并使用 gedit

一旦您以管理员身份打开 gedit,在您关闭程序前,它将一直具备管理员权限。

usr/share/help-langpack/zh_CN/gedit/gedit-close-file.page0000644000373100047300000000305712315065506025142 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 关闭文件

要在 gedit 中关闭一个文件,点菜单 文件关闭。另外,您也可以点击这个文件所在标签右侧的“X”,或者按组合键 CtrlW

上述的任何一个操作都会关闭文件,如果您的文件中发生了变化而没有保存,gedit 会在关闭前提示您保存更改。

usr/share/help-langpack/zh_CN/gedit/gedit-plugins-pyconsole.page0000644000373100047300000000360412315065506026610 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com 在底部面板添加一个交互式的 Python 控制台 TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 Python 控制台

您可以在底部面板添加一个 Python 控制台,从而不需要离开gedit 就可以测试 Python 脚本。要启用 Python 控制台,点菜单 gedit 首选项插件 Python 控制台

一旦启用 Python 控制台,您就可以通过点菜单 查看底部面板,或者按组合键 ShiftF9 来打开它。

如果您同时还启用了内部终端插件,Python 控制台将会出现在底部面板的另一个标签中。

usr/share/help-langpack/zh_CN/gedit/gedit-change-default-font.page0000644000373100047300000000400412315065506026724 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com 2011 2012 2013 TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 更改默认字体

gedit默认使用系统等宽字体,你可以根据个人习惯修改gedit的默认字体

要更改 <app>gedit</app> 默认字体:

选择 gedit 首选项 字体和颜色

取消选中“使用系统等宽字体”旁的复选框。

Click on the current font name. gedit will open a font-chooser window, allowing you to see available fonts and choose the one that you prefer.

选择你需要的字体后,使用字体列表下方的滑动条调整默认字体的大小

点击选择,然后点击关闭

usr/share/help-langpack/zh_CN/gedit/gedit-open-files-from-sidepane.page0000644000373100047300000000536512315065506027714 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 从侧边栏查看和打开文件

gedit 中切换文件最常用的方法是,点击窗口上的标签栏。而在某些情况下,比如当您要操作大量文件时,您会发现使用侧边栏会更方便些。

要激活侧边栏,点菜单 查看侧边栏,或者按 F9 键。

您可以在任何时候,按 F9 来切换侧边栏的显示。

从侧边栏打开文件

要从侧边栏中打开文件,首先要打开侧边栏,点菜单 查看侧边栏,然后点面板底部的文件浏览器图标。

这将会激活侧边栏文件浏览器模式,您可以使用面板顶部的访问按钮来定位文件的路径。

使用侧边栏来切换各个打开的文件

当您打开多个文件时,可以使用侧边栏来切换各个文件,要激活侧边栏的文件浏览功能,点击侧边栏底部的文件按钮图标。

点击侧边栏中的文件名,就会在工作区中显示它。

usr/share/help-langpack/zh_CN/gedit/index.page0000644000373100047300000000470212315065506023133 0ustar langpacklangpack00000000000000 gedit 文本编辑器 gedit 文本编辑器 Jim Campbell jwcampbell@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 <media type="image" mime="image/png" src="figures/gedit-icon.png" its:translate="no"/> gedit 文本编辑器

欢迎阅读 gedit 帮助指导。要查看 gedit 基本功能的简要介绍,请转到“开始使用 gedit”页面;如果想对一些高效的快捷键有所了解,请转到“快捷键”页面。

本页上还分组列出了其他帮助主题。祝您愉快地使用 gedit

文件操作
配置 gedit
gedit 插件
使用 gedit 打印
usr/share/help-langpack/zh_CN/gedit/gedit-plugins-change-case.page0000644000373100047300000000473212315065506026736 0ustar langpacklangpack00000000000000 Daniel Neel dneelyep@gmail.com Jim Campbell jwcampbell@gmail.com 更改选中文本的大小写 TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 改变大小写

这个插件帮助您更改选中文本的大小写,您可以将文本全部改为小写字母,全部改为大写字母,大小写翻转,或者让字首大写。要启用此插件,点菜单 gedit首选项 插件更改大小写

一旦启用了更改大小写插件,您可以按下列步骤来使用它:

选中你想更改的文本内容。

点菜单 gedit更改大小写

选择您想使用的格式选项。

文本格式的更改会立即生效。

反转大小写 选项把小写字母改成大写,把大写字母改成小写。

字首大写选项将会把每个单词的第一个字母改成大写,其他字母会转成小写。

如果您没有选中任何的文本内容,更改大小写将变成灰色不可用状态。因此,在使用此项功能前,您必须要选中文本内容。

usr/share/help-langpack/zh_CN/gedit/gedit-plugins-doc-stats.page0000644000373100047300000000420512315065506026474 0ustar langpacklangpack00000000000000 Daniel Neel dneelyep@gmail.com Jim Campbell jwcampbell@gmail.com 查看文档统计 TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 文档统计

文档统计插件可以显示当前文档的多项信息,要启用此插件,点菜单 gedit首选项 插件文档统计

使用文档统计

一旦启用此插件,点菜单 工具文档统计,就会出现一个窗口,显示文档的统计信息,包括单词数、行数、字符数和非空格的字符数,以及文件的字节数。

您还可以让文档统计只显示部分文档的信息,要做到这一点,用鼠标选中想要统计的文本,然后点菜单 工具文档统计Gedit 除了显示整个文档的信息外,还会显示您选中这部分文档的信息。

usr/share/help-langpack/zh_CN/gedit/gedit-view-open-files-in-sidepane.page0000644000373100047300000000526612315065506030327 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Daniel Neel dneelyep@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 在侧边栏中查看文件列表

用标签页对一大堆文件进行操作一定会让人苦不堪言。如果需要管理的文件数量众多的话,将它们放在侧边栏中查看是一个不错的选择。和仅仅使用标签页相比,使用侧边栏可以一次让用户看到更多的文件。

要在侧边栏中查看已打开文件的列表,请单击“查看”“侧边栏”。此时工作区的左边会出现一个窗格,列出所有当前已打开的文件。在侧边栏中单击某个文件后,工作区内将会显示此文件。

同时,侧边栏还包含了“文件浏览器”视图。如果侧边栏中显示的是文件目录而非当前已打开的文件,请单击窗格底部的documents icon切换到“文档”视图。

侧边栏中只显示当前窗口内已打开的文件。如果打开了多个窗口,那么只有当前窗口中的文件会显示在侧边栏中。

usr/share/help-langpack/zh_CN/gedit/gedit-spellcheck.page0000644000373100047300000001272212315065506025234 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Baptiste Mille-Mathias baptistem@gnome.org Sindhu S sindhus@live.in Enable and use spell-checking feature TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 拼写检查
Enable the spell checker

The Spell-check feature is provided as a plugin in gedit which can be enabled as required. To enable the plugin:

点菜单 gedit 首选项 插件

Select Spell Checker to enable the plugin.

拼写检查

To check for misspelt words in your document:

选择工具检查拼写

To have gedit automatically highlight misspelt words in your document as you type, select ToolsHighlight Misspelled Words.

Using spell-check

You can choose the right substitution for misspelt words using the Check Spelling dialog. The misspelt word being checked by the spell-checker is displayed in bold style next to Misspelled word:. You can choose from the following corrective actions:

Change to: allows you to input a word and use Check Word to check the validity of the spelling.

Suggestions: lists the available substitutions for the word.

Ignore allows you to bypass spell check for a instance of current word.

Ignore All allows you to bypass spell check for all instances of the current word.

Change substitutes the misspelt or unrecognized word with a chosen substitute from the Suggestions: list.

Change all substitutes all misspelt or unrecognized words with the chosen substitute from the Suggestions: list.

Add word allows you to add the current word to the gedit User dictionary. Adding custom words to the User dictionary will allow gedit to recognize the word in documents and thus will not be highlighted as a misspelt word.

Define the language to use for spell checking

By default, gedit will use your current language to spell check your document. If you need to use another language, choose ToolsSet Language…, then choose the language you want to use.

Dictionaries

gedit uses Enchant, a small system utility, for spell checking. Enchant can use several different dictionaries to check your spelling. Two such dictionary back-ends are Hunspell and Aspell.

If the language you want to use is not available in gedit, use your computer's software installer or package manager to install the dictionary back-end that you want.

usr/share/help-langpack/zh_CN/gedit/gedit-shortcut-keys.page0000644000373100047300000002567612315065506025757 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Paolo Borelli Jesse van den Kieboom Steve Frécinaux Ignacio Casal Quinteiro Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 快捷键

使用快捷键执行常用任务,比用鼠标和菜单要快。下表列出了 gedit 的常用快捷键。

标签相关的快捷键

操作

快捷键

切换到左边的标签

CtrlAlt PageUp

切换到右边的标签

CtrlAlt PageDown

关闭标签

CtrlW

保存全部标签

CtrlShift L

关闭全部标签

CtrlShift W

跳到第 n 个标签

Alt n

文件操作的快捷键

操作

快捷键

创建新文档

CtrlN

打开文档

CtrlO

保存当前文档

CtrlS

文件另存为

CtrlShift S

打印当前文档

Ctrl P

打印预览

CtrlShift P

关闭当前文档

CtrlW

退出 gedit

CtrlQ

编辑文档的快捷键

操作

快捷键

Move to the beginning of the current line

Home

Move to the end of the current line

End

Move to the beginning of the document

CtrlHome

Move to the end of the document

CtrlEnd

Move the selected word right one word

Alt

Move the selected word left one word

Alt

撤销上一次操作

CtrlZ

重做上一次撤销的操作

CtrlShift Z

剪切选中的文本或文本块,并放到剪贴板中

CtrlX

复制选中的文本或文本块,并放到剪贴板中

CtrlC

从剪贴板中粘贴内容

CtrlV

全部选中

CtrlA

删除当前行

CtrlD

将选中的行上移一行

Alt

将选中的行下移一行

Alt

添加制表符

Tab

删除制表符

ShiftTab

显示和隐藏面板的快捷键

操作

快捷键

显示/隐藏侧边栏

F9

显示/隐藏底部面板。

CtrlF9

搜索的快捷键

操作

快捷键

查找字符串

CtrlF

查找下一个匹配的字符串

CtrlG

Find the previous instance of the string

CtrlShiftG

查找和替换

CtrlH

Clear highlight

CtrlShift K

跳转到行

CtrlI

使用工具的快捷键

操作

快捷键

检查拼写

ShiftF7

删除尾部空格(使用插件)

AltF12

在当前文件夹运行“make”命令(用插件)

F8

文件夹列表(使用插件)

CtrlShift D

帮助的快捷键

操作

快捷键

打开使用指南

F1

usr/share/help-langpack/zh_CN/gedit/gedit-plugins-install.page0000644000373100047300000000603612315065506026245 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Daniel Neel dneelyep@gmail.com How to install third-party plugins TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 额外的 gedit 插件

安装不包括在 gedit 默认的第三方插件,可以让您获得更多的功能。在 这儿 有一个在线的第三方插件列表。

Installing a third-party plugin involves downloading the plugin, placing the plugin files in the right directory, and activating the plugin.

You can usually download a plugin from the plugin's website, but may need to use a revision-control program like git, bazaar, or subversion to copy a plugin's software repository from the internet. Refer to the plugin's documentation for information on getting the plugin.

将插件放到 /home/用户名/.local/share/gedit/plugins 目录下。

Of course, replace the word username with your own username.

在您将插件文件复制到正确的文件夹后,插件将会出现在首选项菜单中。选择编辑 首选项插件 [插件名]启用插件。

关闭

在启用插件后,就可以使用了。

.local 目录是默认隐藏的。要显示它及其他隐藏文件,点菜单 查看显示隐藏文件 或者按组合键 CtrlH

如果在系统中,文件夹 .local/share/gedit/plugins/ 不存在,就需要您自己创建它。

usr/share/help-langpack/zh_CN/gedit/gedit-printing.page0000644000373100047300000001071012315065506024744 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 打印文档

gedit 中使用打印,需要您连接并配置好打印机,如果您还没有准备好,请查阅GNOME 打印帮助。

gedit allows you to print both to a file and to paper.

打印到纸张

You can print your documents to paper using a local or remote printer. To print a file:

Select File Print General.

Select the desired printer from the list of printers available.

You can preview the file using Print Preview and once you are satisfied with the settings, click Print to send the file to printer.

Additionally, from Page Setup tab: you can choose Layout and Paper options. As these settings are available throughout GNOME programs, please consult Layout and Paper options help.

Print Multiple Copies And Between Specified Ranges

You can set Range and Copies options to help you:

打印到文件

You can also use gedit to print to a file. To print your document to file of a different format:

Select File Print Print to File.

打印允许使用下列文件格式:

便携式文档格式(.pdf)

PostScript (.ps)

可缩放矢量图形(.svg)

To print the document to file, click Print.

usr/share/help-langpack/zh_CN/gedit/gedit-plugins-file-browser.page0000644000373100047300000000450412315065506027175 0ustar langpacklangpack00000000000000 Daniel Neel dneelyep@gmail.com Jim Campbell jwcampbell@gmail.com 使用侧边栏浏览和打开文件 TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 文件浏览器面板

依据您的 gedit 使用习惯,您可能会发现文件浏览器面板插件非常有用,这个插件在侧面板内放一个文件浏览器,让您很方便地存取频繁使用的文件。

要启用侧边栏 ,点菜单 gedit首选项 插件文件浏览器面板

从侧边栏打开文件

要激活侧边栏,点菜单 查看侧边栏(或者按 F9),然后点侧边栏底部的文件浏览器图标。

这将会激活侧边栏文件浏览器模式,您可以使用面板顶部的访问按钮来定位文件的路径。

usr/share/help-langpack/zh_CN/gedit/gedit-open-files.page0000644000373100047300000000433212315065506025156 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 打开一个文件或一组文件。

要在 gedit 中打开一个文件,点击 打开按钮,或者按组合键 CtrlO

然后会出现打开对话框,用鼠标或键盘选择想要打开的文件,然后点打开按钮,选中的文件将会在新标签页打开。

要关闭 打开文件 对话框,而不打开任何文件,请点击取消按钮。

您也可以用 CtrlShift 键,一次选择打开多个文件,如果按住 Ctrl 键选择多个文件,点打开会打开所有点过的文件。

按住 Shift 键选择多个文件,会打开从第一个到最后一个之间连续的所有文件。

usr/share/help-langpack/zh_CN/gedit/gedit-syntax-highlighting.page0000644000373100047300000000365312315065506027113 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 打开语法高亮显示
语法高亮显示

gedit 支持广泛的高亮语法,像标记语言、程序语言和科学语言等等,如果 gedit 识别出打开的文件,它将会自动显示高亮文本。

如果打开一种文件格式或语言后,没有显示高亮语法,您可以通过点菜单 查看突出显示模式 来选择一种高亮格式。或者,您还可以从 gedit 窗口底部的格式列表中选择。

usr/share/help-langpack/zh_CN/gedit/gedit-plugins-insert-date-time.page0000644000373100047300000000402712315065506027750 0ustar langpacklangpack00000000000000 Daniel Neel dneelyep@gmail.com Jim Campbell jwcampbell@gmail.com 在光标位置插入当前日期/时间 TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 插入日期/时间

根据插件名称就可以知道,插入日期/时间插件可以在光标处插入日期和/或时间。要启用此插件,点菜单 gedit 首选项插件 插入日期/时间。要使用此插件,点菜单 编辑插入日期和时间

默认情况下,插入日期/时间插件会提示您选择一种日期/时间格式。当然,您也可以在 gedit首选项 插件插入日期/时间配置 中,选择一个默认日期和时间格式。

usr/share/help-langpack/zh_CN/gedit/gedit-tabs-moving.page0000644000373100047300000000762412315065506025352 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Daniel Neel dneelyep@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 移动和重排标签顺序

gedit 中的标签可以移动,这样文件操作就更加方便,同一个窗口内的标签可以重新排序,也可以移出 gedit(创建一个新的 gedit 窗口),并且可以从一个窗口移到另外一个窗口中。

在 gedit 窗口中改变标签顺序

要更改窗口中标签的顺序:

在标签上点击并按住鼠标按钮

拖动标签到想要的位置。

松开鼠标按钮。

标签将会放在您松手位置标签的旁边,立即插在其他打开标签的中间。

移动标签,创建一个新的 gedit 窗口

To create a new window from an existing tab:

在标签上点击并按住鼠标按钮

将标签拖出gedit窗口。

松开鼠标按钮。

或者,标签打开后,点菜单 文档移动到新窗口

To move a tab into a new window when gedit is maximized, drag the tab onto the top bar at the top of the screen.

将标签移到其他 gedit 窗口中

如果您想将标签从一个窗口移动到另一个窗口中:

在标签上点击并按住鼠标按钮

拖动标签到新窗口。

将它放在新窗口的其他标签旁边。

松开鼠标按钮。

You may find it easier to move a tab from one window to another by dragging the tab to the Activities hot-corner of GNOME Shell. This will reveal each of the open gedit windows. You can then release the tab on the desired gedit window.

了解与标签相关的快捷键来更容易地管理标签。

usr/share/help-langpack/zh_CN/gedit/gedit-plugins-quick-open.page0000644000373100047300000000626612315065506026657 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Shobha Tyagi tyagishobha@gmail.com 快速打开一个文件或一组文件。 TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 快速打开

要在 gedit 中使用拼写检查功能,首先需要您启用拼写插件。要启用此插件,点菜单 gedit 首选项插件快速打开

Once you have enabled the Quick Open plugin you can use it as follows:

Open the Quick Open dialog box by pressing CtrlAltO, or by selecting FileQuick Open.

The Quick Open file dialog will appear.

用鼠标选择您想打开的文件。

To select several individual files, hold down your Ctrl key while you click on the files that you want to open.

To select a group of files, click on the first file that you want to open, hold down the Shift key, and then click on the last file in the list that you want to open.

打开

Quick Open will look for files in:

当前打开文档的目录

The root directory of the File Browser Pane plugin

Recent documents which are also shown in theRecent folder in Files

Directories which you have bookmarked in Files

Your Desktop directory

Your Home directory

Quick Open displays files in any of the above locations regardless of whether or not you have opened them previously.

usr/share/help-langpack/zh_CN/gedit/gedit-plugins-zeitgeist-dataprovider.page0000644000373100047300000000374212315065506031271 0ustar langpacklangpack00000000000000 Shobha Tyagi tyagishobha@gmail.com Log user activity for documents which are opened in gedit TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 Zeitgeist dataprovider

Zeitgeist is a service that logs user activities and events. Zeitgeist lets other applications access this information in the form of statistics and timelines.The Zeitgeist dataprovider plugin for gedit records user activity for documents used with gedit giving easy access to recently-used and frequently-used files.

Enable Zeitgeist dataprovider

点菜单 gedit 首选项 插件

Select Zietgeist Dataprovider.

usr/share/help-langpack/zh_CN/gedit/gedit-open-recent.page0000644000373100047300000000402612315065506025334 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 重新打开最近使用的文件

默认情况下,gedit 提供快速访问最近使用的五个文件,用这个方法可以打开最近使用的文件:

点击打开按钮旁边的下拉箭头按钮。

gedit 会列出最近访问的五个文件。

选择想要打开的文件,然后就会在新标签中打开它。

要更改显示最近访问的文件数,您需要使用 gconf-editor 程序。

启动 dconf-editor 并选择 org gnomegeditpreferencesui max-recents

双击 max_recents 旁边的数字,然后输入想要的数字。

usr/share/help-langpack/zh_CN/gedit/gedit-plugin-guide.page0000644000373100047300000000353312315065506025510 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 配置和使用 gedit 插件

您可以通过插件让 gedit 做更多事,一些插件已经默认安装好,但还有更多可用的插件。

许多 Linux 发行版会制作一个像 gedit-plugins 这样的软件包,安装这个 gedit-plugins 包,可以在 gedit 中使用更多的外部插件。

默认的 gedit 插件
额外的 gedit 插件
usr/share/help-langpack/zh_CN/gedit/gedit-change-color-scheme.page0000644000373100047300000000432612315065506026723 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 更改配色方案

gedit 包含多种不同配色方案,允许您更改主文本窗口的外观。

要更改配色方案,请执行以下步骤:

选择 gedit 首选项 字体和颜色

选择您想使用的配色方案。

新的配色方案会立即生效。

使用自定义的颜色方案

您也可以使用其他人创建的配色方案,或者使用自己的颜色方案。

关于如何安装自定义配色方案的说明,以及您可以下载并使用的配色方案,可以在 gedit wiki 上找到。

usr/share/help-langpack/zh_CN/gedit/gedit-undo-recent-action.page0000644000373100047300000000376612315065506026625 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Daniel Neel dneelyep@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 撤销上一次操作

gedit 每次撤消一步,当您按 CtrlZ 组合键,或者点菜单 编辑撤消 命令时。

Undoing a "set of similar actions" means, for example, that gedit will remove an entire word rather than removing each character in the word one at a time. This makes gedit's undo feature more efficient.

You cannot undo a change after you have saved it.

usr/share/help-langpack/zh_CN/gedit/gedit-plugins-snippets.page0000644000373100047300000001624712315065506026451 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Sindhu S sindhus@live.in 使用片断功能快速插入常用文本短语 TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 片段

Snippets provide a convenient way of inserting repetitive portions of code into your files. For example, an HTML snippet for the ]]> tag would insert the opening and closing portions of the tag, as well as fixed places where you can enter image attributes. This can make writing code easier and faster.

启用片段插件

To enable the Snippets plugin:

点菜单 gedit 首选项 插件

Select Snippets to enable the plugin.

浏览片段

To browse available snippets:

点菜单 工具 管理片段

Make sure the syntax is set appropriately. The status bar at the bottom of the gedit window will show the current language setting. This language setting is what allows gedit to insert the proper snippets. Gedit will normally detect the language or syntax of the file that you're using, but sometimes you may need to set it.

In this example, the language is set to HTML.

Browse the snippets that are available for your language or syntax.

使用片段

To insert a snippet into your current document:

Type the desired snippet name anywhere in your current document.

Press Tab to insert the snippet associated with the input term.

Snippet Example Usage

For example, if you have set the syntax to HTML, type head , and press the Tab key. The text would have auto completed into a snippet as:

Page Title ]]>
添加片段

You can add new Snippets that work either globally (that is, they are language agnostic) or only in a particular syntax.

选择 工具 管理片段

From the Manage Snippets sidebar select the desired syntax and click on the "+" button to list existing snippets for the selected syntax.

To add a snippet that works globally (that is, when no particular syntax or language has been set for the document), select Global from the Manage Snippets sidebar.

To add a new snippet, click on the "plus" icon in the Manage Snippets sidebar.

Input a name for the new snippet. The name of the snippet can be different from the snippet you want to add.

Under the Activation section, you must input a term for the Tab trigger: textarea. You will be using this term to insert your snippet.

If you wish to insert a snippet with a keyboard shortcut, then click your mouse pointer on Shortcut key: textarea and press the desired combination of keys. Once you have pressed and released the keys, the keyboard shortcut will be set.

Under the textarea for Edit:, input the desired text for the snippet. You may use ${n} to indicate variables, where n is replaced with a number that represents the numerical order of variables included.

New Snippet Example

Consider you have created a snippet with the term greetings in Tab trigger:. The Edit: textarea contains:

Hello ${1:wonderful}${2:amazing} world! ]]>

You can insert this snippet by typing greetings in the document and pressing the Tab key. The following text snippet will be inserted:

Hello wonderfulamazing world!]]>

The words "wonderful" and "amazing" can be retained or deleted depending on your choice of usage. To do so, press Tab to choose between "wonderful" and "amazing" and press Del to delete the least preferred option.

usr/share/help-langpack/zh_CN/gedit/gedit-quickstart.page0000644000373100047300000000371112315065506025307 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 开始使用 gedit

gedit 具备 GNOME 桌面环境的全部特性,您可以使用它书写简单的便笺和文档,也可以使用它的高级特性,让它成为一个软件开发平台。

一旦打开了 gedit 文本编辑器,您就可以开始书写内容,要保存文件,请点击保存按钮。

要学习 gedit 的额外特性,进行别的任务,请访问 gedit 帮助的 其他部分。

usr/share/help-langpack/zh_CN/gedit/gedit-plugins-sort.page0000644000373100047300000000667312315065506025575 0ustar langpacklangpack00000000000000 Daniel Neel dneelyep@gmail.com Jim Campbell jwcampbell@gmail.com Sindhu S sindhus@live.in 对多行文字按字母顺序 TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 排序

排序插件,可以按字母顺序排列选中的文本行。

由于排序无法使用撤消命令恢复,所以建议您在执行排序前保存文件,如果您发现排序操作产生错误,可以通过点菜单 文件还原 命令,恢复为之前保存的文件。

启用排序插件

要启用排序插件:

点菜单 gedit 首选项 插件

选择 排序 来启用该插件。

使用排序插件

要使用排序插件:

Drag and highlight the desired lines of text.

Select gedit Sort.

在出来的排序对话框中,有几个选项可供选择:

逆序 按照相反字母顺序排序。

删除重复内容 删除列表中重复的行。

忽略大小写 不区分字母的大小写。

To have the sort ignore the characters at the start of the lines, set the first character that should be used for sorting in the Start at column spin box.

要执行排序操作,点击 排序 按钮。

usr/share/help-langpack/zh_CN/gedit/gedit-plugins-modelines.page0000644000373100047300000000751112315065506026555 0ustar langpacklangpack00000000000000 Daniel Neel dneelyep@gmail.com Jim Campbell jwcampbell@gmail.com Emacs、Kate 和 Vim-风格的模式行支持 TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 模式行

模式行插件允许 gedit 分析文件中开始行和结束行,然后为文件设置文档选项,模式行插件支持 EmacsKateVim 文本编辑器选项的子集。

要启用模式行插件,点菜单 gedit 首选项插件模式行

常规模式行选项

下列选项可用于 gedit 模式行设置:

Tab 制表符宽度

缩进宽度

插入空格而不是制表符

文本换行

右边距宽度

使用 modelines 设置的选项,会覆盖在首选项对话框里设定的选项。

Emacs Modelines

Emacs 模式行扫描文档开头的两行,gedit 支持下列 Emacs 模式行选项:

Tab 制表符宽度

缩进

Tab 缩排模式

文本自动缩进

更多关于 Emacs 模式行的相关信息,请访问 GNU Emacs 手册。

Kate Modelines

Kate 模式行扫描文档开头和最后十行,gedit 支持下列 Kate 模式行选项:

Tab 制表符宽度

缩进宽度

空格缩进

词缩进

按列缩进词

更多关于 Kate 模式行的相关信息,请访问 Kate 网站。

Vim Modelines

Vim 模式行扫描文档开头和最后的三行,gedit 支持下列 Vim 模式行选项:

et (expandtab)

ts (tabstop)

sw (shiftwidth)

缩进

文本宽度

更多关于 Vim 模式行的信息,请访问 Vim 网站。

usr/share/help-langpack/zh_CN/gedit/gedit-printing-order.page0000644000373100047300000000554012315065506026062 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 Getting Copies To Print In The Correct Order
Reverse

Printers usually print the first page first, and the last page last, so the pages end up in reverse order when you pick them up. To reverse the order:

选择 文件 打印

在打印对话框的 常规 标签页的 副本选项中,勾选 逆序

The last page will be printed first, and so on.

Collate

If you are printing more than one copy of the document, the print outs will be grouped by page number by default. (e.g. The copies of page one come out, then the copies of page two, etc.) Collating will make each copy come out with its pages grouped together.

To Collate:

点击 文件 打印

In the General tab of the Print dialog under Copies check Collate.

usr/share/help-langpack/zh_CN/gedit/gedit-replace.page0000644000373100047300000000754212315065507024537 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Daniel Neel dneelyep@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 替换文本

修改文本是比较费时的,为了节省时间,gedit 提供了一个 替换 功能,来帮助您查找并替换文本。

在 <app>gedit</app> 中替换文本

点菜单 搜索替换 命令打开替换工具,也可以按组合键 CtrlH

在“搜索”输入框中,输入您想要替换的文本。

在“替换为”输入框中,输入想替换成的文本。

输入要替换的文本后,接着选择合适的替换选项:

要替换文档中的一个匹配项,点 替换

要替换文档中的所有匹配项,点 替换全部

使用 全部替换 功能要仔细,它会替换文档中的所有项目,并且不会高亮显示被替换的文本。

更多选项 区分大小写

区分大小写 选项可以指定搜索时是否考虑大小写。选中此项搜索时将会区分字母的大小写,如果不选中,则不区分字母大小写。

匹配整个单词

使用此选项,将会搜索完整的字词,不包括词语的片段,例如,您要搜索“文档”,并且选中此选项,那么单独的“文档”会被搜索到,而“本文档”和“在文档中”都不会被搜索到。

反向搜索

这个命令会让查找改变方向,如果您想让搜索从后往前进行,那么就可以选中此项。

回绕模式

选中回到文档头部继续搜索选项,当查找/替换到文档结尾时,会跳到开头重新进行,这将确保查找/替换文档的所有内容。

usr/share/help-langpack/zh_CN/gedit/gedit-save-file.page0000644000373100047300000000340012315065507024764 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Sindhu S sindhus@live.in TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 保存文件

要保存当前文档,点击工具栏上的一个小磁盘图标,旁边写着 保存。您也可以点菜单 文件 保存 命令,或者按组合键 CtrlS

如果您是第一次保存,会出现一个 另存为 对话框,您可以选择文件存储的位置,输入文件的名称。

usr/share/help-langpack/zh_CN/gedit/legal.xml0000644000373100047300000000071412315065507022774 0ustar langpacklangpack00000000000000

This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.

usr/share/help-langpack/zh_CN/gedit/gedit-create-new-file.page0000644000373100047300000000314012315065507026061 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 创建新文件

点击 gedit 的工具栏上,一个带有“+”号的空白页图标按钮,就可以很方便创建一个新文件。您也可以点菜单 文件新建 或者按组合键 CtrlN

这些操作都会在 gedit 窗口中创建一个新文件,如果窗口中已经打开有文件,那么新文件会在那个文件的右边新建一个标签。

usr/share/help-langpack/zh_CN/gedit/gedit-full-screen.page0000644000373100047300000000500712315065507025335 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 使用全屏模式

当打开一个很大的文档时,您会发现使用 gedit 的全屏模式很有用处,这时会隐藏 菜单栏标签栏工具栏,从而可以显示更多的文本内容,让您方便地编辑文档。

开启全屏模式

要进入全屏模式,点菜单 查看全屏或者按 F11 键,gedit 的菜单、标题栏和标签栏将会隐藏,只显示当前文档的内容。

如果在全屏模式下,您想要运行 gedit 的菜单命令,把鼠标移动到屏幕顶部,就会显示 gedit 的菜单栏,然后您就可以选择相应的菜单命令。

要在全屏模式下,切换不同的标签,按组合键 CtrlAltPgUpCtrlAltPgDn

关闭全屏模式

To turn off fullscreen mode and return to the standard gedit window, press F11.

要关闭全屏模式返回到 gedit 窗口模式,把鼠标指针移到窗口顶部,出现菜单栏,然后点离开全屏

usr/share/help-langpack/zh_CN/gedit/gedit-plugins-external-tools.page0000644000373100047300000000442512315065507027560 0ustar langpacklangpack00000000000000 Daniel Neel dneelyep@gmail.com Jim Campbell jwcampbell@gmail.com Run scripts on your current files, and interact with other applications TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 外部工具

外部工具插件可用于简单的重复任务,尤其是,它可以在您编辑的文档上执行脚本,并且允许 gedit 与系统中的其他程序交互作用。要启用外部工具,点菜单 gedit 首选项插件 外部工具

配置外部工具插件

一旦启用此插件,您得按需要来配置它。配置选项可以点菜单 工具管理外部工具

这个插件是为高级用户设计的,需要运行脚本的知识。使用此插件要特别小心,脚本的错误会无意中影响您的工作。

usr/share/help-langpack/zh_CN/gedit/gedit-files-basic.page0000644000373100047300000000260312315065507025276 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 文件操作基础:打开、关闭和保存

如果您才接触 gedit,这一章将会帮助您创建、保存、打开和关闭文件。

usr/share/help-langpack/zh_CN/gedit/gedit-open-on-server.page0000644000373100047300000000512212315065507025773 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 打开位于服务器上的文件

要用 gedit 打开存放于服务器上的文件,您首先需要了解服务器的相关技术信息,例如,您需要知道服务器的 IP 地址或 URL,还要知道是哪一种服务器(比如 HTTP、FTP 等等)。

还有,一些类型的服务器限制了文件存储。例如,您可以打开服务器上的一个文件,但是您只能将修改过的文件存储在本地计算机上。

了解这些信息后,您可以在 gedit 中,按下列步骤打开服务器上的文件:

点菜单 文件打开 命令,显示 打开文件 对话框。

打开对话框的左上角,点击铅笔图标。

输入服务器的 IP 地址或 URL。

查找并选择您想打开的文件。

在字符编码下拉列表中,选择合适的字符编码。

打开

有效的 URI 包括 http:、ftp:、file: 和所有 gvfs 支持的格式。

某些类型的 URI 会以只读方式打开,当您更改后必须另存到其他位置。例如, HTTP 只允许读取文件,从 FTP 上打开的文件一般也是只读,因为并不是所有 FTP 服务器能够远程保存文件。

usr/share/help-langpack/zh_CN/gedit/gedit-search.page0000644000373100047300000001066212315065507024366 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Daniel Neel dneelyep@gmail.com Sindhu S sindhus@live.in Shobha Tyagi tyagishobha@gmail.com TeliuTe teliute@163.com 2009, 2011 Colin Zhao lonely.ibm@gmail.com 2011 wancheng zhang wancheng.com.cn@gmail.com 2012 搜索文本

搜索工具可以帮您查找文档中指定的文本。

查找文本

Open the search window by clicking Search Find or pressing CtrlF. This will move your cursor to the start of the search window.

搜索窗口 中输入您想要查找的文本。

在您输入的同时,gedit 就会高亮显示文档中的匹配项。

To scroll through the search results, do any of the following:

点击搜索窗口旁的的箭头。

按键盘上的键。

Press CtrlG or CtrlShiftG.

Press the Ctrl and use your mouse or touchpad's scroll feature to move up or down through the text.

To close the search window, press either Esc or Enter. Pressing Esc will return the cursor to where it was before you began your search. Pressing Enter will return the cursor to the current position in the search results.

搜索技巧

If you highlight a portion of text with your mouse, and then press CtrlF, the text you've highlighted will appear in the search window.

For more search options, click on the Magnifying Glass icon in the search window, or right-click anywhere in the search window. You can select one or more of the following search options:

Select Match Case to make the search case sensitive.

Select Match Entire Word Only to search only complete words.

Select Wrap Around to search text from top to bottom and cycle back again.

您搜索的文本会保持高亮状态,甚至搜索完毕还会高亮。要取消高亮状态,点菜单 搜索清除突出显示,或者按组合键 CtrlShiftK

usr/share/help-langpack/zh_CN/gucharmap/index.docbook0000644000373100047300000006004412300411173024500 0ustar langpacklangpack00000000000000 ]>
字符映射表手册 字符映射表是一个 Unicode 字符表,它允许您从一个表中选择和插入各种文本字符。 2004 Sun Microsystems 2003 2004 Chee Bin HOH GNOME 文档项目 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. Sun GNOME Documentation Team Sun Microsystems Chee Bin HOH GNOME Documentation Project
cbhoh@gnome.org
GNOME 文档项目 Character Map Manual V2.1 2004-02-26 Updated for GNOME 2.6, program version 1.3.0. Sun GNOME Documentation Team GNOME Documentation Project Unicode Character Map Manual V2.0 October 2003 Chee Bin HOH cbhoh@gnome.org GNOME Documentation Project 本手册讲述的是字符映射表 1.3.0 版。 反馈 To report a bug or make a suggestion regarding the Character Map application or this manual, follow the directions in the GNOME Feedback Page.
gucharmap Character Map Character Map 介绍 字符映射表 程序允许您向文档或文本框中插入特殊字符。字符映射表 提供了重音符号、数学符号、特殊符号和音标等,使用字符映射表可以插入您键盘上没有的字符。 字符映射表 使用 Unicode 字符集,来显示您系统中所有语言区域的可用字符。Uncode 是一个全球编码字符集标准,包含了全世界所有书面语言中使用的字符。 快速入门 使用字符映射表程序 您可以用下面的方法来启动 字符映射表 程序: 应用程序Applications 菜单 选择 附件字符映射表 命令行 运行命令:gnome-character-map 打开字符映射表 当您打开 字符映射表 程序后,将会显示下面的窗口:
字符映射表窗口 Shows Character Map window.
字符映射表 窗口包含下面的内容: 菜单栏 菜单栏上包含使用 字符映射表 的绝大部分菜单命令。 工具栏 工具栏包含一个字体下拉列表、字体形状按钮,和一个字号微调按钮框。 工作区 工作区包含以下的组件: 语言Unicode 区块 列表框 字符表 标签 字符细节 标签 待复制的字符 文本框 复制 按钮 状态栏 状态栏显示与当前选定字符的 Unicode 码点和 Unicode 字符名称。
说明 更改字符集列表 要按语言名称列出字符集,点菜单: 查看按语言 要按 Unicode 区块列出字符集,点菜单: 查看按 Unicode 区块 创建一个文本词组 要在 待复制文本 框中创建一个词组,请按下面步骤操作: 在左侧的 语言Unicode 区块 列表框中,选择一个字符集。 用下面的一种方法插入字符: 字符表 中双击一个字符,将其插入到 待复制文本 框中。 字符表 中选中一个字符,然后按 回车键,将其插入 待复制文本 框。 字符表 中选中一个字符,然后拖动到 待复制文本 框中。 点击 待复制文本 框,出现光标插入点,如果里面已经有文本了,则点击让光标到要输入的位置,接着按键盘输入字符。 把文本复制粘贴到应用程序里 要把 待复制文本 复制粘贴到其它程序里,请按下面的步骤操作: 复制 按钮,如果没有特别选中哪个文本,则复制文本框里的所有内容,如果选择了部分词语,则只复制选中的词语。 切换到要粘贴的程序里,然后点 编辑粘贴 命令,或者按快捷键 CtrlV 当你把 待复制文本 框的内容,粘贴到了其它程序里,文本将会以程序设定的字符集显示。 如果文本中包含不可见字符,那么您将只能插入应用程序字符集支持的文本。 查找一个字符 要查找一个字符,请按以下步骤操作: 点菜单 搜索查找,或者按快捷键 CtrlF,出来一个 查找 对话框。 搜索 框输入要查找的文本。 选中 匹配整个单词 将只搜索完全匹配您输入的文本。 默认情况下,只在字符名称中搜索,选中 在字符细节中搜索,还会在字符描述中搜索,例如注释、同义词、近义词中搜索。 下一个 查找当前选中字符的下一个匹配项。字符映射表 会选中找到的字符。 再点 下一个 继续查找匹配项,另外,也可以点菜单 搜索查找下一个,或者按快捷键 CtrlG 上一个 查找前一个匹配项,另外,也可以点菜单 搜索查找上一个,或者按快捷键 ShiftCtrlG 浏览所有字符 要浏览字符表,点 转到 菜单。 下一个字符,或者按快捷键 CtrlN 上一个字符,或者按快捷键 CtrlP 下一个语言,或者按快捷键 CtrlPage Down 上一语言,或者按快捷键 CtrlPage Up 您可以通过特殊字符、语言或者 Unicode 区块来浏览字符表,这取决于字符表是否显示语言还是 Unicode 区块。要更改它,点菜单 查看按语言 或者 查看按 Unicode 区块 浏览字符表时,可以使用下列快捷键: 按方向键浏览下一个字符。 Page UpPage Down 键,将按页浏览。 Home 键,将选中当前表的第一个字符,要选择最后一个字符,请按 End 键。 显示字符的详细信息 要显示一个字符的详细信息,请按下面的步骤操作: 语言Unicode 区块 列表中选择一个字符,例如:拉丁文 字符表 中选择一个字符,例如:B 点击 字符细节 标签。 字符细节 标签会显示选中字符的下列信息: Unicode 码点 例如:U+0042 Unicode 字符名称 例如:LATIN CAPITAL LETTER B General Character Properties Unicode 分类 例如:字母,大写 Various Useful Representations UTF-8 编码 例如:0x42 UTF-16 编码 例如:0x0042 C 八进制转码的 UTF-8 例如:\102 XML 十进制项 例如:"&#66" Annotations and Cross References 例如:U+212C SCRIPT CAPITAL B 点击链接显示字符检索的细节。 更改字符格式 要更改一个字符的格式,下面步骤操作: 要更改字体,请在字体下拉列表中选择。 要更改字体形状为粗体,点击 Bold 按钮,或者按快捷键 AltB 要更改字体形状为斜体,请点 斜体 按钮,或者按快捷键 AltI 要增大字号,点菜单 查看放大,或者使用微调按钮框,还可以按快捷键 Ctrl+ 要减小字号,点菜单 查看缩小 或者使用微调按钮框,还可以按快捷键 Ctrl- 要恢复到正常字号,点菜单 查看正常大小,或者按快捷键 Ctrl= 要放大选中的字符,按住 Shift 键即可。 更改字符表的格式 要更改字符表的格式,点菜单 查看将列数设为2的 N 次方 字符映射表 自动调整 字符表Character Table 中的列数,使得列数为2的 N 次幂。例如,两列、四列、八列等等,列数的多少取决于窗口和字体的大小。
usr/share/help-langpack/zh_CN/gucharmap/legal.xml0000644000373100047300000000672412300411173023642 0ustar langpacklangpack00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. usr/share/help-langpack/zh_CN/gtk-doc-manual/index.docbook0000644000373100047300000026653112301102114025336 0ustar langpacklangpack00000000000000 included"> ]> GTK-Doc 手册 1.20 为开发人员提供 GTK-Doc 用法说明的用户手册。 Chris Lyttle
chris@wilddev.net
Dan Mueth
d-mueth@uchicago.edu
Stefan Kost
ensonic@users.sf.net
GTK-Doc 项目
gtk-doc-list@gnome.org
2000, 2005 Dan Mueth and Chris Lyttle 2007-2014 Stefan Sauer (Kost) 允许在GNU 自由文档认证书的规范下复制,发布或者/并且修改本文档,由自由软件基金会出版的1.1版或更新版本的无变更的部分,无封面文本,以及无背面文本。取得证书的制件included. 公司使用的区别于它们的许多产品及服务的名字就称为商标. 这些名字出现在任何GNOME文档中, 而且那些商标会提示GNOME文档项目成员, 那些名字会打印在封面或初始页面中. 1.20 16 Feb 2014 ss bug fixes, markdown support, style improvements 1.19 05 Jun 2013 ss bug fixes 1.18 14 Sep 2011 ss bug fixes, speedups, markdown support 1.17 2011年2月26 sk 紧急问题修复更新 1.16 2011年1月14 sk 修复问题,布局改进 1.15 2010年5月21 sk 问题和退化修复 1.14 2010年3月28 sk 问题修复和性能提高 1.13 2009年10月18 sk 损坏的档案包更新 1.12 2009年10月18 sk 新工具功能和问题修复 1.11 2008年10月16 mal GNOME doc-utils 迁移 LuYanbo 767344148@qq.com 2011 LuYanbo 黄世海 rochester_h@163.com 2012 黄世海 Wylmer Wang wantinghard@gmail.com 2012 Wylmer Wang
介绍 本章介绍 GTK-Doc,并概述了它是什么以及如何使用它。 什么是 GTK-Doc? GTK-Doc 用于为C代码编写文档。典型地用于编写库的公共API,如GTK+与GNOME库。不过它也可以用于书写应用程序代码文档。 GTK Doc 是怎样工作的? GTK-Doc works by using documentation of functions placed inside the source files in specially-formatted comment blocks, or documentation added to the template files which GTK-Doc uses (though note that GTK-Doc will only document functions that are declared in header files; it won't produce output for static functions). GTK-Doc由一些perl脚本组成,每个脚本完成这一过程中不同的步骤。 这个进程有五个主要步骤: Writing the documentation. The author fills in the source files with the documentation for each function, macro, union etc. (In the past information was entered in generated template files, which is not recommended anymore). Gathering information about the code. gtkdoc-scan scans the header files of the code looking for declarations of functions, macros, enums, structs, and unions. It creates the file <module>-decl-list.txt containing a list of the declarations, placing them into sections according to which header file they are in. On the first run this file is copied to <module>-sections.txt. The author can rearrange the sections, and the order of the declarations within them, to produce the final desired order. The second file it generates is <module>-decl.txt. This file contains the full declarations found by the scanner. If for some reason one would like some symbols to show up in the docs, where the full declaration cannot be found by the scanner or the declaration should appear differently, one can place entities similar to the ones in <module>-decl.txt into <module>-overrides.txt. gtkdoc-scangobj can also be used to dynamically query a library about any GObject subclasses it exports. It saves information about each object's position in the class hierarchy and about any GObject properties and signals it provides. gtkdoc-scanobj should not be used anymore. It was needed in the past when GObject was still GtkObject inside gtk+. Generating the "template" files. gtkdoc-mktmpl creates a number of files in the tmpl/ subdirectory, using the information gathered in the first step. (Note that this can be run repeatedly. It will try to ensure that no documentation is ever lost.) Since GTK-Doc 1.9 the templates can be avoided. We encourage people to keep documentation in the code. gtkdocize supports now a option that chooses a makefile that skips tmpl usage totally. If you have never changed file in tmpl by hand, please remove the directory (e.g. from version control system). Generating the SGML/XML and HTML/PDF. gtkdoc-mkdb turns the template files into SGML or XML files in the sgml/ or xml/ subdirectory. If the source code contains documentation on functions, using the special comment blocks, it gets merged in here. If there are no tmpl files used it only reads docs from sources and introspection data. We recommend to use Docbook XML. gtkdoc-mkhtml turns the SGML/XML files into HTML files in the html/ subdirectory. Likewise gtkdoc-mkpdf turns the SGML/XML files into a PDF document called <package>.pdf. Files in sgml/ or xml/ and html/ directories are always overwritten. One should never edit them directly. Fixing up cross-references between documents. After installing the HTML files, gtkdoc-fixxref can be run to fix up any cross-references between separate documents. For example, the GTK+ documentation contains many cross-references to types documented in the GLib manual. When creating the source tarball for distribution, gtkdoc-rebase turns all external links into web-links. When installing distributed (pregenerated) docs the same application will try to turn links back to local links (where those docs are installed). 获取 GTK-Doc 要求 Perl v5- 主脚本是Perl格式。 DocBook DTD v3.0 - 这是DocBook SGML DTD的链接. http://www.ora.com/davenport Jade v1.1 -这是一个DSSSL处理器,用来把SGML转换为各种格式。http://www.jclark.com/jade Modular DocBook Stylesheets This is the DSSSL code to convert DocBook to HTML (and a few other formats). It's used together with jade. I've customized the DSSSL code slightly, in gtk-doc.dsl, to colour the program code listings/declarations, and to support global cross-reference indices in the generated HTML. http://nwalsh.com/docbook/dsssl docbook-to-man - if you want to create man pages from the DocBook. I've customized the 'translation spec' slightly, to capitalise section headings and add the 'GTK Library' title at the top of the pages and the revision date at the bottom. There is a link to this on http://www.ora.com/davenport NOTE: This does not work yet. 安装 DocBook Modular Stylesheets没有标准的安装位置。 GTK-Doc 的配置脚本会自动地查找这三个目录: /usr/lib/sgml/stylesheets/nwalsh-modular (在 RedHat 中使用) /usr/lib/dsssl/stylesheets/docbook (在 Debian 中使用) /usr/share/sgml/docbkdsl (在 SuSE 中使用) 如果把样式表安装在其它地方,您必须用这个选项来配置GTK-Doc: --with-dsssl-dir=<PATH_TO_TOPLEVEL_STYLESHEETS_DIR> 关于 GTK-Doc (FIXME) (History, authors, web pages, license, future plans, comparison with other similar systems.) 关于此手册 (FIXME) (它意味着什么,你可以从哪里获得它, 许可证) 设置您的项目 The next sections describe what steps to perform to integrate GTK-Doc into your project. Theses sections assume we work on a project called 'meep'. This project contains a library called 'libmeep' and an end-user app called 'meeper'. We also assume you will be using autoconf and automake. In addition section plain makefiles or other build systems will describe the basics needed to work in a different build setup. 设置一个框架文档 Under your top-level project directory create folders called docs/reference (this way you can also have docs/help for end-user documentation). It is recommended to create another subdirectory with the name of the doc-package. For packages with just one library this step is not necessary. 目录结构将会如下所示:范例目录结构 meep/ docs/ reference/ libmeep/ meeper/ src/ libmeep/ meeper/ 与autoconf集成 非常容易!只需在您的 configure.ac 脚本中添加一行。 与autoconf集成 # 检查 gtk-doc GTK_DOC_CHECK([1.14],[--flavour no-tmpl]) This will require all developers to have gtk-doc installed. If it is okay for your project to have optional api-doc build setup, you can solve this as below. Keep it as is, as gtkdocize is looking for GTK_DOC_CHECK at the start of a line. Keep gtk-doc optional The first argument is used to check for the gtkdocversion at configure time. The 2nd, optional argument is used by gtkdocize. The GTK_DOC_CHECK macro also adds several configure switches: --with-html-dir=PATH : 安装文档的路径 --enable-gtk-doc : 用gtk-doc构建文档[默认值:no] --enable-gtk-doc-html :用html格式构建文档[默认值:yes] --enable-gtk-doc-pdf : 以PDF格式构建文档[默认值:no] GTK-Doc在默认情况下是关闭的!请记得给文本configure运作时传递选项。否则,将会安装预先生成的文档(对用户有意义但对开发人员没用处)。 而且建议你在configure.ac脚本里拥有这样一行。它允许gtkdocizeGTK_DOC_CHECK的宏定义复制到您的项目中去。 准备gtkdocize AC_CONFIG_MACRO_DIR(m4) 与automake集成 First copy the Makefile.am from the examples sub directory of the gtkdoc-sources to your project's API documentation directory ( ./docs/reference/<package>). A local copy should be available under e.g. /usr/share/doc/gtk-doc-tools/examples/Makefile.am. If you have multiple doc-packages repeat this for each one. The next step is to edit the settings inside the Makefile.am. All the settings have a comment above that describes their purpose. Most settings are extra flags passed to the respective tools. Every tool has a variable of the form . All the tools support to list the supported parameters. 与autogen集成 Most projects will have an autogen.sh script to setup the build infrastructure after a checkout from version control system (such as cvs/svn/git). GTK-Doc comes with a tool called gtkdocize which can be used in such a script. It should be run before autoheader, automake or autoconf. 从autogen.sh中运行gtkdocize gtkdocize || exit 1 When running gtkdocize it copies gtk-doc.make to your project root (or any directory specified by the option). It also checks you configure script for the GTK_DOC_CHECK invocation. This macro can be used to pass extra parameters to gtkdocize. Historically GTK-Doc was generating template files where developers entered the docs. This turned out to be not so good (e.g. the need for having generated files under version control). Since GTK-Doc 1.9 the tools can get all the information from source comments and thus the templates can be avoided. We encourage people to keep documentation in the code. gtkdocize supports now a option that chooses a makefile that skips tmpl usage totally. Besides adding the option directly to the command invocation, they can be added also to an environment variable called GTKDOCIZE_FLAGS or set as a 2nd parameter in GTK_DOC_CHECK macro in the configure script. If you have never changed file in tmpl by hand and migrating from older gtkdoc versions, please remove the directory (e.g. from version control system). 运行文档构建 After the previous steps it's time to run the build. First we need to rerun autogen.sh. If this script runs configure for you, then give it the option. Otherwise manually run configure with this option afterwards. The first make run generates several additional files in the doc-directories. The important ones are: <package>.types, <package>-docs.xml (in the past .sgml), <package>-sections.txt. 运行文档构建 ./autogen.sh --enable-gtk-doc make Now you can point your browser to docs/reference/<package>/index.html. Yes, it's a bit disappointing still. But hang-on, during the next chapter we tell you how to fill the pages with life. 与版本控制系统集成 As a rule of the thumb, it's those files you edit, that should go under version control. For typical projects it's these files: <package>.types, <package>-docs.xml (in the past .sgml), <package>-sections.txt, Makefile.am 与普通makefile或其它构建系统整合 In the case one does not want to use automake and therefore gtk-doc.mak one will need to call the gtkdoc tools in the right order in own makefiles (or other build tools). 文档构建步骤 您必须查阅Makefile.amgtk-doc.mak以获取所须的额外选项。 编写代码文档 GTK-Doc uses source code comment with a special syntax for code documentation. Further it retrieves information about your project structure from other sources. During the next section you will find all information about the syntax of the comments. 文档位置 在过去,多数文档不得不写入驻留在tmpl目录的文件中。这样会出现一些糟糕的情况:其信息常常没有更新,而且文件也倾向于与版本控制系统发生冲突。 为避免上述的问题,我们建议把注释文档放入源代码中去。本手册仅描述此种编写代码文档的方法。 The scanner can handle the majority of C headers fine. In the case of receiving warnings from the scanner that look like a special case, one can hint GTK-Doc to skip over them. GTK-Doc comment block 文档注释 A multiline comment that starts with an additional '*' marks a documentation block that will be processed by the GTK-Doc tools. GTK-Doc comment block The 'identifier' is one line with the name of the item the comment is related to. The syntax differs a little depending on the item. (TODO add table showing identifiers) The 'documentation' block is also different for each symbol type. Symbol types that get parameters such as functions or macros have the parameter description first followed by a blank line (just a '*'). Afterwards follows the detailed description. All lines (outside program listings and CDATA sections) just containing a ' *' (blank-asterisk) are converted to paragraph breaks. If you don't want a paragraph break, change that into ' * ' (blank-asterisk-blank-blank). This is useful in preformatted text (code listings). When documenting code, describe two aspects: What it is: The name for a class or function can sometimes be misleading for people coming from a different background. What it does: Tell about common uses. Put it in relation with the other API. 与纯文本相比,超文本的优势在于可以在文档内部有链接。但为一个链接编写正确的标记可能是件枯燥的差事。GTK-Doc提供了几个有用的简化方法帮你解决这个麻烦。 用function()来指示带有参数的函数或宏。 用@param指示参数。同样也可以指示其它函数的参数,与所描述的对象有关。 用%constant指示常量,比如:%G_TRAVERSE_LEAFS。 用#symbol指示其它符号类型,比如:结构,枚举与不带参数的宏。 Use #Object::signal to refer to a GObject signal. Use #Object:property to refer to a GObject property. Use #Struct.field to refer to a field inside a structure and #GObjectClass.foo_bar() to refer to a vmethod. 如果你要在文档里面使用一些特殊的字符'<', '>', '()', '@', '%', or '#' 且不用GTK-Doc来修改它们,你可以相应地用XML 实体 "&lt;", "&gt;", "&lpar;", "&rpar;", "&commat;", "&percnt;" 以及 "&num;"或者用一个反斜线'\'来转义它们。 DocBook can do more than just links. One can also have lists, examples, headings, and images. As of version 1.20, the preferred way is to use a subset of the basic text formatting syntax called Markdown. On older GTK-Doc versions any documentation that includes Markdown will be rendered as is. For example, list items will appear as lines starting with a dash. In older GTK-Doc releases, if you need support for additional formatting, you would need to enable the usage of docbook SGML/XML tags inside doc-comments by putting or in the variable MKDB_OPTIONS inside Makefile.am. GTK-Doc comment block using Markdown * GtkWidget *label = gtk_label_new ("Gorgeous!"); * ]| */ ]]> More examples of what markdown tags are supported can be found in the GTK+ Documentation Markdown Syntax Reference. 如早先所述,GTK-Doc是为编写公共的API而作的。所以你不能够为静态符号编写文档。尽管如此,它也可以很好地为那些符号作注释。这有助于他人理解你的代码。因此我们建议你用普通的注释来注释它们(不使用第一行的第二个'*'号)。如果以后函数须要作为public,你须做的只是在注释块中加入另一个 '*'号并且在区段文件里插入正确的标识符名称。 文档章节 文档的每个章节都包含着关于一个类或模块的信息。要介绍它的组件,你可以编写一节注释块。在内容表格中也可以使用简短的描述。所有的@fields都是可选的。 节注释块 /** * SECTION:meepapp * @short_description: the application class * @title: Meep application * @section_id: * @see_also: #MeepSettings * @stability: Stable * @include: meep/app.h * @image: application.png * * The application class handles ... */ SECTION:<name> 名字链接这节文档到文件<package>-sections.txt中对应的部分。这里的名字应匹配<package>-sections.txt文件中的<FILE>标识。 @short_description 该节的单行描述,不久将出现在TOC里的链接后和该节页面的顶部。 @title 段落的标题在SECTION声明里默认是 <name> 。它可以由@title字段替换。 @section_id 替换标题的用途作为一个段落指示器。对于GObjects,<title>用作section_id且对于其它的段落它是<MODULE>-<title>。 @see_also 与本节相关的标识符。 @stability An informal description of the stability level this API has. We recommend the use of one of these terms: Stable - The intention of a Stable interface is to enable arbitrary third parties to develop applications to these interfaces, release them, and have confidence that they will run on all minor releases of the product (after the one in which the interface was introduced, and within the same major release). Even at a major release, incompatible changes are expected to be rare, and to have strong justifications. Unstable - Unstable interfaces are experimental or transitional. They are typically used to give outside developers early access to new or rapidly changing technology, or to provide an interim solution to a problem where a more general solution is anticipated. No claims are made about either source or binary compatibility from one minor release to the next. Private - An interface that can be used within the GNOME stack itself, but that is not documented for end-users. Such functions should only be used in specified and documented ways. Internal - An interface that is internal to a module and does not require end-user documentation. Functions that are undocumented are assumed to be Internal. @include The #include files to show in the section synopsis (a comma separated list), overriding the global value from the section file or command line. This item is optional. @image 本章节的参考页顶部显示的图像。这常常是某些用于阐释一个类或者图表与其它类之间关系的可视化图示。这个项是可选的。 为避免不必要的重编译,在文档改动后尽可能把段落文档放入C代码中合适的位置。 编写符号文档 每个符号(函数,宏,结构,枚举,信号及属性)都在各自独立的块中描述。这些块最好放置于接近标识符定义的地方,这样可以容易地让它们保持同步。因此函数通常在C代码中定义,宏和结构及枚举在头文件里定义。 一般标记 你可以为所有的文档元素加入版本信息,表明何时引入或废弃了某个API。 版本标记 始于: 描述从哪个版本的代码开始加入了该API。 废弃: 表明这个函数不应再使用的一段文档。描述文字应向读者介绍新的API。 (FIXME : 稳定性信息) 一般标记 函数注释块 请记得: 描述返回的对象、列表、字符串等是否应释放内存(freed)/解除引用/释放(released)。 描述参数可否为NULL,如果是的话会发生什么。 在适当时提及相关的前提条件与后续条件。 Gtk-doc 假定所有以'_'符开头的符号(宏,函数)是私有的并视它们为静态函数。 Also, take a look at GObject Introspection annotation tags: http://live.gnome.org/GObjectIntrospection/Annotations 函数注释块 /** * function_name: * @par1: 对参数 1 的描述。 * 可超过一行。 * @par2: 对参数 2 的描述 * @...: 一个以 %NULL 终止的 bars 列表 * * 这里是函数描述。您可以用 @par1 引用参数,这样在输出中它们会突出显示。 * 您也可以使用 %constant 代表常量,function_name2() 代表函数,#GtkWidget * 代表指向指向其他声明的链接(可能在其他位置描述)。 * * 返回值: 一个整型值。 * * 始于: 2.2 * 废弃: 2.18: 请转用 other_function()。 */ 函数标记 返回值: 描述返回结果的段落。 @...: 如果函数有变长参数列表,你应当使用这个标记(@Varargs: 由于历史原因确实也管用)。 属性注释块 属性注释块 /** * SomeWidget:some-property: * * 这里您可以描述一个属性。 */ g_object_class_install_property (object_class, PROP_SOME_PROPERTY, ...); 信号注释块 请记得: 描述信号何时发射(emitted)及在其它信号之前还是之后发射。 描述应用程序在信号处理函数中能做些什么。 信号注释块 /** * FooWidget::foobarized: * @widget: 接受信号的窗口部件 * @foo: some foo * @bar: some bar * * ::foobarized 信号在每次有人尝试 foobarize @widget 时发射。 */ foo_signals[FOOBARIZE] = g_signal_new ("foobarize", ... 结构注释块 结构注释块 /** * FooWidget: * @bar: some #gboolean * * 这是史上最好的窗口部件。 */ typedef struct _FooWidget { /*< private >*/ GtkWidget parent; /*< public >*/ gboolean bar; } FooWidget; 在你需要隐藏的私有结构字段之前使用/*< private >*/ 。反之使用/*< public >*/. 结构注释块也可以用于GObjects与GObjectClasses。为一个类添加注释块通常是个极好的主意,如果它有vmethod(因为这是怎样制作它的文档的方法)。对于GObject自身而言,你可以使用相关的章节文档,如果对象实例有公共字段,为每个实例结构体单独块注释是非常有用的。缺点是这会为同一名字创建两个索引记录(结构与章节)。 枚举注释块 枚举注释块 */ SOMETHING_COUNT } Something; ]]> 在你要隐藏的枚举数值前使用/*< private >*/。反之使用/*< public >*/ 有用的DocBook标记 这些是在编写代码文档时非常有用处的DocBook标记。 To link to another section in the GTK docs: Hash Tables ]]> The linkend is the SGML/XML id on the top item of the page you want to link to. For most pages this is currently the part ("gtk", "gdk", "glib") and then the page title ("Hash Tables"). For widgets it is just the class name. Spaces and underscores are converted to '-' to conform to SGML/XML. 引用一个外部函数,比如一个标准 C 函数: <function>...</function> 要包含示例代码: <example> <title>Using a GHashTable.</title> <programlisting> ... </programlisting> </example> 或类似的,很短的不需要标题的代码段: <informalexample> <programlisting> ... </programlisting> </informalexample> 对后者,GTK-Doc 还支持一种缩写方式:|[ ... ]| 要包含符号列表: <itemizedlist> <listitem> <para> ... </para> </listitem> <listitem> <para> ... </para> </listitem> </itemizedlist> 要包含一条文字中突出显示的注解: <note> <para> Make sure you free the data after use. </para> </note> 要引用一个类型: <type>unsigned char</type> 引用一个外部结构(不是在GTK 文档中描述的): <structname>XFontStruct</structname> 要引用一个结构字段: <structfield>len</structfield> 要引用一个类的名字,你可能会使用: <classname>GtkWidget</classname> 但是你可能正在使用#GtkWidget(要自动创建一个到GtkWidget 页面的链接-请参阅缩写)。 要强调文本: <emphasis>This is important</emphasis> 对于文件名,使用: <filename>/home/user/documents</filename> 要引用键值,使用: <keycombo><keycap>Control</keycap><keycap>L</keycap></keycombo> 填充额外的文件 另有几个文件要和内嵌源代码注释一起维护:<package>.types, <package>-docs.xml (原为 .sgml), <package>-sections.txt 编辑类型文件 If your library or application includes GObjects, you want their signals, arguments/parameters and position in the hierarchy to be shown in the documentation. All you need to do, is to list the xxx_get_type functions together with their include inside the <package>.types file. 示例类型文件代码段 #include <gtk/gtk.h> gtk_accel_label_get_type gtk_adjustment_get_type gtk_alignment_get_type gtk_arrow_get_type 从GTK-Doc 1.8开始gtkdoc-scan能够自动生成这个列表。只要往Makefile.am文件中的SCAN_OPTIONS项加入“--rebuild-types”即可。如果你要使用它请保证不发行类型文件也不将它置于版本控制系统的管理之下。 编辑主文档 GTK-Doc 以 DocBook SGML/XML 格式生成文档。当处理源代码内嵌注释时, GTK-Doc 工具以独立文件为每个类或模块生成一个文档页。主文档包含了它们并且将它们按顺序排列。 GTK-Doc为你创建一个模板主文档,之后的运行就不会再动它了。这意味着你可以自由地组织这个文档,包括分组页和加入的额外页面。GTK-Doc现在有一个测试套件,它的主文档也重新生成。建议您经常关注它,又了解是否引入了新的功能特性。 不要把教程(tutorial)当作额外的文档来编写。写成额外的章节即可。把你的库教程直接放入API文档的好处就是教程与符号文档之间的链接很容易。另外教程与库一同升级时分离的机会也更高。 那么什么是主文档内部要修改的东西呢?开始只是一点点东西。有一些占位标识(在方括号内部的文本)你应当多留意。 主文档头部 <bookinfo> <title>MODULENAME Reference Manual</title> <releaseinfo> for MODULENAME [VERSION] The latest version of this documentation can be found on-line at <ulink role="online-location" url="http://[SERVER]/MODULENAME/index.html">http://[SERVER]/MODULENAME/</ulink>. </releaseinfo> </bookinfo> <chapter> <title>[Insert title here]</title> 编辑节文件(section file) 节文件用于组织由GTK-Doc输出的文档。在此你指定哪个符号属于哪个类或模块,并控制它是否可见(公共的或私有的)。 The section file is a plain text file with XML-like syntax (using tags). Blank lines are ignored and lines starting with a '#' are treated as comment lines. The <FILE> ... </FILE> tag is used to specify the file name, without any suffix. For example, using '<FILE>gnome-config</FILE>' will result in the section declarations being output in the template file tmpl/gnome-config.sgml, which will be converted into the DocBook SGML/XML file sgml/gnome-config.sgml or the DocBook XML file xml/gnome-config.xml. (The name of the HTML file is based on the module name and the section title, or for GObjects it is based on the GObjects class name converted to lower case). <TITLE> ... </TITLE>标记用于节的标题。它只在模板(如果使用的话)最初创建之前有用,因为设置在模板文件内的标题覆盖了它。或者如果你在源代码中使用了SECTION注释(此功能已过时)。 You can group items in the section by using the <SUBSECTION> tag. Currently it outputs a blank line between subsections in the synopsis section. You can also use <SUBSECTION Standard> for standard GObject declarations (e.g. the functions like g_object_get_type and macros like G_OBJECT(), G_IS_OBJECT() etc.). Currently these are left out of the documentation. You can also use <SUBSECTION Private> for private declarations which will not be output (it is a handy way to avoid warning messages about unused declarations). If your library contains private types which you don't want to appear in the object hierarchy and the list of implemented or required interfaces, add them to a Private subsection. Whether you would place GObject and GObjectClass like structs in public or Standard section depends if they have public entries (variables, vmethods). You can also use <INCLUDE> ... </INCLUDE> to specify the #include files which are shown in the synopsis sections. It contains a comma-separate list of #include files, without the angle brackets. If you set it outside of any sections, it acts for all sections until the end of the file. If you set it within a section, it only applies to that section. 控制结果 A GTK-Doc run generates report files inside the documentation directory. The generated files are named: <package>-undocumented.txt, <package>-undeclared.txt and <package>-unused.txt. All those are plain text files that can be viewed and postprocessed easily. The <package>-undocumented.txt file starts with the documentation coverage summary. Below are two sections divided by blank lines. The first section lists undocumented or incomplete symbols. The second section does the same for section docs. Incomplete entries are those, which have documentation, but where e.g. a new parameter has been added. The <package>-undeclared.txt file lists symbols given in the <package>-sections.txt but not found in the sources. Check if they have been removed or if they are misspelled. The <package>-unused.txt file lists symbol names, where the GTK-Doc scanner has found documentation, but does not know where to put it. This means that the symbol has not yet been added to the <package>-sections.txt file. Enable or add the line in Makefile.am. If at least GTK-Doc 1.9 is installed, this will run sanity checks during make check run. One can also look at the files produced by the source code scanner: <package>-decl-list.txt and <package>-decl.txt. The first one can be compared with the section file if that is manually maintained. The second lists all declarations from the headers. If a symbol is missing one could check if this file contains it. If the project is GObject based, one can also look into the files produced by the object scanner: <package>.args.txt, <package>.hierarchy.txt, <package>.interfaces.txt, <package>.prerequisites.txt and <package>.signals.txt. If there are missing symbols in any of those, one can ask GTK-Doc to keep the intermediate scanner file for further analysis, by running it as GTK_DOC_KEEP_INTERMEDIATE=1 make. Modernizing the documentation GTK-Doc has been around for quite some time. In this section we list new features together with the version since when it is available. GTK-Doc 1.9 When using xml instead of sgml, one can actually name the master document <package>-docs.xml. This version supports in Makefile.am. When this is enabled, the <package>-sections.txt is autogenerated and can be removed from the vcs. This only works nicely for projects that have a very regular structure (e.g. each .{c,h} pair will create new section). If one organize a project close to that updating a manually maintained section file can be as simple as running meld <package>-decl-list.txt <package>-sections.txt. Version 1.8 already introduced the syntax for documenting sections in the sources instead of the separate files under tmpl. This version adds options to switch the whole doc module to not use the extra tmpl build step at all, by using in configure.ac. GTK-Doc 1.10 This version supports in Makefile.am. When this is enabled, the <package>.types is autogenerated and can be removed from the vcs. When using this feature it is important to also setup the IGNORE_HFILES in Makefile.am for code that is build conditionally. GTK-Doc 1.16 This version includes a new tool called gtkdoc-check. This tool can run a set of sanity checks on your documentation. It is enabled by adding these lines to the end of Makefile.am. Enable gtkdoc-check GTK-Doc 1.20 Version 1.18 brought some initial markdown support. Using markdown in doc comments is less intrusive than writing docbook xml. This version improves a lot on this and add a lot more styles. The section that explains the comment syntax has all the details. 为其它接口书写文档 So far we have been using GTK-Doc to document the API of code. The next sections contain suggestions how the tools can be used to document other interfaces too. 命令行选项与 man 页面 As one can generate man pages for a docbook refentry as well, it sounds like a good idea to use it for that purpose. This way the interface is part of the reference and one gets the man-page for free. 为工具书写文档 Create one refentry file per tool. Following our example we would call it meep/docs/reference/meeper/meep.xml. For the xml tags that should be used and can look at generated file in the xml subdirectory as well as examples e.g. in glib. 添加额外的配置检查 额外的配置检查 添加额外的makefile规则 额外的配置检查 DBus接口 (FIXME: http://hal.freedesktop.org/docs/DeviceKit/DeviceKit.html, http://cgit.freedesktop.org/DeviceKit/DeviceKit/tree/doc/dbus) 常见问题 问题 答案 无类继承关系。 对象的 xxx_get_type() 函数未进入 <package>.types 文件。 仍无类继承关系。 Missing or wrong naming in <package>-sections.txt file (see explanation). 该死,我仍然没有类继承关系。 Is the object name (name of the instance struct, e.g. GtkWidget) part of the normal section (don't put this into Standard or Private subsections). 无标识符索引。 Does the <package>-docs.{xml,sgml} contain a index that xi:includes the generated index? Symbols are not linked to their doc-section. Is the doc-comment using the correct markup (added #,% or ())? Check if the gtkdoc-fixxref warns about unresolvable xrefs. A new class does not appear in the docs. Is the new page xi:included from <package>-docs.{xml,sgml}. A new symbol does not appear in the docs. Is the doc-comment properly formatted. Check for spelling mistakes in the begin of the comment. Check if the gtkdoc-fixxref warns about unresolvable xrefs. Check if the symbol is correctly listed in the <package>-sections.txt in a public subsection. A type is missing from the class hierarchy. If the type is listed in <package>.hierarchy but not in xml/tree_index.sgml then double check that the type is correctly placed in the <package>-sections.txt. If the type instance (e.g. GtkWidget) is not listed or incidentialy makred private it will not be shown. I get foldoc links for all gobject annotations. Check that xml/annotation-glossary.xml is xi:included from <package>-docs.{xml,sgml}. Parameter described in source code comment block but does not exist Check if the prototype in the header has different parameter names as in the source. multiple "IDs" for constraint linkend: XYZ Symbol XYZ appears twice in <package>-sections.txt file. Element typename in namespace '' encountered in para, but no template matches. Tools related to gtk-doc GtkDocPlugin - a Trac GTK-Doc integration plugin, that adds API docs to a trac site and integrates with the trac search. Gtkdoc-depscan - a tool (part of gtk-doc) to check used API against since tags in the API to determine the minimum required version. Version 1.1, March 2000 2000Free Software Foundation, Inc.
Free Software Foundation, Inc. 51 Franklin Street, Suite 330, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
GNU 自由文档许可证 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other written document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of copyleft, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The Document, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as you. A Modified Version of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A Secondary Section is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The Invariant Sections are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The Cover Texts are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Transparent copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not Transparent is called Opaque. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The Title Page means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, Title Page means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. 修改 You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). C State on the Title Page the name of the publisher of the Modified Version, as the publisher. D Preserve all the copyright notices of the Document. E Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H Include an unaltered copy of this License. I Preserve the section entitled History, and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled History in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the History section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K In any section entitled Acknowledgements or Dedications, preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M Delete any section entitled Endorsements. Such a section may not be included in the Modified Version. N Do not retitle any existing section as Endorsements or to conflict in title with any Invariant Section. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section entitled Endorsements, provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version . 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled History in the various original documents, forming one section entitled History; likewise combine any sections entitled Acknowledgements, and any sections entitled Dedications. You must delete all sections entitled Endorsements. 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and dispbibute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an aggregate, and this License does not apply to the other self-contained works thus compiled with the Document , on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License or any later version applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. Addendum To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
Copyright YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled GNU Free Documentation License.
If you have no Invariant Sections, write with no Invariant Sections instead of saying which ones are invariant. If you have no Front-Cover Texts, write no Front-Cover Texts instead of Front-Cover Texts being LIST; likewise for Back-Cover Texts. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
usr/share/help-langpack/zh_CN/gtk-doc-manual/fdl-appendix.xml0000644000373100047300000006471012301102114025755 0ustar langpacklangpack00000000000000 Version 1.1, March 2000 2000自由软件基金会, Inc.
Free Software Foundation, Inc. 51 Franklin Street, Suite 330, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
GNU 自由文档许可证 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other written document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of copyleft, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The Document, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as you. A Modified Version of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A Secondary Section is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The Invariant Sections are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The Cover Texts are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Transparent copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not Transparent is called Opaque. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The Title Page means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, Title Page means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. 修改 You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). C State on the Title Page the name of the publisher of the Modified Version, as the publisher. D Preserve all the copyright notices of the Document. E Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H Include an unaltered copy of this License. I Preserve the section entitled History, and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled History in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the History section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K In any section entitled Acknowledgements or Dedications, preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M Delete any section entitled Endorsements. Such a section may not be included in the Modified Version. N Do not retitle any existing section as Endorsements or to conflict in title with any Invariant Section. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section entitled Endorsements, provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version . 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled History in the various original documents, forming one section entitled History; likewise combine any sections entitled Acknowledgements, and any sections entitled Dedications. You must delete all sections entitled Endorsements. 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and dispbibute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an aggregate, and this License does not apply to the other self-contained works thus compiled with the Document , on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License or any later version applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. Addendum To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
Copyright YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled GNU Free Documentation License.
If you have no Invariant Sections, write with no Invariant Sections instead of saying which ones are invariant. If you have no Front-Cover Texts, write no Front-Cover Texts instead of Front-Cover Texts being LIST; likewise for Back-Cover Texts. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
usr/share/help-langpack/zh_CN/evolution/mail-labels.page0000644000373100047300000000335012306123666025136 0ustar langpacklangpack00000000000000 Use labels to categorize your mail while keeping it in their folders. Andre Klapper ak-47@gmx.net Using Labels

You can add colored labels to emails in order to categorize them. This is similar to Categories in the other Evolution windows.

You can search for messages with specific labels by using the quick search dropdown. Also, search folders can be created based on labels.

Adding a label to a message

To assign a label to a message, right-click the message, click Label, and choose the label to apply.

You can also quickly add a new label by choosing New Label.

Managing labels

You can add, edit and delete all labels under EditPreferencesMail PreferencesLabels. Note that you cannot remove the default labels.

usr/share/help-langpack/zh_CN/evolution/import-data.page0000644000373100047300000000143012306123666025172 0ustar langpacklangpack00000000000000 Importing data from another application. Andre Klapper ak-47@gmx.net Importing data from another application
Applications
usr/share/help-langpack/zh_CN/evolution/mail-received-notification.page0000644000373100047300000000344512306123666030153 0ustar langpacklangpack00000000000000 Options on notifications of newly received mail. Andre Klapper ak-47@gmx.net Getting notified of new mail

Evolution always notifies you of new messages by adding a yellow star to the mailer icon in the window switcher.

Switcher layout when a new message has arrived

In order to also be notified of new messages in the GNOME Notification area at the bottom of the screen, make sure that EditPluginsMail Notification is enabled and that you have set your preferred options in the Configuration tab.

Switcher layout when a new message has arrived

usr/share/help-langpack/zh_CN/evolution/calendar-webdav.page0000644000373100047300000000277612306123666026006 0ustar langpacklangpack00000000000000 Using an online Webcal/WebDAV calendar. Andre Klapper ak-47@gmx.net Using a WebDAV calendar

Calendars of this type are read-only.

To add such a calendar to Evolution, perform the following steps:

Click FileNewCalendar.

Select the type On the Web.

Enter a name that you prefer.

Optionally choose a color that you prefer.

Choose if you want to be able to view the content also when being offline.

Enter the address of the calendar in the URL field.

Choose Use secure connection if you want to connect securely.

Enter your username.

Click Apply.

The calendar will be added to the list of calendars in Evolution.

usr/share/help-langpack/zh_CN/evolution/calendar-alarms-and-reminders.page0000644000373100047300000000415712306123666030536 0ustar langpacklangpack00000000000000 Setting up reminder notifications for appointments. Andre Klapper ak-47@gmx.net Novell, Inc Reminders for appointments
General Settings

Under EditPreferencesCalendar and TasksReminders you can select those calendars for which you want to receive reminder notifications. If you do not select a calendar, you will not receive reminders for any events in this calendar. You can also define whether to show a reminder for every appointment and for every birthday and anniversary.

Manual Reminders

Apart from the general settings you can also set up reminders in the appointment editor for certain appointments only:

Click OptionsReminders or press the Reminder button in the toolbar.

From the dropdown menu, choose either one of the available default options when to show a notification reminder, or choose Customize.

In case of Customize, the reminder can be a popup, a sound played, or a program ran. You can also define whether the reminder should be repeated.

usr/share/help-langpack/zh_CN/evolution/contacts-local.page0000644000373100047300000000217512306123666025666 0ustar langpacklangpack00000000000000 Adding another local address book. Andre Klapper ak-47@gmx.net Adding another local address book

To add another local address book to Evolution, perform the following steps:

Click FileNewAddress Book.

Select the type On This Computer.

Enter a name that you prefer.

Click Apply.

The address book will be added to the list of address books in Evolution.

usr/share/help-langpack/zh_CN/evolution/xinclude-filter-vfolder-conditions.xml0000644000373100047300000001004112306123666031537 0ustar langpacklangpack00000000000000

发送者:

发信人的邮件地址或姓名。

收信人:

邮件的接收者。

CC:

Only the CC recipients of the message.

BCC:

Only the BCC recipients of the message. Obviously this can only be applied to outgoing filters.

Sender or Recipients:

The sender's email address or the name of the sender or the recipients of the message.

目标:

邮件的主题行。

指定的邮件头:

Any header including custom ones.

If a message uses a header more than once, Evolution pays attention only to the first instance, even if the message defines the header differently the second time. For example, if a message declares the Resent-From: header as "engineering@example.com" and then restates it as "marketing@example.com", Evolution filters as though the second declaration did not occur. To filter on messages that use headers multiple times, use a regular expression.

消息体:

在邮件的正文中搜索。

表达式:

(For programmers only) Match a message according to an expression you write in the Scheme language used to define filters in Evolution.

Date sent:

根据邮件发送的日期过滤邮件。首先,选择您想要邮件匹配日期的条件,例如在指定日期之前或之后。然后,选择日期。过滤器会比较邮件的时间标签、当前运行时的系统时间或一个特定的时刻、以及您从日历中选取的日期。您还可以选择比较相对于当前时间的一个时间段,例如2~4天之前。

Date received:

与“发信日期”选项的工作方式相同,但它比较您收到邮件的时间和您指定的日期。

标签:

Messages can have labels of Important, Work, Personal, To Do, or Later. You can set labels with other filters or manually.

分数:

给邮件设置一个大于0的分数。您可以设置一个过滤或改变一个邮件分数,然后设置另一个过滤移动您已评分的邮件。邮件评分没有任何特殊的标准:它只是您给邮件标记的一个数字以便其它过滤器对它们进行操作。

Size (kB):

根据邮件大小排序,以千兆字节(KB)为单位。

状态:

根据邮件状态过滤。邮件状态可以是回复,草稿,重要,已读或者垃圾邮件。

跟随:

Checks whether the message is flagged for follow-up.

Completed On:

附件:

Checks whether there is an attachment for the email.

Mailing List:

根据邮件来自的邮件列表过滤。这个过滤操作可能会遗漏一些来自某些列表服务器的邮件,因为它检查X-BeenThere信头,这是用于确定邮件列表或其它邮件分发者的。而来自列表服务器的没有正确设置X-BeenThere的邮件就不能被过滤器捕获了。

正则表达式匹配:

(For programmers only) If you know your way around a regex, or regular expression, this option allows you to search for complex patterns of letters, so that you can find, for example, all words that start with a and end with m, and are between six and fifteen letters long, or all messages that declare a particular header twice. For information about how to use regular expressions, check the man page for the grep command.

usr/share/help-langpack/zh_CN/evolution/mail-receiving-options-mh-format-directories.page0000644000373100047300000000371112306123667033544 0ustar langpacklangpack00000000000000 Receiving options for MH-format mail directories accounts. Andre Klapper ak-47@gmx.net MH-format mail directories receiving options
接收电子邮件

On the Receiving Email page (accessible via EditPreferencesMail AccountsEditReceiving Email):

Choose the directory by clicking on the button next to Path in the Configuration section. Some default folders are available in the list. If the directory is not among those folders, choose the last option Other.... This will open a directory chooser window.

接收选项

On the Receiving Options page (accessible via EditPreferencesMail AccountsEditReceiving Options):

If you want Evolution to check automatically for new messages, click the Check for new messages every ... minutes option and select the frequency in minutes.

usr/share/help-langpack/zh_CN/evolution/mail-composer-write-new-message.page0000644000373100047300000000274712306123667031076 0ustar langpacklangpack00000000000000 Writing a new email to send to a recipient. Andre Klapper ak-47@gmx.net Novell, Inc Composing a new message

You can start writing a new email message by clicking FileNewMail Message, by pressing ShiftCtrlM, or by clicking New in the toolbar.

Enter an email address in the To: field. If you want to enter multiple addresses, separate them by commas. See for more information on sending messages to more than one person.

After you have written your message, click Send or press CtrlReturn.

usr/share/help-langpack/zh_CN/evolution/mail-composer-enable-html-format.page0000644000373100047300000000306412306123667031202 0ustar langpacklangpack00000000000000 Enable HTML format in the mail composer. Andre Klapper ak-47@gmx.net Novell, Inc Enabling HTML format

You can change the format of an email message from plain text to HTML in the email composer by choosing FormatHTML from the menu bar.

Alternately, you also can change the first dropdown list below the Subject line from Plain Text to HTML.

If you choose HTML format, a second tool bar will be displayed below the Subject line with HTML-only options.

To send all your mail as HTML by default, enable EditPreferencesComposer PreferencesDefault BehaviorFormat messages in HTML.

usr/share/help-langpack/zh_CN/evolution/mail-account-manage-pop.page0000644000373100047300000000537312306123667027362 0ustar langpacklangpack00000000000000 Add and edit a POP mail account in Evolution. Andre Klapper ak-47@gmx.net POP mail account settings
帐号编辑器

Mail accounts can be added by choosing FileNewMail Account or via EditPreferencesMail AccountsAdd. The steps are mostly the same as for the First-Run Assistant, except for not getting asked whether to import data from other applications or to restore from a backup file.

Mail accounts can be edited via EditPreferencesMail AccountsEdit.

The following settings are available when editing an existing account:

Receiving Email and Receiving options (POP accounts) Receiving Email and Receiving options
Sending Email (POP accounts) 发送电子邮件
Defaults (POP accounts) 默认值
Security (POP accounts) 安全
usr/share/help-langpack/zh_CN/evolution/mail-vertical-view.page0000644000373100047300000000314512306123667026460 0ustar langpacklangpack00000000000000 Changing the mail view for widescreen displays. Andre Klapper ak-47@gmx.net Novell, Inc Vertical view

除了经典视图之外,Evolution 还提供了一个“垂直式”的视图。在垂直视图中,邮件预览面板位于邮件列表的右侧。(而在经典视图中,邮件预览面板位于邮件列表的下方)。垂直视图能使您有效利用宽屏显示器的额外宽度。

To switch to vertical view, click ViewPreviewVertical View.

在垂直视图中,邮件列表包含两行的简要邮件头,以便您利用余下的宽度放置预览面板。 邮件头包括发信人,附件标记,日期和第二行的邮件标题。

To switch back to classical view, click ViewPreviewClassical View.

usr/share/help-langpack/zh_CN/evolution/mail-displaying-images-in-html.page0000644000373100047300000000572212306123667030656 0ustar langpacklangpack00000000000000 On embedded pictures in received HTML messages. Andre Klapper ak-47@gmx.net April Gonzales loonycookie@gmail.com Novell, Inc Images in HTML messages

When someone sends you HTML mail that includes an image in the body of the message (for example, the welcome message in your Inbox), Evolution displays the image inside the message.

Loading images

一些图片则是邮件中的链接,而不是邮件本身的一部分。 Evolution可以从Internet上下载这些图片,但不会自动进行这些操作,除非您要求Evolution这么做。 这是因为远程图片可能载入、显示得很慢,而且甚至可能被垃圾邮件发送者所利用来追踪收件人。 所以说,不自动载入图片有助于保护您的隐私。

To load the images for one message, click ViewLoad Images or press CtrlI.

To set the default action for loading images, go to EditPreferencesMail PreferencesHTML MessagesLoading Images.

Automatically download images in emails from people you know

You can download images from emails sent by your contacts. To do this, go to EditPreferencesMail PreferencesHTML MessagesLoading Images. Enable the Load images only in messages from contacts option.

Next, go to EditPreferencesContactsAutocompletion. Enable autocompletion by ticking the Always show address of the autocompleted contact checkbox.

Saving images

To save an image that is embedded in an HTML email, right-click on the image and click Save Image....

usr/share/help-langpack/zh_CN/evolution/minimize-to-system-tray.page0000644000373100047300000000302112306123667027510 0ustar langpacklangpack00000000000000 On minimizing Evolution to the notification area. April Gonzales loonycookie@gmail.com Andre Klapper ak-47@gmx.net Minimizing Evolution to the system tray

GNOME, by default, has a notification area which includes an applet that informs users of any system updates, changes, or events. This includes the arrival of email messages on Evolution. You can refer to this built-in feature of GNOME for any email notifications.

In GNOME version 2 you may modify the notification area and set it up to become a system tray by using external applications which might be available for installation in the software management tool of your distribution. Available options are for example Tint2. This is no longer possible in GNOME 3.

usr/share/help-langpack/zh_CN/evolution/memos-usage-delete-memo.page0000644000373100047300000000161512306123667027374 0ustar langpacklangpack00000000000000 Deleting a memo from your memo list. Andre Klapper ak-47@gmx.net Deleting a Memo

If you want to delete a memo in your memo lists, right-click on the memo and select Delete, or click on the memo and click Delete in the tool bar, or click EditDelete Memo.

usr/share/help-langpack/zh_CN/evolution/using-categories.page0000644000373100047300000000634112306123667026230 0ustar langpacklangpack00000000000000 Using and managing categories for appointments, contacts, memos and tasks. Andre Klapper ak-47@gmx.net Novell, Inc Using Categories

Another way to group contacts, appointments, tasks and memos (summarized by the term "objects" in the following text) is to mark them as belonging to different categories. You can mark an object as being in several categories or no category at all. For example in your address book, you put a friend in the "Business" category because he works with you and the "Friends" category because he is a friend.

To display only the objects in a particular category, select the corresponding category in the quick search bar.

Setting categories for an object

To mark an object as belonging to a category,

Double-click the object to bring up the corresponding editor.

Click Categories.... (If this button is not available, select ViewCategories.)

从列表中选择列表。您可以选择您想要的任意多或任意少的类别。

Adding and managing categories

If the default list of categories does not suit your needs, you can add your own categories either directly via EditAvailable Categories, or indirectly when editing an object:

Double-click any object to bring up the corresponding editor.

Click Categories.... (If this button is not available, select ViewCategories.)

在顶部输入框中输入新类别的名称。

Click OK.

You can now see the category in the Categories text field in the editor.

Click OK.

In the Categories Editor you can edit or set the color and icon for each category available by clicking Edit at the bottom of the Categories window. Press Delete to delete categories from the list.

usr/share/help-langpack/zh_CN/evolution/tasks-usage-delete-task.page0000644000373100047300000000170312306123667027404 0ustar langpacklangpack00000000000000 Deleting a task from your task list. Andre Klapper ak-47@gmx.net Deleting a Task

If you want to delete a task in your task lists, right-click on the task and select Delete, or click on the task and click Delete in the tool bar or press CtrlD, or click EditDelete Task.

usr/share/help-langpack/zh_CN/evolution/credits.page0000644000373100047300000000513412306123667024414 0ustar langpacklangpack00000000000000 Credits and Acknowledgment. Andre Klapper ak-47@gmx.net Credits and Acknowledgment
Authors of the <app>Evolution</app> User Documentation

André Klapper

April Gonzalez

Barbara M. Tobias

Phil Bull

Translators of the <app>Evolution</app> User Documentation

(Not applicable to the English version)

Authors of the previous version

Aaron Weber

Akhil Laddha

André Klapper

Duncan Mak

Ettore Perazzoli

Francisco Javier F. Serrador

Jessica Prabhakar

Kevin Breit

Mark Moulder

Novell, Inc.

Radhika Nair

Srinivasa Ragavan

联系人信息

The GNOME Documentation Project:

Website

Mailing list

usr/share/help-langpack/zh_CN/evolution/legal.xml0000644000373100047300000000050712306123667023726 0ustar langpacklangpack00000000000000

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

usr/share/help-langpack/zh_CN/evolution/sync-with-other-devices.page0000644000373100047300000001323112306123667027440 0ustar langpacklangpack00000000000000 Synchronize Evolution data with handheld devices and mobile phones. Andre Klapper ak-47@gmx.net Novell, Inc Synchronize <app>Evolution</app> with other devices

There are currently no "recommended instructions" for users.

Many distributions provide the application SyncEvolution that can be used in combination with devices that support SyncML.

In general it is recommended to use applications and devices that both support the ActiveSync protocol (such as SyncEvolution). A list of collaborative software is available on Wikipedia.

If you can provide good practices or more information on this topic feel free to file a bug report in GNOME's bug tracking system.

Palm

To synchronize with a Palm OS device like the PalmPilot(TM) and the Handspring Visor several steps are needed: First, you need to enable synchronization. Second, your computer needs to recognize and access your handheld. Third, you should decide what sort of synchronization behavior you want.

启用同步

If you have not used a handheld device with your computer before, you need to configure it via EditGNOME Pilot Synchronization.... Make sure that you have read and write permissions on the device, which is normally in /dev/pilot. If that does not work, check in /dev/ttyS0 if you have a serial connection, or in /dev/ttyUSB1 for a USB connection. You can do this by becoming root user and adding your username to the group that owns this device node. For a USB device on sync, two device nodes are created, ttyUSB0 and ttyUSB1. The second node is the one to be used in configuring the device.

选择Conduits

After your computer and your Palm OS device are communicating, select the conduits you want under the Pilot Conduits section. You can use conduits to synchronize data with several applications; the Evolution conduits are labeled EAddress for the contacts in your address book; ECalendar for your calendar; and ETodo for your task list.

Click Enable, then click Settings to change what the conduit does when activated. Your options can vary depending on the conduit, but typically they are as follows:

Disabled: Do nothing.

Synchronize: Copy new data from the computer to the handheld, and from the handheld to the computer. Remove items that were on both systems but have been deleted on one.

Copy From Pilot: If there is any new data on the handheld device, copy it to the computer.

Copy To Pilot: Copy new data from the computer to the handheld.

Select the behavior you want for each conduit you choose to use. If you're not sure, use Synchronize.

同步信息

使用下列步骤同步您存储在Palm OS设备和Evolution中的数据。

If you want to back up your information before synchronizing, make a copy of the .local/share/evolution directory inside your home directory.

Put your handheld device in its cradle and press the HotSync button.

If you use Palm OS version 4.0 and have password protection turned on for your handheld device, you might encounter trouble synchronizing. If this happens, try turning off password protection on your handheld, synchronize it with your desktop computer, and then re-enable password protection on your handheld.

Now your Palm OS device will synchronize data with Evolution.

usr/share/help-langpack/zh_CN/evolution/tasks-local.page0000644000373100047300000000236712306123667025201 0ustar langpacklangpack00000000000000 Adding another local task or memo list. Andre Klapper ak-47@gmx.net Adding another local task or memo list

To add another local task list to Evolution, perform the following steps:

Click FileNewTask List or FileNewMemo List.

Select the type On This Computer.

Enter a name that you prefer.

Optionally choose a color that you prefer.

Click Apply.

The task list will be added to the list of task lists in Evolution.

usr/share/help-langpack/zh_CN/evolution/calendar-timezones.page0000644000373100047300000000413512306123667026543 0ustar langpacklangpack00000000000000 Using time zones in the calendar. Andre Klapper ak-47@gmx.net Novell, Inc Using time zones

Evolution supports using multiple time zones.

Setting your global timezone(s)

By default Evolution uses the system-wide time zone. This can be changed under EditPreferencesCalendar and TasksGeneralTimeTime zone.

If you deal a lot with people in another specific time zone you can display that second time zone in the day view of the calendar. You can set a second time zone under EditPreferencesCalendar and TasksGeneralTimeSecond zone.

Setting a timezone for an appointment

You can also configure time zone information specific to each appointment. To do that, add a new or edit an existing appointment and click the globe button to customize the time zone that the time exists in. For example, if you live in New York but have a telephone meeting set for noon with someone in California, you need to make sure that your schedules are coordinated. Setting time zones on a per-appointment basis helps avoid that potential confusion.

usr/share/help-langpack/zh_CN/evolution/mail-receiving-options-unix-mbox-spool-directory.page0000644000373100047300000000375012306123667034425 0ustar langpacklangpack00000000000000 Receiving options for standard Unix mbox spool directory accounts. Andre Klapper ak-47@gmx.net Standard Unix mbox spool directory receiving options
接收电子邮件

On the Receiving Email page (accessible via EditPreferencesMail AccountsEditReceiving Email):

Choose the directory by clicking on the button next to Path in the Configuration section. Some default folders are available in the list. If the directory is not among those folders, choose the last option Other.... This will open a directory chooser window.

接收选项

On the Receiving Options page (accessible via EditPreferencesMail AccountsEditReceiving Options):

If you want Filters to be automatically used for new messages in your inbox, enable Apply filters to new messages in INBOX.

usr/share/help-langpack/zh_CN/evolution/mail-moving-emails.page0000644000373100047300000000263112306123667026445 0ustar langpacklangpack00000000000000 Moving emails from one folder to another. April Gonzales loonycookie@gmail.com Andre Klapper ak-47@gmx.net Moved emails are still shown in the original folder

If your IMAP mail server does not yet support IMAP's "move" feature which was introduced in January 2013, Evolution "moves" messages by copying and deleting emails. Deleting means "marking messages for deletion" so all the original messages are retained until you expunge the emails marked for deletion.

See the topic on deleting emails for instructions on how to expunge email messages. Note that this applies to other types of accounts as well.

usr/share/help-langpack/zh_CN/evolution/organizing.page0000644000373100047300000000116112306123667025122 0ustar langpacklangpack00000000000000 On organizing and finding your data in Evolution. Andre Klapper ak-47@gmx.net Sorting and organizing usr/share/help-langpack/zh_CN/evolution/calendar-meetings-delegating.page0000644000373100047300000000243212306123667030440 0ustar langpacklangpack00000000000000 Ask somebody else to run the meeting. Andre Klapper ak-47@gmx.net Novell, Inc 委托会议

Only attendees of a meeting can delegate a meeting, but not the organizer of a meeting.

Right-click on the meeting that you want to delegate.

Click Delegate Meeting.

选择您想要把会议委托给哪些联系人。

Click OK.

每个联系人就会收到该会议请帖的副本。

usr/share/help-langpack/zh_CN/evolution/xinclude-searching.xml0000644000373100047300000000366312306123667026424 0ustar langpacklangpack00000000000000
Saved Searches

If you search for something rather often, you will prefer not to type it many times. In this case you can use saved searches.

To save your search results, either click Save instead of OK in the Search dialog, or in case the search results are already displayed, select SearchSave Search. From now on this search will be directly available from the Search menu.

usr/share/help-langpack/zh_CN/evolution/mail-composer-message-templates-reply.page0000644000373100047300000000253512306123667032277 0ustar langpacklangpack00000000000000 Use one of your templates for replying to a message Andre Klapper ak-47@gmx.net Novell, Inc Using a Template as a Reply

Right-click the message you are replying to, then click Templates.

This option lists all the message templates in the Templates folder.

Select the message template of your choice. Make changes if required in the email composer window that will open.

Click Send.

当您选择了一个模板用于回复时,回复的主题已经写好了。

usr/share/help-langpack/zh_CN/evolution/mail-search-folders-enable.page0000644000373100047300000000216212306123667030022 0ustar langpacklangpack00000000000000 Activate search folders. Andre Klapper ak-47@gmx.net Enable the Search Folders Functionality

In the unlikely case that there is no Search folders top-level node displayed at the bottom of the mail folder list you have to enable EditPreferencesMail AccountsSearch Folders.

usr/share/help-langpack/zh_CN/evolution/calendar-meetings-replying-to-invitation.page0000644000373100047300000000427412306123667032776 0ustar langpacklangpack00000000000000 Accepting and replying to a meeting invitation. Andre Klapper ak-47@gmx.net Novell, Inc Replying to a Meeting Request

Meeting requests are sent as attachments and displayed as the body of an email. All the details about the event are shown, including time and dates.

You can choose whether and how to reply to the invitation and add a personal comment to your reply. Available options are to Decline, Tentatively Accept (Tentative), or Accept. You can also decide whether the time of the meeting will still be shown as free in your calendar.

If the meeting request already includes a reminder you can import the reminder to your calendar by enabling Inherit reminder.

If you click Accept the event is added automatically to the calendar that you have chosen.

After you have added the meeting to your calendar, you can make changes to the meeting, but if the original organizer sends out an update, your changes might be overwritten.

Under EditPreferencesCalendar and TasksMeeting InvitationsConflict Search you can define which calendars are used for warning you of meeting conflicts.

usr/share/help-langpack/zh_CN/evolution/mail-searching-attachment-type.page0000644000373100047300000000164212306123667030747 0ustar langpacklangpack00000000000000 Unfortunately this is not possible. Andre Klapper ak-47@gmx.net Searching for emails with a specific attachment type

There currently is no way to do search for emails with a specific type of attachment (for example searching for all emails that have a PDF attachment).

usr/share/help-langpack/zh_CN/evolution/tasks-display-settings.page0000644000373100047300000000345312306123667027407 0ustar langpacklangpack00000000000000 Options for displaying task completion and due dates. Andre Klapper ak-47@gmx.net Novell, Inc Displaying of tasks

The following task-related options are available under EditPreferencesCalendar and TasksTasks.

今天到期的任务:

为今天到期的任务选择一种颜色。

过期任务:

设置过期任务的颜色。

隐藏在其后面的已完成任务:

Select this option to have completed tasks hidden after a period of time measured in days, hours, or minutes. If you do not select this option, completed tasks remain in your task list, marked as complete.

usr/share/help-langpack/zh_CN/evolution/mail-several-pop-accounts.page0000644000373100047300000000321312306123667027745 0ustar langpacklangpack00000000000000 How to split and sort mail when using more than one local account. Andre Klapper ak-47@gmx.net Separating POP mail for more than one account

It is not possible to have separate accounts in the accounts and folder list pane. Evolution only has one unique inbox for incoming email.

You can either use IMAP instead of POP, or move incoming emails into different folders by creating folders and creating filters: Create a new folder and create two subfolders (for incoming and for sent mail of that account). Now set up an incoming filter via EditMessage Filters...Add to move incoming mail to the incoming folder by filtering on the recipient's address and set up an outgoing filter to move outgoing mail to the sent folder by filtering on the sender's address.

usr/share/help-langpack/zh_CN/evolution/mail-calendar-sending-invitations.page0000644000373100047300000000370112306123667031440 0ustar langpacklangpack00000000000000 Sending invitations for appointments to contacts via email. Novell, Inc Sending invitations by email

如果您在日历组件中创建了一个事件,您可以使用Evolution邮件工具给事件参加者发送邀请。请帖会以iCal格式作为附件发送。

To send an invitation, right-click on the entry in the calendar and choose Forward as iCalendar.

当您收到一个邀请时,有以下几个选项:

接受:

意味着您将参加这个活动。当您点击“确定”按钮,该活动会加入到您的日历中。

暂时接受:

意味着您可能会参加这个活动。当您点击“确定”按钮时,该活动会加入您的日历,并标记为“暂时”。

拒绝:

意味着您不能参加这个活动。点击“确定”时该活动不会进入您的日历,即使您已经选择了“给发信人发送回复”选项并且给活动组织者回复了。

给发信人发送回复:

如果您想要回复活动组织者,选择该项。

usr/share/help-langpack/zh_CN/evolution/calendar-caldav.page0000644000373100047300000000323412306123667025757 0ustar langpacklangpack00000000000000 Using an online CalDAV calendar. Andre Klapper ak-47@gmx.net Novell, Inc Using a CalDAV calendar

To add such a calendar to Evolution, perform the following steps:

Click FileNewCalendar.

Select the type CalDAV.

Enter a name that you prefer.

Optionally choose a color that you prefer.

Choose if you want to be able to view the content also when being offline.

Enter the address of the calendar in the URL field.

Choose Use secure connection if you want to connect securely.

Enter your username and your email address.

Click Apply.

The calendar will be added to the list of calendars in Evolution.

usr/share/help-langpack/zh_CN/evolution/mail-account-manage-imap-plus.page0000644000373100047300000000604212306123667030465 0ustar langpacklangpack00000000000000 Add and edit an IMAP+ mail account in Evolution. Andre Klapper ak-47@gmx.net IMAP+ mail account settings
帐号编辑器

Mail accounts can be added by choosing FileNewMail Account or via EditPreferencesMail AccountsAdd. The steps are mostly the same as for the First-Run Assistant, except for not getting asked whether to import data from other applications or to restore from a backup file.

Mail accounts can be edited via EditPreferencesMail AccountsEdit or by right-clicking on the respective top-level node in the folder list and choosing Properties.

The following settings are available when editing an existing account:

Receiving Email and Receiving options (IMAP+ accounts) Receiving Email and Receiving options
Sending Email (IMAP+ accounts) 发送电子邮件
Defaults (IMAP+ accounts) 默认值
Security (IMAP+ accounts) 安全
Other settings (IMAP+ accounts) Other settings

Other account related settings that are not located in the Account Editor:

usr/share/help-langpack/zh_CN/evolution/memos-usage-edit-memo.page0000644000373100047300000000205712306123667027060 0ustar langpacklangpack00000000000000 Editing a memo in your memo list. Andre Klapper ak-47@gmx.net Editing a Memo

If you want to change a memo that already exists in your memo lists,

Double-click on the memo that you want to edit in the list of memos, or right-click on the memo and click Open Memo.

Edit the memo information.

Click the Save button, or FileSave.

usr/share/help-langpack/zh_CN/evolution/exchange-placeholder.page0000644000373100047300000000152412306123667027020 0ustar langpacklangpack00000000000000 连接到 Exchange Servers Andre Klapper ak-47@gmx.net 连接到 Exchange Servers

For topics not covered here please refer to the old Evolution manual.

usr/share/help-langpack/zh_CN/evolution/mail-reading-keyboard-shortcuts.page0000644000373100047300000000654312306123667031147 0ustar langpacklangpack00000000000000 Keyboard shortcuts that can save you some time when reading mail. Andre Klapper ak-47@gmx.net Novell, Inc Using shortcut keys to read mail
Viewing an email

In the Mail window you read a message by selecting it in the message list. If you would like to see the message in its own window, either double-click it, press Enter, or press CtrlO.

Navigating in a message

To read mail with the keyboard, you can press the Spacebar to page down and press Backspace to page up while reading an email. Ensure that you use the keys when the message list is focused.

Navigating in a folder in the message list

Navigate in the message list by using the arrow keys on the keyboard.

Navigating in a folder's unread mail in the message list

To go to the next or previous unread messages, press the period (.) or comma (,) keys. On some keyboards, these keys are also marked with the > and < symbols, which is a convenient way to remember that they move you forward and backward in your message list. You can also use the right square bracket (]) for the next unread message, and the left square bracket ([) for the previous unread message.

Navigating in unread mail across folders

You can easily read the unread messages in all the mail folders by using the Spacebar.

When you are in the Mail window, the Spacebar has the following behavior:

当您第一次按下空格键时,会跳至下一封未读邮件。

If the message is more than one screen long, the Spacebar works as Page Down.

如果您在到达页面底部时,按下空格键能跳至下一封未读邮件。

如果邮箱中没有未读邮件,按下空格键跳至下一个文件夹中的未读邮件。

如果新邮件到达若干个文件夹,按下空格键能在不同文件夹之间跳转。这样您可以直接跳至其他文件夹中的未读邮件而无须用鼠标点击文件夹。

usr/share/help-langpack/zh_CN/evolution/backup-restore.page0000644000373100047300000000430412306123667025703 0ustar langpacklangpack00000000000000 备份及恢复 Evolution 的数据和设置。 Andre Klapper ak-47@gmx.net Back up and restore

You can back up your Evolution data. The backup saves your settings, mail, contacts, tasks, memos and calendars. It will be stored in a gzip-compressed tar archive file.

Backing up

Select FileBack up Evolution Data....

Choose a filename and the folder where you want to save the backup file, and click Save.

You will be asked to close Evolution. Answer with Yes.

Note that your spam filtering settings are not included in the backup file, as these settings are not controlled by Evolution and as developers of spam filtering tools might change implementation details. If you use Bogofilter you will need to back up ~/.bogofilter/. If you use SpamAssassin you will need to back up ~/.spamassassin/.

Restoring

Select FileRestore Evolution Data....

Choose the file, and click Open.

You will be asked to close Evolution. Answer with Yes.

In the first-run assistant, you can restore Evolution data from a backup file.

usr/share/help-langpack/zh_CN/evolution/mail-displaying-character-encodings.page0000644000373100047300000000376012306123667031746 0ustar langpacklangpack00000000000000 When letters in an email are not shown correctly or missing. Andre Klapper ak-47@gmx.net Character Encodings
Received mail

If the email application of the sender is broken or misconfigured, plain text emails might not include information about the character encoding used. If you receive such messages, choose ViewCharacter Encoding from the main menu and change the currently chosen character encoding to an appropriate one that might be the encoding used by the sender. You have to make this change every time you view the message.

To make this the default setting, go to EditPreferencesMail PreferencesGeneralMessage DisplayDefault character encoding.

发送电子邮件

In the unlikely event that you would like to change the default character encoding for messages that you send, go to EditPreferencesComposer PreferencesDefault BehaviorCharacter encoding.

This setting only refers to Plain Text messages as HTML messages always use UTF-8 encoding.

usr/share/help-langpack/zh_CN/evolution/mail-not-sent.page0000644000373100047300000000272212306123667025446 0ustar langpacklangpack00000000000000 Possible reasons why emails are not sent. April Gonzales loonycookie@gmail.com Mail is not sent

There can be several reasons why emails are not sent:

Invalid email address. Check if all the addresses listed as mail recipients are correct. If the message contains a wrong or invalid email address, the message will not be sent.

Incorrect SMTP settings. Verify if the settings used for outgoing messages is correct. Using the incorrect server address or authentication method may prevent emails from being sent

Offline status. Evolution may be offline. Check on the Send and Receive button; if it is greyed out, then you are offline. To go online, go to FileWork online. You should now be able to use the Send and Receive button.

usr/share/help-langpack/zh_CN/evolution/problems-reporting-bugs.page0000644000373100047300000000401712306123667027546 0ustar langpacklangpack00000000000000 How to report mistakes in the application. Andre Klapper ak-47@gmx.net How to report bugs

If you do not need help for configuration but you are sure that you have found a mistake or wrong behavior in the Evolution software, or if you want to request a feature, you can file a report in the GNOME bug tracking system. Note that this requires registration first. Please try to avoid filing duplicates and check the bug writing guidelines first.

Also note that GNOME distributions sometimes introduce their own changes in Evolution that are not included in GNOME Evolution. This is hard to recognize for users but if you are aware of it please file a bug report in the bug tracker of your GNOME distribution instead.

When reporting bugs exact information is welcome as it makes it easier for others to reproduce and fix the issue. If possible please include information such as the Evolution version (under HelpAbout), your distribution, and exact steps to reproduce the problem, click by click. See the Bug Writing Guidelines for more information.

usr/share/help-langpack/zh_CN/evolution/mail-displaying-sender-photograph.page0000644000373100047300000000401012306123667031461 0ustar langpacklangpack00000000000000 Display a picture of the sender in the message header area. Andre Klapper ak-47@gmx.net Novell, Inc Photograph Message Headers

Evolution automatically displays photographs of the sender of an email at the right side of the message header if the sender already embedded a photograph in the message.

You can also manually enable displaying the photograph of the sender of an email if the sender is in one of your address books and has a photograph stored.

To enable this functionality, select EditPreferencesMail PreferencesHeadersShow the photograph of sender in the message preview.

If there are multiple matches for a contact, the first one is always used.

usr/share/help-langpack/zh_CN/evolution/mail-account-manage-microsoft-exchange.page0000644000373100047300000000175412306123667032350 0ustar langpacklangpack00000000000000 Add and edit a Microsoft Exchange account in Evolution. Andre Klapper ak-47@gmx.net Microsoft Exchange account settings

Please first read Choosing the right connector to find out about the right Exchange account type for you.

usr/share/help-langpack/zh_CN/evolution/tasks-usage-edit-task.page0000644000373100047300000000206012306123667027064 0ustar langpacklangpack00000000000000 Editing a task in your task list. Andre Klapper ak-47@gmx.net Editing a Task

If you want to change a task that already exists in your task lists,

Double-click on the task that you want to edit in the list of tasks, or right-click on the task and click Open Task.

Edit the task information.

Click the Save button, or FileSave.

usr/share/help-langpack/zh_CN/evolution/calendar-using-several-calendars.page0000644000373100047300000000352412306123667031245 0ustar langpacklangpack00000000000000 Adding and using more than one calendar and different types. Andre Klapper ak-47@gmx.net Novell, Inc Using several calendars

You can have multiple calendars and overlay them one over the other. For example, you might have a schedule of events for work, one for home, and one for your favorite sports team. The side bar lists those calendars, and you can select or deselect the boxes next to them to show and hide the appointments in your calendar view. By hiding and showing different sets of appointments, you can be sure to avoid conflicts, while keeping a minimum of clutter in your view.

Appointments for each calendar appear in different color.

You can also use calendars that are not on your computer, such as on the internet or in a local network.

For example, the icalshare.com website has an extensive list of shared online calendars, including national and religious holidays, phases of the moon, sports, and local and regional events.

usr/share/help-langpack/zh_CN/evolution/calendar-layout-general-formatting.page0000644000373100047300000000412012306123667031620 0ustar langpacklangpack00000000000000 General formatting options for the calendar. Andre Klapper ak-47@gmx.net Novell, Inc General formatting options

The following options are available under EditPreferencesCalendar and TasksGeneral.

时间

时间格式:

在12小时制(AM/PM) 与24小时制间选择。

Time zone and Second zone:

The city you are located in, and optionally a second city.

工作周

Week starts on:

选择在每一周的开始要显示哪一天。

工作日:

Define which week days are work days.

Day begins:

Define at which time your work day begins.

Day ends:

Define at which time your work day ends.

提醒

If you want to be warned before you delete any appointment, select this option.

usr/share/help-langpack/zh_CN/evolution/exporting-data-calendar.page0000644000373100047300000000222212306123667027447 0ustar langpacklangpack00000000000000 How to export calendar data from Evolution. Andre Klapper ak-47@gmx.net Exporting calendar data

To export a complete calendar, right-click on the calendar in the list of calendars and click Save as. Available formats are iCalendar format (ICS, recommended), comma separated values (CSV), and RDF format.

If you want to export only one appointment (or task or memo), either select the appointment and select FileSave as iCalendar..., or right-click on the appointment and click Save as iCalendar....

usr/share/help-langpack/zh_CN/evolution/index.page0000644000373100047300000000574412306123667024075 0ustar langpacklangpack00000000000000 Evolution <media type="image" its:translate="no" src="figures/evolutionlogo.png"/> Evolution Mail and Calendar Phil Bull philbull@gmail.com Andre Klapper ak-47@gmx.net <media type="image" its:translate="no" src="figures/evolutionlogo.png"> <span its:translate="yes">Evolution logo</span> </media> Evolution Mail and Calendar
启动
Mail Management
Advanced Mail Management
Advanced Mail Management (IMAP+ accounts) IMAP+
Mail Composing
Advanced Mail Composing
Calendar Management
Advanced Calendar Management
Contacts Management
Memos and Tasks Management
Data Migration and Synchronization
Corporate Environments
Microsoft Exchange
Tracking down Problems
Common Mail Questions and Problems
Common Other Questions and Problems
Further reading
usr/share/help-langpack/zh_CN/evolution/mail-receiving-options-usenet-news.page0000644000373100047300000000614512306123667031621 0ustar langpacklangpack00000000000000 Receiving options for Usenet news accounts. Andre Klapper ak-47@gmx.net Novell, Inc Usenet news receiving options
接收电子邮件

On the Receiving Email page (accessible via EditPreferencesMail AccountsEditReceiving Email):

Enter the address of the email server in the Server field and enter your username for that server.

选择您是否要使用安全连接 (SSL 或 TLS)。

如果您的服务器支持它,应当启用该选项。

Free webmail providers often supply information about which of these options can be used. If you are in an organizational environment, you may want to contact your system administrator for more information.

Select your authentication type in the Authentication list, or click Check for Supported Types to have Evolution check for supported authentication mechanisms. Some servers do not announce the authentication mechanisms they support, so clicking this button is not a guarantee that available mechanisms actually work.

选择是否要 Evolution 记住密码。

接收选项

On the Receiving Options page (accessible via EditPreferencesMail AccountsEditReceiving Options):

If you want Evolution to check automatically for new messages, click the Check for new messages every ... minutes option and select the frequency in minutes.

选择是否以简短形式显示文件夹。

例如,comp.os.linux 将会显示作 c.o.linux。

Select if you want to show relative folder names in the subscriptions window.

If you select to show relative folder names, only the name of the folder is displayed. For example the folder evolution.mail would appear as evolution.

usr/share/help-langpack/zh_CN/evolution/mail-composer-custom-header-lines.page0000644000373100047300000000425212306123670031366 0ustar langpacklangpack00000000000000 Using custom fields in the header of composed messages Andre Klapper ak-47@gmx.net Novell, Inc Custom Header Lines

You can add arbitrary header lines to outgoing emails.

Enabling and managing custom headers

To set up the Custom Header plugin:

Select EditPlugins.

Enable Custom Header.

Click the Configuration tab.

You can add, edit, or remove the header fields. For every header field you add, you can specify the keys and values. The key is used as the title of the Custom Header. You can enter multiple values for the keys. You must use a semicolon to separate every value you enter.

Inserting custom headers in a message

Click NewMail Message or press ShiftCtrlM to open the message composer window.

Select InsertCustom Header.

In the Email Custom Header window, you can view all the defined header fields and values.

Set the values for the header fields by using the dropdown list.

Click OK.

usr/share/help-langpack/zh_CN/evolution/exporting-data.page0000644000373100047300000000130012306123670025666 0ustar langpacklangpack00000000000000 How to export data from Evolution. Andre Klapper ak-47@gmx.net Exporting data from <em>Evolution</em> usr/share/help-langpack/zh_CN/evolution/data-storage.page0000644000373100047300000000277712306123670025336 0ustar langpacklangpack00000000000000 Where does Evolution store my data on the harddisk? Andre Klapper ak-47@gmx.net Data storage locations

This is only interesting for advanced users who want to debug problems.

Evolution 3.6 and later stores its data according to the XDG Base Directory Specification. By default this means:

The user's data files

$HOME/.local/share/evolution

Various configuration and state files

$HOME/.config/evolution

Account settings

$HOME/.config/evolution/sources

Disposable data caches

$HOME/.cache/evolution

Configuration settings in GSettings

$HOME/.config/dconf

usr/share/help-langpack/zh_CN/evolution/mail-spam-marking.page0000644000373100047300000000453112306123670026257 0ustar langpacklangpack00000000000000 How to mark unwanted junk and spam mail. Andre Klapper ak-47@gmx.net Pete Biggs Barbara Tobias barbtobias09@gmail.com Novell, Inc Marking Mail as Junk

While SpamAssassin comes with a set of predefined rules, Bogofilter needs to be taught first before it will automatically filter junk mail. If you only train Bogofilter on bad messages, it will assume all mail is bad (because it does not know any difference) hence it will not make any decisions until the database is sufficiently large to determine what is and is not spam. In any case, when you first start using junk mail blocking, check the Junk mail folder frequently to be sure that legitimate mail doesn't get flagged as junk mail.

Manually Marking Junk Mail

If Evolution misses junk mail, right-click the message, then click Mark as Junk, or mark the message and press CtrlJ or click the Junk button in the tool bar. When you correct it, the filter can recognize similar messages in the future, and becomes more accurate as time goes on.

If legitimate mail is incorrectly flagged, remove it from the Junk folder by right-clicking it and selecting Mark as Not Junk or pressing ShiftCtrlJ, or mark the message and click the Not Junk button.

usr/share/help-langpack/zh_CN/evolution/calendar-meetings-sending-invitation.page0000644000373100047300000000762512306123670032151 0ustar langpacklangpack00000000000000 Sending a Meeting Invitation. Andre Klapper ak-47@gmx.net Novell, Inc 发送会议邀请

When you create a meeting (group appointment), you can specify the attendees in several categories, such as "chair" or "required". When you save the meeting listing, each attendee is sent an email with the meeting information, which also gives them the option to respond.

If you do not need to collect attendance information when you're scheduling an event, and would rather just announce the event, right-click the meeting and select Forward as iCalendar. This opens a new email message with the event notification attached as an announcement. Recipients can add the event to their calendars with one click, but it will not automatically send you email about whether they plan to attend.

要计划一个会议:

Click FileNewMeeting.

If you have multiple email accounts, select the one to use by selecting an item in the Organizer field.

Select a calendar in the Calendar drop-down list.

Click Add to add the email addresses of people you want to invite.

Click View in the menu bar to show or hide the Type, Role, Status, and RSVP fields.

Enter a brief summary in the Summary field.

(Optional) Type a location in the Location field.

To select this event as an all day event, click OptionsAll Day Event, or click the All Day Event button on the toolbar.

选择时间和日期。

If the event is not an all day event, select either For to specify the duration, or select Until to specify the ending time of the event.

(Optional) Enter a description in the Description field.

To query free/busy information for the attendees, click the Free/Busy button on the toolbar, or click OptionsFree/Busy.

Click Save to save the meeting.

Evolution会发送一封邮件给所有出席者,邀请他们参加您的会议。

You can also define a time zone, a category, a reminder, a recurrence, or a classification for the event, or add an attachment.

在Evolution中,一个会议只能有一个组织者,只有组织者可以添加出席者列表。虽然会议的组织者也可能变化,但不建议以这种方式来邀请额外的会议出席者。如果您不是会议组织者却想邀请额外的人,建议您转发收到的请帖给其他您想要邀请的人。

usr/share/help-langpack/zh_CN/evolution/mail-composer-html.page0000644000373100047300000000367612306123670026473 0ustar langpacklangpack00000000000000 Changing fonts, using colors, and inserting images, tables and links. Andre Klapper ak-47@gmx.net Novell, Inc Formatting emails (in Plain Text and HTML)

Text formatting tools for basic alignment and paragraph formatting are located in the tool bar below the Subject line. They also appear in the Insert and Format menus.

The icons in the tool bar are explained in tooltips which appear when you hold your mouse pointer over the buttons.

Normally, you cannot set text color or size or embed pictures in messages. However, most newer email applications can do this by using HTML format, which is the format that also web pages use.

Some people do not have HTML-capable mail clients, or prefer not to receive HTML-enhanced mail because it is slower to download and display. Because of this, Evolution sends plain text unless you explicitly ask for HTML.

Plain Text Formatting Options
HTML-only Formatting Options
usr/share/help-langpack/zh_CN/evolution/tasks-using-several-tasklists.page0000644000373100047300000000234512306123670030700 0ustar langpacklangpack00000000000000 Adding and using more than one task list or memo list. Andre Klapper ak-47@gmx.net Using several task lists or memo lists

You can have multiple task or memo lists and choose which of your lists get displayed. For example, you might have tasks for work, tasks for home, and tasks for the singing club of which you are a member. The side bar shows these lists, and you can select or deselect any of the boxes next to them to show and hide the corresponding tasks or memos in your view.

Tasks and memos from each task or memo list appear as different colors.

You can also use lists that are not on your computer, such as on the internet.

usr/share/help-langpack/zh_CN/evolution/mail-send-and-receive-manual.page0000644000373100047300000000251712306123670030257 0ustar langpacklangpack00000000000000 Force sending and receiving emails. Andre Klapper ak-47@gmx.net Manually send and receive messages

To receive new messages from the mail server and to send messages you have written that are in the local Outbox, click the Send / Receive button in the toolbar, or press F12, or choose FileSend / Receive from the main menu.

To send and receive only for one of your mail accounts, or to only send or only receive, click the small down-arrow next to the Send / Receive button and choose the corresponding option.

If you just want to send messages which are in your Outbox, you can right-click on the Outbox and click Flush Outbox.

usr/share/help-langpack/zh_CN/evolution/mail-account-manage-usenet-news.page0000644000373100047300000000562412306123670031032 0ustar langpacklangpack00000000000000 Add and edit a Usenet news account in Evolution. Andre Klapper ak-47@gmx.net Usenet news account settings
帐号编辑器

Mail accounts can be added by choosing FileNewMail Account or via EditPreferencesMail AccountsAdd. The steps are mostly the same as for the First-Run Assistant, except for not getting asked whether to import data from other applications or to restore from a backup file.

Mail accounts can be edited via EditPreferencesMail AccountsEdit or by right-clicking on the respective top-level node in the folder list and choosing Properties.

The following settings are available when editing an existing account:

Receiving Email and Receiving options (Usenet News accounts) Receiving Email and Receiving options
Sending Email (Usenet News accounts) 发送电子邮件
Defaults (Usenet News accounts) 默认值
Security (Usenet News accounts) 安全
Other settings (Usenet News accounts) Other settings

Other account related settings that are not located in the Account Editor:

usr/share/help-langpack/zh_CN/evolution/default-browser.page0000644000373100047300000000761612306123670026065 0ustar langpacklangpack00000000000000 Opening links from an email in a browser and opening the mail composer from an email link on a website. Andre Klapper ak-47@gmx.net Opening links in and from the web browser
Change which web browser websites are opened in

In case you use Evolution under a different environment from GNOME,

Open a terminal application.

Find out the name of the .desktop file for your preferred browser. Depending on your browser and distribution, the file might be called for example epiphany.desktop, firefox.desktop, google-chrome.desktop, konqbrowser.desktop, or opera-browser.desktop. If you are unsure you can look up most .desktop files in the folder /usr/share/applications/.

Type this command, replace browser.desktop by the actual filename, and press Enter:

xdg-settings set default-url-scheme-handler https browser.desktop

Type this command, replace browser.desktop by the actual filename, and press Enter:

xdg-settings set default-url-scheme-handler http browser.desktop

Evolution may need to be restarted for the settings to take effect.

If the error message "xdg-settings: command not found" is shown, you need to install the package xdg-utils.

Install xdg-utils

Please see the GNOME Desktop Help.

If the preferred browser is set as default application but still does not work correctly please contact your distribution via their forum or bug tracker.

If the error message "Could not open the link: Operation not supported" is shown, you need to install the package gvfs.

Install gvfs

Change which mail application is used to write emails

Please see the GNOME Desktop Help.

Advanced options

If you have a technical background you can also tweak these settings by defining scheme-handlers in $HOME/.local/share/applications/mimeapps.list.

usr/share/help-langpack/zh_CN/evolution/mail-composer-mail-signatures-manage.page0000644000373100047300000000201512306123670032043 0ustar langpacklangpack00000000000000 Add, change, edit or delete email signatures. Andre Klapper ak-47@gmx.net Managing signatures

You can add, edit and delete all your signatures under EditPreferencesComposer preferencesSignatures.

Assigning a default signature to an email account has to be done in the account settings.

usr/share/help-langpack/zh_CN/evolution/mail-composer-spellcheck.page0000644000373100047300000000516712306123670027641 0ustar langpacklangpack00000000000000 On spell checking your mail in the composer. Andre Klapper ak-47@gmx.net Spell checking
Prerequirements

To use spell checking for the emails that you write you first need to make sure that the hunspell package for your specific language and the enchant package are installed via the software management tool of your distribution.

You might need to install hunspell and/or enchant to perform these steps.

Install hunspell

Install enchant

Global Preferences

Under EditPreferencesComposer PreferencesSpell CheckingOptions you can define whether your spelling is checked while you type and which color is used for underlining words that are misspelled.

You can also define which installed languages are used for spell checking in the list available under EditPreferencesComposer PreferencesSpell CheckingLanguages.

Manual spell checking in the composer

If you do not have Checking spelling while I type enabled in the Composer Preferences you can run a spell check in the email composer by clicking EditSpell Checking or by pressing F7.

usr/share/help-langpack/zh_CN/evolution/mail-change-columns-in-message-list.page0000644000373100047300000000334412306123670031574 0ustar langpacklangpack00000000000000 Editing the columns displayed in the list of messages. Andre Klapper ak-47@gmx.net Changing the message list columns

If you want to change the columns in the mail message list, right-click on the column headers and choose either Add a Column... or Remove This Column.

If you have a small display, you can replace the Subject column by the Subject - Trimmed which will remove prefixes such as "Re:", or you can replace the From column which displays the sender's name and email address by the Sender column which will only display the sender's name.

If you would like to have the same column layout in all mail folders except for the Sent folder, you can enable EditPreferencesMail PreferencesGeneralApply the same view settings to all folders. Note that this setting also influences Group by Threads and the Message Preview visibility in all folders.

usr/share/help-langpack/zh_CN/evolution/mail-composer-message-templates.page0000644000373100047300000000222012306123670031127 0ustar langpacklangpack00000000000000 Message templates to reuse in the composer. Andre Klapper ak-47@gmx.net Novell, Inc Message Templates

A message template is a standard message that you can use at any time to send mail with the same pattern.

To enable the Message Template Plugin, click EditPlugins and enable Templates.

Message Templates
usr/share/help-langpack/zh_CN/evolution/contacts-organizing.page0000644000373100047300000000167112306123670026736 0ustar langpacklangpack00000000000000 On address books, searching, contact lists, and categories. Andre Klapper ak-47@gmx.net Sorting, organizing and grouping contacts

There are several ways how to organize your contacts. You can use several addressbooks and categories, and for conveniently sending messages to a group of people contact lists are available.

usr/share/help-langpack/zh_CN/evolution/import-apps-mozilla.page0000644000373100047300000000512612306123670026672 0ustar langpacklangpack00000000000000 Importing data from Mozilla Thunderbird. Andre Klapper ak-47@gmx.net Mozilla

Click FileImport.

In the Importer Type tab, click Import a single file.

Go to the folder in which Thunderbird stores its data. On a Linux system, Thunderbird's files are located in the hidden folder $HOME/.thunderbird/12345678. 12345678 will be a random string. If you cannot see the .thunderbird folder, make sure to show hidden files in the file selector dialog.

If you would like to import Thunderbird mail, go to Mail/Local Folders (for local mail accounts) or ImapMail/servername (for remote mail accounts). servername will be the address of your remote mail server. Files without a file ending include your messages (not the .msf files).

If you would like to import Thunderbird/Lightning calendar data, you may be able to export your Thunderbird events as an .ical/.ics file first, and import these files into Evolution. This is required as Thunderbird stores its calendar data in a non-standard database format.

The file type will be automatically determined.

Choose the destination (e.g. the folder or calendar in Evolution) for the imported data.

Repeat the import steps until you have imported all your data.

usr/share/help-langpack/zh_CN/evolution/mail-delete-and-undelete.page0000644000373100047300000000466112306123670027502 0ustar langpacklangpack00000000000000 Deleting, expunging, and undeleting mail. Andre Klapper ak-47@gmx.net Novell, Inc Deleting and undeleting messages
Deleting Messages

To delete a message, select it and press the Delete key, or click the Delete button in the toolbar, or press CtrlD, or right-click the message and click Delete.

When you press Delete or click the Trash folder, your mail is not actually deleted, but is marked for deletion. You can see all message marked for deletion in the Trash folder. To show deleted messages, click ViewShow Deleted Messages. You can view the messages striken off for later deletion.

To permanently erase all the deleted messages in a folder, click FolderExpunge or press CtrlE.

还原被删除的邮件

You can undelete a message that has been deleted but not expunged yet. To undelete a message, select the message, click EditUndelete message. Note that ViewShow Deleted Messages must be enabled for this.

If you have marked a message for deletion, undeleting it unmarks it, and the message is not shown anymore in the Trash folder.

usr/share/help-langpack/zh_CN/evolution/mail-duplicates.page0000644000373100047300000000337312306123670026031 0ustar langpacklangpack00000000000000 How to handle duplicated email messages April Gonzales loonycookie@gmail.com Andre Klapper ak-47@gmx.net Duplicate emails get downloaded
Removing duplicate emails

To remove duplicate emails in a folder, select multiple messages (or select all messages in a folder by clicking EditSelect All or pressing CtrlA) and click MessageRemove Duplicate Messages.

Reasons

Downloading duplicate emails may be due to one of the following reasons:

There are several copies of the same message in the mailbox

Evolution is having a problem with the UIDL extension.

The cache files located at $HOME/.local/share/evolution/mail/local/ are not writable.

usr/share/help-langpack/zh_CN/evolution/problems-getting-help.page0000644000373100047300000000216712306123670027164 0ustar langpacklangpack00000000000000 How to get help for problems. Andre Klapper ak-47@gmx.net How to get help

To receive help on problems you can send an email to the Evolution mailing list or talk to developers and other users in the IRC chat channel #evolution on the server irc.gimp.net. To connect to an IRC server you can for example use the internet messenger application Empathy.

usr/share/help-langpack/zh_CN/evolution/deleting-emails.page0000644000373100047300000000323612306123670026015 0ustar langpacklangpack00000000000000 Deleting emails or attachments to reduce the size of the mailbox. April Gonzales loonycookie@gmail.com Andre Klapper ak-47@gmx.net Deleting emails or attachments permanently
Emails

Evolution deletes emails on IMAP servers by marking the messages for deletion; space is not freed until you expunge the marked emails.

To Expunge a specific folder, go to FolderExpunge or press CtrlE. To Expunge all folders, go to FileEmpty Trash. This applies to other types of accounts as well.

附件

To delete the attachments of an email, select the message and click MessageRemove Attachments.

usr/share/help-langpack/zh_CN/evolution/mail-encryption-gpg-decrypting.page0000644000373100047300000000315312306123670031003 0ustar langpacklangpack00000000000000 Decrypting and checking the signature of received GPG messages. Andre Klapper ak-47@gmx.net Novell, Inc Receiving messages encrypted or signed via GPG
Decrypting a received message

If you receive an encrypted message, you need to decrypt it before you can read it.

当您要查看邮件时,Evolution会提示输入您的PGP密码。输入后,解密的邮件就会显示出来。

Senders must have your GPG public key before they can send you an encrypted message.

Checking the signature of a received message

To check the sender's signature of a received message, scroll down to the bottom of the message and click the logo. Evolution will display Security Information for the message.

usr/share/help-langpack/zh_CN/evolution/calendar-sharing-information.page0000644000373100047300000000134412306123670030475 0ustar langpacklangpack00000000000000 Make your information (appointments and free/busy times) available to others. Andre Klapper ak-47@gmx.net Sharing your calendar information usr/share/help-langpack/zh_CN/evolution/import-supported-file-formats.page0000644000373100047300000000602312306123670030672 0ustar langpacklangpack00000000000000 Supported file formats for importing data. Andre Klapper ak-47@gmx.net Novell, Inc Supported file formats

Evolution支持下列格式文件的导入:

邮件

Berkeley Mailbox (.mbox or no extension):

The email format used by Mozilla, Netscape, Evolution (for local folders until version 2.32), Eudora, and many other email clients.

Maildir (no extension):

The format used by Evolution (for local folders since version 3.0). There is no need to import Maildir files as you can configure a Maildir account in Evolution and point to the folder where the Maildir files are stored.

Outlook Express 5/6 Personal Folders (.dbx):

The email file format used by Microsoft Outlook Express 5/6. For newer versions PST import is recommended.

日历

vCalendar (.vcs):

一种存储日历文件的格式,主要用于Evolution,Microsoft Outlook, Sunbird和Korganizer。

iCalendar或 iCal (.ics):

A format for storing calendar files. iCalendar is used by Evolution, Microsoft Outlook, Palm OS handhelds, and others.

联系人

LDAP Data Interchange Format (.ldif):

联系人名片的标准数据格式。

vCard (.vcf, .gcrd):

这种地址簿格式被用于GNOME,KDE和许多其它联系人管理程序。您应该可以从任何地址簿软件中导出vCard格式文件。

Miscellaneous

Evolution/Mozilla/Outlook CSV/Tab (.csv, .tab):

CSV (Comma-separated values) or Tabulator files saved by using Evolution, Microsoft Outlook and Mozilla.

Outlook Personal Folders (.pst):

A file format used to store local copies of messages, calendar events, and other items within Microsoft software such as Microsoft Exchange Client, Windows Messaging, and Microsoft Outlook. It is also called "Personal Storage Table".

usr/share/help-langpack/zh_CN/evolution/mail-receiving-options-exchange-ews.page0000644000373100047300000000564512306123670031720 0ustar langpacklangpack00000000000000 Receiving options for Exchange Web Services accounts. Andre Klapper ak-47@gmx.net Exchange Web Services receiving options
接收电子邮件

On the Receiving Email page (accessible via EditPreferencesMail AccountsEditReceiving Email):

Enter your username for that server.

Either manually enter the Host URL and OAB URL, or click Fetch URL which will ask you for your password and then try to automatically fill in the values.

If you are in an organizational environment, you may want to contact your system administrator for more information.

Select your authentication type in the Authentication list, or click Check for Supported Types to have Evolution check for supported authentication mechanisms. Some servers do not announce the authentication mechanisms they support, so clicking this button is not a guarantee that available mechanisms actually work.

接收选项

On the Receiving Options page (accessible via EditPreferencesMail AccountsEditReceiving Options):

If you want Evolution to check automatically for new messages, click the Check for new messages every ... minutes option and select the frequency in minutes.

You can also define if Evolution checks for new messages in all folders.

If you would like to have a copy of the address book on the server for offline access to it, enable Cache offline address book and click Fetch list. Afterwards, select the address book from the available options.

If you want Filters to be automatically used for new messages in your inbox, enable Apply filters to new messages in Inbox on this server.

usr/share/help-langpack/zh_CN/evolution/mail-search-folders-conditions.page0000644000373100047300000000355412306123670030745 0ustar langpacklangpack00000000000000 Available conditions for setting up search folders. Andre Klapper ak-47@gmx.net Novell, Inc Available Search folder conditions

Message Location:

Checks whether the message is located in a specific folder.

Note that by default, Evolution's Trash and Junk folders are Search folders so they cannot be selected here.

Match All:

Applies an action always to any message, without further conditions. This could be useful at the end of the list of search folders to cover those emails that did not match any conditions for the preceding search folders in the list.

usr/share/help-langpack/zh_CN/evolution/tasks-webdav.page0000644000373100047300000000306312306123670025343 0ustar langpacklangpack00000000000000 Using an online WebDAV task list or memo list. Andre Klapper ak-47@gmx.net Using a WebDAV task or memo list

Lists of this type are read-only.

To add such a task list or memo list to Evolution, perform the following steps:

Click FileNewTask List or FileNewMemo List.

Select the type On the Web.

Enter a name that you prefer.

Optionally choose a color that you prefer.

Choose if you want to be able to view the content also while offline.

Enter the address of the list in the URL field.

Choose Use secure connection if you want to connect securely.

Enter your username.

Click Apply.

The list will be added in Evolution.

usr/share/help-langpack/zh_CN/evolution/calendar-classifications.page0000644000373100047300000000307712306123670027702 0ustar langpacklangpack00000000000000 Classifying appointments and tasks on groupware servers. Andre Klapper ak-47@gmx.net Novell, Inc Using Classifications

If you are using a calendar on a Novell GroupWise or Microsoft Exchange server, you can select a classification to determine who can view it.

To set a classification for an appointment or a task, click OptionsClassifications and select a classification in the editor. Public is the default category, and a public appointment can be viewed by anyone on the calendar-sharing network. Private denotes one level of security, and Confidential an even higher level.

The different levels vary depending on your server settings; check with your system administrator or adjust your delegation settings.

usr/share/help-langpack/zh_CN/evolution/mail-display-message-source.page0000644000373100047300000000212612306123670030254 0ustar langpacklangpack00000000000000 Displaying the raw source of a message or all header lines. Andre Klapper ak-47@gmx.net Message Source

To view the message data, click on ViewMessage Source or press CtrlU. This will display the message data in a new window.

To only view the complete headers for a message, click ViewAll Message Headers. This will display the complete header data on the viewing pane.

usr/share/help-langpack/zh_CN/evolution/mail-account-manage-unix-mbox-spool-directory.page0000644000373100047300000000573712306123670033644 0ustar langpacklangpack00000000000000 Add and edit a Standard Unix mbox Spool Directory account in Evolution. Andre Klapper ak-47@gmx.net Standard Unix mbox Spool Directory account settings
帐号编辑器

Mail accounts can be added by choosing FileNewMail Account or via EditPreferencesMail AccountsAdd. The steps are mostly the same as for the First-Run Assistant, except for not getting asked whether to import data from other applications or to restore from a backup file.

Mail accounts can be edited via EditPreferencesMail AccountsEdit.

The following settings are available when editing an existing account:

Receiving Email and Receiving options (Standard Unix mbox Spool Directory accounts) Receiving Email and Receiving options
Sending Email (Standard Unix mbox Spool Directory accounts) 发送电子邮件
Defaults (Standard Unix mbox Spool Directory accounts) 默认值
Security (Standard Unix mbox Spool Directory accounts) 安全
usr/share/help-langpack/zh_CN/evolution/calendar-publishing.page0000644000373100047300000000346212306123670026666 0ustar langpacklangpack00000000000000 Post your calendar content in public. Andre Klapper ak-47@gmx.net Novell, Inc 日历发布

In order to make one of your calendars available to the public, you can define calendars to be uploaded to a web server under EditPreferencesCalendar and TasksPublishing InformationLocationsAdd.

You can specify the online location, the frequency of publishing, which calendar(s) to publish, and authentication information for uploading.

You can publish Calendar and Free/Busy information to a WebDAV server, FTP server, a remote machine through SSH or to any other web server with HTTP PUT support.

To immediately publish calendar information, click ActionsPublish Calendar Information in the calendar.

usr/share/help-langpack/zh_CN/evolution/contacts-ldap.page0000644000373100047300000001077112306123670025510 0ustar langpacklangpack00000000000000 Use shared address books on a local network. Andre Klapper ak-47@gmx.net Novell, Inc Adding LDAP access

The LDAP protocol was created to let users share contact information over a network by sharing access to a central directory. LDAP allows a company to maintain a shared set of contact information. Many companies keep a common LDAP address book for all their employees or for client contacts.

Adding an LDAP address book

Click FileNewAddress Book.

In the General tab, select the type On LDAP Servers.

Enter a name that you prefer.

Enter the address of the server, the port number (the default number is 389) and whether you want to connect securely.

Define the login method and your user name.

Click Apply.

In the Details tab you can define the following settings:

Search Base: The search base is the starting point for a directory search. Contact your system administrator for information about the correct settings.

Search Scope: The search scope is the breadth of a given search. The following options are available:

One: Searches the Search Base and one entry below it.

Sub: Searches the Search Base and all entries below it.

Search Filter: The search filter can be set here for all the LDAP queries. For example:

ObjectClass=*: Lists all the objects from the server.

ObjectClass=User: Lists only the users.

Filter (|(ObjectClass=User)(ObjectClass=groupOfNames)): Retrieves the User and Contact List objects.

(&(mail=*)(ObjectClass=*)): Lists the objects associated with the email addresses.

Timeout (minutes): The maximum time Evolution attempts to download data from the server before giving up.

Download Limit: The maximum number of results for a given search. Most servers refuse to send more than 500 contacts, but you can set the number lower if you want to shorten downloads for very broad searches.

If you are unsure about some settings, ask your system administrator.

Differences to local address books

LDAP address books work like local address books on your computer, with the following exceptions:

网络文件夹仅当您连上网络之后才能操作。如果您使用的是笔记本电脑或使用调制解调器连接,可能想要复制或缓冲网络文件夹的一部分内容。您可以将里面需要的联系人条目拖拽到本地地址簿里。

您也可以标记网络文件夹供离线使用。要标记该文件夹,右键点击文件夹,选择”属性“,选择”复制文件夹内容到本地供离线操作“。

为了避免造成额外的网络拥堵,Evolution正常情况下不会在打开时自动载入LDAP服务器上的数据。

根据您系统设置,您可能不能编辑位于LDAP服务器上的联系人的一些信息。一些服务器禁止部分或全部的更改,一些则使用少于Evolution允许的条目。如果您需要不同的设置,请咨询您的系统管理员。

usr/share/help-langpack/zh_CN/evolution/calendar-layout-views.page0000644000373100047300000000375112306123670027173 0ustar langpacklangpack00000000000000 Using date ranges (day, week, month) to look at the calendar. Andre Klapper ak-47@gmx.net Novell, Inc Available views

Evolution offers five different views of your calendar data:

Day (CtrlY)

Work Week (CtrlJ)

Week (CtrlK)

Month (CtrlM)

List (CtrlL)

You can switch the view by either using the buttons in the toolbar, or by clicking ViewCurrent View.

您也可以在侧边栏的小日历上选择显示任意范围的日期。操作方法是,选中您想要在日历中显示的日期即可。

The Previous and Next buttons move you forward and back in your calendar pages. If you are using a week or month view, you can move by week or month. To return to today's listing, click the Select today button between the two arrow buttons in the toolbar.

To visit calendar entries for a specific date, click the Select a specific date button in the toolbar.

usr/share/help-langpack/zh_CN/evolution/mail-composer-message-templates-save.page0000644000373100047300000000351212306123670032070 0ustar langpacklangpack00000000000000 Store an existing or new message as a template Andre Klapper ak-47@gmx.net Novell, Inc Saving Messages as Templates
Saving an Existing Message as a Template

选择消息。

Right-click the message and choose Move to folder or Copy to folder.

Select the Templates folder under On This Computer.

You can also edit an existing message and save it as a template:

Open the message and click Reply.

根据您的需要编辑邮件内容或地址。

Select FileSave as Template.

将新邮件保存为模板

Click New and enter in the composer window what you need for the template.

Select FileSave as Template.

usr/share/help-langpack/zh_CN/evolution/mail-receiving-options-imap-plus.page0000644000373100047300000000647112306123670031247 0ustar langpacklangpack00000000000000 Receiving options for IMAP+ accounts. Andre Klapper ak-47@gmx.net Novell, Inc IMAP+ receiving options
接收电子邮件

On the Receiving Email page (accessible via EditPreferencesMail AccountsEditReceiving Email):

Enter the address of the email server in the Server field and enter your username for that server.

选择您是否要使用安全连接 (SSL 或 TLS)。

如果您的服务器支持它,应当启用该选项。

Free webmail providers often supply information about which of these options can be used. If you are in an organizational environment, you may want to contact your system administrator for more information.

Select your authentication type in the Authentication list, or click Check for Supported Types to have Evolution check for supported authentication mechanisms. Some servers do not announce the authentication mechanisms they support, so clicking this button is not a guarantee that available mechanisms actually work.

选择是否要 Evolution 记住密码。

接收选项

On the Receiving Options page (accessible via EditPreferencesMail AccountsEditReceiving Options):

If you want Evolution to check automatically for new messages, click the Check for new messages every ... minutes option and select the frequency in minutes.

Select "Use Quick Resync" if the IMAP server supports IMAP4 Extensions for Quick Mailbox Resynchronization.

You can also define if Evolution checks for new messages in all folders, or only in subscribed folders.

如果您想要让 Evolution 使用自定义命令连接到IMAP服务器,请选择该项。

Select if you want Evolution to show only subscribed folders.

如果您想让Evolution覆盖服务器提供的文件夹命名空间,请选择该项。

usr/share/help-langpack/zh_CN/evolution/mail-sending-options-smtp.page0000644000373100047300000000431612306123670027773 0ustar langpacklangpack00000000000000 Sending options for SMTP. Andre Klapper ak-47@gmx.net SMTP sending options

Enter the address of your mail server for sending mail in the Server field and select if the server requires authentication (entering a username and a password).

Free webmail providers often supply information about which of these options can be used. If you are in an organizational environment, you may want to contact your system administrator for more information.

If the server requires authentication, you need to provide the following information:

Select the authentication type in the Authentication list, or click Check for Supported Types to have Evolution check. Some servers do not support this, so clicking this button is not a guarantee that available mechanisms actually work.

Enter your username.

Choose Use secure connection if you want to connect securely.

usr/share/help-langpack/zh_CN/evolution/contacts-using-several-addressbooks.page0000644000373100047300000000214012306123670032024 0ustar langpacklangpack00000000000000 Adding different types of address books and using more than one address book. Andre Klapper ak-47@gmx.net Adding and creating address books

You can have multiple address books. For example, you might have one address book for work related contacts and one for private contacts. The side bar lists those address books, and you can select which address book is shown.

You can also use address books that are not on your computer, such as on the internet (e.g. Google) or in a local network (e.g. LDAP).

usr/share/help-langpack/zh_CN/evolution/mail-localized-re-subjects.page0000644000373100047300000000262212306123670030062 0ustar langpacklangpack00000000000000 Avoid long subject lines due to translated "Re:" prefixes. Andre Klapper ak-47@gmx.net Handling localized "Re:" in subjects

Traditionally a "Re:" prefix is added to a subject line when replying to an email. Some email applications use localized terms for this (like "SV:" in Danish or "AW: in German). Evolution can recognize these terms to avoid subject lines getting longer as the conversation continues.

Open the Terminal application.

Run the command gsettings set org.gnome.evolution.mail.composer-localized-re 'AW:,SV:' (in case that you want "AW:" and "SV:" to be recognized).

You can also use the dconf-editor application to do this.

usr/share/help-langpack/zh_CN/evolution/mail-account-manage-mh-format-directories.page0000644000373100047300000000564312306123670032762 0ustar langpacklangpack00000000000000 Add and edit a MH Format Mail Directories account in Evolution. Andre Klapper ak-47@gmx.net MH Format Mail Directories account settings
帐号编辑器

Mail accounts can be added by choosing FileNewMail Account or via EditPreferencesMail AccountsAdd. The steps are mostly the same as for the First-Run Assistant, except for not getting asked whether to import data from other applications or to restore from a backup file.

Mail accounts can be edited via EditPreferencesMail AccountsEdit.

The following settings are available when editing an existing account:

Receiving Email and Receiving options (MH Format Mail Directories accounts) Receiving Email and Receiving options
Sending Email (MH Format Mail Directories accounts) 发送电子邮件
Defaults (MH Format Mail Directories accounts) 默认值
Security (MH Format Mail Directories accounts) 安全
usr/share/help-langpack/zh_CN/evolution/contacts-add-automatically.page0000644000373100047300000000323612306123670030164 0ustar langpacklangpack00000000000000 Automatically add senders of mail that you have received to your contacts. Andre Klapper ak-47@gmx.net Barbara Tobias barbtobias09@gmail.com Adding people automatically to my contacts

You can add people automatically to your contacts when you reply to received email. Enable the plugin Automatic Contacts by going to EditPlugins; click on Automatic Contacts so that it shows a check mark. Then go to EditPreferencesContactsAutomatic Contacts and enable the Create address book entries when sending emails option and select an address book in the drop-down field below that will receive the new contacts.

From now on, contacts will be automatically created for senders of received mail when you reply to that mail.

usr/share/help-langpack/zh_CN/evolution/import-apps-outlook.page0000644000373100047300000001010212306123670026705 0ustar langpacklangpack00000000000000 Importing data from Microsoft Outlook. Andre Klapper ak-47@gmx.net Novell, Inc Outlook

These steps refer to locally stored data such as POP accounts. For remote data (like IMAP) this is not necessary, since the data is still on the server and does not need to be manually transfered. You can set up the corresponding account in Evolution and the data will be downloaded.

Prerequisites under Windows

First, while using Microsoft Windows, prepare your messages for import:

Find your Outlook files (they normally have the file ending .pst or .ost):

Windows 7, Windows Vista

Windows XP

Outlook 2010

C:\Users\username\My Documents\Outlook Files

C:\Documents and Settings\username\My Documents\Outlook Files

Outlook 2007 and earlier

C:\Users\username\AppData\Local\Microsoft\Outlook

C:\Documents and Settings\username\AppData\Local\Microsoft\Outlook

(Replace "username" by your username.)

Copy the Outlook files to the system or partition that Evolution is installed on.

As your Windows hard drive is probably in the NTFS format, some Linux systems cannot read it without additional software. You might find it simpler to copy the mail folders to a USB drive or to burn a CD.

Importing into Evolution

Depending on your last step, either plug in the disk or USB drive with the data and wait until the file manager window opens, or mount your Windows drive.

将这些所有邮件文件复制到您的家目录或其它方便的地方。

启动 Evolution。

Optionally select FileNewMail Folder to create the folders you want.

Click FileImport.

In the Importer Type tab, click Import a single file.

Choose the Outlook personal folders (.pst) file that you would like to import.

The file type will be automatically determined.

If the option to import Outlook personal folders (.pst files) is not available under FileImportImport single fileFile type, your distribution might have not enabled this functionality.

Choose the destination (e.g. the folder in Evolution) for the imported data.

Repeat the import steps until you have imported all your data.

usr/share/help-langpack/zh_CN/evolution/exchange-connectors-overview.page0000644000373100047300000000503612306123670030553 0ustar langpacklangpack00000000000000 Which additional package to install in order to connect to an Exchange server. Andre Klapper ak-47@gmx.net Choosing the right connector

Depending on the version of the Microsoft Exchange server that you would like to connect to it is required to make sure that an additional package is installed that provides this functionality.

For Microsoft Exchange 2007, 2010 and newer it is recommended to use the package evolution-ews.

Install evolution-ews

For older versions of Microsoft Exchange, or if evolution-ews does not work well for you, try evolution-mapi. It uses Microsoft's Messaging API which is also used by Microsoft Outlook. However, evolution-mapi requires installing OpenChange and Samba 4, and is not as performant as evolution-ews.

Install evolution-mapi

If you are unsure which Microsoft Exchange server version is used, you may want to contact your system administrator for more information.

usr/share/help-langpack/zh_CN/evolution/calendar-searching.page0000644000373100047300000000521212306123670026460 0ustar langpacklangpack00000000000000 Searching appointments and meetings. Max Vorobuov vmax0770@gmail.com Andre Klapper ak-47@gmx.net Novell, Inc 搜索日历条目 usr/share/help-langpack/zh_CN/evolution/contacts-usage.page0000644000373100047300000000127312306123670025671 0ustar langpacklangpack00000000000000 On adding, editing, and deleting contacts in address books. Andre Klapper ak-47@gmx.net Add, Edit, and Delete Contacts usr/share/help-langpack/zh_CN/evolution/mail-receiving-options-local-delivery.page0000644000373100047300000000340312306123670032243 0ustar langpacklangpack00000000000000 Receiving options for Local delivery accounts. Andre Klapper ak-47@gmx.net Local delivery receiving options
接收电子邮件

On the Receiving Email page (accessible via EditPreferencesMail AccountsEditReceiving Email):

Choose the file by clicking on the button next to File in the Configuration section. This will open a file chooser window.

接收选项

On the Receiving Options page (accessible via EditPreferencesMail AccountsEditReceiving Options):

If you want Evolution to check automatically for new messages, click the Check for new messages every ... minutes option and select the frequency in minutes.

usr/share/help-langpack/zh_CN/evolution/contacts-usage-delete-contact.page0000644000373100047300000000174412306123671030566 0ustar langpacklangpack00000000000000 Deleting a contact from your address book. Andre Klapper ak-47@gmx.net Deleting a Contact

If you want to delete a contact in your address books, right-click on the contact and select Delete, or click on the contact and click Delete in the tool bar or press CtrlD, or click EditDelete Contact.

usr/share/help-langpack/zh_CN/evolution/mail-account-manage-local-delivery.page0000644000373100047300000000551012306123671031463 0ustar langpacklangpack00000000000000 Add and edit a Local Delivery account in Evolution. Andre Klapper ak-47@gmx.net Local Delivery account settings
帐号编辑器

Mail accounts can be added by choosing FileNewMail Account or via EditPreferencesMail AccountsAdd. The steps are mostly the same as for the First-Run Assistant, except for not getting asked whether to import data from other applications or to restore from a backup file.

Mail accounts can be edited via EditPreferencesMail AccountsEdit.

The following settings are available when editing an existing account:

Receiving Email and Receiving options (Local Delivery accounts) Receiving Email and Receiving options
Sending Email (Local Delivery accounts) 发送电子邮件
Defaults (Local Delivery accounts) 默认值
Security (Local Delivery accounts) 安全
usr/share/help-langpack/zh_CN/evolution/mail-receiving-options.page0000644000373100047300000000217212306123671027335 0ustar langpacklangpack00000000000000 Available mail receiving options for several server types. Andre Klapper ak-47@gmx.net Mail Receiving Options
Mail receiving options for common server types
Mail receiving options for corporate server types
Mail receiving options for local account server types
usr/share/help-langpack/zh_CN/evolution/mail-composer-several-recipients.page0000644000373100047300000000571212306123671031325 0ustar langpacklangpack00000000000000 Sending to more than one person and using CC or BCC. Andre Klapper ak-47@gmx.net Novell, Inc Sending a message to several recipients

To send a message to more than one person, enter the addresses in the composer by separating them with commas or semicolons.

If you frequently write email to the same groups of people, you can create contact lists to send them mail as though they have a single address.

Recipient types

Email messages can have three different types of recipients. The simplest way is to put the email address or addresses in the To: text field. The Cc: text field is used for recipients that are meant to receive a copy of your message but are not the primary recipients.

Addresses in the Bcc: text field are hidden from the other recipients of the message. It can be used to send mail to large groups of people, especially if they do not know each other or if privacy is a concern. If the Bcc: text field is not shown, click ViewBcc Field.

自动完成

It is recommended to use the Autocompletion feature of the Evolution address book for entering addresses. By using this you avoid typos and save time.

Using the buttons

Instead of typing the recipients' names you can also click the To:, Cc:, or Bcc: buttons to get a list of the email addresses in your address books. Select the addresses and click the arrow buttons to move them into the appropriate address columns (To:, Cc:, Bcc:).

usr/share/help-langpack/zh_CN/evolution/google-services.page0000644000373100047300000000113212306123671026041 0ustar langpacklangpack00000000000000 Using Google services. Andre Klapper ak-47@gmx.net Using Google services usr/share/help-langpack/zh_CN/evolution/calendar-meetings.page0000644000373100047300000000122212306123671026326 0ustar langpacklangpack00000000000000 Using meetings in the calendar. Andre Klapper ak-47@gmx.net Meetings usr/share/help-langpack/zh_CN/evolution/mail-encryption.page0000644000373100047300000000340612306123671026064 0ustar langpacklangpack00000000000000 Sending and receiving encrypted mail. Andre Klapper ak-47@gmx.net Mail encryption and certificates

Evolution offers GPG Encryption and S/MIME Encryption for signing and encrypting email messages. S/MIME is used most often in corporate environments.

GPG
S/MIME
usr/share/help-langpack/zh_CN/evolution/contacts-libreoffice.page0000644000373100047300000000371312306123671027040 0ustar langpacklangpack00000000000000 Using data from Evolution address books in LibreOffice documents. Andre Klapper ak-47@gmx.net Contacts in LibreOffice

You can use your Evolution address books in LibreOffice as a data source. The following steps refer to LibreOffice version 3.3.3.

Click EditExchange Database... in the menu bar. This will bring up the Exchange databases dialog box.

In the right pane under Available Databases, EvolutionLocal is available as a source. Click on the small triangle to get the list of your Evolution address books.

Choose an addressbook and click Define.

In case it is not listed already, click Browse.... A file chooser dialog opens.

As Evolution stores its data in a hidden directory, press CtrlL to get the location bar displayed.

Go to /home/username/.local/share/evolution/addressbook/system/addressbook.db and click Open.

This makes the Evolution address book the default data source for LibreOffice. You can now select a field to insert into an LibreOffice document via InsertFieldsOther.

usr/share/help-langpack/zh_CN/evolution/mail-composer-html-text.page0000644000373100047300000000557512306123671027456 0ustar langpacklangpack00000000000000 Change font sizes, styles and colors in the mail composer. Andre Klapper ak-47@gmx.net Novell, Inc Formatting Text in HTML

Text formatting tools that are available in HTML format only are located in the second tool bar below the Subject line after enabling HTML format. They also appear in the Insert and Format menus.

The icons in the tool bar are explained in tooltips which appear when you hold your mouse pointer over the buttons.

文本类型:

Use these buttons in the lower tool bar to determine the way your email looks. If you have text selected, the style applies to the selected text. If you do not have text selected, the style applies to whatever you type next.

按钮

描述

+0

Font size.

Color chooser for text. The box displays the current text color. To choose a new color, click the arrow button to the right. If you have text selected, the color applies to the selected text. If you do not have text selected, the color applies to whatever you type next. You can select a background color or image by right-clicking the message background, then selecting StylePage Style.

TT

Typewriter text, which is similar to a monospace font.

Bold A

文本黑体化。

Italic A

文本斜体化。

Underlined A

文本添加下划线。

Strike through A

在文本上添加删除线。

The other buttons are explained under .

usr/share/help-langpack/zh_CN/evolution/mail-searching.page0000644000373100047300000000600212306123671025630 0ustar langpacklangpack00000000000000 Searching messages. Max Vorobuov vmax0770@gmail.com Andre Klapper ak-47@gmx.net Novell, Inc Searching Mail
Searching in a Single Message

To find text in the displayed message, select EditFind in Message... from the main menu.

Searching Across Messages
usr/share/help-langpack/zh_CN/evolution/mail-account-manage-unix-mbox-spool-file.page0000644000373100047300000000566712306123671032562 0ustar langpacklangpack00000000000000 Add and edit a Standard Unix mbox Spool File account in Evolution. Andre Klapper ak-47@gmx.net Standard Unix mbox Spool File account settings
帐号编辑器

Mail accounts can be added by choosing FileNewMail Account or via EditPreferencesMail AccountsAdd. The steps are mostly the same as for the First-Run Assistant, except for not getting asked whether to import data from other applications or to restore from a backup file.

Mail accounts can be edited via EditPreferencesMail AccountsEdit.

The following settings are available when editing an existing account:

Receiving Email and Receiving options (Standard Unix mbox Spool File accounts) Receiving Email and Receiving options
Sending Email (Standard Unix mbox Spool File accounts) 发送电子邮件
Defaults (Standard Unix mbox Spool File accounts) 默认值
Security (Standard Unix mbox Spool File accounts) 安全
usr/share/help-langpack/zh_CN/evolution/mail-encryption-gpg-getting-keys.page0000644000373100047300000000322512306123671031246 0ustar langpacklangpack00000000000000 Getting and Using GPG Public Keys. Andre Klapper ak-47@gmx.net Novell, Inc Getting and using GPG public keys

要发送一个加密邮件,您需要使用收信人的公有密钥和自己的私有密钥。Evolution会自行处理加密过程,但您需要得到公有密钥并加入到您的钥匙环中。

To get public keys from a public key server, enter the command gpg --recv-keys --keyserver wwwkeys.pgp.net keyid, substituting keyid by your recipient's ID. You need to enter your password, and the ID is automatically added to your keyring.

If someone sends you a public key directly, save it as a plain text file and enter the command gpg --import to add it to your keyring.

usr/share/help-langpack/zh_CN/evolution/tasks-organizing.page0000644000373100047300000000135212306123671026242 0ustar langpacklangpack00000000000000 On task and memo lists, searching, and categories. Andre Klapper ak-47@gmx.net Sorting and organizing tasks and memos usr/share/help-langpack/zh_CN/evolution/mail-read-receipts.page0000644000373100047300000000415612306123671026424 0ustar langpacklangpack00000000000000 How to enable requesting read receipts. April Gonzales loonycookie@gmail.com Andre Klapper ak-47@gmx.net Read receipts for emails

Read receipts are a way for people to acknowledge that they have received your email. The recipient can normally choose whether to acknowledge the receipt or not, so they are not a completely reliable way of checking if your emails have been received by someone.

You can request read receipts by enabling this option in the email composer's menu. To do so, go to OptionsRequest Read Receipt.

For read receipts that you receive you can define Evolution's behavior by going to EditPreferencesMail AccountsEditDefaultsMessage Receipts.

usr/share/help-langpack/zh_CN/evolution/deleting-to-free-disk-space.page0000644000373100047300000000137412306123671030127 0ustar langpacklangpack00000000000000 Deleting emails and calendar entries to reduce the size of the files used by Evolution. Andre Klapper ak-47@gmx.net Freeing disk space by deleting items usr/share/help-langpack/zh_CN/evolution/tasks-usage.page0000644000373100047300000000125012306123671025174 0ustar langpacklangpack00000000000000 On adding, editing, and deleting tasks. Andre Klapper ak-47@gmx.net Add, Edit, and Delete Tasks usr/share/help-langpack/zh_CN/evolution/mail-account-manage-maildir-format-directories.page0000644000373100047300000000571312306123671033776 0ustar langpacklangpack00000000000000 Add and edit a Maildir Format Mail Directories account in Evolution. Andre Klapper ak-47@gmx.net Maildir Format Mail Directories account settings
帐号编辑器

Mail accounts can be added by choosing FileNewMail Account or via EditPreferencesMail AccountsAdd. The steps are mostly the same as for the First-Run Assistant, except for not getting asked whether to import data from other applications or to restore from a backup file.

Mail accounts can be edited via EditPreferencesMail AccountsEdit.

The following settings are available when editing an existing account:

Receiving Email and Receiving options (Maildir Format Mail Directories accounts) Receiving Email and Receiving options
Sending Email (Maildir Format Mail Directories accounts) 发送电子邮件
Defaults (Maildir Format Mail Directories accounts) 默认值
Security (Maildir Format Mail Directories accounts) 安全
usr/share/help-langpack/zh_CN/evolution/exporting-data-contacts.page0000644000373100047300000000237412306123671027517 0ustar langpacklangpack00000000000000 How to export contacts data from Evolution. Andre Klapper ak-47@gmx.net Novell, Inc Exporting contacts data

Contacts files are stored in a database, but can be saved as a vCard file.

To export a complete address book, click FileSave Address Book As vCard.

If you want to export only one contact, click FileSave as vCard or right-click on the contact and click Save as vCard.

usr/share/help-langpack/zh_CN/evolution/mail-encryption-s-mime-manage.page0000644000373100047300000000415612306123671030502 0ustar langpacklangpack00000000000000 Adding, editing, viewing and deleting S/MIME certificates. Andre Klapper ak-47@gmx.net Novell, Inc Managing S/MIME certificates

Certificates allow you to communicate with others securely over an encrypted connection, or sign a message confirming your identity to the contact. These settings only apply to S/MIME encryption.

You can import, view, edit (except for your own certificates), and delete your certificates under EditPreferencesCertificates.

If you get the error "Peer's certificate issuer has been marked as not trusted by the user. (-8172) - Cannot add SMIMEEncKeyPrefs attribute" after adding your mail certificate, go to Authorities and enable Trust this CA to identify email users for the certificate.

Your Certificates displays a list of certificates that you own. To add a signing certificate, click Import, select the file to import, then click Open and enter a password.

Contact Certificates displays a list of certificates that you have for contacts. These certificates allow you to decrypt messages as well verify signed messages.

Authorities displays a list of trusted certificate authorities that verify that your own certificate is valid.

usr/share/help-langpack/zh_CN/evolution/mail-composer-change-quotation-string.page0000644000373100047300000000327412306123671032274 0ustar langpacklangpack00000000000000 It is not possible to change the quotation introduction added when answering mail. Andre Klapper ak-47@gmx.net Changing the "On date, person wrote:" string when replying

Advanced users can change this string.

Open the dconf-editor application.

Navigate to org.gnome.evolution.mail.

Enter the prefered quotation string as the value for the key composer-message-attribution.

You might need to install the dconf-editor package to perform these steps.

Install dconf-editor

usr/share/help-langpack/zh_CN/evolution/calendar-free-busy.page0000644000373100047300000001073412306123671026424 0ustar langpacklangpack00000000000000 Using the Free/Busy view on a groupware server to set up meetings. Andre Klapper ak-47@gmx.net Novell, Inc 忙闲信息

You can use the Free/Busy search for meetings to determine the availability of invitees.

In addition to the standard meeting scheduling tools, you can use the Free/Busy view to check whether people are available in advance. The Free/Busy feature is normally a function of dedicated groupware servers such as Microsoft Exchange and Novell GroupWise. However, you can also publish Free/Busy information online, and access Free/Busy information published elsewhere. If not everyone you collaborate with publishes Free/Busy data, you can still use meeting invitations to coordinate schedules with other people.

要查看忙/闲信息:

Click FileNewMeeting.

Click Add to add the email addresses of people you want to invite.

Click the Free/Busy button on the toolbar, or click OptionsFree/Busy.

Adjust the meeting time, either by dragging the meeting borders or by using the Autopick buttons to choose a time automatically, then click Close. Attendees on an Exchange server have the appointment updated automatically; others receive email notification of any change in plans.

出席者列表:

出席者列表显示了被邀请参与会议的出席者。

计划表格

The Schedule Grid shows the published Free/Busy information for the people you have invited. This is where you compare schedules to find free time to schedule the appointment. Individuals have visible scheduling information only if they use the same Novell GroupWise or Microsoft Exchange server you do (that is, if they are in the same organization as you), or if they publish free/busy information at a web address (URL) that you can reach and you have entered that web address for the specific contact in the Contact Editor under Personal informationWeb AddressesFree/Busy.

You can publish Calendar and Free/Busy information to a WebDAV server, FTP server, a remote machine through SSH or to any other web server with HTTP PUT support.

In corporate environments you can publish Calendar and Free/Busy information to an Exchange or Groupwise server. Note that you must use the top-level Exchange calendar if you want others to be able to access your Free / Busy information when inviting you to a meeting.

The default server can be defined under EditPreferencesCalendar and TasksPublishing InformationDefault Free/Busy Server.

在没有Groupware服务器的情况下获得忙/闲数据

If individuals give you a URL for Free/Busy data or for their web calendar, you can add the URL under Personal InformationWeb Addresses in the Contact Editor. Then, when you schedule a meeting with them, Evolution looks up the schedule and displays it in the Free/Busy data.

usr/share/help-langpack/zh_CN/evolution/mail-cannot-see.page0000644000373100047300000000402612306123671025725 0ustar langpacklangpack00000000000000 If you received or sent an email, but you cannot find it anywhere. Phil Bull philbull@gmail.com I cannot see some emails, where are they?

Check whether you are using filters on incoming (or outgoing) messages. These could be automatically moving your messages to another destination.

Check your search view in the search bar right above the message list. Perhaps the Show dropdown list is set to a filter like Read Messages, or the text input filed contains some value. Click the broom icon to clear the search field.

If you cannot see any emails at all in a folder, check that you have not maximized the message preview (so the message list pane is hidden). To do this, click ViewPreviewShow Message Preview.

Look in the Junk folder. Messages that are marked as Junk disappear from the original folder and are moved to the Junk folder.

Click EditShow Deleted Messages to make sure all messages are visible.

Check your default folder under EditPreferencesEmail AccountsEditDefaults. Perhaps it is set to some other folder than the folder you thought of.

usr/share/help-langpack/zh_CN/evolution/mail-attachments.page0000644000373100047300000000117512306123671026206 0ustar langpacklangpack00000000000000 Handling of file attachments for writing and reading mail Andre Klapper ak-47@gmx.net Managing attachments usr/share/help-langpack/zh_CN/evolution/mail-encryption-gpg-set-up.page0000644000373100047300000000415012306123671030047 0ustar langpacklangpack00000000000000 Setting up GPG for your mail account to sign and/or encrypt and decrypt messages. Andre Klapper ak-47@gmx.net Novell, Inc Setting up GPG for your mail account

You need a GPG key to do this. If you do not have one yet, please refer to Creating a GPG key.

Select EditPreferencesMail Accounts.

Select the account you want to use securely, then click Edit.

Click the Security tab.

Specify your key ID in the PGP/GPG Key ID field.

Below the field you can choose whether to always sign outgoing messages when using this account, and other options.

Click OK.

Click Close.

Evolution requires that you know your key ID. If you do not remember it, you can find it by typing gpg --list-keys in the Terminal application. Your key ID is an eight-character string with random numbers and letters.

usr/share/help-langpack/zh_CN/evolution/mail-follow-up-flag.page0000644000373100047300000000524712306123671026532 0ustar langpacklangpack00000000000000 Using flags to remind you of actions. Andre Klapper ak-47@gmx.net Novell, Inc Follow up flags for emails

To make sure you do not forget about a message, you can use the follow-up feature.

选择一封或几封邮件。

右击其中一封邮件。

Click Mark for Follow Up....

You can also do this by selecting the message(s) and clicking MessageMark asFollow Up... or by pressing ShiftCtrlG.

将会打开一个窗口,让您设置标记类型和截止日期。

The flag itself is the action you want to remind yourself about, such as Call, Forward and Reply.

After you have added a flag, you can mark it as complete or remove it entirely by right-clicking the message and clicking either Flag Completed or Clear Flag.

When you read a flagged message, its flag status is displayed at the top, before the message headers. An overdue message might tell you "Overdue: Call by April 07, 2012, 5:00 PM."

Flags can help you organize your work in a number of ways. For example, you might add a Flag Status column to your message list and sort that way. Alternately, you could create a search folder that displays all your flagged messages, then clear the flags when you're done, so the search folder contains only messages with upcoming deadlines.

If you prefer a simpler way to remind yourself about messages, you can mark them as important by right-clicking the message, then click Mark as Important, or by selecting MessageMark asImportant from the menubar.

usr/share/help-langpack/zh_CN/evolution/mail-send-and-receive.page0000644000373100047300000000155012306123671027001 0ustar langpacklangpack00000000000000 On receiving mail and sending written emails. Andre Klapper ak-47@gmx.net Sending and receiving mail

This section refers to receiving mail and sending written emails. For writing a new message, please refer to the Composing mail section.

usr/share/help-langpack/zh_CN/evolution/calendar-usage-delete-appointment.page0000644000373100047300000000214412306123671031417 0ustar langpacklangpack00000000000000 Deleting an appointment in your calendar. Andre Klapper ak-47@gmx.net Deleting an Appointment

If you want to delete an appointment in your calendars, right-click on the appointment in the calendar and select Delete Appointment, or click on the appointment and click Delete in the tool bar or press CtrlD. If you are in the list view you can also use EditDelete Appointment.

usr/share/help-langpack/zh_CN/evolution/memos-searching.page0000644000373100047300000000503212306123671026030 0ustar langpacklangpack00000000000000 Searching memos. Max Vorobuov vmax0770@gmail.com Andre Klapper ak-47@gmx.net Novell, Inc Searching Memos
Searching in a Single Memo

To find text in the displayed memo, select EditFind in Memo... from the main menu.

Searching Across Memos
usr/share/help-langpack/zh_CN/evolution/mail-imap-subscriptions.page0000644000373100047300000000364012306123671027525 0ustar langpacklangpack00000000000000 IMAP folder subscriptions. Andre Klapper ak-47@gmx.net Novell, Inc IMAP Subscriptions

As opening many IMAP folders on the server takes time you can define which IMAP folders to check and display in Evolution, and which ones to ignore for the time being, via the IMAP Subscriptions Manager.

Select FolderSubscriptions, or right-click on the top level node of an email account in the folder list and click Manage subscriptions.

If you have accounts on multiple servers, select the server where you want to manage your subscriptions.

Evolution displays a list of files and folders available on the IMAP server.

通过点击选择文件或文件夹。

您应该选择至少一个收信箱。根据您的IMAP服务器配置方式,文件列表中可能会包含没有邮件的文件夹。如果真是如此,您可以忽略它们。

Click a folder's checkbox to add a folder to your subscriptions.

usr/share/help-langpack/zh_CN/evolution/deleting-appointments.page0000644000373100047300000000207512306123671027265 0ustar langpacklangpack00000000000000 Deleting calendar entries to reduce the size of the mailbox. Andre Klapper ak-47@gmx.net Deleting old appointments permanently

To Purge old entries in a calendar, go to ActionsPurge in the Calendar view. You will be asked how many days old the events to remove from the calendar should be. The action will be applied to the currently opened calendar (selected in the list of calendars on the left); other calendars remain unchanged.

usr/share/help-langpack/zh_CN/evolution/calendar-local.page0000644000373100047300000000224112306123671025607 0ustar langpacklangpack00000000000000 Adding another local calendar. Andre Klapper ak-47@gmx.net Adding another local calendar

To add another local calendar to Evolution, perform the following steps:

Click FileNewCalendar.

Select the type On This Computer.

Enter a name that you prefer.

Optionally choose a color that you prefer.

Click Apply.

The calendar will be added to the list of calendars in Evolution.

usr/share/help-langpack/zh_CN/evolution/calendar-usage-edit-appointment.page0000644000373100047300000000220612306123671031101 0ustar langpacklangpack00000000000000 Editing in appointment in your calendar. Andre Klapper ak-47@gmx.net Editing an Appointment

If you want to change an appointment that already exists in your calendars,

Double-click on the appointment that you want to edit in the calendar.

Edit the appointment (see Adding an Appointment for the list of available options).

Click the Save button, or FileSave.

usr/share/help-langpack/zh_CN/evolution/contacts-autocompletion.page0000644000373100047300000000377112306123671027635 0ustar langpacklangpack00000000000000 Autocompletion of names and email addresses entered in the mail composer. Andre Klapper ak-47@gmx.net Novell, Inc Autocompletion of mail recipients

You can enter the first three letters of names and email addresses in the recipients text field and Evolution will present you with a list of matches from your address books.

To enable autocompletion, go to EditPreferencesContactsAutocompletion and choose the address books from the list that Evolution should look in for matches.

Select Always show address of the autocompleted contact to also show the email address along with the name. This can be helpful to distinguish if a contact has several email addresses.

Alternately, you can click the To:, Cc:, or Bcc: buttons to get a list of the email addresses in your contacts. Select addresses and click the arrow buttons to move them into the appropriate address columns.

usr/share/help-langpack/zh_CN/evolution/calendar-usage.page0000644000373100047300000000134612306123671025626 0ustar langpacklangpack00000000000000 On adding, editing, and deleting appointments. Andre Klapper ak-47@gmx.net Add, Edit, and Delete Appointments usr/share/help-langpack/zh_CN/evolution/mail-sorting-message-list.page0000644000373100047300000001251612306123671027754 0ustar langpacklangpack00000000000000 Sorting the message list of a mail folder. Andre Klapper ak-47@gmx.net April Gonzales loonycookie@gmail.com Novell, Inc Sorting the message list

Evolution lets you organize your emails by letting you sort messages in the message list.

Sorting Mail in Email Threads

You can use a threaded message view to sort emails. To enable this feature, click on ViewGroup By Threads or press CtrlT.

This feature, when enabled, groups replies with the original email and allows you to follow the flow of the conversation from one message to the next.

When a new message arrives, it will be added below the parent message. Threads are sorted and displayed based on the date of the most recent message received.

For Advanced Users: There is a GSettings key that allows you to toggle between the collapsed and expanded state of the email threads. The collapsed state is enabled by default. It can be changed by starting the Terminal application and running the command gsettings set org.gnome.evolution.mail thread-expand true

Open the Terminal application.

Run the command gsettings set org.gnome.desktop.interface can-change-accels true

根据列头排列邮件

The message list displays columns that indicate whether a message has been read, whether it has attachments, how important the message is, the sender, date, and the subject. To change the columns used in the message list, you can do one of the following:

Drag and drop the column header bars

Right-click on the header.

Select the Remove This Column or Add a Column option.

Evolution allows you to sort your messages using these columns. Just click on the column label to sort the emails. The direction of the arrow next to the label indicates the direction of the sort.

Using Other Sorting Options

Evolution provides other ways for sorting email messages. You can use Sort By, Sort Ascending, Sort Descending, or Unsort.

Sort By

You can also sort email messages using the Sort By list.

Right-click on the message list column headers.

Select the Sort By option.

This brings up this list of criteria for sorting email messages:

主题 - 被截断

标签

收件人

发送者:

位置

延期

Follow Up Flag

标志状态

大小

接收

日期

目标

附件

有标志

状态

自定义

Select the option you wish to use in sorting email messages.

Sort Ascending

Right-click on the message list column headers.

Select the Sort Ascending option.

The messages will be displayed with the most recent at the bottom.

Sort Descending

Right-click on the message list column headers.

Select the Sort Descending option.

The messages will be displayed with the most recent at the top.

Unsort

Right-click on the message list column headers.

Select the Unsort option.

This removes sorting from the column, reverting to the order of messages as they were added to the folder.

usr/share/help-langpack/zh_CN/evolution/mail-displaying-message.page0000644000373100047300000000136112306123671027455 0ustar langpacklangpack00000000000000 Rendering an email and handling its attachments. Andre Klapper ak-47@gmx.net Display of a message
Advanced
usr/share/help-langpack/zh_CN/evolution/mail-change-time-format.page0000644000373100047300000000245212306123671027341 0ustar langpacklangpack00000000000000 Changing the date and time format in the message list. Andre Klapper ak-47@gmx.net Format of dates and time

You can change the format of the Date column by setting your preferred format under EditPreferencesMail PreferencesHeadersDate/Time format.

The placeholders in the format expression are strftime formats. For a complete list of available strftime formats, run date --help in the Terminal application.

usr/share/help-langpack/zh_CN/evolution/mail-composer-html-rule.page0000644000373100047300000000272012306123671027426 0ustar langpacklangpack00000000000000 Insert a horizontal line in the mail composer. Andre Klapper ak-47@gmx.net Novell, Inc Inserting a Rule in HTML

You can insert a horizontal line into the email (at the current position of the cursor) to help divide two sections:

Click InsertRule... in the menubar.

Select width, size, and alignment.

Select Shaded if wanted.

Click Close.

Alternately, you can also use the icon in the second bar below the Subject line.

usr/share/help-langpack/zh_CN/evolution/calendar-google.page0000644000373100047300000000317612306123671026001 0ustar langpacklangpack00000000000000 Using the online calendar of your Google account. Andre Klapper ak-47@gmx.net Novell, Inc Using a Google calendar

To add such a calendar to Evolution, perform the following steps:

Click FileNewCalendar.

Select the type Google.

Enter a name that you prefer.

Optionally choose a color that you prefer.

Choose if you want to be able to view the content also when being offline.

Enter your Google username.

If you have more than one Google calendar, define which of them to use.

Click Apply.

The calendar will be added to the list of calendars in Evolution.

usr/share/help-langpack/zh_CN/evolution/tasks-caldav.page0000644000373100047300000000307712306123671025333 0ustar langpacklangpack00000000000000 Using an online CalDAV task list or memo list. Andre Klapper ak-47@gmx.net Using a CalDAV task or memo list

To add such a task list or memo list to Evolution, perform the following steps:

Click FileNewTask List or FileNewMemo List.

Select the type On the Web.

Enter a name that you prefer.

Optionally choose a color that you prefer.

Choose if you want to be able to view the content also while offline.

Enter the address of the list in the URL field.

Choose Use secure connection if you want to connect securely.

Enter your username and your email address.

Click Apply.

The task list will be added to the list of task lists in Evolution.

usr/share/help-langpack/zh_CN/evolution/calendar-usage-add-appointment.page0000644000373100047300000000454012306123671030707 0ustar langpacklangpack00000000000000 Adding an appointment. Andre Klapper ak-47@gmx.net Adding an Appointment

Click FileNewAppointment, or double-click in a blank space in the calendar to open the Appointment dialog. The particular time on the calendar view against which you have double clicked on will be suggested for the new appointment. You can also directly write in the calendar and then adjust the duration by dragging it with the mouse.

If you use the Appointment dialog:

Select a calendar in the Calendar drop-down list.

Enter a brief summary in the Summary field.

(Optional) Type a location in the Location field.

To select this event as an all day event, click OptionsAll Day Event, or click the All Day Event button on the toolbar.

选择时间和日期。

If the event is not an all day event, select either For to specify the duration, or select Until to specify the ending time of the event.

(Optional) Enter a description in the Description field.

To show the time as busy to others, click OptionsShow Time as Busy.

You can also define a time zone, a category, a reminder, a recurrence, or a classification for the event, or add an attachment.

usr/share/help-langpack/zh_CN/evolution/mail-save-as-pdf.page0000644000373100047300000000270712306123671026003 0ustar langpacklangpack00000000000000 Converting emails into PDF files. Andre Klapper ak-47@gmx.net Save messages as PDF

In order to save emails in the PDF file format, select FilePrint and then choose Print to File. See the desktop help for general information on printing.

You can also export messages as PDF by dragging and dropping them to the file manager, instead of dropping them in mbox (text) format by default.

Open the Terminal application.

Run the command gsettings set org.gnome.evolution.mail drag-and-drop-save-file-format 'pdf'

You can also use the dconf-editor application to do this.

usr/share/help-langpack/zh_CN/evolution/contacts-using-contact-lists.page0000644000373100047300000000565312306123672030507 0ustar langpacklangpack00000000000000 Using contact lists for grouping contacts. Andre Klapper ak-47@gmx.net Novell, Inc Using Contact Lists

A contact list is a set of contacts with a single nickname that you create. When you send mail to this nickname it is actually sent to every member of the list. This differs from a "real" mailing list in that it exists only on your computer as a convenience to you, rather than as an actual email address managed by a mailing list application on a server.

For example, you could create one contact for each family member, then add those contacts to a contact list called "Family". Then, instead of entering each person's email address individually, you can send emails to "Family" and the messages would go to all of them.

Creating a contact list

Click FileNewContact List.

Enter a name that you prefer.

Select the address book under Where: to which it will be added.

Specify the list members by either entering the names or email addresses of contacts (the text field supports autocompletion), or by dragging contacts from the Contacts window into the list, or by using the Select... button.

选择您是否希望在往该列表发送邮件时隐藏地址。

Unless it is a very small list, it is recommended that you leave the addresses hidden. This is the same thing as using the “Bcc:” feature discussed in Sending a message to several recipients.

Click OK.

The contact list will be added to the chosen address book in Evolution.

Sending messages to a contact list

To send a message to the contact list, enter the name that you chose for the contact list as the recipient in the mail composer. You can also right-click the contact list in your address book and select Send Message to List.

usr/share/help-langpack/zh_CN/evolution/mail-access-gmail-pop-account.page0000644000373100047300000000360612306123672030453 0ustar langpacklangpack00000000000000 How to set up a Gmail POP Account. April Gonzales loonycookie@gmail.com Access a Gmail POP Account via Evolution

Follow these steps to set up your Gmail POP Account in Evolution:

Log in to your Gmail account.

Go to SettingsForwarding and POP/IMAP. Refer to the POP Download section.

Enable the POP download feature by ticking the radio button that corresponds to either of these options:

Enable POP for all mail (even mail that's already been downloaded)

Enable POP for mail that arrives from now on

Specify the other required settings for this Gmail feature.

To know the Gmail Account settings, click on Configuration instructionsOtherStandard Instructions.

On your Evolution client, go to EditPreferencesMail Accounts. Click Add.

Provide the required information. For the account settings, refer to Step 5

usr/share/help-langpack/zh_CN/evolution/calendar-weather.page0000644000373100047300000000277712306123672026173 0ustar langpacklangpack00000000000000 Display the weather in the calendar. Andre Klapper ak-47@gmx.net Using a weather calendar

Calendars of this type are read-only.

To add such a calendar to Evolution, perform the following steps:

Click FileNewCalendar.

Select the type Weather.

Enter a name that you prefer.

Optionally choose a color that you prefer.

Choose if you want to be able to view the content also when being offline.

Choose a location by selecting continent, country and city.

Choose Use secure connection if you want to connect securely.

Choose the temperature unit.

Click Apply.

The calendar will be added to the list of calendars in Evolution.

usr/share/help-langpack/zh_CN/evolution/mail-access-gmail-imap-account.page0000644000373100047300000000232212306123672030575 0ustar langpacklangpack00000000000000 How to set up a Gmail IMAP Account. Andre Klapper ak-47@gmx.net Access a Gmail IMAP Account via Evolution

Please refer to the IMAP+ mail account settings.

To access Gmail via IMAP you must turn on IMAP in your Google account. See the Gmail Help for more information.

usr/share/help-langpack/zh_CN/evolution/mail-two-trash-folders.page0000644000373100047300000000357712306123672027270 0ustar langpacklangpack00000000000000 How to have only one trash or junk folder per account. April Gonzales loonycookie@gmail.com Andre Klapper ak-47@gmx.net Two Trash or Junk folders shown for the same account

If you use a remote mail account that also has Junk and/or Trash folders on the server you might face duplicated folders in Evolution.

You can easily tell the two Trash folders apart by looking at their icons. The Evolution Trash folder has a special icon whereas the other physical Trash folder looks like any other folder.

By default, Evolution's Trash and Junk folders are Search folders. They do not really exist but simply display all the messages that are marked as junk or for deletion in any folders of that account.

In order to only use the folders for Junk and Trash on the mail server, select the corresponding Use a Real Folder option under EditPreferencesMail AccountsEditDefaults. In this case, Evolution's local virtual folders will not be used.

usr/share/help-langpack/zh_CN/evolution/mail-receiving-options-maildir-format-directories.page0000644000373100047300000000422612306123672034557 0ustar langpacklangpack00000000000000 Receiving options for Maildir-format mail directories accounts. Andre Klapper ak-47@gmx.net Maildir-format mail directories receiving options
接收电子邮件

On the Receiving Email page (accessible via EditPreferencesMail AccountsEditReceiving Email):

Choose the directory by clicking on the button next to Path in the Configuration section. Some default folders are available in the list. If the directory is not among those folders, choose the last option Other.... This will open a directory chooser window.

接收选项

On the Receiving Options page (accessible via EditPreferencesMail AccountsEditReceiving Options):

If you want Evolution to check automatically for new messages, click the Check for new messages every ... minutes option and select the frequency in minutes.

If you want Filters to be automatically used for new messages in your inbox, enable Apply filters to new messages in INBOX.

usr/share/help-langpack/zh_CN/evolution/mail-receiving-options-pop.page0000644000373100047300000000662712306123672030143 0ustar langpacklangpack00000000000000 Receiving options for POP accounts. Andre Klapper ak-47@gmx.net Barbara Tobias barbtobias09@gmail.com Novell, Inc POP receiving options
接收电子邮件

On the Receiving Email page (accessible via EditPreferencesMail AccountsEditReceiving Email):

Enter the address of the email server in the Server field and enter your username for that server.

选择您是否要使用安全连接 (SSL 或 TLS)。

如果您的服务器支持它,应当启用该选项。

Free webmail providers often supply information about which of these options can be used. If you are in an organizational environment, you may want to contact your system administrator for more information.

Select your authentication type in the Authentication list, or click Check for Supported Types to have Evolution check for supported authentication mechanisms. Some servers do not announce the authentication mechanisms they support, so clicking this button is not a guarantee that available mechanisms actually work.

选择是否要 Evolution 记住密码。

接收选项

On the Receiving Options page (accessible via EditPreferencesMail AccountsEditReceiving Options):

If you want Evolution to check automatically for new messages, click the Check for new messages every ... minutes option and select the frequency in minutes.

If you want the messages to remain on the server for a period of time, click the Leave messages on server option and the Delete after ... days option and select the number of days to allow messages to remain on the server.

The option Disable support for all POP3 extensions is only useful when accessing old or misconfigured mail servers. POP3 extensions provide enhanced functionality, however only some servers support them. In case of problems with receiving mail, enabling this setting might help.

usr/share/help-langpack/zh_CN/evolution/mail-usenet-subscriptions.page0000644000373100047300000000257612306123672030112 0ustar langpacklangpack00000000000000 Subscribing to Usenet newsgroups. Andre Klapper ak-47@gmx.net Novell, Inc Newsgroups Subscriptions

当您新建了一个新闻组账户时,您尚未订阅任何新闻组。 要订阅新闻组:

Select FolderSubscriptions.

If you have accounts on multiple servers, select the server where you want to manage your subscriptions.

Click a group's checkbox to add a folder to your subscriptions.

usr/share/help-langpack/zh_CN/evolution/contacts-google.page0000644000373100047300000000262412306123672026044 0ustar langpacklangpack00000000000000 Use the online address book of your Google account. Andre Klapper ak-47@gmx.net Using a Google addressbook

To add such an address book to Evolution, perform the following steps:

Click FileNewAddress Book.

Select the type Google.

Enter a name that you prefer.

Choose if you want to be able to view the content also when being offline.

Enter your Google username.

Choose Use secure connection if you want to connect securely.

Click Apply.

The address book will be added to the list of address books in Evolution.

usr/share/help-langpack/zh_CN/evolution/mail-account-manage-microsoft-exchange-evo-ews.page0000644000373100047300000000553012306123672033723 0ustar langpacklangpack00000000000000 Add and edit a Microsoft Exchange 2007 or 2010 account in Evolution. Andre Klapper ak-47@gmx.net Exchange Web Services account settings
帐号编辑器

Mail accounts can be added by choosing FileNewMail Account or via EditPreferencesMail AccountsAdd. The steps are mostly the same as for the First-Run Assistant, except for not getting asked whether to import data from other applications or to restore from a backup file.

Mail accounts can be edited via EditPreferencesMail AccountsEdit or by right-clicking on the respective top-level node in the folder list and choosing Properties.

The following settings are available when editing an existing account:

Receiving Email and Receiving options (Exchange Web Services accounts) Receiving Email and Receiving options
Defaults (Exchange Web Services accounts) 默认值
Security (Exchange Web Services accounts) 安全
usr/share/help-langpack/zh_CN/evolution/calendar-marcus-bains-line.page0000644000373100047300000000145612306123672030036 0ustar langpacklangpack00000000000000 The red "Marcus Bains" line displays the current time. Andre Klapper ak-47@gmx.net Time display in the Day view

The red Marcus Bains Line in the Day view of the calendar is a marker to show the current date and time.

usr/share/help-langpack/zh_CN/evolution/mail-search-folders.page0000644000373100047300000000426212306123672026575 0ustar langpacklangpack00000000000000 Use search folders to see messages in one folder while still keeping them in their original folders. Andre Klapper ak-47@gmx.net Novell, Inc Using Search folders

If filters are not flexible enough, or you find yourself performing the same search again and again, consider a search folder.

A search folder looks like a folder, it acts like a search, and you set it up like a filter. While a conventional folder actually contains messages, a search folder is a view of messages that might be in several different folders. The messages it contains are determined on the fly using a set of criteria that you have chosen when setting up the search folder.

Evolution automatically updates the search folder contents when new messages are received or message are deleted.

The Unmatched search folder is the opposite of other search folders: it displays all messages that do not appear in other search folders.

If you use remote email storage like IMAP, and have created search folders to search through them, the Unmatched search folder also searches the remote folders. If you do not create any search folders that search remote mail stores, the Unmatched search folder does not search in them either.

usr/share/help-langpack/zh_CN/evolution/xinclude-mail-account-identity.xml0000644000373100047300000000101112306123672030641 0ustar langpacklangpack00000000000000
标识

Here you define your name and your email address.

Optionally you can make this account your default account (e.g. when writing emails), set a Reply-To email address (if you want replies to messages sent to a different address), and set an organization (the company where you work, or the organization you represent when you send email from this account).

usr/share/help-langpack/zh_CN/evolution/intro-first-run.page0000644000373100047300000002540312306123672026036 0ustar langpacklangpack00000000000000 Running Evolution for the very first time. Andre Klapper ak-47@gmx.net Starting <app>Evolution</app> for the first time

The first time you run Evolution, it opens the First-Run Assistant to help you set up email accounts and import data from other applications.

从备份中恢复

You will be asked whether to restore from a backup of a previous version. If you do not have a backup, go to the next page.

Show how to restore from a backup Restoring
接收电子邮件

First, choose the server type from the Server Type drop-down list.

If you are unsure about the type of server to choose, ask your system administrator or Internet Service Provider.

Later on, if you want to change an account, or if you want to create another one, go to EditPreferencesMail Accounts. Select the account you want to change, then click Edit. Alternately, add a new account by clicking Add.

IMAP+

Keeps the mail on the server so you can access your mail from multiple systems.

Show how to configure this account type IMAP+ receiving options
POP

Downloads your email to your hard disk.

Show how to configure this account type POP receiving options
USENET News

Connects to a news server and downloads a list of available news digests.

Show how to configure this account type Usenet news receiving options
Exchange EWS

For connecting to a Microsoft Exchange 2007/2010 or OpenChange server. Note that this is currently under development and will replace the Exchange MAPI account type in the future. It might not be available yet for your distribution.

This requires having the evolution-ews package installed.

Install evolution-ews

Show how to configure this account type Exchange Web Services receiving options
Exchange MAPI

For connecting to a Microsoft Exchange 2007/2010 or OpenChange server.

This requires having the evolution-mapi package installed.

Install evolution-mapi

Show how to configure this account type Exchange MAPI receiving options
Local delivery

Local delivery: If you want to move email from the spool (the location where mail waits for delivery) and store it in your home directory. You need to provide the path to the mail spool you want to use. If you want to leave email in your system's spool files, choose the Standard Unix Mbox Spool option instead.

Show how to configure this account type Local delivery receiving options
MH-Format Mail Directories

For downloading email using MH or another MH-style application.

Show how to configure this account type MH-format mail directories receiving options
Maildir-Format Mail Directories

Maildir-Format Mail Directories: For downloading your email using Qmail or another Maildir-style application.

Show how to configure this account type Maildir-format mail directories receiving options
Standard Unix mbox spool file

Standard Unix mbox spool file: For reading and storing email in the mail spool file on your local system.

Show how to configure this account type Standard Unix mbox spool file receiving options
Standard Unix mbox spool directory

Standard Unix mbox spool directory: For reading and storing email in the mail spool directory on your local system.

Show how to configure this account type Standard Unix mbox spool directory receiving options
None

If you do not plan to use Evolution for receiving email.

发送电子邮件

Available server types are:

SMTP

Sends mail using an outbound mail server. This is the most common choice for sending mail.

Show how to configure this account type SMTP sending options
Sendmail

Uses the Sendmail application to send mail from your system. It is not easy to configure, so you should select this option only if you know how to set up a Sendmail service.

帐号信息

Give the account any name you prefer.

导入邮件(可选)

Continue with Importing data from another application.

usr/share/help-langpack/zh_CN/evolution/mail-encryption-gpg-create-key.page0000644000373100047300000000714612306123672030674 0ustar langpacklangpack00000000000000 Signing or encrypting messages via GPG/OpenPGP that you send. Andre Klapper ak-47@gmx.net Novell, Inc Creating a GPG key

These steps are very technical. For average users we recommend using the Seahorse application for managing GPG/OpenPGP keys.

Before you can get or send GPG encrypted mail, you need to generate your public and private keys with GPG.

Open the Terminal application and enter gpg --gen-key.

选择一个算法,然后按“回车”。

Select a key length, then press Enter.

输入您的密钥有效期限。

键入您的真名,然后回车。

输入您的邮件地址,按回车键。

(可选)输入评论,按回车键。

查看您选择的用户ID,确认后按O。

输入一个密码短语,按回车键。

随意移动您的鼠标,生成密钥。

After the keys are generated, you can view your key information by entering gpg --list-keys. You should see something similar to this: /home/you/.gnupg/pubring.gpg ---------------------------- pub 1024D/32j38dk2 2001-06-20 you <you@example.com> sub 1024g/289sklj3 2011-06-20 [expires: 2012-11-14]

GPG creates one list, or keyring, for your public keys and one for your private keys. All the public keys you know are stored in the file ~/.gnupg/pubring.gpg. If you want to give other people your key, send them that file.

If you want, you can upload your keys to a key server:

Check your public key ID with gpg --list-keys. It is the string after 1024D on the line beginning with pub. In the example above, it is 32j38dk2.

Enter the command gpg --send-keys --keyserver wwwkeys.pgp.net 32j38dk2. Substitute your key ID for 32j38dk2. You need your password to do this.

密钥服务器存储您的公有密钥,这样您的朋友就可以解密您的邮件。如果您不使用密钥服务器,也可以手动发送自己的公有密钥,可以把它加在签名文件中,也可以放在自己的网页上。但是,我们建议还是一次性生成一个密钥放到服务器上,让别人在需要的时候下载,这样更方便一些。

If you don't have a key to unlock or encrypt a message, you can set your encryption tool to look it up automatically. If it cannot find the key, an error message appears.

usr/share/help-langpack/zh_CN/evolution/mail-composer-message-templates-variables.page0000644000373100047300000000773312306123672033115 0ustar langpacklangpack00000000000000 Configure variables in templates and reuse items from the message you reply to Andre Klapper ak-47@gmx.net Novell, Inc Using Variables in Templates
Configuring Variables for Message Templates

Select EditPlugins.

Click Templates.

Click the Configuration tab.

You can add, edit or remove the key-value pairs. You can specify any number of key-value pairs.

在任何模板中,所有出现关键字的地方会被它所对应的值代替。例如,如果您在设置了关键字为“经理”,值为“哈里”,那么邮件中所有出现“经理”的地方都会被“哈里”代替。

Assume that you have 1000 message templates with your current manager's name in them. When the current manager is replaced by a new one, it is not easy for you to manually replace the manager's name in all the 1000 messages. If the messages have a $Manager key value, you can reset the value in the Configuration tab of this plugin.

默认情况下,整个环境变量会被作为一个关键字-值对来对待。每出现一个环境变量就会被它所对应的值所代替。例如,模板中有$PATH时,当使用模板时就会被它的值代替。

关键字-值的替换过程根据下列优先级进行:

关键字会被它在模板插件中配置的值所替换。

如果该关键字在配置中找不到,则会被环境变量所对应的值替换。

如果该关键字既不是环境变量,也没有进行配置,则不会发生任何替换。

Using Elements From a Message in a Template When Replying

Templates can contain more than just the predefined set of key-value pairs. You can also get any message header values from the email that you are applying the template on, plus the complete message body.

In order to do this, use the format $ORIG[header_name] and replace the variable header_name by the actual header. For example, if you would like to insert the subject line of the message that you reply to, use $ORIG[subject]. To insert the complete body, use $ORIG[body].

If no replacement for a variable is found, the variable is not removed (except for $ORIG[body]) but left in place so that you see that something went wrong. This could happen when trying to use headers that are not necessarily always available in the original message (for example $ORIG[reply-to]).

usr/share/help-langpack/zh_CN/evolution/mail-recognized-thread-related-headers.page0000644000373100047300000000171712306123672032323 0ustar langpacklangpack00000000000000 Which thread-related headers are recognized by Evolution. April Gonzales loonycookie@gmail.com Thread related headers recognized by Evolution

Evolution supports the following headers:

References

In-Reply-To

Thread-* headers are Microsoft's proprietary headers and not supported.

usr/share/help-langpack/zh_CN/evolution/mail-composer-forward-as-attachment.page0000644000373100047300000000226212306123672031712 0ustar langpacklangpack00000000000000 How to forward a message with its attachments. Andre Klapper ak-47@gmx.net Forwarding a message with its attachments

Click MessageForward as... and choose Attachment, so the forwarded email and also its attachments get attached to the email you want to send.

If you want to have this setting by default, set EditPreferencesComposer PreferencesForward Style to Attachment.

usr/share/help-langpack/zh_CN/evolution/mail-account-manage-microsoft-exchange-evo-mapi.page0000644000373100047300000000566012306123672034057 0ustar langpacklangpack00000000000000 Add and edit a Microsoft Exchange MAPI account in Evolution. Andre Klapper ak-47@gmx.net Exchange MAPI account settings
帐号编辑器

Mail accounts can be added by choosing FileNewMail Account or via EditPreferencesMail AccountsAdd. The steps are mostly the same as for the First-Run Assistant, except for not getting asked whether to import data from other applications or to restore from a backup file.

Mail accounts can be edited via EditPreferencesMail AccountsEdit or by right-clicking on the respective top-level node in the folder list and choosing Properties.

The following settings are available when editing an existing account:

Receiving Email and Receiving options (Exchange MAPI accounts) Receiving Email and Receiving options
Defaults (Exchange MAPI accounts) 默认值
Exchange Settings

In this section you can view the size of all Exchange folders.

Security (Exchange MAPI accounts) 安全
usr/share/help-langpack/zh_CN/evolution/mail-working-offline.page0000644000373100047300000000606112306123672026773 0ustar langpacklangpack00000000000000 Work with your mail while not being connected to the network. Andre Klapper ak-47@gmx.net Novell, Inc 离线工作

Forced offline mode helps you communicate with remote mail storage systems like GroupWise, IMAP or Exchange, in situations where you are not connected to the network at all times. Evolution keeps a local copy of one or more folders to allow you to compose messages, storing them in your Outbox to be sent the next time you connect.

Evolution's forced offline mode only refers to mail and does not apply to contacts and calendars.

POP mail downloads all messages to your local system, but other connections usually download just the headers, and get the rest only when you want to read the message. Before you force Evolution to be offline, Evolution downloads the unread messages from the folders you have chosen to store.

Marking folders for offline usage

To mark a mail folder for offline use,

Right-click the folder, then click Properties.

Click Copy folder content locally for offline operation.

Syncing messages for offline usage

Your connection status is shown by the small icon in the lower left corner of the Evolution main window. When you are online, it displays two connected cables. When you force offline mode via clicking the icon or via FileWork Offline, the cables separate. You will be asked whether you want to go offline immediately or synchronize folders locally before you go offline.

To download Messages for Offline Operations without immediately going offline, select FileDownload Messages for Offline Usage.

自动感知网络状态

Evolution automatically understands the network state and acts accordingly. For instance, Evolution switches to offline mode when the network goes down and automatically switches on when the network is up again.

usr/share/help-langpack/zh_CN/evolution/mail-composer-search.page0000644000373100047300000000307012306123672026762 0ustar langpacklangpack00000000000000 Searching for text in the mail composer. Andre Klapper ak-47@gmx.net Searching in the mail composer

Under the Edit menu in the message composer there are several text searching features available.

Find:

键入单词或短语, Evolution 将会在消息中查找它们。

Find Again:

选择该项,重复您上一次的搜索。

Replace:

查找一个单词或词组,将它替换为其它文本。

For all of these menu items you can choose whether to search backwards in the document from the point where your cursor is. You can also determine whether the search is to be case sensitive in determining a match

If you have a technical background you can also select the option to use Regular expressions for searching.

usr/share/help-langpack/zh_CN/evolution/calendar-layout.page0000644000373100047300000000125112306123672026033 0ustar langpacklangpack00000000000000 Adjusting the display and views of the calendar. Andre Klapper ak-47@gmx.net Changing the calendar layout usr/share/help-langpack/zh_CN/evolution/mail-default-folder-locations.page0000644000373100047300000000377112306123672030566 0ustar langpacklangpack00000000000000 Changing the location of Draft, Sent, Trash and Junk folders. Andre Klapper ak-47@gmx.net Mail folder locations

You can set a different place where to store messages in your Draft folder and Sent folder in the Defaults section of the mail account editor (EditPreferencesMail AccountsEditDefaults).

For remote account types (accounts such as IMAP) you can also use folders on the mail server for Junk and Trash by selecting the corresponding Use a Real Folder option. In this case, Evolution's local virtual folders will not be used.

usr/share/help-langpack/zh_CN/evolution/mail-attachments-received.page0000644000373100047300000000373212306123672027774 0ustar langpacklangpack00000000000000 Saving and opening files that are attached to received emails. Andre Klapper ak-47@gmx.net Novell, Inc Handling attachments in received mail

If you receive an email message with one or more file attachments, Evolution displays the number of attachments and a Save or Save All button between the email header and the content of the email.

Evolution does not support saving all attachments of all messages in one folder at once.

A list of attachments is also available at the bottom of the email.

To save an attachment to disk, click the down-arrow next to the attachment icon and click Save As.

To open an attachment in another application, click the down-arrow next to the attachment icon and choose one of the available applications.

The options available for an attachment vary depending on the type of attachment and the applications that are installed on your system. For example, image files can be opened in the Image Viewer application or in the GIMP graphics editor.

usr/share/help-langpack/zh_CN/evolution/searching-items.page0000644000373100047300000000116512306123672026035 0ustar langpacklangpack00000000000000 Searching content and data within Evolution. Andre Klapper ak-47@gmx.net Searching items usr/share/help-langpack/zh_CN/evolution/mail-composer-plain-text.page0000644000373100047300000000466412306123672027614 0ustar langpacklangpack00000000000000 Change font alignment and paragraph formatting in the mail composer. Andre Klapper ak-47@gmx.net Novell, Inc Formatting Text in Plain Text Format

Text formatting tools are located in the tool bar below the Subject line. They also appear in the Insert and Format menus.

The icons in the tool bar are explained in tooltips which appear when you hold your mouse pointer over the buttons.

信头与列表:

At the left of the upper tool bar, you can choose Normal for a default text style or Header 1 through Header 6 for varying sizes of header from large (1) to tiny (6). Other styles include Preformat, to use the HTML tag for preformatted blocks of text, and three types of bullet points for lists.

For instance, instead of using asterisks to mark a bulleted list, you can use the Bulleted List style from the style dropdown list. Evolution uses different bullet styles, and handles word wrap and multiple levels of indentation.

对齐:

Located next to the Headers and Lists dropdown, the three paragraph icons should be familiar to users of most word processing software. The left-most button aligns your text to the left, the center button centers text, and the right button aligns the text to the right.

缩进规则:

标有左箭头的按钮是减少段落缩进,标有右箭头的按钮是增加段落缩进。

usr/share/help-langpack/zh_CN/evolution/mail-refresh-folders.page0000644000373100047300000000215412306123672026764 0ustar langpacklangpack00000000000000 Ways to update your Evolution folders. April Gonzales loonycookie@gmail.com Updating/refreshing the folders on the mail server

To make sure that your local email folders are updated, go to FolderRefresh. This will ensure that all of your emails have been downloaded from the mail server onto your computer so that you can read them all, and that the read status is synced with the mail server.

You can also double-click on the folder name to refresh it, or press F5.

usr/share/help-langpack/zh_CN/evolution/offline.page0000644000373100047300000000371512306123672024400 0ustar langpacklangpack00000000000000 Make Evolution mail be online again. Brian Grohe grohe43@gmail.com Patrick O'Callaghan Why is Evolution's mail offline when my net connection is working?

You may have started Evolution with the --offline commandline option to enforce offline mode.

If this is not the case and Evolution normally works but has suddenly stopped connecting to your mail accounts, you may have unintentionally clicked on the connection icon in the lower left corner. When connected, the icon resembles a pair of sockets joined together. If the sockets are open, there is no connection to your mail accounts (and the Send/Receive button is grayed out). Click on the icon to change its state.

If the problem persists and you are sure you have not clicked the icon, but you can still reach the network from other apps on your system (browsers, FTP, SSH, ping etc.) it may be that your network connection is not properly configured. For more information please take a look at the Desktop help or seek help from your distribution support forums, mailing lists etc.

Evolution's forced offline mode only refers to mail and does not apply to contacts and calendars.

usr/share/help-langpack/zh_CN/evolution/mail-composer-html-image.page0000644000373100047300000000264712306123672027552 0ustar langpacklangpack00000000000000 Embed a picture in the mail composer. Andre Klapper ak-47@gmx.net Novell, Inc Inserting an Image in HTML

You can insert an image into the email (at the current position of the cursor):

Click InsertImage... in the menubar.

Browse to and select the file.

Click Open.

Alternately, you can also use the icon in the second bar below the Subject line, or drag an image into the text area of the message composer.

usr/share/help-langpack/zh_CN/evolution/contacts-usage-edit-contact.page0000644000373100047300000000200712306123672030243 0ustar langpacklangpack00000000000000 Editing a contact in your address book. Andre Klapper ak-47@gmx.net Editing a Contact

If you want to change a contact that already exists in your address books,

Double-click on the contact that you want to edit in the list of contacts, or select the contact and press Enter.

Edit the contact information.

Click OK.

usr/share/help-langpack/zh_CN/evolution/mail-folders.page0000644000373100047300000000610612306123672025331 0ustar langpacklangpack00000000000000 Use folders to organize your mail. Andre Klapper ak-47@gmx.net April Gonzales loonycookie@gmail.com Novell, Inc Using Folders

Evolution, like most mail systems, uses folders to store email messages. You start out with a few mail folders such as the Inbox, Outbox, and Drafts. You can, however, create more folders if required.

Creating A Folder

To create a folder:

Click on Folder and select New. You can also right-click anywhere on the folder list and select the New Folder option.

Specify the name and the location of the folder.

Click on the Create button.

The new folder will be shown in the folder view. You can then move messages into the folder.

The Inbox folders on most IMAP servers cannot contain both messages and subfolders. When creating additional folders on your IMAP mail server, branch the folders from the root of the IMAP account and not from the Inbox. Creating subfolders in your Inbox may prevent you from reading messages that exist in the Inbox. If this happens, move the folders to the IMAP account.

Moving Messages to New Folders

You can move messages into folders by using one of the following methods:

Drag and drop the messages into the folder.

Right-click on the message and select the Move to Folder option.

Select a message and press ShiftCtrlV.

Select a message and click on MessageMove to Folder.

The steps for copying are similar.

Moving files can be done automatically by setting up filters.

usr/share/help-langpack/zh_CN/evolution/mail-attachments-sending.page0000644000373100047300000000504712306123672027636 0ustar langpacklangpack00000000000000 Attaching files to emails you want to send. Andre Klapper ak-47@gmx.net Novell, Inc Adding attachments to an email
Attaching files

To attach a file to your email in the composer:

Click Add Attachment..., or click InsertAttachment, or press CtrlM.

选择您希望添加的文件。

Click OK.

You can also drag a file to the attachment bar of the composer window.

当您发送邮件时,便会有一个附件的拷贝随之发送。请注意过大的附件会造成发送或接收时间过长。

附件提醒

Evolution has an Attachment Reminder plugin you can use to remind yourself to attach a file to an email. If it determines that you have not attached the file, it displays a reminder window before the email is sent.

要启用附件提醒:

Select EditPlugins.

Enable Attachment Reminder.

Click the Configuration tab.

Click Add, then enter keywords in your language such as "Attach" or "enclosed".

Based on the keywords you have added, Evolution searches the text of every mail you are going to send. If it finds any of the keywords in your email and there is no actual attached file, the reminder window is displayed.

usr/share/help-langpack/zh_CN/evolution/calendar-organizing.page0000644000373100047300000000134412306123672026670 0ustar langpacklangpack00000000000000 On using several calendars, searching, and categories. Andre Klapper ak-47@gmx.net Sorting and organizing calendars usr/share/help-langpack/zh_CN/evolution/mail-encryption-gpg-signing-encrypting.page0000644000373100047300000000373412306123672032460 0ustar langpacklangpack00000000000000 Signing or encrypting messages via GPG that you send. Andre Klapper ak-47@gmx.net Novell, Inc Signing or encrypting messages

After you have set up your GPG key, you can sign or encrypt a message by clicking OptionsPGP Sign or PGP Encrypt from the message composer menu.

邮件的主题不会被加密。所以,切勿在主题中填写敏感信息。

给每封邮件添加签名或加密:

Select EditPreferencesMail Accounts.

Select the mail account to encrypt the messages in.

Click Edit.

Click the Security tab.

Select Always sign outgoing messages when using this account.

Click OK.

Click Close.

usr/share/help-langpack/zh_CN/evolution/mail-filters-conditions.page0000644000373100047300000000410412306123672027506 0ustar langpacklangpack00000000000000 Available conditions for setting up filtering. Andre Klapper ak-47@gmx.net Novell, Inc Available Filter conditions

来源账户:

根据邮件来源的服务器过滤邮件。如果您使用多个POP邮件账户,这很有用。

管道到程序:

Evolution能使用外部命令操作邮件,然后根据返回状态处理它。使用的命令必须能返回一个整数值。这在添加外部的垃圾邮件过滤器中很有用。

垃圾测试:

Filters based on the results of the junk mail test.

Match All:

Applies an action always to any message, without further conditions. This could be useful at the end of the list of message filters to cover those emails that did not match any conditions for the preceding filters in the list.

usr/share/help-langpack/zh_CN/evolution/contacts-searching.page0000644000373100047300000000510112306123672026524 0ustar langpacklangpack00000000000000 Searching contacts. Max Vorobuov vmax0770@gmail.com Andre Klapper ak-47@gmx.net Novell, Inc Searching Contacts
Searching in a Single Contact

To find text in the displayed contact, select EditFind in Contact... from the main menu.

Searching Across Contacts
usr/share/help-langpack/zh_CN/evolution/mail-word-wrap.page0000644000373100047300000000200012306123672025602 0ustar langpacklangpack00000000000000 Words are wrapped in outgoing mails at 72 characters. Andre Klapper ak-47@gmx.net Words are wrapped in outgoing mails at 72 characters

For better readability lines are wrapped after 72 characters. This value is hardcoded and cannot be changed.

To avoid line breaks within a paragraph, mark the paragraph and choose FormatParagraph StylePreformatted in the mail composer.

usr/share/help-langpack/zh_CN/evolution/mail-spam.page0000644000373100047300000000124012306123672024625 0ustar langpacklangpack00000000000000 How to automatically handle unwanted mail. Andre Klapper ak-47@gmx.net Junk and Spam Mail Handling usr/share/help-langpack/zh_CN/evolution/mail-search-folders-refresh.page0000644000373100047300000000235412306123672030231 0ustar langpacklangpack00000000000000 Ways of updating Search folders. April Gonzales loonycookie@gmail.com Andre Klapper ak-47@gmx.net Updating/refreshing Search folders

It might happen that one of your Search folders has not updated since some new email arrived or since an email was deleted, for example. This will mean that the list of emails in the folder is not up-to-date.

You can get an updated view of the search folder either by switching to another folder and then back again, or by right-clicking on the search folder and choosing Refresh.

usr/share/help-langpack/zh_CN/evolution/mail-displaying-collapsible-headers.page0000644000373100047300000000306112306123672031733 0ustar langpacklangpack00000000000000 Display less email recipients of a specific message. Andre Klapper ak-47@gmx.net Novell, Inc 可折叠的邮件头

Evolution compresses the To, Cc and Bcc headers of received mail and shows only five addresses in the message preview.

To see all recipients, click the icon next to the To: or Cc: line, or click the ellipsis (...) at the end of the five displayed addresses.

To collapse all of the message headers and just display the subject and sender in one line, click the icon next to the From: line. This is helpful on small screens.

usr/share/help-langpack/zh_CN/evolution/mail-search-folders-add.page0000644000373100047300000000546512306123672027331 0ustar langpacklangpack00000000000000 Setting up a search folder. Andre Klapper ak-47@gmx.net Novell, Inc 创建搜索文件夹

Click EditSearch Folders, or click MessageCreate Rule and select the criterion the search folder will be based on, or if you have run a search, click SearchCreate Search Folder From Search....

Click Add.

Enter a name in the Rule name field.

Define the conditions for the rule. For each condition, you first select which part of the message will be checked and then define the comparison.

For more information on the available conditions see Available Search Folder conditions.

If you want to define multiple conditions, define under Find items if any or if all conditions have to apply, and click Add Condition and repeat the previous step.

Select which folders will be used for the search folder in the section Search Folder Sources. Options are:

全部本地文件夹:

使用所有本地文件夹作为搜索文件夹来源,包括选中的单独文件夹。

全部活动远程文件夹:

远程文件夹在您连接到对应的服务器时被认为是活动的;您必须连接到您的邮件服务器才能让搜索文件夹包含远程的邮件以及选中的单独文件夹。

所有本地和活动的远程文件夹:

使用使用本地和远程活动的文件夹作为搜索文件夹的来源,包括选中的独立文件夹。

仅指定的文件夹:

Uses individual folders for the search folder source. In this case, click the Add to select folders.

Click OK.

usr/share/help-langpack/zh_CN/evolution/mail-composer-mail-signatures-per-account.page0000644000373100047300000000367212306123672033047 0ustar langpacklangpack00000000000000 Setting a default signature for an email account. Andre Klapper ak-47@gmx.net Default account signature

You can define a default signature for each of your mail accounts. This can be edited under EditPreferencesMail AccountsEditIdentityOptional Information.

If you have a signature for your account defined but exceptionally do not want to use it for one message, or want to use a different signature, you can change it via the dropdown menu in the right upper corner in the email composer window.

usr/share/help-langpack/zh_CN/evolution/mail-composer-forward.page0000644000373100047300000000552112306123672027164 0ustar langpacklangpack00000000000000 Forwarding a received email to somebody. Andre Klapper ak-47@gmx.net Novell, Inc Forwarding a message

When you receive an email, you can forward it to other individuals or groups that might be interested.

You can forward a message as an attachment to a new message (this is the default setting, see Default settings), inline (in your message without the > character before each line), or quoted (with > character before each line).

Attachment forwarding is best if you want to send the full, unaltered message to someone else. Inline or Quoted forwarding is best if you want to send portions of a message, or if you have a large number of comments on different sections of the message you are forwarding.

To forward a message that you are reading:

Click MessageForward, the Forward button in the toolbar, or press CtrlF to use the default forwarding method. In case you want to use a different forward method, click MessageForward as or the small dropdown arrow next to the Forward button in the toolbar to choose the method.

Select a recipient for the message. The subject is already entered, although you can alter it if you want.

Add your comments on the message in the text field.

Click Send or press CtrlReturn.

如果您要转发的邮件中含有附件,当您选择“作为附件转发”时,原来的附件也会转发出去。但选择“嵌入转发”时,附件不会被转发。

Default settings

The default settings for replying and forwarding can be changed under EditPreferencesComposer PreferencesGeneralReplies and ForwardsForward style.

usr/share/help-langpack/zh_CN/evolution/exporting-data-mail.page0000644000373100047300000000230212306123672026613 0ustar langpacklangpack00000000000000 How to export mail data from Evolution. Andre Klapper ak-47@gmx.net Exporting mail data

To save an email to a file in mbox format, select an email and click FileSave as mbox... or right-click on the message and click Save as mbox....

The same steps apply to save a complete mail folder, but you have to mark all messages in it first.

You can select all messages in a folder by clicking EditSelect All or pressing CtrlA.

usr/share/help-langpack/zh_CN/evolution/mail-default-CC-and-BCC.page0000644000373100047300000000341612306123672026730 0ustar langpacklangpack00000000000000 Make somebody always receive copies of your sent mail. Andre Klapper ak-47@gmx.net Default CC and BCC

You can set email addresses that should always receive copies of your sent mail (either as CC visible for all recipients, or BCC not visible for other recipients) in the Defaults section of the mail account editor (EditPreferencesMail AccountsEditDefaults).

usr/share/help-langpack/zh_CN/evolution/mail-filters.page0000644000373100047300000001124612306123673025345 0ustar langpacklangpack00000000000000 Use filter rules to sort your mail automatically into folders. Andre Klapper ak-47@gmx.net Novell, Inc Using Filters

Message filters apply actions on messages based on conditions that you have defined. You can define filters for both incoming and outgoing emails.

Filters will be automatically applied to incoming messages for local accounts (such as POP). Mail servers for remote accounts (such as IMAP) often already filter mail directly on the server as this is faster. If you want to apply your Evolution filters to remote accounts, you can enable this under EditPreferencesMail AccountsEditReceiving OptionsOptionsApply filters to new messages in Inbox on this server.

To manually apply filters on messages in a folder, select the messages and click MessageApply Filters or press CtrlY.

You can select all messages in a folder by clicking EditSelect All or pressing CtrlA.

Creating a Filter

Click EditMessage Filters, or click MessageCreate Rule and select the criterion the filter will be based on.

Click Add.

Enter a name in the Rule name field.

Define the conditions for the rule. For each condition, you first select which part of the message will be checked and then define the comparison.

For more information on the available conditions see Available Filter conditions.

If you want to define multiple conditions, define under Find items if any or if all conditions have to apply, and click Add Condition and repeat the previous step.

Select the Actions for the Filter in the Then section.

For more information on the available actions see Available Filter actions.

The order of filters is important. Filters are applied to the original message in sequence, like a recipe.

If your first filter has a Stop Processing rule, then all the email messages that match this filter will ignore all the succeeding filters.

When you move a message to another folder, "moving" actually means appending a copy of the message to the destination folder and marking the original message for deletion. So any subsequent filter rules will be applied to the original message that is now marked for deletion. Therefore moving a message should usually appear last in a sequence of filter rules.

If you want to define multiple actions, click Add Action and repeat the previous step. For example, if you want no other existing filters to be applied choose Stop Processing as the second action in the list.

Click OK.

编辑过滤器

Click EditMessage Filters.

Select the filter.

Click Edit.

Make the desired corrections, then click OK twice.

删除过滤器

Click EditMessage Filters.

Select the filter.

Click Remove.

Click OK.

usr/share/help-langpack/zh_CN/evolution/mail-filters-actions.page0000644000373100047300000000513212306123673027000 0ustar langpacklangpack00000000000000 Available actions for setting up filtering. Andre Klapper ak-47@gmx.net Novell, Inc Available Filter actions

移至文件夹:

将邮件移到您指定的文件夹中。

复制到文件夹:

复制一份邮件的拷贝到您指定的文件夹中。

删除:

将邮件标记为删除。在您销毁邮件或清空回收站之前邮件都是可以还原的。

停止处理:

如果您想要让所有其它过滤器忽略该邮件,可以选择该项。注意只有列在这个特殊的过滤规则之后的过滤才会被忽略。

Set Label:

Adds a label to a message.

分配颜色:

给邮件标记一种您选择的颜色。

分配计分:

给邮件分配一个数值分数。

调整计分:

更改您设置的分值。

设置状态:

设置邮件的状态。状态可以是回复,草稿,重要,已读或者垃圾邮件。

取消状态:

如果邮件有状态设置,取消状态。如果邮件未设置任何状态,则不进行任何操作。

蜂鸣:

使系统蜂鸣。

播放声音:

选择让Evolution播放一个声音文件。

运行程序:

让Evolution运行一个程序。

管道到程序:

Sends the message to an application of your choice. No return value is expected. This feature can be used to create automatic Web postings from email messages or to perform additional message post processing not supported by Evolution.

Forward to:

Forwards the message to another email address.

usr/share/help-langpack/zh_CN/evolution/calendar-recurrence.page0000644000373100047300000000267212306123673026664 0ustar langpacklangpack00000000000000 Repeating appointments. Andre Klapper ak-47@gmx.net Novell, Inc Using Recurrence

If you have an appointment that takes place regularly, you can define its recurrence by clicking the Recurrence button in the Appointment Editor or by clicking OptionsRecurrence. You can then choose a time and date when the appointment stops recurring, and, under Exceptions, pick individual days when the appointment does not recur. Make your selections from left to right, and you form a sentence: "Every two weeks on Monday and Friday until January 3, 2015" or "Every month on the first Friday for 12 occurrences."

usr/share/help-langpack/zh_CN/evolution/intro-application.page0000644000373100047300000000322412306123673026406 0ustar langpacklangpack00000000000000 An introduction to Evolution. Brian Grohe grohe43@gmail.com Andre Klapper ak-47@gmx.net 启动

Evolution is a stable and versatile personal information manager for the GNOME project. Evolution allows you to keep your calendars, mail, address books and tasks in one place.

By default Evolution opens the mail view. This is were you can view all your mail. You can change to other views of the application by going to the bottom of the left pane in the window (the so-called "switcher") and selecting the desired view. Learn more about the elements of the main window.

When Evolution starts, it remembers the last view that you used. However you can also explicitly start Evolution in a specific view. For the calendar view, use the command evolution --component=calendar in the Terminal application. Other available options are "mail", "contacts", "tasks", and "memos".

usr/share/help-langpack/zh_CN/evolution/memos-usage-add-memo.page0000644000373100047300000000541112306123673026655 0ustar langpacklangpack00000000000000 Adding a memo to your memo list. Andre Klapper ak-47@gmx.net Novell, Inc Adding a Memo

Click FileNewMemo, or press ShiftCtrlO.

Select a memo list in the List dropdown list.

Enter the memo information.

Click the Save button, or FileSave.

If you just want to quickly add a memo by entering a summary you can directly enter it in the list of memos.

You can also define a category, or a classification for the memo, or add an attachment.

Shared Memos

Shared Memos are like mail messages except they are scheduled for a particular day and appear on the calendar for that date. You can use shared memos to show vacations, holidays, pay days, birthdays, and so on. Posted shared memos are placed in your Calendar on the date you specify. They are not placed in your Mailbox or in any other user's Mailbox.

To send a Shared Memo,

Click FileNewShared Memo, or press ShiftCtrlH.

在“组织者”一栏旁边的下列列表中选择组织者的账户。

In the To field, type a username, then press Enter. Repeat this for additional users.

Select the task list (under List) in which you would like to create the entry.

在”概要“一栏输入简短的概要。

In the Start Date field, type the date this shared memo should appear in the recipients' calendars.

Click the Save button, or FileSave.

usr/share/help-langpack/zh_CN/evolution/mail-send-and-receive-automatically.page0000644000373100047300000000214312306123673031650 0ustar langpacklangpack00000000000000 Check automatically and regularly for new received mail. Andre Klapper ak-47@gmx.net Automatically check for new mail

If you want Evolution to check automatically for new messages, enable the option Check for new messages every ... minutes in the Receiving Options page of the mail account settings (accessible via EditPreferencesMail AccountsEditReceiving Options) and select the frequency in minutes.

usr/share/help-langpack/zh_CN/evolution/change-switcher-appearance.page0000644000373100047300000000250412306123673030122 0ustar langpacklangpack00000000000000 Changing the display of the window buttons in the lower left corner. Andre Klapper ak-47@gmx.net Changing the Switcher appearance

The display of the window buttons in the lower left corner (Mail, Contacts, Calendar, Tasks and Memos) can be changed via ViewSwitcher Appearance. This can be helpful if you have a small display. You can also completely hide them.

The available options are:

Icons and Text

Icons Only

Text Only

工具栏样式

Show Buttons

usr/share/help-langpack/zh_CN/evolution/mail-receiving-options-exchange-mapi.page0000644000373100047300000000503712306123673032046 0ustar langpacklangpack00000000000000 Receiving options for Exchange MAPI accounts. Andre Klapper ak-47@gmx.net Exchange MAPI receiving options
接收电子邮件

On the Receiving Email page (accessible via EditPreferencesMail AccountsEditReceiving Email):

Enter the address of the email server in the Server field and enter your username for that server.

Enter the Domain name for that server.

If you are in an organizational environment, you may want to contact your system administrator for more information.

Select your authentication type in the Authentication list, or click Check for Supported Types to have Evolution check for supported authentication mechanisms. Some servers do not announce the authentication mechanisms they support, so clicking this button is not a guarantee that available mechanisms actually work.

选择您是否要使用安全连接 (SSL 或 TLS)。

Click Authenticate and enter your password.

接收选项

On the Receiving Options page (accessible via EditPreferencesMail AccountsEditReceiving Options):

If you want Evolution to check automatically for new messages, click the Check for new messages every ... minutes option and select the frequency in minutes.

You can also define if Evolution checks for new messages in all folders.

usr/share/help-langpack/zh_CN/evolution/mail-composer-reply.page0000644000373100047300000000645412306123673026662 0ustar langpacklangpack00000000000000 Answering a received email. Andre Klapper ak-47@gmx.net Novell, Inc Replying to a message
回复邮件消息。

To reply to a message, select the message to reply to in the message list and click the Reply button in the toolbar, or right-click within the message and select Reply to Sender. This opens the message composer. The To: and Subject: fields are already filled, although you can alter them if you prefer. In addition, the full text of the old message is inserted into the new message, either in grey with a blue line on one side (for HTML display) or with the > character before each line (in plain text mode), to indicate that it is part of the previous message.

If you are reading a message with several recipients, you can use Reply to All instead of Reply. If there are large numbers of people in the Cc: or To: fields, this can save substantial amounts of time.

使用“回复所有人”的功能

Susan sends an email to a client and sends copies to Tim and to an internal company mailing list of co-workers. If Tim wants to make a comment for all of them to read, he uses Reply to All, but if he just wants to tell Susan that he agrees with her, he uses Reply. His reply does not reach anyone that Susan put on her Bcc list, because that list is not shared with anyone.

If you subscribe to a mailing list, and want your reply to go just to the list rather than to the sender, select Reply to List instead of Reply or Reply to All.

键盘快捷键

活动

Shortcut keys

回复发件人

CtrlR

Reply to Mailing List

CtrlL

回复全部

ShiftCtrlR

Default settings

The default settings for replying and forwarding can be changed under EditPreferencesComposer PreferencesGeneralReplies and ForwardsReply style.

usr/share/help-langpack/zh_CN/evolution/mail-composer-mail-signatures.page0000644000373100047300000000213212306123673030620 0ustar langpacklangpack00000000000000 Using email signatures at the bottom of a message you send. Andre Klapper ak-47@gmx.net Working with email signatures

A signature consists of one or more lines of text (or even a picture) that will be added at the end of an email that you send. It can contain contact information or other things. A signature always begins with two dashes and a space (-- ).

The term "signature" is also differently used in terms of encryption.

usr/share/help-langpack/zh_CN/evolution/mail-layout-changing.page0000644000373100047300000000132112306123673026757 0ustar langpacklangpack00000000000000 Changing the display of the mail window (message list columns and widescreen). Andre Klapper ak-47@gmx.net Changing the mail window layout usr/share/help-langpack/zh_CN/evolution/mail-account-management.page0000644000373100047300000000176712306123673027452 0ustar langpacklangpack00000000000000 Adding, editing and managing mail accounts. Andre Klapper ak-47@gmx.net 账号管理
Common Account Types
Local Account Types
Corporate Account Types
usr/share/help-langpack/zh_CN/evolution/mail-spam-settings.page0000644000373100047300000001056012306123673026471 0ustar langpacklangpack00000000000000 How to set up handling unwanted junk/spam mail. Andre Klapper ak-47@gmx.net Patrick O'Callaghan Pete Biggs April Gonzales loonycookie@gmail.com Novell, Inc 垃圾信息设置
Tools

Evolution lets you check for unwanted junk or spam emails by using the Bogofilter or SpamAssassin tools. To use these tools, you need to make sure that they are installed via the software management tool of your distribution.

You might need to install Bogofilter or SpamAssassin to perform these steps.

Install bogofilter

Install spamassassin

SpamAssassin works through a set of predefined rules, hence it can determine spam straight away. Bogofilter does not come with a default set of spam criteria so it will not automatically filter anything after installing it. You must train it first to make it work. You can modify the actions of SpamAssassin by training it as well.

Junk Mail Folder

Messages that are marked as junk (either manually by the user or automatically via SpamAssassin or Bogofilter) will be moved to the Junk mail folder.

垃圾邮件首选项

The junk mail options discussed in this page refer only to POP and Local Delivery accounts. For handling junk mails on IMAP accounts, see the Evolution settings under EditPreferencesMail AccountsEditReceiving Options.

You can modify how Evolution handles junk mail by changing the Junk Mail Preferences:

Click EditPreferences or press ShiftCtrlS.

Select Mail Preferences.

Click on the Junk tab. Here, you can specify the following:

Checking incoming mail for junk messages.

Deleting junk messages upon exit, and how often junk messages are to be deleted.

Checking custom headers for junk.

Marking messages as not junk if the sender is in the address book.

The default junk filter.

Bogofilter and SpamAssassin options.

For more information and specific Bogofilter or SpamAssassin configuration questions it is recommended to check out the Frequently Asked Questions for Bogofilter resp. SpamAssassin.

usr/share/help-langpack/zh_CN/evolution/mail-composer-priority.page0000644000373100047300000000250712306123673027403 0ustar langpacklangpack00000000000000 Setting a priority for messages to be sent. Andre Klapper ak-47@gmx.net Novell, Inc Prioritizing outgoing messages

You can prioritize a message to be sent, so that the recipient sees its relative importance. To prioritize a message, click OptionsPrioritize Message in the composer window.

Evolution will ignore the message priority of incoming messages because the recipient should decide whether the message is important or not. You can set the "Important" flag for any messages.

usr/share/help-langpack/zh_CN/evolution/mail-composer-html-link.page0000644000373100047300000000317512306123673027423 0ustar langpacklangpack00000000000000 Insert a link to a website in the mail composer. Andre Klapper ak-47@gmx.net Novell, Inc Inserting a Link in HTML

You can insert links into the email:

Select the text that you want to turn into a link.

Either click InsertLink... in the menubar, or right-click on the selected text and click Insert Link.

Enter the address in the URL field.

Click Close.

Alternately, you can also use the icon in the second bar below the Subject line.

If you do not want a special link text you can just enter the address of the link directly. It will be automatically recognized as a link.

usr/share/help-langpack/zh_CN/evolution/problems-debug-how-to.page0000644000373100047300000000245112306123673027075 0ustar langpacklangpack00000000000000 How to provide good information when tracking down a problem. Andre Klapper ak-47@gmx.net How to track down a problem

As a first hint, error messages will be either displayed in the statusbar or between the tool bar and the search bar.

To further track down a problem, some debug options are listed on the Evolution project website.

To contact the Evolution community for help, please see How to get help.

usr/share/help-langpack/zh_CN/evolution/mail-composer-html-table.page0000644000373100047300000000276112306123673027555 0ustar langpacklangpack00000000000000 Insert a table in the mail composer. Andre Klapper ak-47@gmx.net Novell, Inc Inserting a Table in HTML

You can insert a table into the email (at the current position of the cursor):

Click InsertTable... in the menubar.

选择行数与列数。

Define the type of layout for the table.

Optionally: Select a background color or image for the table.

Click Close.

Alternately, you can also use the icon in the second bar below the Subject line.

usr/share/help-langpack/zh_CN/evolution/contacts-usage-add-contact.page0000644000373100047300000000353312306123673030054 0ustar langpacklangpack00000000000000 Adding a contact to your address book. Andre Klapper ak-47@gmx.net Adding a Contact

Click FileNewContact, or right-click in a blank space in the list of contacts and click New Contact..., or press ShiftCtrlC.

Select the address book under Where: to which it will be added.

Enter the contact information. Note that there are several tabs.

You can add a photograph to the contact by clicking the large field (showing a stylized person) next to Full Name and Categories.

Click OK.

Contact Quick-Add from the Email Window

You can also add a contact directly from an email.

Right-click on the email address in the message header.

Select Add to Address Book....

Either press Edit Full to bring up the full Contact Editor, or click OK to directly add the contact to the chosen address book.

usr/share/help-langpack/zh_CN/evolution/mail-receiving-options-unix-mbox-spool-file.page0000644000373100047300000000376512306123673033343 0ustar langpacklangpack00000000000000 Receiving options for standard Unix mbox spool file accounts. Andre Klapper ak-47@gmx.net Standard Unix mbox spool file receiving options
接收电子邮件

On the Receiving Email page (accessible via EditPreferencesMail AccountsEditReceiving Email):

Choose the file by clicking on the button next to File in the Configuration section. This will open a file chooser window.

接收选项

On the Receiving Options page (accessible via EditPreferencesMail AccountsEditReceiving Options):

If you want Evolution to check automatically for new messages, click the Check for new messages every ... minutes option and select the frequency in minutes.

If you want Filters to be automatically used for new messages in your inbox, enable Apply filters to new messages in INBOX.

usr/share/help-langpack/zh_CN/evolution/memos-usage.page0000644000373100047300000000163612306123673025201 0ustar langpacklangpack00000000000000 On adding, editing, and deleting memos. Andre Klapper ak-47@gmx.net Add, Edit and Delete Memos

Currently there is no support for syncing memos with the Tomboy or Gnote applications.

usr/share/help-langpack/zh_CN/evolution/tasks-usage-add-task.page0000644000373100047300000000426012306123673026670 0ustar langpacklangpack00000000000000 Adding a task to your task list. Andre Klapper ak-47@gmx.net Novell, Inc Adding a Task

Click FileNewTask, or press ShiftCtrlT.

Select a task list in the List dropdown list.

Enter the task information.

Click the Save button, or FileSave.

If you just want to quickly add a task by entering a summary you can directly enter it in the list of tasks.

You can also define a time zone, a category, or a classification for the task, or add an attachment.

已安排任务

使用Evolution可以将一项任务分配给多个人。

When you assign a task, you can specify the attendees in several categories, such as "chair" or "required". When you save the task, each attendee is sent an email with the task information, which also gives them the option to respond.

This is similar to meetings.

To create an Assigned Task, click FileNewAssigned Task.

usr/share/help-langpack/zh_CN/evolution/mail-organizing.page0000644000373100047300000000164012306123673026041 0ustar langpacklangpack00000000000000 On folders, sorting, searching, filters, search folders, and labels. Andre Klapper ak-47@gmx.net Sorting and organizing mail

Evolution provides several options to organize your mail according to your needs.

Advanced Options
usr/share/help-langpack/zh_CN/evolution/mail-encryption-s-mime-signing-encrypting.page0000644000373100047300000000404712306123673033071 0ustar langpacklangpack00000000000000 Signing or encrypting messages via S/MIME that you send. Andre Klapper ak-47@gmx.net Novell, Inc Signing or encrypting messages

After you have added your certificate, you can sign or encrypt a message by clicking OptionsS/MIME Sign or S/MIME Encrypt from the message composer menu.

给每封邮件添加签名或加密:

Select EditPreferencesMail Accounts.

Select the mail account to encrypt the messages in.

Click Edit.

Click the Security tab.

In the Secure MIME (S/MIME) section, click Select next to Signing Certificate and specify the path to your signing certificate, or click Select next to Encryption Certificate and specify the path to your encryption certificate.

选择合适的选项。

Click OK.

邮件的主题不会被加密。所以,切勿在主题中填写敏感信息。

usr/share/help-langpack/zh_CN/evolution/tasks-searching.page0000644000373100047300000000503212306123673026037 0ustar langpacklangpack00000000000000 Searching tasks. Max Vorobuov vmax0770@gmail.com Andre Klapper ak-47@gmx.net Novell, Inc Searching Tasks
Searching in a Single Task

To find text in the displayed task, select EditFind in Task... from the main menu.

Searching Across Tasks
usr/share/help-langpack/zh_CN/evolution/import-single-files.page0000644000373100047300000000234112306123673026642 0ustar langpacklangpack00000000000000 Importing single files. Andre Klapper ak-47@gmx.net Importing single files

To import single files (mail, calendar data or contacts):

Click FileImport.

In the Importer Type tab, click Import a single file.

Choose the file.

The file type will be automatically determined.

Choose the destination (e.g. the folder in Evolution) for the imported data.

You can also import contacts that you have received as a vCard attachment of an email from its attachment menu.

usr/share/help-langpack/zh_CN/evolution/intro-main-window.page0000644000373100047300000001663612306123673026347 0ustar langpacklangpack00000000000000 An explanation of the areas shown in the Evolution window. Andre Klapper ak-47@gmx.net Barbara M. Tobias barbtobias09@gmail.com Novell, Inc The <app>Evolution</app> main window

Evolution provides functionality for E-Mail, Calendar, Contacts, Tasks, and Memos. You can switch to another functionality by using the "Switcher" buttons in the lower left corner. Depending on the displayed functionality also the displayed elements in the window differ.

E-Mail

The Evolution mail main window

Corresponding elements in the mail main window:

Menu bar

Tool bar

Folder list

Search bar

Message list

Switcher

Preview pane

Status bar

Folder list

The folder list gives you a list of the available folders for each account. To see the contents of a folder, click the folder name and its contents are displayed in the message list.

For more information see Using Folders.

Message List

The message list displays all the read and unread messages that you have in the chosen folder. To view an email in the preview pane, click the message in the message list.

Switcher

The switcher at the bottom of the side bar lets you switch between the Evolution tools: Mail, Contacts, Calendars, Memos and Tasks.

For more information see Changing the Switcher appearance.

You can disable the folder list and the switcher side bar by toggling ViewLayoutShow Side Bar or pressing F9.

Preview Pane

预览面板显示当前在邮件列表中被选中的邮件的内容。

You can disable the preview pane by toggling ViewPreviewShow Message Preview.

日历

Elements in the calendar main window:

Menu bar

Tool bar

Calendar list

Search bar

Appointment list

Task list

Month pane

Memo list

Switcher

Status bar

Appointment List

The appointment list displays all your scheduled appointments in the time frame selected.

Month Pane

月份面板显示一个月的视图。要显示其它月份,把竖向的边框拖到右侧。您也可以在月份面板中选择一段日期以在约会列表中显示该段日期。

Task list and Memo list

Tasks and memos are just displayed for your convience and are not associated to any appointments. Use the switcher to go to their main windows.

联系人

Elements in the contacts main window:

Menu bar

Tool bar

Address book list

Search bar

Contacts list

Switcher

Contact preview

Status bar

You can disable the contact preview by toggling ViewPreviewContact Preview.

usr/share/help-langpack/zh_CN/evolution/mail-filters-not-working.page0000644000373100047300000000665112306123673027625 0ustar langpacklangpack00000000000000 Fix problems with mail filters that do not sort and organize mail as expected. April Gonzales loonycookie@gmail.com Andre Klapper ak-47@gmx.net Mail filters are not working
Order of Filters

The order of filters is very important. They are applied to the original message in sequence, like a recipe.

If your first filter has a Stop Processing rule, then all messages that match this filter will ignore all succeeding filters.

When you move a message to another folder, "moving" actually means appending a copy of the message to the destination folder and marking the original message for deletion. So any subsequent filter rules will be applied to the original message that is now marked for deletion. Therefore moving a message should usually appear last in a sequence of filter rules.

To check the rules and their order of an existing filter, review its actions in the Then section by editing the filter.

Using Several Mail Clients

Another thing you have to keep in mind is that filters depend on the "new" flag that is set on the server when a particular email message is initially fetched from the server. If you use another email client aside from Evolution, your filters may not work automatically.

Logging Filter Actions

If it is still unclear why filters do not work as expected, you can enable logging filter actions.

Close Evolution.

Open the Terminal application.

Run the command gsettings set org.gnome.evolution.mail filters-log-actions true

Run the command gsettings set org.gnome.evolution.mail filters-log-file "/home/myusername/my-filter-log" and replace myusername by your username. This will create a text file named my-filter-log in your home directory. Note that the absolute path to the file name must be entered; a syntax like ~ or $HOME will not work.

启动 Evolution。

Fetch mail to apply filters.

Open the file my-filter-log with a text editor to see which filter actions have been applied.

Note that you can disable filter logging again by using the command gsettings set org.gnome.evolution.mail filters-log-actions false

You can also use the dconf-editor application to do this.

usr/share/help-langpack/zh_CN/evolution/calendar-layout-appointment-display.page0000644000373100047300000000471012306123673032036 0ustar langpacklangpack00000000000000 Define the displaying of appointments in the calendar. Andre Klapper ak-47@gmx.net Novell, Inc Appearance of Appointments

The following calendar-related options are available under EditPreferencesCalendar and TasksDisplay.

常规

时间分隔:

设置在日历视图上(日视图)显示的时间分隔线。

在周视图和月视图中显示约会结束时间:

Evolution会在周视图和月视图中显示每个约会的结束时间(如果时间不重叠的话)。

在月视图中压缩周末:

选择该项的话,在月视图中周末只会显示一栏而不会是两栏。

显示周数目:

在日历中对应的周旁边显示周数目。

Show recurring events in italic in bottom left calendar

通过一个周来滚动月视图

日期/时间格式

You can change the format of the Date column by setting your preferred format.

The placeholders in the format expression are strftime formats. For a complete list of available strftime formats, run date --help in the Terminal application.

usr/share/help-langpack/zh_CN/empathy/irc-manage.page0000644000373100047300000000407012317332046024376 0ustar langpacklangpack00000000000000 如何在 Empathy 中使用 IRC。 Milo Casagrande milo@ubuntu.com Sindhu S sindhus@live.in

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

互联网中继聊天(IRC)

要在 Empathy 中使用 IRC,您必须安装 telepathy-idle 包。

Install telepathy-idle

IRC Chat Rooms and Conversations 聊天室和会话
Common IRC Problems 常见问题
usr/share/help-langpack/zh_CN/empathy/add-contact.page0000644000373100047300000000377212317332046024564 0ustar langpacklangpack00000000000000 添加某人到联系人列表。 Phil Bull philbull@gmail.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

添加某人到您的联系人列表

选择聊天添加联系人

账户 下拉列表中,选择您用来与您的联系人联系的账户。您的联系人需要使用与您选择的账户相同的服务。

标识符 一栏中,输入这种服务中您的联系人的登录 ID,用户名,显示名或其他合适的标识符。

别名 中,输入您希望这个联系人显示在联系人列表中的名字。

点击添加将此人添加到您的联系人列表。

要添加联系人到您的联系人列表,您需要连接因特网和您的账户。

usr/share/help-langpack/zh_CN/empathy/send-file.page0000644000373100047300000000503512317332046024243 0ustar langpacklangpack00000000000000 从您的计算机发送文件给您的联系人。 Phil Bull philbull@gmail.com Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

发送文件

联系人列表窗口,执行下列操作之一:

右键点击要向其发送文件的联系人,然后选择发送文件

Click on the contact you want to send a file, and choose Edit ContactSend file.

选择要发送的文件,并点击发送

文件传输窗口会被显示。

请等待您的联系人接受文件传输,或点击停止来终止传输。

传输结束之后,就可以关闭文件传输窗口了。

如果窗口中列出了很多已经完成的传输,点击清除可以清空列表。这只会将列表清空,而不会从您的计算机上删除这些文件。

只有使用下列服务才能发送文件:JabberGoogle Talk附近的人

要向别人发送文件,您需要连接到互联网,或本地局域网。

usr/share/help-langpack/zh_CN/empathy/irc-join-room.page0000644000373100047300000000357412317332046025067 0ustar langpacklangpack00000000000000 加入一个 IRC 频道。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

加入一个 IRC 聊天室

您可以加入您已经连接的所有 IRC 网络上的 IRC 聊天室(也称为 IRC 频道)。要连接一个 IRC 网络,参见 and

联系人列表 窗口,选择 聊天室加入

账户 下拉列表中,选择与您想要使用的网络对应的 IRC 账户。

聊天室 文本框中,输入您想要加入的频道的名称。IRC 频道名称以井号(#)开头。

点击加入来进入房间。

要加入多个房间,您需要对每个房间重复上面的步骤。

usr/share/help-langpack/zh_CN/empathy/introduction.page0000644000373100047300000000275612317332046025125 0ustar langpacklangpack00000000000000 介绍 Empathy 即时聊天工具。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

介绍

Empathy 是 GNOME 桌面的即时通讯程序。它支持文字消息,语音和视频呼叫,文件传输,支持最常用的即时通讯系统,包括 MSN 和 Google Talk.

Empathy 可以帮助您在工作中更好的合作,也可以帮助您与您的朋友们保持联系。

使用 Empathy,您可以将所有的会话组织在同一个窗口中,或者为不同类型的会话使用不同的窗口,还可以很容易地搜索之前的会话,或者共享您的桌面,只需要两次点击。

<gui>联系人列表</gui>窗口 Empathy 主窗口

Empathy 主窗口。

usr/share/help-langpack/zh_CN/empathy/geolocation.page0000644000373100047300000000221212317332046024672 0ustar langpacklangpack00000000000000 使用和了解 Empathy 中的地理位置。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

地理位置
地理位置
修复常见问题
usr/share/help-langpack/zh_CN/empathy/prob-conn-acctdisabled.page0000644000373100047300000000356112317332046026674 0ustar langpacklangpack00000000000000 您要连接的即时通信账户没有在账户列表中启用。 Phil Bull philbull@gmail.com Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

我的账户没有启用

如果当您尝试开始一个新会话或者加入房间时,要使用的即时聊天账户没有在下拉的账户列表中启用,您的账户信息可能不正确。

确保您已经连接到互联网,或者一个本地网络。

选择编辑账户,再选择不工作的账户。

再次输入您的用户名和密码,以确保它们是正确的。

检查高级选项卡中的所有细节是否正确。您应当可以从即时通讯服务商的网站上找到这些信息。

Check that the account is switched on.

usr/share/help-langpack/zh_CN/empathy/disable-account.page0000644000373100047300000000432512317332047025434 0ustar langpacklangpack00000000000000 使 Empathy 不要自动登录一个账户。 Milo Casagrande milo@ubuntu.com Shaun McCance shaunm@gnome.org

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

禁用一个账户

您可以禁用一个账户以阻止 Empathy 自动登录这个账户而不必将其彻底删除。您可能想要禁用、启用某个账户如果您只想偶尔登录这个账户,但又想使用 Empathy 中的其他账户。

From the Contact List window, choose Edit Accounts, or press F4.

在窗口左侧的账户列表中,选择您想要禁用的账户。

On the right side of the window, switch it off.

To re-enable the account, switch it on.

usr/share/help-langpack/zh_CN/empathy/geolocation-privacy.page0000644000373100047300000000474312317332047026361 0ustar langpacklangpack00000000000000 发送了什么信息,发送给谁了? Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

地理位置隐私
什么信息被发送了

有可能被发送的信息:您所在的国家,地区,地方,区域,街道,建筑,楼层,房间,邮政编码及经纬度,您的速度和方向。

您的地理位置信息的精度和质量取决于软件或者用于发现您的位置的设施。

不同的网络可能有不同的精度设置,可能发送不同的信息。使用外部设备,如 GPS 或手机,可以增加发送的信息的精度。

当隐私模式被启用后,只有您所在的城市信息会被发送,即使您正在使用外部设备。

谁会看到这些发送出去的信息

只有您的联系人可以看到您的地理位置。

什么是隐私模式

隐私模式是精度降低模式,它会降低发送给您的联系人的地理位置信息的精度。隐私模式默认开启。

隐私概述

Empathy 中一些关于地理位置隐私的选项的概况。

地理位置默认不开启。

隐私模式默认被激活

即使在使用精度更高的外部设备,隐私模式也会发挥作用。

只有您的联系人可以看到您的位置。

usr/share/help-langpack/zh_CN/empathy/geolocation-supported.page0000644000373100047300000000300012317332047026712 0ustar langpacklangpack00000000000000 支持地理位置的服务和及其兼容性。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

支持的设备

目前,只有 Jabber 服务与地理位置功能兼容。要使用地理位置,您和您的联系人必须有 Jabber 账户。

而且,您使用的服务器也需要支持地理位置功能。大多 Jabber 服务器都支持。要了解更多,请参看您的服务提供者的网站文档。

兼容性

Empathy 的地理位置功能与其他一些地理位置信息服务并不兼容,如 Google LatitudeYahoo Fire EggleBrightkite

usr/share/help-langpack/zh_CN/empathy/irc-start-conversation.page0000644000373100047300000000337512317332047027023 0ustar langpacklangpack00000000000000 向一位 IRC 联系人发起会话。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

与 IRC 中某人聊天

您可以在公共的 IRC 聊天室之外与其他的 IRC 用户进行私人聊天。要与另一位 IRC 用户进行会话:

在一个 IRC 聊天室的联系人列表中,双击您想要聊天的用户。或者,右键点击用户的姓名并选择 聊天

IRC 聊天室的联系人列表与 Empathy 的联系人列表不同。它包含了您加入的这个 IRC 聊天室中的用户列表。不同的聊天室可能有不同的联系人列表。

IRC 聊天室的联系人列表通常位于窗口右侧。如果您没有看到它,选择 对话显示联系人列表

usr/share/help-langpack/zh_CN/empathy/change-status.page0000644000373100047300000000401012317332047025134 0ustar langpacklangpack00000000000000 改变您的状态以向您的联系人表明您是否闲暇。 Phil Bull philbull@gmail.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

改变您的状态

您可以改变您的状态,从而向联系人表明您现在是否闲暇。Empathy 允许您从一些定义好的状态中选择一个。

点击 联系人列表 窗口顶部的下拉列表。

从列表中选择一个状态。

See for a list of the built-in statuses and what they mean. You can also add custom status messages to provide more information about your availability to your contacts.

如果您一段时间不使用计算机,或屏幕保护开始运行,您的状态会自动变为“离开”。

usr/share/help-langpack/zh_CN/empathy/prob-conn-name.page0000644000373100047300000000405312317332047025210 0ustar langpacklangpack00000000000000 “Name in use” 主窗口中显示了一个错误提示信息,“用户名已被占用”。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

我收到“用户名已经被占用”的错误提示信息

这种错误出现在您尝试连接到 IRC 账户,然而您使用的昵称正在被该网络上其他人使用的情况下。

点击错误提示信息上的编辑图标。

昵称文本框中,输入一个新昵称。

如果您在所用的网路中注册了这个昵称,请为该昵称设置密码。更多信息参见

Switch the account off, and then switch it on to try to reconnect to the service.

usr/share/help-langpack/zh_CN/empathy/prob-conn-auth.page0000644000373100047300000000407412317332047025234 0ustar langpacklangpack00000000000000 主窗口中显示了一个错误提示信息,“验证失败”。 Phil Bull philbull@gmail.com Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

我收到“验证失败”的错误提示信息

这种错误发生在您的即时通信服务器无法确认您的身份,不允许您连接时。比如,因为某种原因,它无法识别您的用户名或者密码。

确保您已经连接到互联网,或者一个本地网络。

确保您已经在要连接的服务上注册了账户。如果没有账户,多数服务都不会允许您连接。

点击错误提示信息上的编辑图标。

再次输入您的用户名和密码,以确保它们是正确的。

取消选择已启用,然后再次选中以重新连接到服务器。

usr/share/help-langpack/zh_CN/empathy/share-desktop.page0000644000373100047300000000525112317332047025147 0ustar langpacklangpack00000000000000 向您的联系人展示您的桌面。 Milo Casagrande milo@ubuntu.com Ekaterina Gerasimova kittykat3756@gmail.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

共享您的桌面

您可以和联系人共享桌面。使用这个功能,您可以向联系人展示您的桌面,来寻求帮助或帮助联系人解决问题。

要共享您的桌面,您的系统中必须安装支持此功能的 VNC 服务器。Vino,GNOME 的 VNC 服务器,就有这项功能。

联系人列表窗口,执行下列操作之一:

Select the contact you want to share your desktop with and choose EditContact Share My Desktop.

右键点击您想要共享您桌面的联系人的名字,然后选择共享我的桌面

您选择的联系人会收到一个查看您桌面的邀请。要查看您的桌面,他们需要接受邀请。

在您的桌面共享程序中,您可以断开您的联系人到您的计算机的连接。

如果需要更多关于如何使用远程桌面查共享程序的信息,请参看其帮助。

当您与其他人共享您的桌面的时候,可能会出现系统性能降低和网络速度下降的现象。

并非您的所有联系人都可以使用这个功能。他们必须使用 2.28 或更新版本的 Empathy 并且在安装了兼容的远程桌面查看器程序。

usr/share/help-langpack/zh_CN/empathy/hide-contacts.page0000644000373100047300000000232312317332047025120 0ustar langpacklangpack00000000000000 联系人列表 中隐藏离线联系人。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

隐藏离线的联系人

一般情况下,Empathy 会显示您所有的联系人:您可以与之进行会话的在线的联系人,和那些离线的联系人。

要隐藏离线的联系人:

From the Contact List window, choose View Offline Contacts, or press Ctrl H.

要再次显示离线的联系人,重复上面的步骤。

usr/share/help-langpack/zh_CN/empathy/favorite-rooms.page0000644000373100047300000000622712317332047025356 0ustar langpacklangpack00000000000000 设立,加入或管理聊天室收藏。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

聊天室收藏
收藏一个聊天室

加入一个聊天室。

关于如何加入 IRC 聊天室,参见

关于如何发起或加入群组聊天,参见

在会话窗口,选择 会话收藏聊天室

加入收藏的聊天室

联系人列表窗口,执行下列操作之一:

F5 键。

选择 聊天室加入已收藏的聊天室,以加入您之前收藏的聊天室。

选择 聊天室,并选择您要加入的已收藏的聊天室。

要加入一个已收藏的聊天室,您必须连接互联网和您的账户。

管理聊天室收藏

联系人列表 窗口,选择 聊天室管理收藏夹

账户 下拉列表中,选择您要管理聊天室收藏的账户。

选择 全部 以看到搜有您收藏的聊天室。

选择您要管理的收藏:

选择 自动连接,则您连接到您的账户后,会自动加入这个聊天室。

点击 删除 以从收藏夹中删除这个聊天室。

完成后,点击 关闭

usr/share/help-langpack/zh_CN/empathy/index.page0000644000373100047300000000333412317332047023505 0ustar langpacklangpack00000000000000 Empathy Internet Messenger Empathy Internet Messenger Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

<media type="image" mime="image/png" src="figures/empathy-logo.png"> Empathy 网络聊天工具标识</media> Empathy 网络聊天工具
账户管理
联系人管理
文字聊天
语音和视频聊天
高级操作
常见问题
usr/share/help-langpack/zh_CN/empathy/import-account.page0000644000373100047300000000417012317332047025341 0ustar langpacklangpack00000000000000 从其他即时聊天程序中导入账户。 Peter Haslam peter.haslam@freenet.de Milo Casagrande milo@ubuntu.com Shaun McCance shaunm@gnome.org

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

导入已存在的账户

Empathy 第一次运行时,会提示您可以从其他即时通讯程序中导入账户。目前,支持的程序只有 Pidgin

第一次运行 Empathy,一个助理程序会提供若干选项以创建新账户。

选择 有,请导入我的账户信息 并点击 前进

选择每个您想要导入的账户旁的复选框。

点击应用

目前,您只能在第一次运行时的助理程序中导入账户。

usr/share/help-langpack/zh_CN/empathy/prob-conn.page0000644000373100047300000000174012317332047024272 0ustar langpacklangpack00000000000000 诊断连接到一个即时消息服务的常见问题。 Phil Bull philbull@gmail.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

连接到即时消息服务时的问题
usr/share/help-langpack/zh_CN/empathy/irc-commands.page0000644000373100047300000000145012317332047024747 0ustar langpacklangpack00000000000000 支持的 IRC 命令。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

支持的 IRC 命令

要查看支持的 IRC 命令的列表,在一个聊天室中输入/help并按Enter

所有可用命令都有一个简单的用法描述。

usr/share/help-langpack/zh_CN/empathy/geolocation-not-showing.page0000644000373100047300000000321712317332047027153 0ustar langpacklangpack00000000000000 Empathy 没有发布我的地理位置。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

地理位置没有被公布。

如果您的联系人不能看到您的位置,可能是因为 Empathy 无法发现有一定精度的您的地理位置信息。

在这种情况下,您的位置信息不会被公布,但您仍可以看到您的联系人的位置信息。

如果您想要公布您的地理位置,您可以试一试使用 GPS 等外部设备。

要发布您的地理位置,您的 Jabber 服务器必须支持 Personal Eventing Protocal (PEP)。互联网上有人维护着一份支持 PEP 的服务器列表。Google Talk 目前不支持 PEP。

usr/share/help-langpack/zh_CN/empathy/status-icons.page0000644000373100047300000000574012317332047025035 0ustar langpacklangpack00000000000000 理解各种状态和状态图标。 Milo Casagrande milo@ubuntu.com Shaun McCance shaunm@gnome.org

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

状态的类别及其图标 <media type="image" mime="image/png" src="figures/available.png">Available icon</media> <gui>Available</gui>

当您在电脑旁并且有空和您的联系人聊天时,使用在线状态。您可以为此状态自定一条消息。

<media type="image" mime="image/png" src="figures/busy.png">Busy icon</media> <gui>Busy</gui>

使用忙碌以让您的联系人知道您当前不想聊天。他们仍然可以联系您,比如他们可能有急事需要讨论。默认地,当您忙碌时,Empathy 不会使用气泡提示和声音提示。您可以为此状态自定一条消息。

<media type="image" mime="image/png" src="figures/away.png">Away icon</media> <gui>Away</gui>

当您不在电脑旁时,使用离开状态。如果您一段时间内不使用电脑,或者屏幕保护打开了,Empathy 将自动设置您的状态为离开。默认地,当您离开时,Empathy 不会使用气泡提示和声音提示。您可以为此状态自定一条消息。

<media type="image" mime="image/png" src="figures/offline.png">Offline icon</media> <gui>Invisible</gui>

当您将状态设置为隐身时,您的联系人会看到您已离线。但您仍然连接着您的账户,并且可以看到您的联系人的状态,或者和他们聊天。

<media type="image" mime="image/png" src="figures/offline.png">Offline icon</media> <gui>Offline</gui>

将状态设置为离线将会断开您所有账户的连接。

usr/share/help-langpack/zh_CN/empathy/irc-send-file.page0000644000373100047300000000207512317332047025020 0ustar langpacklangpack00000000000000 Empathy 目前不支持 IRC 传文件。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

通过 IRC 传送文件

目前无法用 IRC 传送文件。

usr/share/help-langpack/zh_CN/empathy/video-call.page0000644000373100047300000000527412317332047024422 0ustar langpacklangpack00000000000000 同您的联系人进行视频聊天。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

开始视频聊天

If you have a webcam, you can call your contacts and have a video conversation with them. This feature only works with certain types of accounts, and it requires the other person to have an application that supports video calls.

联系人列表窗口,点击您想呼叫的联系人的名字旁的视频呼叫图标并选择视频呼叫

一个新窗口会被打开。连接建立后,您将在窗口底部看到已连接,以及总会话时间。

点击挂断以结束会话。

要将视频会话转为语音会话,选择 视频视频关闭

和一位元联系人进行视频聊天。

联系人列表窗口,右键点击该元联系人。

选择要聊天的联系人,然后在菜单中选择视频呼叫

要识别一个联系人是否是元联系人,将您的鼠标移动到联系人列表窗口中的一个联系人上,并停留几秒钟:一个小弹出消息会显示这个元联系人是由几个联系人组成的。

usr/share/help-langpack/zh_CN/empathy/prob-conn-neterror.page0000644000373100047300000000446012317332047026132 0ustar langpacklangpack00000000000000 主窗口中显示了一个错误提示信息,“网络错误”。 Phil Bull philbull@gmail.com Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

我收到“网络错误”的错误提示信息

这种错误在 Empathy 由于某种原因而无法和即时通讯服务器连上时出现。

此外,这种错误也在您试图不设置昵称而使用 IRC 账户时出现。

确保您已经连接到互联网,或者一个本地网络。

点击错误提示信息上的编辑图标。

检查高级选项卡中的所有细节是否正确。您应当可以从即时通讯服务商的网站上找到这些信息。

Switch the account off, and then switch it on to try to reconnect to the service.

代理支持

目前 Empathy 无法在代理下工作。

usr/share/help-langpack/zh_CN/empathy/prev-conv.page0000644000373100047300000000733012317332047024315 0ustar langpacklangpack00000000000000 浏览或搜索您之前的会话。 Milo Casagrande milo@ubuntu.com Shaun McCance shaunm@gnome.org

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

查看之前的会话

Empathy 自动保存您和联系人的所有文字会话。您可以搜索之前全部的会话或者根据联系人和日期浏览之前的会话。

您不需要连接到网络来查看和搜索您之前的会话。

浏览之前的会话

您可以按时间顺序浏览之前和联系人或在聊天室中的会话。

From the Contact List window, choose View Previous Conversations. Alternatively, press F3.

在左上的下拉列表中选择一个账户。下方会显示这个账户的联系人和聊天室列表。

选择一个联系人或聊天室以查看之前的会话。默认显示的是最近的会话。

您可以按日期浏览您的会话。如果在某日您所选择的账户有过会话,该日会以粗体显示。点击一个日期以选择它。点击月和年旁的箭头以浏览更早的日期。

You can search for text in the conversations by typing into the search field at the top. The matching conversations will be showed.

You can quickly view the previous conversations with one of your contacts from the Contact List window. Simply right click the contact and choose Previous Conversations. The Previous Conversations window will open with that contact already selected.

usr/share/help-langpack/zh_CN/empathy/add-account.page0000644000373100047300000000572412317332047024565 0ustar langpacklangpack00000000000000 Empathy 添加新账户。 Milo Casagrande milo@ubuntu.com Shaun McCance shaunm@gnome.org

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

添加一个新账户

您可以添加任何支持的服务的即时消息账户,以在 Empathy 中与您的联系人交流。对于某些账户提供商,这些步骤也允许您注册新账户。更多细节参见

From the Contact List window, choose Edit Accounts, or press F4.

Click +.

协议下拉列表,选择您要创建的账户类型。

如果您还没有注册账户,选择在服务器上创建新的账户。这个功能并不是对于每一种账户都可用,也可能对于某些账户提供商不可用。更多信息参见

Enter the required information. For most accounts, you will only need a login ID and a password. Some accounts may require additional information. See for more information.

点击应用

要改变账户在账户窗口中的作为标识的名字,在左侧的列表中选择账户,然后点击名字或者按空格键。编辑账户的名字,完成后按Enter

usr/share/help-langpack/zh_CN/empathy/overview.page0000644000373100047300000000446212317332047024247 0ustar langpacklangpack00000000000000 What instant messaging is and how you can use it. Aruna S aruna.evam@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

Overview of instant messaging

Instant messaging, sometimes abbreviated to IM, is a text-based means to communicate instantly over the internet and the local network. While some IM applications work with only one type of account, others, including Empathy, provide IM facilities by using accounts from different service providers. Some of these even support audio and video calling.

Video Conference

Group chats

Chat rooms

Some instant messaging applications can be used to connect to chat rooms, online places where like-minded people meet to talk. One popular means to connect to several chat rooms is the Internet Relay Chat, also known as IRC. IRC provides public chat rooms, which are open to anyone who creates an account on the IRC Server, and private chat rooms, which are password protected and open only to a select few.

usr/share/help-langpack/zh_CN/empathy/audio-video.page0000644000373100047300000001202312317332047024576 0ustar langpacklangpack00000000000000 语音或视频会话的条件。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

语音和视频支持

您的联系人也在使用支持语音和视频会话的程序时,您才可以和他们进行语音、视频会话。如果您的联系人可以进行语音或视频会话,您将在联系人列表中他们的姓名旁看到下列图标:

图标

描述

Icon for audio conversation

联系人可以进行语音聊天。

Icon for video conversation

联系人可以进行视频聊天。

要进行语音聊天,您需要有一块声卡,且您的操作系统必需支持它,还需要一个能正常工作的麦克风。

要进行视频聊天,您需要操作系统支持的摄像头,及可以正常工作的麦克风。

支持的账户类型

只有一些特定类型的账户支持语音或视频聊天。下表列出了每种类型的账户的语音、视频支持情况。

账户类型是由插件提供的。您的系统上不一定有以下列出的全部类型,也可能有一些类型没有在下面列出。插件的升级可能使下表中不支持语音或视频的账户类型获得支持。

服务

语音

视频

AIM

Facebook 聊天

gadugadu

Google Talk

Groupwise

ICQ

IRC

Jabber

MSN

myspace

qq

附近的人

sametime

silc

SIP

Yahoo!

zephyr

usr/share/help-langpack/zh_CN/empathy/audio-call.page0000644000373100047300000000523412317332047024411 0ustar langpacklangpack00000000000000 通过互联网呼叫您的联系人。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

开始语音聊天

您可以呼叫您的联系人,与他们进行语音聊天。这个功能仅对于一些特定类型的账户可用,并且需要另一个人使用的应用程序也支持语音呼叫。

联系人列表 窗口,点击您想呼叫的联系人的名字旁的 视频呼叫 图标并选择 语音呼叫

一个新窗口会被打开。连接建立后,您将在窗口底部看到已连接,以及总会话时间。

点击挂断以结束会话。

To turn an audio conversation into a video conversation, choose Video Video On.

向一位元联系人发起语音会话

联系人列表窗口,右键点击该元联系人。

选择您想要交谈的联系人,然后在菜单中选择语音呼叫

要识别一个联系人是否是元联系人,将您的鼠标移动到联系人列表窗口中的一个联系人上,并停留几秒钟:一个小弹出消息会显示这个元联系人是由几个联系人组成的。

usr/share/help-langpack/zh_CN/empathy/accounts-window.page0000644000373100047300000000273612317332047025527 0ustar langpacklangpack00000000000000 添加、修改和删除账户。 Shaun McCance shaunm@gnome.org

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

账户窗口

账户窗口允许您添加、修改和删除账户。

账户详细信息

对于大多数的账户,您只需要输入登录 ID 和密码。但有些账户或有些类型的账户可能需要额外的信息。

usr/share/help-langpack/zh_CN/empathy/remove-account.page0000644000373100047300000000415212317332047025324 0ustar langpacklangpack00000000000000 Empathy 中完全地删除一个账户。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

删除账户

如果你不想再使用某个账户,您可以从 Empathy 中完全地删除这个账户。如果您将来又希望在 Empathy 中使用这个账户了,您可以再添加这个账户。

From the Contact List window, choose Edit Accounts, or press F4.

在窗口左侧的账户列表中选择您想要删除的账户。

Click -.

一个弹出对话框会要求您确认删除。点击删除按钮来永久的删除这个账户。

即使删除了账户,Empathy 也不会删除这个账户的聊天记录。

usr/share/help-langpack/zh_CN/empathy/account-irc.page0000644000373100047300000001325712317332047024612 0ustar langpacklangpack00000000000000 连接 IRC 网络需要的额外信息。 Shaun McCance shaunm@gnome.org

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

IRC 账户详情

IRC 账户需要与其他类型的账户不同的信息。要创建 IRC 账户,您至少需要指定一个 IRC 网络和一个昵称。本页详细介绍了您可以为一个 IRC 账户提供的信息。

要在 Empathy 中使用 IRC,您必须安装 telepathy-idle 包。

<gui>Network</gui>

IRC 是一种开放的系统,它允许人们运行各自的 IRC 网络。每个网络是独立的,有特有的用户和聊天室。Empathy网络 下拉列表中列出了一些最流行的网络。您可以添加其他的网络。参看下面的

<gui>Nickname</gui>

您的昵称是您在 IRC 网络上的唯一性的名字。只有一个人可以使用某个特定的昵称。如果您得到错误信息,您需要改变您的昵称。

<gui>Password</gui>

一些服务器,尤其是那些私有网络,需要密码才能连接。如果您被授权使用,网络的管理员应当为您提供了密码。

NickServ 密码

在某些网络上,昵称可以通过一种叫做 NickServ 的服务被注册。Empathy 并不直接支持昵称密码。在某些网络上,包括流行的 freenode 网络,服务器密码会被自动转发给 NickServ,从而允许您设置此项向 NickServ 证明您自己。更多信息参见

<gui>Real name</gui>

除了昵称,您还可以提供您的真实姓名。其他用户查看您的信息时可以看到您的真实姓名。

<gui>Quit message</gui>

当您离线时,一个退出消息会被发送给所有您加入的聊天室和正在与您进行私人聊天的用户。设置此项以提供自定义的退出消息。

IRC Networks 网络

Empathy 包括了一份常用 IRC 网络的列表。如果您想使用其他的 IRC 网络,您可以将其添加到这个列表中。您也可以修改网络或从列表中删除网络。

要想列表中添加网络,点击添加

要修改列表中的网络,选择那个网络并点击编辑

要从列表中删除网络,选择要删除的网络并点击删除

在添加或修改一个网络时,您可以输入下列信息:

<gui>Network</gui>

这是您希望网络显示在网络列表中的名字。

<gui>Charset</gui>

这指明了网络上常用的字符编码。字符编码是计算机内部记录字符的一种特定方式。有许多不同的字符编码,您需要与其他用户使用同样的字符编码才能正确地看到他们的信息。

默认地,Empathy 使用 UTF-8,一种能够处理世界上大多数语言的现代化的字符编码。简体中文常用的编码还有 GB18030,GBK 和 GB2312。

<gui>Servers</gui>

一个 IRC 网络可能有许多服务器供您连接。当您连接到一个特定网络的服务器后,您可以和同一网络中所有服务器的用户交流。您可以为一个网络添加或删除服务器,使用添加删除按钮。

当一个服务器被选择后,点击服务器端口下方的字段来编辑它。或者,使用左右方向键来聚焦某个字段,并按空格键开始编辑。

选择 SSL 列中的复选框以加密与服务器间的所有通讯。注意这并不能意味着其他用户不能看到您在公共聊天室中的发言。

usr/share/help-langpack/zh_CN/empathy/set-custom-status.page0000644000373100047300000000674712317332047026035 0ustar langpacklangpack00000000000000 为您的状态添加、编辑或删除个人消息。 Jim Campbell jwcampbell@gmail.com Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

设置一个自定义消息

有时您也许想要为您的状态设置一个自定义消息,例如,让别人知道您可能在一段时间内不在。

可以根据不同的状态来设置自定义消息。

联系人列表窗口,点击顶部的下拉列表。

选择您希望添加自定义消息的状态。您必须选择有自定义消息标签标记的状态。

在窗口顶部的文本框中输入您的自定义消息,然后按Enter来设定这个消息。

If you want to set the custom message as a favorite, saving it in order to use it again, click on the little heart on the right of the text box where you wrote your custom message.

如果您不这么做,那么下次您使用 Empathy 的时候,这个自定义消息就不会再出现。它只在 Empathy 本次运行期间被保留。

Edit and remove a custom message

联系人列表窗口,点击顶部的下拉列表。

选择编辑自定义消息

要编辑自定义消息:

已保存的自定义状态中,选择您想要编辑的状态消息并双击它。

输入新的自定义消息并且按Enter来修改它。

要删除自定义消息:

已保存的自定义状态中,选择要删除的状态消息。

点击删除按钮。

完成后,点击关闭

When you edit a custom message, it will not be set as the current status message. You will need to select it from the Contact List window.

usr/share/help-langpack/zh_CN/empathy/account-jabber.page0000644000373100047300000000556212317332047025262 0ustar langpacklangpack00000000000000 Jabber 和 Google Talk 账户的高级选项。 Shaun McCance shaunm@gnome.org

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

Jabber 账户详情

大多 Jabber 账户只需要登录 ID 和密码就可以连接。但对于某些账户或某些网络,您可能需要在高级选项卡中输入一些额外的信息。通常,您不需要使用下面的这些高级选项。添加账户的一般指导参见

Google Talk 是一种 Jabber 账户。这些指南对 Google Talk 账户同样适用。

<gui>Encryption required (TLS/SSL)</gui> <gui>Ignore SSL certificate errors</gui>

只要有可能,Empathy 与 Jabber 服务器之间的通讯就会被加密。如果不可能加密,消息就可能被明文发送。选择需要加密以阻止不能加密时 Empathy 与 Jabber 服务器进行明文通讯。

有些 Jabber 服务器可能使用不合法的证书加密数据,或者使用来自未知的证书认证机构的证书。如果您信任您的服务器,您可以选择忽略 SSL 证书错误以允许使用不合法的证书进行加密通讯。

<gui>Resource</gui> <gui>Priority</gui>

如果您有多个应用程序(比如,在另一台计算机上)同时连接了您的账户,您可以设置“资源”以唯一地标识每一个连接的程序。默认地,Empathy 会使用 Telepathy 作为“资源”。

您可以设置优先级以指定哪一个程序优先收到您的联系人发送来的消息。新的消息会被发送给优先级最高的程序。

<gui>Override server settings</gui>

Empathy 会根据您的登录 ID 以默认的设置连接 Jabber 服务器。对某些 Jabber 服务器,您需要人工输入一些服务器设置。这些设置应该由您的 Jabber 服务提供商提供。

usr/share/help-langpack/zh_CN/empathy/geolocation-what-is.page0000644000373100047300000000314112317332047026247 0ustar langpacklangpack00000000000000 了解地理位置。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

什么是地理位置

地理位置允许您确定连接到网络的一台电脑或设备在地理上的真实位置。

通过 Empathy 中的地理位置,您可以:

公布您的地理位置给联系人。

查看联系人的地址位置并快速联系他们。

设置您的地理位置的精度及可以用来发现您的地理位置的设备。

您的联系人必须使用支持地理位置的程序,您才能看到他们的地理位置。

usr/share/help-langpack/zh_CN/empathy/license.page0000644000373100047300000000262012317332047024015 0ustar langpacklangpack00000000000000 法律信息。 许可

本作品在 CreativeCommons Attribution-Share Alike 3.0 Unported license下发布。

您可以自由:

<em>To share</em>

复制、分发或者传播作品。

<em>To remix</em>

修改作品。

需遵守一下条件:

<em>Attribution</em>

您必须按照作者或许可人指定的方式对作品署名(但不能以任何方式暗示他们认可您或者您对作品的使用)。

<em>Share Alike</em>

如果您改变、转换本作品或者以本作品为基础进行再创作,您应以相同、相似或者兼容的协议发布修改后的作品。

许可的全文参见 CreativeCommons 网站,或者阅读完整的通俗协议。

usr/share/help-langpack/zh_CN/empathy/link-contacts.page0000644000373100047300000000464212317332047025152 0ustar langpacklangpack00000000000000 将不同的联系人合并分割为一个联系人。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

合并和分割联系人

如果您的联系人有多个聊天服务的多个账户,您可以将他们合并成一个联系人。

产生的联系人称为一个元联系人:由多个不同联系人组成的联系人。

如果您有一个叫做 Jane Smith 的联系人,她使用三种不同的聊天服务:

janes@facebook

jane.smith@gmail

jane_smith@hotmail

您可以将这些联系人合并成一个 Jane Smith.

合并联系人

联系人列表 窗口,右键点击有不同账户的联系人,并选择 绑定联系人…

绑定联系人 窗口的左窗格,选择您想要关联起来的联系人。

点击 绑定.

当一个元联系人被创建后,您双击该联系人时默认使用的联系人是有最高的在线状态的联系人。

分割联系人

联系人列表 窗口中,右键点击要分割的联系人,并选择 绑定联系人…

点击 解除绑定

usr/share/help-langpack/zh_CN/empathy/irc-nick-password.page0000644000373100047300000000461212317332047025735 0ustar langpacklangpack00000000000000 保护您的昵称,以防其他 IRC 用户使用。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

在 IRC 中使用昵称和密码

在某些 IRC 网络上,您可以通过 NickServ 服务注册您的昵称。通过向 NickServ 发送特殊的消息,您可以设置密码来认证您自己。一些 IRC 聊天室可能不允许您加入,除非您有注册过的昵称。

Empathy 目前还不支持昵称注册。但一些 IRC 网络会自动向 NickServ 发送一个 服务器密码。在这样的网络上,您可以在 Empathy 中使用这样的密码向 NickServ 认证您自己。流行的 freenode 网络就有这个功能。

设置一个 IRC 密码:

From the Contact List window, choose Edit Accounts, or press F4.

在左侧的对话框中选择一个 IRC 账户

密码 一栏中,输入您注册您的昵称时使用的密码。

点击应用

这些说明只是允许您在特定的 IRC 网络上使用密码保护的昵称。目前在 Empathy 中还不能注册 IRC 昵称或修改密码。

usr/share/help-langpack/zh_CN/empathy/geolocation-turn.page0000644000373100047300000000331212317332047025663 0ustar langpacklangpack00000000000000 Empathy 中如何激活和禁用地理位置。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

激活/禁用地理位置

选择编辑首选项

选择位置标签。

选择 向我的联系人公布位置信息 以激活地理位置。

要禁用地理位置,请取消选择。

要提高您的位置的精度,请取消选择 降低位置信息精度

如果您有 GPS 这样的外部设备,或者想要发送更加精确的位置信息,在位置来源选项卡中选择适当的选项。

usr/share/help-langpack/zh_CN/empathy/send-message.page0000644000373100047300000000407712317332047024756 0ustar langpacklangpack00000000000000 发送消息给一个您的联系人。 Phil Bull philbull@gmail.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

向某人发送消息

联系人列表窗口中,双击要与之聊天的联系人的名字。

一个新窗口会被打开。在窗口底部的文本框中输入一条消息,然后按Enter发送。

向一位元联系人发送消息

联系人列表窗口,右键点击该元联系人。

选择您想要与之聊天的联系人,并在菜单中选择 聊天

要识别一个联系人是否是元联系人,将您的鼠标移动到联系人列表窗口中的一个联系人上,并停留几秒钟:一个小弹出消息会显示这个元联系人是由几个联系人组成的。

usr/share/help-langpack/zh_CN/empathy/create-account.page0000644000373100047300000001236512317332047025277 0ustar langpacklangpack00000000000000 为某种支持的服务注册账户。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

注册一个新账户

大多账户类型需要您在使用 Empathy 这样的即时通讯软件连接之前先建立账户。但对于某些账户提供商,您可以使用 Empathy 来注册新账户,使用与 添加账户 相同的步骤。

这一页是关于建立各种类型的账户的。您应当已经从您的账户提供商那里得到了登录 ID 和密码,以及其他使用 Empathy 连接这个账户需要的信息。

Facebook

Facebook 是最常用的社交网络之一。它允许用户对自己进行个性化的描述并与朋友们交流。

要使用 Facebook 与您的朋友们交流,您需要在其网站上建立一个新账户:www.facebook.com。

Jabber

Jabber 是一种开放的即时通讯系统。像 email 一样,Jabber 允许您选择账户提供商,并与其他 Jabber 用户交流,无论他们使用哪里账户提供商。

您需要在某个 Jabber 服务提供商那里建立账户。有许多 Jabber 服务提供商,Jabber.org 是很流行的一个。

如果您使用 Google Mail 或者 Google Talk,那么您已经拥有 Jabber 账户了。Google Talk 就是一个 Jabber 服务。您只需要使用您的 Google Mail 地址和密码在 Empathy 中连接。

附近的人

要使用这个服务,您并不需要在某个服务提供商那里创建账户,只需要连接到一个本地网络,比如一个无线热点。它会自动发现网络中使用这个服务的其他用户。

更多信息参见

SIP

SIP 是一种允许用户通过互联网进行语音和视频会话的开放系统。您需要在某个 SIP 服务提供商处创建账户。您可以和其他的 SIP 用户交流,无论他们的 SIP 服务提供商与您是否相同。

由于技术上的差别,免费的 Ekiga.net 服务目前在 Empathy 中还不能使用。

有些 SIP 服务提供商允许用您的计算机呼叫一般的电话。通常,您需要订阅某种付费服务才能使用这个功能。

IRC

您不需要注册账户就可以使用 IRC。尽管您在 Empathy 中添加 IRC 账户时指定了一个昵称,这个昵称只是您每次连接时才建立。如果有其他用户在使用这个昵称,您需要选择一个其他昵称。

有些 IRC 网络上有一种叫做 NickServ 的服务,允许用户保护他们的昵称。更多信息参见

有些 IRC 服务器是被密码保护的。您需要知道密码才能连接到这些服务器。通常,这样的服务器是私有的。

专有的服务

许多不同的公司或组织开发了一些专营的即时消息服务。Empathy 允许您连接大多常见服务的既存账户。要为这样的服务创建账户,您需要访问其网站并同意其使用条款。

AIM

ICQ

MSN

Yahoo!

usr/share/help-langpack/zh_CN/empathy/irc-join-pwd.page0000644000373100047300000000251412317332047024677 0ustar langpacklangpack00000000000000 进入有密码保护的 IRC 聊天室。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

加入一个受保护的 IRC 聊天室

在某些 IRC 网络上,私人的 IRC 房间可以被密码保护。如果您知道这密码,按照下面的步骤加入:

如往常一样加入房间。

Empathy 会提示您输入密码。输入这个 IRC 聊天室的密码并点击 加入

usr/share/help-langpack/zh_CN/empathy/salut-protocol.page0000644000373100047300000000301112317332047025355 0ustar langpacklangpack00000000000000 理解附近的人(People Nearby)功能 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

什么是“附近的人”?

附近的人(People Nearby)服务是一个无服务器的通讯服务:您不需要连接并认证到一个中央服务器来使用这个功能。

这类无服务器的通讯系统只局限于本地局域网,并且不需要互联网链接。

会自动的发现在同一个局域网中使用这个服务的人,并且可以给他们发送消息甚至文件,想其它服务一样。

所有现代的本地局域网都应该可以支持这类服务。

usr/share/help-langpack/zh_CN/empathy/group-conversations.page0000644000373100047300000000712112317332047026423 0ustar langpacklangpack00000000000000 开始和您的联系人进行群组聊天,或加入群组聊天。 Milo Casagrande milo@ubuntu.com

知识共享-相同方式共享 (Creative Commons Share Alike) 3.0

群组聊天

在群组聊天中,您可以和不止一位联系人同时进行文字交谈。

要进行群组聊天您需要注册有 Jabber 账户或者 Google Talk 账户,或者“附近的人”账户。

您只能和那些与您使用同样的服务的联系人进行群组聊天。

开始群组聊天

联系人列表 窗口,选择 聊天室加入

账户 下拉列表中,选择一个账户用来进行群组聊天。

服务器 文本框中,输入将会承载这次聊天的服务器名称。

如果要使用当前服务器,请将其留空。

聊天室 文本框中,输入您为这次群组聊天起的名字。

这将是您进行群组聊天的聊天室的名字。这个名字会被大家看到以使大家可以加入。您不能建立一个私人的聊天室。

要邀请其他联系人加入这次群组聊天,在 联系人列表 窗口,选择您想要邀请的联系人,并进行下列操作中的某一项:

右键点击联系人,并选择 邀请到聊天室

选择 编辑联系人邀请到聊天室

如果您打开了不止一个群组聊天,选择您想要邀请联系人加入的那个。

加入群组聊天。

联系人列表 窗口,选择 聊天室加入

展开聊天室列表选项卡来查看所有存在的房间。

双击房间的名称加入。

并非所有的聊天室都可以加入。有些聊天室可能需要密码,有些只有收到邀请才能加入。Empathy 不支持这些房间。

usr/share/help-langpack/zh_CN/eog/commandline.page0000644000373100047300000000344712307574665024011 0ustar langpacklangpack00000000000000 Command Line The eog command can open any number of images in various modes. Tiffany Antopolski tiffany@antopolski.com Fabiana Simões fabianapsimoes@gmail.com

Creative Commons Share Alike 3.0

The command line

To start the Image Viewer from the Terminal, type eog.

You can open a specific file by typing the filename after the eog command:

eog image.jpeg

You can open a specific folder by typing the folder name after the eog command:

eog folder

To see all the images in a folder at once, you may wish to browse the image gallery.

Open an image in fullscreen mode eog --fullscreen image.jpeg
Open image in a new instance eog --new-instance image.jpeg
Open a folder in slideshow mode eog --slide-show Pictures/
usr/share/help-langpack/zh_CN/eog/preferences.page0000644000373100047300000001055712307574665024024 0ustar langpacklangpack00000000000000 Image view, slideshow and plugins. Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

首选项

This topic explains all of the settings that you can change in the image viewer. Click EditPreferences to start changing the preferences.

Image view preferences Image enhancements

Select Smooth images when zoomed out to enable image smoothing when you zoom in and out. This makes low-resolution (pixelated) pictures look better by smoothing out jagged edges.

If you enable Automatic orientation, pictures will be automatically rotated according to their Exif metadata. This is information about a picture that is automatically inserted by a digital camera, and can include details on which way up the camera was held when the picture was taken. For example, when automatic orientation is enabled, portrait photos are automatically rotated upright. The rotation is not saved until you save the rotated image.

Automatic orientation does not work with all pictures; only pictures taken using a camera that saves Exif orientation metadata will be rotated.

Transparent parts

Select one of the following options to determine how the transparent parts of a picture are displayed, if it has any:

As check pattern:

将图像任何透明部分显示为检查图案

As custom color:

Displays any transparent parts of the image in a solid color that you specify by clicking on the color selector button.

As background:

Displays any transparent parts of the image in the Background color, if As custom color under Background is checked. Otherwise, the default background color is used.

Slide show preferences

To customize slideshow settings:

Under Image Zoom you can select if you would like pictures that are smaller than the screen to be expanded so that they fit the screen.

Under Sequence you can select how many seconds each picture should be displayed for (between 1 and 100) before the next picture is shown.

Check Loop sequence if you want the slideshow to repeat continuously. If unchecked, the slideshow will start at the picture you selected, and finish at the last picture in the folder.

Plugin preferences

Here you can check/uncheck any additional features you would like to activate or deactivate. The picture on the left shows the plugins that are available by default.

You may also wish to install the eog-plugins package, which contains plugins providing a number of extra features. After installing it, you will be able to activate additional plugins, like the ones shown in the picture on the right.

usr/share/help-langpack/zh_CN/eog/default.page0000644000373100047300000000306712307574665023145 0ustar langpacklangpack00000000000000 Make image viewer the default application for viewing pictures. Tiffany Antopolski tiffany@antopolski.com Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

Open pictures in the image viewer by default

If you want to make the image viewer the default program that opens certain image file types:

In the files app, right click the file and choose Properties.

Go to the Open With tab. A list of Recommended Applications will appear.

Select the Image Viewer and click Set as default.

If Image Viewer is not on the Recommended Applications list, click Show other applications. Select Image Viewer from the list that appears and click Set as default.

点击 关闭.

In future, when you double-click a file of the same type, it will open up in the image viewer.

usr/share/help-langpack/zh_CN/eog/plugin-python-console.page0000644000373100047300000000271112307574665025771 0ustar langpacklangpack00000000000000 The Python console can be used to add extra functions and run scripts in the image viewer. Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

Python console

The image viewer has a plugin system which uses the Python scripting language. If you activate the Python console, you can gain direct access to a Python interpreter from inside the image viewer, which you can then use to write scripts or programmatically manipulate images, for example.

Before you can activate the Python console, you will need to install eog-plugins.

Once eog-plugins is installed, click Edit Preferences and go to the Plugins tab.

Check Python Console and click Close.

点击 工具Python 控制台 已开启控制台.

usr/share/help-langpack/zh_CN/eog/index.page0000644000373100047300000000306312307574665022624 0ustar langpacklangpack00000000000000 Help for the Eye of GNOME Image Viewer. <media type="image" src="figures/eog-trail.png"/> Eye of GNOME Image Viewer Eye of GNOME Image Viewer Tiffany Antopolski tiffany.antopolski@gmail.com 2011 <media type="image" src="figures/eog-logo.png">Eye of GNOME logo</media> Eye of GNOME Image Viewer
View pictures
Edit pictures
Print pictures
Add extra features
Advanced
Frequently asked questions
Tips and tricks
Get involved
usr/share/help-langpack/zh_CN/eog/plugin-zoom-width.page0000644000373100047300000000206412307574665025112 0ustar langpacklangpack00000000000000 Adjusts the zoom to fit a picture's full width into the window. Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

Zoom to fit picture width

Activate the Zoom to fit image width plugin if you want pictures to be expanded to fill the full width of the window.

To do this, click EditPreferences and go to the Plugins tab. Then, check Zoom to fit image width and click Close.

In order to add this functionality, you will need to have installed eog-plugins.

usr/share/help-langpack/zh_CN/eog/zoom.page0000644000373100047300000000353312307574665022503 0ustar langpacklangpack00000000000000 Enlarge the picture on the screen by clicking ViewZoom In. Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

Zoom

You can zoom in and out to show more or less of a picture on the screen at once. This is useful if you want to see a big picture in its entirety, or if you want to inspect the fine details of a picture.

You can zoom using the mouse wheel. Scroll up to zoom in or scroll down to zoom out.

You can also zoom using the buttons on the toolbar. To zoom in, click the Enlarge the image icon, and to zoom out click the Shrink the image icon. These look like "plus" and "minus" signs.

Alternatively, click ViewZoom In or ViewZoom Out.

To view the picture in its original, unscaled size, click ViewNormal Size. This is the same as the "100%" zoom level.

Zoom to best-fit the window

You can choose to zoom in so that the picture fits fully in the window, even if you resize it. Click ViewBest Fit to do this.

usr/share/help-langpack/zh_CN/eog/view.page0000644000373100047300000000561112307574665022470 0ustar langpacklangpack00000000000000 Press Left and Right to flip between pictures, or use the image gallery to show them all. Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

View all pictures in a folder

You can quickly browse through all of the pictures in a folder by opening one of the pictures and then clicking Next and Previous (for example). You can also view an image gallery, with small previews of all of the pictures in a folder shown at once.

Browse through all pictures in a folder

If you have a folder containing several pictures, you can conveniently browse through all of the pictures without having to open them individually.

Open any one of the pictures from the folder you want to browse through.

Click Next and Previous in the toolbar, or press the Right and Left keys, to flip between pictures.

Alternatively, you can use the Up and Down keys, or Space bar and Backspace keys. You can also click GoPrevious Image and GoNext Image.

You can browse through the pictures in fullscreen mode by clicking ViewFullscreen or by pressing F11. Use the keyboard keys to flip between pictures in fullscreen mode.

To return to normal viewing, press Esc or F11.

usr/share/help-langpack/zh_CN/eog/format-change.page0000644000373100047300000000641012307574665024227 0ustar langpacklangpack00000000000000 You can convert pictures from one image format to another. You can do this in a batch for multiple pictures. Tiffany Antopolski tiffany@antopolski.com Fabiana Simões fabianapsimoes@gmail.com

Creative Commons Share Alike 3.0

Convert to a different file format

Pictures are saved in a specific file format, like JPEG or PNG. You can convert from one file format to another.

Convert a single picture to a different file format

Click ImageSave As. The Save Image window will pop up.

In the name field, change the file extension to the file format you want to convert your image to. The file extension is the part of the file name after the period.

For example, to convert a JPEG (.jpg) file into a Bitmap file (.bmp):

original file: image.jpg

new file: image.bmp

Click Save, and a new file will be saved in the new format. The old file (in the old format) will remain where it was, and will not be deleted.

The image viewer tries to guess which file format to save a picture in based on the file extension you choose. If it doesn't recognize the file extension you type, or if you don't know which one to use, click Supported image files in the Save Image window. This will allow you to choose the file format from the drop down box.

Convert multiple pictures to a different format

You can convert a number of pictures from one file format to another in one go. This is useful if you have a lot of pictures that need converting.

In the image gallery, press and hold down the Ctrl key and select the pictures you want to convert one by one. Alternatively, press CtrlA to select all of the pictures.

Click ImageSave as. A window will appear (shown below).

The converted pictures will be saved in the current folder by default. If you want to save them elsewhere, change the Destination folder.

Select the file format you want to convert the pictures to from the drop-down list to the right of the Filename format box.

点击 保存.

usr/share/help-langpack/zh_CN/eog/translate.page0000644000373100047300000000330512307574665023511 0ustar langpacklangpack00000000000000 Localize the Image Viewer Tiffany Antopolski tiffany.antopolski@gmail.com 2011 Michael Hill mdhillca@gmail.com

Creative Commons Share Alike 3.0

Help translate

The Image Viewer user interface and documentation is being translated by a world-wide volunteer community. You are welcome to participate.

There are many languages for which translations are still needed.

To start translating you will need to create an account and join the translation team for your language. This will give you the ability to upload new translations.

You can chat with GNOME translators using irc. People on the channel are located worldwide, so you may not get an immediate response as a result of timezone differences.

Alternatively, you can contact the Internationalization Team using their mailing list.

usr/share/help-langpack/zh_CN/eog/plugin-fullscreen-double-click.page0000644000373100047300000000220612307574665027504 0ustar langpacklangpack00000000000000 Activate fullscreen mode by double-clicking a picture. Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

Full-screen with double-click

If you like, you can make it so that pictures are shown full-screen when you double-click them in the image viewer.

To do this, click EditPreferences and go to the Plugins tab. Then, check Fullscreen with double-click and click Close.

Now, double-clicking on an image will toggle between the fullscreen and normal (window) modes.

usr/share/help-langpack/zh_CN/eog/flip-rotate.page0000644000373100047300000000402612307574665023743 0ustar langpacklangpack00000000000000 Horizontal/vertical, clockwise/counter-clockwise Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

Flip or rotate pictures

If your pictures are the wrong way up or back-to-front, you can flip or rotate them so that they look right.

Flip a picture

Click Edit.

选择 横向翻转纵向翻转.

If you want to keep the picture flipped in this way, click ImageSave.

Otherwise, don't save the picture and it will be returned to its original orientation the next time you open it.

Rotate a picture

Click Edit.

Select either Rotate Clockwise or Rotate Counter-clockwise.

If you want to keep the picture rotated in this way, click ImageSave.

Otherwise, don't save the picture and it will be returned to its original orientation the next time you open it.

You can use the tools in the toolbar to do this instead. You can also use the keyboard shortcuts:

顺时针旋转

CtrlR

逆时针旋转

CtrlShiftR

usr/share/help-langpack/zh_CN/eog/legal.xml0000644000373100047300000000102712307574665022463 0ustar langpacklangpack00000000000000

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.

As a special exception, the copyright holders give you permission to copy, modify, and distribute the example code contained in this document under the terms of your choosing, without restriction.

usr/share/help-langpack/zh_CN/eog/plugin-fullscreen-background.page0000644000373100047300000000216112307574665027266 0ustar langpacklangpack00000000000000 Enables changing background color in fullscreen mode. Fabiana Simões fabianapsimoes@gmail.com

Creative Commons Share Alike 3.0

Change fullscreen background color

If you like, you can change the background color in fullscreen mode.

To do this, make sure that eog-plugins is installed. Then, click EditPreferences and go to the Plugins tab. Then, check Fullscreen Background and click Preferences. Choose the color you want in fullscreen mode and click Close

Now, when in fullscreen mode, the background color is the one you selected.

usr/share/help-langpack/zh_CN/eog/open.page0000644000373100047300000000252112307574666022455 0ustar langpacklangpack00000000000000 Pictures open in a new window. Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

Open a picture

Pictures should automatically open in the image viewer when you double-click them in the files file browser. If this is not the case, you may need to make the image viewer the default application for viewing pictures.

Each picture you double-click will open in a new image viewer window by default, but you can view multiple pictures in one window if you like.

You can also open pictures from within the image viewer itself:

Click ImageOpen (or press CtrlO). The Open Image window will appear.

Select the picture you want to open and click Open.

usr/share/help-langpack/zh_CN/eog/plugin-send-by-mail.page0000644000373100047300000000242012307574666025267 0ustar langpacklangpack00000000000000 Easily send pictures by attaching them to a new email. Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

Send pictures by email

You can add a button that provides a convenient way of sending pictures to people by email.

To do this, click EditPreferences and go to the Plugins tab. Then, check Send By Mail and click Close. This will give you a ToolsSend by mail menu item.

In order to enable this feature, you need to have installed eog-plugins.

Evolution mail must be set up to connect to your email account for this to work.

usr/share/help-langpack/zh_CN/eog/print.page0000644000373100047300000000361112307574666022651 0ustar langpacklangpack00000000000000 Click ImagePrint and then use the tabs to change print settings. Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

Print a picture

To print the picture that you are currently viewing:

Click ImagePrint.

Under the General tab, choose the printer you want to use and the number of copies you want to print.

If you go to the Image Settings tab, you can adjust the Position and Size of the picture.

The position of the image on the page can also be adjusted by dragging it around in the preview.

If you are using high-quality photo paper, go to the Page Setup tab and select the correct Paper Type. You should also go to the Image Quality tab and choose a high quality setting, so that you get the best possible photo quality.

点击 打印

Note that some of the tabs mentioned above are not displayed for certain printer models. This is because the printer drivers for those printers don't allow some settings to be changed. So, for example, if you don't see an Image Quality tab, that probably means that the printer drivers that are being used don't support those settings.

usr/share/help-langpack/zh_CN/eog/slideshow.page0000644000373100047300000000320012307574666023510 0ustar langpacklangpack00000000000000 Click ViewSlideshow to show all of the pictures in a folder as a slideshow. Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

幻灯片放映

To view all of the pictures in a folder as a slideshow:

Open one of the pictures from the folder.

点击 查看幻灯片模式 或按 F5.

A full-screen slideshow will start. Every few seconds a new picture will be displayed. If you would like to move through the slideshow more quickly, or return to an image which has already been displayed, you can use the Left and Right arrow keys to manually move backward and forward.

要退出幻灯片模式, 按 EscF5.

You can change slideshow settings like how long it should show each picture for. See the topic on slideshow preferences for more information.

usr/share/help-langpack/zh_CN/eog/plugin-picasa.page0000644000373100047300000000223012307574666024245 0ustar langpacklangpack00000000000000 Easily upload pictures to PicasaWeb directly from the Image Viewer. Fabiana Simões fabianapsimoes@gmail.com

Creative Commons Share Alike 3.0

Upload photos to <app>PicasaWeb</app>

PicasaWeb is a photo album service that lets you share pictures with people online. You can add a shortcut button that provides a convenient way of uploading pictures to PicasaWeb.

To do this, make sure that eog-plugins is installed. Then, click EditPreferences, go to the Plugins tab and check PicasaWeb Uploader.

This will give you a convenient ToolsUpload to PicasaWeb menu item.

usr/share/help-langpack/zh_CN/eog/formats-view.page0000644000373100047300000000313112307574666024135 0ustar langpacklangpack00000000000000 The image viewer can display pictures in a wide range of image formats, including PNG, JPEG, and TIFF. Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

Supported image formats

The image viewer is able to open pictures in the following formats:

ANI - 动画

BMP - Bitmap

GIF - 可交换的图形格式

ICO - Windows 图标

JPEG/JPG - Joint Photographic Experts Group

PCX - PC Paintbrush

PNG - 可移植网络图像

PNM - PPM 工具包的可移植 Anymap 格式

RAS - Sun 光栅

SVG - 可缩放的矢量图形

TGA - Targa

TIFF - 标记图像文件格式

WBMP - 无线网络位图

XBM - X 位图

XPM - X 像素图

If you try to open a picture in an unsupported format, you will get a Could not load image 'image_name'. error.

usr/share/help-langpack/zh_CN/eog/bug-filing.page0000644000373100047300000000462712307574666023550 0ustar langpacklangpack00000000000000 File a bug against the image viewer. Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

Report a problem with the image viewer

The image viewer is maintained by a volunteer community. You are welcome to participate.

If you experience problems with the image viewer (for example, if it crashes or behaves unexpectedly), or if it is missing some feature that you think it should have, please file a bug report by clicking on the link . Bug reports are how software developers keep track of problems so that they can fix them.

To participate, you need an account which will give you the ability to file bugs and make comments. Also, you need to register so you can receive updates by email about the status of your bug. If you don't already have an account, just click on the New Account link to create one.

Once you have an account, log in, and click File a BugCoreeog. Before reporting a bug, please read the bug writing guidelines, and please browse for the bug to see if it already exists.

To file your bug, choose the component in the Component menu. If you are not sure which component your bug pertains to, choose general.

If you are requesting a new feature, choose enhancement in the Severity menu. Fill in the Summary and Description sections and click Commit.

Your report will be given an ID number, and its status will be updated as it is being dealt with. Bugs can take a while to be fixed, and the software developers might ask you for further information to help them figure out what the problem is.

usr/share/help-langpack/zh_CN/eog/plugin-slideshow-shuffle.page0000644000373100047300000000211212307574666026437 0ustar langpacklangpack00000000000000 Show photos in a random order when playing a slideshow. Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

Slideshow shuffle

You can make it so that pictures are shown in a random order when you start a slideshow.

To do this, click EditPreferences and go to the Plugins tab. Then, check Slideshow Shuffle and click Close.

In order to enable this feature, you need to have installed eog-plugins.

usr/share/help-langpack/zh_CN/eog/desktop-background.page0000644000373100047300000000207712307574666025310 0ustar langpacklangpack00000000000000 Set your favorite picture as your desktop background/wallpaper. Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

Make the current picture your desktop background

To set the picture that you are currently viewing as the background image on your desktop, click ImageSet as Wallpaper .

This will immediately change the background to the picture you're viewing. You will then be asked if you would like to modify the picture's appearance using the background preferences window. If you click Hide, the message will disappear.

usr/share/help-langpack/zh_CN/eog/formats-save.page0000644000373100047300000000176512307574666024134 0ustar langpacklangpack00000000000000 JPEG,PND, BMP和其他文件格式. Tiffany Antopolski tiffany.antopolski@gmail.com Fabiana Simões fabianapsimoes@gmail.com

Creative Commons Share Alike 3.0

Formats supported for saving pictures

The image viewer can save pictures in the following file formats:

JPEG/JPG

PNG

BMP

TIFF

It may be possible to save other image formats depending on the system configuration.

usr/share/help-langpack/zh_CN/eog/toolbar.page0000644000373100047300000000422712307574666023163 0ustar langpacklangpack00000000000000 Show, hide or edit the toolbar. Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

工具栏

The toolbar provides easy access to features like zooming and rotating. You can hide it if you find it distracting or it it takes up too much room, however.

显示或隐藏工具栏

To toggle whether the toolbar is displayed or not, click ViewToolbar.

添加, 删除和重新安排工具栏中的工具.

By default, the toolbar contains only a basic set of tools. You can add useful extra ones by modifying the toolbar:

Make sure that the toolbar is not hidden.

点击 编辑工具栏.

The toolbar editor contains the items that are not in the toolbar (see the picture, below). There is also a separator that you can use to group toolbar items together.

To add new items to the toolbar, drag them from the toolbar editor to the toolbar.

To rearrange items on the toolbar, drag them to a new position.

You can remove items from the toolbar by dragging them from the toolbar to the toolbar editor.

When you have finish editing the toolbar, click Close in the toolbar editor window.

要还原工具栏到默认的设置, 在编辑窗口里点击 还原到默认 .

usr/share/help-langpack/zh_CN/eog/plugins.page0000644000373100047300000000563112307574666023202 0ustar langpacklangpack00000000000000 Install plugins to access extra features. Tiffany Antopolski tiffany.antopolski@gmail.com Fabiana Simões fabianapsimoes@gmail.com

Creative Commons Share Alike 3.0

插件

You can install the eog-plugins package to get extra plugins for the image viewer. Plugins add additional features, like the ones listed below.

You can install the eog-plugins package using your Linux distribution's package manager.

install eog-plugins

The following features are included in eog-plugins:

Date in statusbar: Shows the image date in the window statusbar.

Exif display: Displays camera settings and histograms for digital photos.

Fullscreen Background: Enables changing background in fullscreen mode.

Fullscreen with double-click: Activate fullscreen mode with double-click.

Map: Display the geolocation of a digital photo on a map.

PicasaWeb Uploader: Upload your pictures to PicasaWeb.

Python Console: A Python scripting console for the image viewer.

Send By Mail: Send a picture to a friend by attaching it to a new email.

Slideshow Shuffle: Shuffles images in slideshow mode.

Zoom to fit image width: Adjusts the zoom to have the pictures's full width fit into the window.

You can manage plugins by using the the Plugins tab in the Preferences window.

usr/share/help-langpack/zh_CN/eog/edit.page0000644000373100047300000000332112307574666022440 0ustar langpacklangpack00000000000000 Click ImageOpen with to edit a picture using an external image editor. Tiffany Antopolski tiffany@antopolski.com Fabiana Simões fabianapsimoes@gmail.com

Creative Commons Share Alike 3.0

Edit or delete a picture
Edit a picture

The image viewer can only be used to view pictures; it can't edit them. For that, you must use a picture editing application, like the GIMP image editor. To open a picture for editing in a different application:

点击 图像打开方式, 或右击图像.

Select the application you want to use to edit the picture.

When you are finished editing, save it and close the other application.

The image viewer will detect that the picture has been changed and will reload it.

Delete a picture

To delete a picture that you don't want any more, click EditMove to Trash, or right-click the picture and select Move to Trash.

usr/share/help-langpack/zh_CN/eog/introduction.page0000644000373100047300000000204412307574666024235 0ustar langpacklangpack00000000000000 Welcome to the Eye of GNOME Image Viewer. Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

简介

Eye of GNOME is an image viewer. With it, you can view pictures of almost any type. It can handle large collections of pictures, and can display a slideshow. You can also make basic changes to pictures, like rotating or flipping them, or converting them to a different file format.

usr/share/help-langpack/zh_CN/eog/shortcuts.page0000644000373100047300000001110312307574666023546 0ustar langpacklangpack00000000000000 A list of all keyboard shortcuts. Tiffany Antopolski tiffany.antopolski@gmail.com

Creative Commons Share Alike 3.0

Keyboard shortcuts

This is a list of all of the keyboard shortcuts that you can use in the image viewer.

Opening, closing, saving and printing

Open an image file

CtrlO

以相同的文件名保存图像

CtrlS

用新的文件名保存当前图像的一个副本

ShiftCtrlS

Print the current image

CtrlP

Close the current window

CtrlW

将图像设置成为桌面背景

CtrlF8

Viewing images

前往文件夹中的上一个图像

Back space / Left

前往文件夹中的下一个图像

Space bar / Right

前往文件夹中的第一个图像

AltHome

前往文件夹中的最后一个图像

AltEnd

从文件夹中随机选择一个图像

CtrlM

View the image gallery

F9

全屏浏览

F11

View slideshow

F5

实际大小

Ctrl0 (零)

最佳匹配

F

Scroll around a large image

Altarrow keys

Copy an image to paste into another application

复制

CtrlC

Zoom and rotate

Zoom in

+

缩小

-

顺时针旋转

CtrlR

逆时针旋转

ShiftCtrlR

Other

查看侧变栏

CtrlF9

查看文件属性

AltReturn

撤销

CtrlZ

帮助

F1

usr/share/help-langpack/zh_CN/eog/license.page0000644000373100047300000000356412307574666023146 0ustar langpacklangpack00000000000000 Legal information. License

This work is distributed under a CreativeCommons Attribution-Share Alike 3.0 Unported license.

You are free:

<em>To share</em>

To copy, distribute and transmit the work.

<em>To remix</em>

To adapt the work.

Under the following conditions:

<em>Attribution</em>

You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).

<em>Share Alike</em>

If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license.

For the full text of the license, see the CreativeCommons website, or read the full Commons Deed.

usr/share/help-langpack/zh_CN/eog/develop.page0000644000373100047300000000215412307574666023154 0ustar langpacklangpack00000000000000 Improve the Image Viewer Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

Help develop

The Image Viewer is developed and maintained by a volunteer community. You are welcome to participate.

If you would like to help develop the Image Viewer, you can get in touch with the developers using irc, or via our mailing list.

usr/share/help-langpack/zh_CN/eog/rename-multiple.page0000644000373100047300000000661312307574666024622 0ustar langpacklangpack00000000000000 Automatically rename and number batches of pictures. Tiffany Antopolski tiffany@antopolski.com

Creative Commons Share Alike 3.0

Rename many pictures at once

If you have lots of pictures that you want to rename, perhaps so that they have a standard, numbered name format:

Open the image gallery by pressing F9.

Select all of the pictures that you would like to rename from the image gallery by holding down Ctrl and clicking them one by one.

Alternatively, press CtrlA to select all of the pictures.

Click ImageSave as. A window with some filename options will appear (the picture, below, shows what this window looks like).

The renamed pictures will be saved in the current folder by default. To save them elsewhere, change the Destination folder.

Use the Filename format box to choose a naming format for the pictures. The File Name Preview shows you what the new filenames will look like. See the section, below, for advice on choosing how to rename the files.

Ensure that the Filename Format drop-down list says as is, unless you want to convert the pictures to a different file format.

Click Save As and the pictures will be renamed.

Choose a filename format

The filenames of the renamed files are determined by what you put in the Filename format box.

You can keep the original filename as part of the new filename by leaving the %f in the box.

For example, if you type paris_%f into the Filename format box, pictures called flower.jpg, house.jpg, and cat.jpg would be renamed to paris_flower.jpg, paris_house.jpg, and paris_cat.jpg.

Adding a %n will number the pictures consecutively, starting at the counter number you choose under Options.

For example, if you type sunshine_%n into the Filename format box, pictures called flower.jpg, house.jpg, and cat.jpg would be renamed to sunshine_2.jpg, sunshine_3.jpg, and sunshine_1.jpg. (They will be numbered by alphabetical order of the original filenames.)

usr/share/help-langpack/zh_CN/eog/copy-paste.page0000644000373100047300000000223612307574666023603 0ustar langpacklangpack00000000000000 How to copy/paste from the image viewer into another application. Tiffany Antopolski tiffany@antopolski.com Fabiana Simões fabianapsimoes@gmail.com

Creative Commons Share Alike 3.0

Copy and paste a picture

To copy a picture from the image viewer into another application, click EditCopy or right-click on the picture and choose Copy.

The picture has been copied to the clipboard, and can now be pasted into a LibreOffice document, Gimp image, or other application.

usr/share/help-langpack/zh_CN/eog/documentation.page0000644000373100047300000000223112307574666024363 0ustar langpacklangpack00000000000000 Join the Documentation Team. Tiffany Antopolski tiffany.antopolski@gmail.com 2011

Creative Commons Share Alike 3.0

Help write documentation

The Image Viewer documentation is maintained by a volunteer community. You are welcome to participate.

To contribute to the Documentation Project, feel free to get in touch with us using irc, or via our mailing list.

Our wiki page contains useful information.

usr/share/help-langpack/zh_CN/eog/plugin-exif-digital.page0000644000373100047300000000747312307574666025371 0ustar langpacklangpack00000000000000 View information such as camera settings and histogram, geolocation, and date. Tiffany Antopolski tiffany.antopolski@gmail.com Fabiana Simões fabianapsimoes@gmail.com

Creative Commons Share Alike 3.0

View detailed information about a picture

Pictures taken by digital cameras are stored with a host of extra information embedded in them, such as the date that they were taken, what exposure settings were used on the camera and, in some cases, even where the picture was taken.

This topic shows you how to access this information.

Show the date in the status bar

You can display the date that a picture was taken in the status bar at the bottom of the window.

To do this, click EditPreferences and go to the Plugins tab. Then, check Date in statusbar.

Detailed Exif data

The detailed information stored with digital photos is called Exif data. You can view it by installing a plugin for the image viewer.

To be able to see the Exif data embedded in your photos, you must first install the eog-plugins package.

If eog-plugins is installed, click EditPreferences and go to the Plugins tab. Then, check Exif display and click Close.

Click ViewSide Pane to view the camera settings used to take the photo. To also view histograms showing the balance of colors and light/shade in the picture, select Exif display in the Plugins tab and click Preferences. Check the histograms you want to view, listed under Histogram.

You can also view the camera settings used to take the photo in the statusbar. Select Exif display in the Plugins tab and click Preferences. Check Display camera settings in statusbar.

Display a photo location map

Some cameras are able to attach geolocation information (geotags) to digital photos. Geotags are usually just the GPS coordinates (latitude and longitude) for the place where a photo was taken.

To be able to see a map of where your photos were taken, you must first install the eog-plugins package.

If eog-plugins is installed, click EditPreferences and go to the Plugins tab. Then, check Map and click Close.

Click ViewSide Pane to show the map.

The map will show the location that a picture was taken in only if there is geolocation information attached to the photo. Many cameras do not attach geolocation information to pictures.

usr/share/help-langpack/zh_CN/seahorse/index.docbook0000644000373100047300000012552512300434241024351 0ustar langpacklangpack00000000000000 seahorse-daemon"> key"> ]>
Passwords and Keys Manual 2005, 2006, 2007, 2008, 2009 Jacob Perkins and Adam Schreiber Seahorse 项目 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. Jacob Perkins Seahorse Project Adam Schreiber Seahorse Project
sadam@clemson.edu
Paul Cutler GNOME Documentation Project
pcutler@foresightlinux.org
Seahorse 项目 GNOME 文档项目 Passwords and Keys Manual V2.11.0 May 2009 Paul Cutler pcutler@foresightlinux.org Passwords and Keys Manual V0.10.1 August 2008 Adam Schreiber sadam@clemson.edu Passwords and Keys Manual V0.9.1 November 2006 Milo Casagrande milo_casagrande@yahoo.it Passwords and Keys Manual V0.9.0 July 2005 Adam Schreiber sadam@clemson.edu Seahorse Project Passwords and Keys Manual V0.7.0 February 2003 Jacob Perkins Seahorse Project This manual describes version 2.28.x of Passwords and Keys 反馈 To report a bug or make a suggestion regarding the Passwords and Keys application or this manual, follow the directions in the Gnome Feedback Page. Passwords and Keys is the application for managing encryption keys for the GNOME Desktop
Seahorse seahorse Encryption Keys 介绍 You can use Passwords and Keys to create and manage PGP and SSH keys. Passwords and Keys provides a front end to many of the features of Gnu Privacy Guard (GPG) and integrates with multiple components of the GNOME desktop. With Passwords and Keys you can: Create and manage PGP and SSH keys, Export and import PGP and SSH keys, Share your keys with others, 快速入门 Starting <application>Passwords and Keys</application> You can start Passwords and Keys in the following ways: 应用程序 菜单 Choose Accessories Password and Keys . 命令行 输入 seahorse 然后按 回车键 When You Start <application>Passwords and Keys</application> When you start Passwords and Keys, the Password and Keys window is displayed.
The <application>Passwords and Keys</application> Window Show the Passwords and Keys window.
The Passwords and Keys window contains the following elements: 菜单栏 The menus on the menubar contain all of the commands that you need to perform tasks in Passwords and Keys. 工具栏 在工具栏中可以快速访问常用的命令。 密钥和密码标签 提供在密钥环中访问密钥和密码。 第一次进入的选项 为首次进入的用户提供快速有用的访问操作,通过它您可以: 浏览帮助, 导入密钥到密钥环, 创建新的密钥。
创建 OpenPGP 密钥 OpenPGP 是基于 PGP 公钥算法的非私有协议,用于加密电子邮件。它定义了加密信息、签名、私钥的标准格式,和交换公钥的证书。 公钥密码算法是包括两个密钥:一个是 公钥,您可以把它给任何交换信息的人,另一个是 私钥,必须要安全保管好。 To create OpenPGP keys: Choose FileNew... Select PGP Key and click Continue Enter your full name (first - last), your e-mail address and any additional information. You can also specify advanced options for the key: see below. Click Create to create the new key pair. The Passphrase for New PGP Key dialog will open. Enter the passphrase twice for your new key. 当选择一个密码短语时,用几个简单的习惯语来生成一个强密码。密码和密码短语的主要区别在于,密码短语里可以使用空格。 高级选项 展开 高级密钥选项,可以为密钥指定下面的选项: Encryption Type 这一项指定生成密钥的加密算法。 DSA 算法 这是推荐的选项,可以根据需要进行加密、解密、签名和验证。 DSA 只允许签名。 RSA 只允许签名。 Key Strength (bits) 这是密钥的位数,位数越长将会越安全,使用一个强的密码短语。当然,用一个长的密钥将会使操作花费更多的时间,合适的值在 1024 - 4096 之间,推荐至少2048位。 Expiration Date This is the date at which the key will cease to be usable for performing encryption or signing operations. 6 months is a reasonable time to set it to. You will have to either change the expiration date or generate a new key or subkey after this amount of time passes. Sign your new key with your old one before it expires to preserve your trust status. 创建 SSH 密钥 安全 Shell(SSH),是登录远程计算机并执行命令的一种方法。SSH 密钥用于基于密钥验证系统中,作为默认密码验证系统的替代。对于基于密钥验证,不需要手动输入密码来验证。 SSH 密钥制作两个密钥:一个是 私钥,必须要安全保管,另一个是 公钥,可以上传到你要访问的任何一台计算机。 创建 SSH 密钥: 点菜单 文件新建... 选择 SSH 密钥,然后点 继续 输入密钥的用途描述,您可以使用电子邮件地址或其他提示语,您也可以为此密钥设定以下高级选项: 仅创建密钥 按钮,创建新密钥,点 创建并设置 按钮,创建并设置其他计算机用它来验证。 出来一个 新的 SSH 密钥的密码 对话框,输入密码两遍。 当选择一个密码短语时,用几个简单的习惯语来生成一个强密码。密码和密码短语的主要区别在于,密码短语里可以使用空格。 高级选项 展开 密钥高级选项,可以为密钥指定以下选项: Encryption Type 这一项指定生成密钥的加密算法。 RSA 使用 Rivest-ShamirAdleman (RSA) 算法创建 SSH 密钥,这是首选的并且非常可靠的选择。 DSA 使用 数字签名算法 (DSA) 算法创建 SSH 密钥。 Key Strength (bits) 这是密钥的位数,位数越长将会越安全,使用一个强的密码短语。当然,用一个长的密钥将会使操作花费更多的时间,合适的值在 1024 - 4096 之间,推荐至少2048位。 OpenPGP 密钥属性 本节的内容适用于各种 OpenPGP 密钥。 To view properties of a PGP key: Select the PGP key from the main window, Double click on it or choose Properties from the toolbar, Select the Details tab. 属性 Fingerprint 指纹是标记一个密钥的唯一的特征字符串。 KeyID 密钥 ID 跟指纹类似,但是密钥 ID 只包含指纹的最后8个字符。绝大多数情况,用密钥 ID 就可以标识一个密钥,但是有时候也可能出现两个相同的 ID。 Type 指定生成一个密钥的加密算法,DSA 密钥用于签名,ElGamal 密钥用于加密。 Created 密钥的创建日期。 Expires 标识密钥不能再使用的日期。 Strength Indicates the length in bits of a key. In general the longer the key, the more security it provides. A long key is not enough to make up for the use of a weak passphrase. 信任 “信任”标识您如何确保您通过个人的能力,正确把信任扩展到网络中。当您面对一个还没有签署的密钥时,这个密钥的有效性取决于你是否信任其他签署它的人。 未知:您跟签署人不熟悉,不能确定密钥的有效性。 从不:这个人不能正确签署密钥。 有限的:这个人在签署密钥时检查过照片 ID,但没有仔细审查这个 ID。 完全:在签署它们之前,这个人详细审查每一项包括个人照片 ID(例如,他们仅签署的密钥确实属于这个人,要求了个人签名)。 彻底:这一级别应该仅限于您自己的密钥。 启用和禁用密钥 当启用一个密钥,它可以用来进行加密操作。当禁用了一个密钥,它就不能用来加密或者验证签名。 有效期 当一个密钥过期了,它也不能再用来执行密钥操作,延长密钥的期限可以重新启用它,一个好的方法是拥有一个不过期的主密钥和多个子密钥,由主密钥来操作和签署。 用户 IDs 用户 IDs 允许多个身份标识和邮箱地址用于同一个密钥。 They usually take the form of: Name (comment) <email address> 添加用户 ID 添加用户 ID 是很有用处的,当您想把一个 ID 用于工作,另一个用于好朋友时。 To add a user ID to a key: Select the key from the main window, Double click on it or choose Properties from the toolbar, Select the Names and Signatures tab, Click on Add Name. 按照上面的介绍操作,您会看到一个对话框,各个文本框的介绍如下: Full Name Enter your full name in the form <first> <last> A middle name or initial is optional. 您必须在这个文本框中至少输入5个字符。 Email Address 您的邮箱地址是大多数人用来在密钥服务器上查找您的密钥,在继续前请确保其正确性。 It should be of the form <username>@<domainname> Key Comment 注释可以用来存放您的新 ID 名称的一些额外信息,这些信息可用于在密钥服务器上的搜索。 照片 ID 照片 ID 允许密钥所有者在密钥中添加一幅或几幅图片,这些标识可以像普通用户 ID 那样作为签名,照片 ID 必须用 JPEG 格式,推荐不大于 240x288 像素。 If the chosen image is not of the required file type or size Passwords and Keys can resize and convert it on the fly from any image format supported by the GDK library. 更改密码 To change the passphrase assigned to a key: Select the key from the main window, Double click on it or choose Properties from the toolbar, Click on Change Passphrase. 输入新密码然后点 确定 按钮。 删除密钥 To delete a key from your keyring: Select the key from the main window, Right click on it and choose Delete Key or choose Edit Delete Key . 您可以删除个人密钥、信任的密钥和收集来的密钥。 OpenPGP 子密钥属性 每个 OpenPGP 密钥有一个主密钥仅用于签名,子密钥用于加密和签名。这样一来,如果您的子密钥有问题时,您不必撤消您的主密钥。 ID 这是子密钥的标识。 Type 指定用于生成子密钥的加密算法,DSA 密钥仅用于签名,ElGamal 密钥用于加密,在 RSA 密钥用于签名或加密时。 Created 密钥的创建日期。 Expires 标识密钥不能再使用的日期。 Status 指示密钥的状态。 Strength Indicates the length in bits of the key. In general the longer the key, the more security it provides. A long key is not enough to make up for the use of a weak passphrase. 添加子密钥 要添加一个子密钥,在 子密钥 面板里点击 添加 按钮。 按照上面的介绍操作,您会看到一个对话框,各个文本框的介绍如下: 密钥类型 指定生成子密钥的加密算法。 DSA 使用 数字签名算法 (DSA) 来创建子密钥,它仅用于签名。 ElGamal 使用 ElGamal 算法来创建子密钥,它仅用于加密。 RSA 使用 Rivest-Shamir Adleman (RSA) 算法创建子密钥,这个子密钥可以用于签名或加密,但您得创建两个不同的子密钥。 密钥长度 标明子密钥的长度位数,通常越长的密钥越安全。 有效期 标明子密钥不能再使用的日期。 更改子密钥的有效期 To change a subkey expiration date, select the subkey from the Subkeys section, then: Click on the Expire button on the left, From the date dialog choose the new expiration date or select Never expires for no expiration date. 撤消一个子密钥 To revoke a subkey, select the subkey from the Subkeys section, then: Click on the Revoke button on the left, Choose a reason why to revoke the subkey: No Reason There isn't a specific reason to revoke the key. Compromised The key has been compromised. Superseded The key has been superseded by another one. Not Used The key is not used anymore. Enter a description of why you are revoking the key, Click on Revoke. 撤消密钥将立即生效。 删除子密钥 To delete a subkey, select the subkey from the Subkeys section, then: Click on the Delete button on the left. SSH 密钥属性 这一节的讲述适用于所有 SSH 密钥。 To view properties of a SSH key: Select the Secure Shell key from the main window, Double click on it or choose Properties from the toolbar, Select the Details tab. 属性 Fingerprint 指纹是标记一个密钥的唯一的特征字符串。 Algorithm 指出生成密钥的加密算法。 Location 私钥 存储的位置。 Strength Indicates the length in bits of a key. In general the longer the key, the more security it provides. A long key is not enough to make up for the use of a weak passphrase. 删除一个 SSH 密钥 To delete a Secure Shell key: Select the SSH key from the main window, Right click on it and choose Delete key or choose Edit Delete Key . 导入密钥 To import keys choose File Import and select, from the file chooser, a file containing at least one ASCII armored public key. Importing can also be performed by pasting the keys inside Passwords and Keys: Select an ASCII armored public block of text, Copy it to the clipboard, Choose Edit Paste Keys . 导出密钥 To export keys, select the keys in the main window and choose File Export . You can also export keys to the clipboard in an ASCII armored block of text: Select the keys in the main window, Choose Edit Copy Keys . 签署密钥 签署别人的密钥意味着您信任那个人,在签署之前,您应该仔细检查密钥的指纹确定密钥确实属于那个人。 To sign a key in your keyring: Select the key you want to sign from the Trusted Keys or Other Collected Keys tabs, Choose Sign from the toolbar or File Sign , Select how carefully the key has been checked, Indicate if the signature should be local to your keyring, and if your signature can be revoked, Click on Sign. 首选项 This section describes the preferences settable in Passwords and Keys by choosing Edit Preferences from within Passwords and Keys. 密码密钥环 创建密钥环 要创建一个新的密钥环,点菜单 文件新建,然后选 密码密钥环,输入一个名称,然后按回车键。 更改密钥环密码 要更改密钥环的解锁密码,首先选中它,然后点 更改解锁密码。出来一个对话框,提示在 旧密码 框中输入原先的密码,在 新密码 框中输入新的密码,再在 确认密码 框中再输入一遍新密码,然后点 更改 应用。如果旧密码正确,您会看到一个操作成功的提示,如果旧密码不正确,将会提示重新输入。 删除密钥环 To remove a keyring, first select the appropriate keyring and then from the menu choose Edit Delete. 密钥服务器 在远程服务器上通过定期同步,来保持您的和其他人的密钥最新。同步将确保你有最近的所有密钥的签名,以使信任的网络保持最有用。 Passwords and Keys provides support for HKP and LDAP keyservers. HKP Servers HKP keyservers are ordinary web based keyservers such as the popular hkp://pool.sks-keyservers.net, also accessible at http://sks-keyservers.net. LDAP Keyservers LDAP 密钥服务器很少见,但它使用标准的 LDAP 协议来管理密钥。ldap://keyserver.pgp.com 是一个好的 LDAP 服务器。 分享密钥 Key Sharing is provided by DNS-SD, also known as Bonjour or Rendevous. Enabling key sharing will add the local Passwords and Keys users' public key rings to the remote search dialog. Using these local "key servers" will most likely be faster than accessing remote servers. About Passwords and Keys Passwords and Keys, its associated plugins, the preferences applet and the panel applet are known collectively as Seahorse. Seahorse was written by Jacob Perkins. The current maintainers are Stef Walter and Adam Schreiber. This manual is by Adam Schreiber. The project's web site was designed by Jim Pharis. To find more information about Seahorse, the project , please visit the Seahorse web page. To report a bug or make a suggestion regarding this application or this manual, follow the directions in the Feedback section of the GNOME User Guide. This program is distributed under the terms of the GNU General Public license as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. A copy of this license is included with this documentation; another can be found in the file COPYING included with the source code of this program.
usr/share/help-langpack/zh_CN/seahorse/legal.xml0000644000373100047300000000672412300434241023505 0ustar langpacklangpack00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是在 GFDL 许可之下分发的 GNOME 手册集合的一部分。如果想要单独分发此手册,可以在手册中添加该许可证的一份副本然后分发,如该许可证的第 6 部分所述。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. usr/share/help-langpack/zh_CN/baobab/scan-file-system.page0000644000373100047300000000501612307647422025324 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com Michael Hill mdhillca@gmail.com 扫描所有内置和可移除的存储设备。 TeliuTe teliute@163.com 2009. tuhaihe 1132321739qq@gmail.com 2012 扫描文件系统

要想弄清楚您的文件系统占用了多大空间:

从菜单选择 分析器扫描文件系统

您的文件系统包括所有内置和可移除的存储设备,当扫描对应的文件夹时后者需挂载。

如果您要尝试扫描的文件系统很大,完成扫描可能会花费几分钟。

选择 分析器停止 可取消当前扫描,或选择 分析器刷新 重复上次扫描。

The results may be useful in deciding which folders can be archived, deleted or moved to free up space. You can also use the results to estimate how much space would be needed for a backup of specific folders.

右击任何文件夹,选择 打开文件夹 启用 文件 应用程序,或选择 移动到回收站 将您的文件夹移动到 回收站

usr/share/help-langpack/zh_CN/baobab/scan-home.page0000644000373100047300000000563412307647422024021 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com Michael Hill mdhillca@gmail.com 扫描您内部存储设备上的所有个人文件。 TeliuTe teliute@163.com 2009. tuhaihe 1132321739qq@gmail.com 2012 扫描您的 <file>主目录</file>

主目录是普通用户存放大部分文件的地方,因为默认设置经常被设为将文件保存或复制到主目录下的子目录里。包括网络下载、工作文档和相机里面的照片。通常,计算机上的每位用户都有自己的 主目录

从菜单选择 分析器扫描主目录

选择 分析器停止 可取消当前扫描,或选择 分析器刷新 重复上次扫描。

The results may be useful in deciding which folders can be archived, deleted or moved to free up space. You can also use the results to estimate how much space would be needed for a backup of your Home folder.

右击任何文件夹,选择 打开文件夹 启用 文件 应用程序,或选择 移动到回收站 将您的文件夹移动到 回收站

默认子目录通常包括 桌面文档下载图片音乐等。部分子目录在安装 GNOME 时已经存在;其他子目录会在需要时由应用程序创建。

usr/share/help-langpack/zh_CN/baobab/scan-folder.page0000644000373100047300000000523112307647422024335 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com 扫描本地文件夹,包括所有的子文件夹。 TeliuTe teliute@163.com 2009. tuhaihe 1132321739qq@gmail.com 2012 扫描文件夹

单个文件夹的扫描要比整个文件系统的扫描快得多,所以如果您只想要关于文件系统某个特定部分的信息,这可能效率更高。

从菜单选择 分析器扫描文件夹…

使用文件浏览器来浏览您的文件系统,并选择希望分析的文件夹

点击 打开 开始扫描

选择 分析器停止 可取消当前扫描,或选择 分析器刷新 重复上次扫描。

The results may be useful in deciding which folders can be archived, deleted or moved to free up space. You can also use the results to estimate how much space would be needed for a backup of specific folders.

右击任何文件夹,选择 打开文件夹 启用 文件 应用程序,或选择 移动到回收站 将您的文件夹移动到 回收站

usr/share/help-langpack/zh_CN/baobab/pref.page0000644000373100047300000000336212307647422023077 0ustar langpacklangpack00000000000000 Ekaterina Gerasimova kittykat3756@gmail.com 当扫描文件系统时跳过指定的设备和分区。 TeliuTe teliute@163.com 2009. tuhaihe 1132321739qq@gmail.com 2012 禁止对单个存储设备和分区的扫描

磁盘使用分析器允许您只扫描在首选项对话框中选中的分区和存储设备。默认情况下,所有的设备和分区都被选中,但当您关闭对话框时应用程序将保存您的偏好设置。

选择 编辑首选项

选择您想要扫描的存储设备和分区,或不选您不希望扫描的存储设备和分区

点击 关闭 保存您的首选项

列表中的第一项,挂载在 / 上,不能取消选择

usr/share/help-langpack/zh_CN/baobab/scan-remote.page0000644000373100047300000000765512307647422024371 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com 从您的电脑上远程扫描文件夹。 TeliuTe teliute@163.com 2009. tuhaihe 1132321739qq@gmail.com 2012 扫描远程文件夹

磁盘使用分析器 可以扫描能够远程访问的存储设备。要远程扫描整个文件系统或任何指定的文件夹:

从菜单选择 分析器 扫描远程文件夹…

选择您希望使用的协议

将远程存储设备的 IP 地址填入 服务器 区域或位置(URI)处,这决定于您使用的协议。

点击 扫描 继续;在扫描开始前,您可能会被询问更多细节,比如密码和用户名。

通过网络扫描可能比扫描本地文件系统速度慢些。

右击任何文件夹,选择 打开文件夹 启用 文件 应用程序,或选择 移动到回收站 将您的文件夹移动到 回收站

usr/share/help-langpack/zh_CN/baobab/pref-view-menu.page0000644000373100047300000000267512307647422025017 0ustar langpacklangpack00000000000000 Ekaterina Gerasimova kittykat3756@gmail.com 隐藏或显示工具栏和状态栏。 TeliuTe teliute@163.com 2009. tuhaihe 1132321739qq@gmail.com 2012 工具栏和状态栏

工具栏 为各种扫描动作提供快捷方式,而 状态栏 提供应用程序的状态(例如,就绪正在扫描…)。

从菜单选择 查看工具栏,可启用或禁用该选项

从菜单选择 查看状态栏,可启用或禁用该选项

usr/share/help-langpack/zh_CN/baobab/pref-view-chart.page0000644000373100047300000000335412307647422025147 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com 以圆环图或树形图显示结果。 TeliuTe teliute@163.com 2009. tuhaihe 1132321739qq@gmail.com 2012 不同的图表视图

默认情况下,扫描结果以扇形显示每个子目录,其角度与相关文件夹的大小对应。子文件夹以不同颜色标示。

将您的鼠标移到圆环图上会显示关于该子文件夹的更多细节。

使用右手边图表顶部的下拉菜单,可将图表视图更改为 树形图。树形图用相应大小的方框来显示文件夹。

usr/share/help-langpack/zh_CN/baobab/index.page0000644000373100047300000000264412307647422023254 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com 磁盘使用分析器,一款图形化的存储设备扫描器。 TeliuTe teliute@163.com 2009. tuhaihe 1132321739qq@gmail.com 2012 磁盘使用情况分析器
扫描存储设备
查看和首选项
usr/share/help-langpack/zh_CN/baobab/introduction.page0000644000373100047300000000366412307647422024671 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com Michael Hill mdhillca@gmail.com 磁盘使用分析器,也称作 baobab,图形化地展示您的存储空间使用情况。 TeliuTe teliute@163.com 2009. tuhaihe 1132321739qq@gmail.com 2012 介绍

磁盘使用分析器是一款图形化、菜单化操作的应用程序,用来分析存储设备的使用情况。它可以用来扫描多个本地或远程存储设备(包括硬盘、固态硬盘、U 盘、数码相机和存储卡)。磁盘使用分析器可以扫描整个文件系统树、您的主目录用户请求的特定目录或远程文件夹。

usr/share/help-langpack/zh_CN/ubuntu-help/a11y-stickykeys.page0000644000373100047300000000602512320733003026141 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 按键盘快捷键时一次按一个键,而无需一次按住所有键。 开启粘滞键

粘滞键使您能够在按键盘快捷键时一次按一个键,而无需一次按住所有键。例如,AltTab 快捷键可以切换窗口。如果未开启粘滞键,您需要同时按下这两个键;而开启粘滞键后,先按 Alt 再按 Tab 可以完成相同操作。

如果您感觉同时按住几个键有困难,可以考虑开启粘滞键。

单击顶部菜单栏最右侧的图标,选择系统设置

打开辅助功能,选择输入标签。

开启粘滞键

快速开启和关闭粘滞键

通过键盘启用中选择通过键盘开启辅助功能特性选项,启用从键盘开启或关闭粘滞键的功能。启用该选项之后,连续按 Shift 键 5 次可以开启或禁用粘滞键。

如果同时按下两个键,粘滞键功能会临时关闭,您可以用正常的方式输入键盘快捷键。

例如,如果您打开了此选项,并且您开启了粘滞键,但同时按下了 AltTab 键,粘滞键不会等待您按下另一键。但是,如果您只按了一个键,它将会等待您按下另一个。如果您能够同时按下某些键盘快捷键(例如,紧邻的几个键)但不能按住其他快捷键,此选项将非常有用。

选择若同时按下两个键则禁用可启用此选项。

您可以对计算机进行设置,使其在您开始按键盘快捷键时(粘滞键开启的情况下)发“哔”声。如果您想要知道粘滞键是否认为要输入的是键盘快捷键,以及下一个按键是否是快捷键的一部分,这将非常有用。选择当按下修饰键时发出蜂鸣声可启用此功能。

usr/share/help-langpack/zh_CN/ubuntu-help/bluetooth-turn-on-off.page0000644000373100047300000000476712320733003027356 0ustar langpacklangpack00000000000000 在您的计算机上启用或禁用蓝牙设备。 Jim Campbell jwcampbell@gmail.com Shaun McCance shaunm@gnome.org 开启或关闭蓝牙

菜单栏上的蓝牙图标

您可以打开系统的蓝牙功能,以使用蓝牙设备或与蓝牙设备互传文件;也可以关闭蓝牙设备以节省电量。点击菜单栏的蓝牙图标并单击打开蓝牙

您可以打开蓝牙传输或接收文件,也可以关闭蓝牙节省能量。要打开蓝牙,请单击顶栏上的蓝牙图标,打开蓝牙

很多笔记本电脑都有一个硬件开关或组合键来开启和关闭蓝牙。如果蓝牙硬件已关闭,在菜单栏上将看不到蓝牙图标。寻找您计算机上的开关或键盘上的键。键盘键通常可在 Fn 键的帮助下访问。

很多笔记本电脑都有一个硬件开关或组合键来开启和关闭蓝牙,如果蓝牙硬件已关闭,在顶栏上将看不到蓝牙图标。请您寻找计算机上的开关或键盘上的键,键盘键通常可在 Fn 键的帮助下找到。

要关闭蓝牙,请单击蓝牙图标,然后单击关闭蓝牙

要关闭蓝牙,请单击蓝牙图标,然后关闭蓝牙

如果您需要从另一蓝牙设备连接到这台电脑,则需要将系统的蓝牙设置为可见状态。更多信息请查阅

usr/share/help-langpack/zh_CN/ubuntu-help/power.page0000644000373100047300000000216612320733003024324 0ustar langpacklangpack00000000000000 Natalia Ruz nruz@alumnos.inf.utfsm.cl 挂起,节能,关机,屏幕变暗… 电源和电池
电池设置
电源问题 电源和电池问题的故障诊断。 问题
usr/share/help-langpack/zh_CN/ubuntu-help/nautilus-connect.page0000644000373100047300000001373312320733003026465 0ustar langpacklangpack00000000000000 通过 FTP、SSH、Windows 共享或 WebDAV 查看和编辑另一计算机中的文件。 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 浏览服务器或网络共享中的文件

可连接到服务器或网络共享,以浏览和查看该服务器中的文件,就如同那些文件在自己的计算机中。这是一种在因特网上下载或上载文件,或与本地网络中的其他人共享文件的简便方法。

通过网络浏览文件,从 Dash 中打开 文件 管理器,在侧边栏点击 浏览网络 。文件管理器将会发现所有在您局域网中宣传它们有能力服务文件的计算机。如果您想要通过互联网连接到服务器,或者如果您未看到您寻找的计算机,您可以通过输入它的互联网/网络地址手动连接到服务器。

连接到文件服务器

在文件管理器的菜单栏选择 文件 ,然后从程序菜单中选择 连接到服务器

URL 地址栏中输入服务器地址。可用的 URL 详细 列表如下 。

如果您之前连接过该服务器,您还可以在 最近使用的服务器 列表中点击它。

点击 连接 按钮,将会打开一个在服务器上显示文件的新窗口。您可以像浏览自己电脑上的文件一样浏览它们,服务器还将被添加到侧边栏,方便您以后快速访问它。

输入 URL 网址

URL 或者 统一资源定位符 ,是一个指向网络位置或者文件的地址,地址格式如下:

scheme://servername.example.com/folder

scheme 指定了服务器的协议或者类型,地址中的 example.com 部分被称作 域名 ,如果需要用户名,请插入到服务器名称之前:

scheme://username@servername.example.com/folder

一些方案需要指定端口号,请插入到域名之后:

scheme://servername.example.com:port/folder

下面是支持的各种服务类型的具体实例。

服务器的类型

您可以连接到不同类型的服务器,一些服务器是公开的,允许任何人连接;另一些服务器需要您使用用户名和密码登录。

可能没有对服务器中的文件执行某些操作的权限。例如,在公用 FTP 站点中,用户多半不能删除文件。

您输入的 URL 取决于服务器使用的文件共享协议。

SSH

如果您有服务器的 SSH 账户,您可以使用它来连接,许多网络主机为成员提供 SSH 账户,以便安全的上传文件,SSH 服务器总是需要用户登录。

典型的 SSH URL 如下:

ssh://username@servername.example.com/folder

使用 SSH 时,发送的所有数据(包括密码)都已加密,因此网络中的其他用户都不能看到这些数据。

FTP(要求登录)

使用 FTP 是一种在因特网上传输文件的流行方法。因为通过 FTP 传输的数据未经加密,所以许多服务器现在都可以通过 SSH 访问。但是,对某些服务器仍可以或必须用 FTP 上载或下载文件。通过要求登录的 FTP 站点,通常可以删除和上载文件。

典型的 FTP URL 如下:

ftp://username@ftp.example.com/path/

公用 FTP

网站为了允许您下载文件,有时将会提供公共或者匿名 FTP 访问,这些服务无需用户名和密码,但通常不允许您删除或者上传文件。

典型的匿名 FTP URL 如下:

ftp://ftp.example.com/path/

有些匿名 FTP 站点需要您使用一个公共用户名和密码登录,或者一个使用您电子邮件地址作为密码的公共用户名。对于这些服务,使用 FTP (登录) 方式,并使用指定的 FTP 站点证书。

Windows 共享

Windows 计算机用专属协议通过局域网共享文件。Windows 网络上的计算机有时会归并到中,以便进行整理并加强访问控制。如果在远程计算机中有相应权限,则可通过文件管理器连接到 Windows 共享。

典型的 Windows 共享 URL 如下:

smb://servername/Share

WebDAV 和安全 WebDAV

WebDAV 基于用在网络上的 HTTP 协议,有时用于在本地网络上共享文件,以及在因特网上存储文件。如果要连接的服务器支持安全连接,则应该选择此选项。安全 WebDAV 采用强 SSL 加密,这样其他用户就看不到您的密码。

典型的 WebDAV URL 如下:

http://example.hostname.com/path

usr/share/help-langpack/zh_CN/ubuntu-help/unity-scrollbars-intro.page0000644000373100047300000000545712320733003027643 0ustar langpacklangpack00000000000000 即现式滚动条是在长文档上的橙色的薄条。 Jeremy Bicha jbicha@ubuntu.com 即现式滚动条是什么?

Ubuntu includes overlay scrollbars which take up less screen space than traditional scrollbars, giving you more room for your content. While inspired by mobile devices where traditional scrollbars aren't needed, Ubuntu's overlay scrollbars are designed to work just as well with a mouse.

一些应用程序,比如 Firefox 和 LbireOffice 还不支持新滚动条。

使用滚动条

即现式滚动条以橙色西条出现在可滚动区域的边缘。滚动条的位置表示屏幕在可滚动内容中的位置。细条的长途与内容长度有关:内容越长,细条越短。

将鼠标移动到滚动区域的任意位置,即可让滚动手柄显示出来。

使用滚动条的方法:

点击滚动手柄的上半部分向上滚动页面,点击下半部分向下滚动页面。

上下拖拽滚动手柄,使页面到达您想要的位置。

on the thumb slider to move the screen's position without needing to drag or scroll page by page. This is especially useful in long documents.

禁用滚动条

您可以禁用新滚动条,如果您更喜欢传统滚动条:

要打开 终端,您可以按下 CtrlAltt 或直接在 Dash 中搜索 终端。

键入以下内容,然后按回车

gsettings set com.canonical.desktop.interface scrollbar-mode normal

如果您改变了主意,想要重新启用滚动条,运行此命令:

gsettings reset com.canonical.desktop.interface scrollbar-mode

将您的主题设置为 High Contrast 将禁用即现式滚动条。

usr/share/help-langpack/zh_CN/ubuntu-help/keyboard-nav.page0000644000373100047300000001431412320733003025550 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 在没有鼠标的情况下单击和移动鼠标指针 键盘导航

本页面将介绍键盘导航特性。本特性使用于无法使用鼠标或其他位置指示设备的用户,以及希望尽量使用键盘进行操作的用户。如需查看键盘快捷键的相关信息,请跳转到

如果难以使用鼠标或其他指针设备,则可通过键盘上的数字键盘控制鼠标指针。

在用户界面中导航

在工具栏中单击搜索,或按 CtrlF 键。

在不同的控件间移动键盘焦点。您可以使用 Ctrl Tab 在不同的控件组之间移动,比如从侧栏移动到窗口主体部分。也可以使用CtrlTab跳出一个本身需要使用 Tab 键的控件,例如文本框。

按住Shift键可以反向移动焦点。

方向键

要在单个或多个相关控件之间移动选择项,您可以使用上下左右方向键。例如在文件管理器的列表视图中选择项目等等。

在树状列表中,用左右方向键来折叠或扩展各个层次。

Ctrl方向键

在列表视图或图标视图中,可以在不改变选中项的情况下将键盘焦点移动到另一个选项。

Shift方向键

在列表或图标视图中,选中当前选中项到新焦点项之间的所有项目。

Space

激活焦点所在项目,例如按钮、复选框或者列表。

在工具栏中单击搜索,或按 CtrlF 键。

在列表或图标视图中,选中或取消选中焦点项目而不影响其他项目。

Alt

按住Alt键以显示快捷键组合:按住Alt 和各项目后面括号内的字母来对项目进行操作。

Esc

退出菜单、弹出窗口、切换滑块或者对话框窗口。

F10

Open the first menu on the menu bar of a window. Use the arrow keys to navigate the menus.

ShiftF10 或菜单键

弹出当前选项的上下文菜单,行为与右键相同。

在工具栏中单击搜索,或按 CtrlF 键。

在文件管理器中,弹出当前文件夹的上下文菜单,行为与右键单击相同。

单击编辑复制,或按 CtrlC

在多标签界面中,切换到左侧或右侧的标签。

更改桌面背景
窗口导航

AltF4

关闭当前窗口。

CtrlSuper

将最大化的窗口恢复到初始尺寸。

AltF7

要移动当前窗口,按下AltF7,然后用方向键来移动窗口。

AltF8

要调整当前窗口的尺寸,按下AltF8,然后用方向键来调整尺寸。按下Enter完成调整,或Esc恢复调整前的尺寸。

CtrlSuper

最大化 窗口。

CtrlSuper

在屏幕左半边纵向最大化窗口。

CtrlSuper

在屏幕右半边纵向最大化窗口。

Alt空格

弹出窗口菜单,就像在标题栏上右键单击一样。

usr/share/help-langpack/zh_CN/ubuntu-help/sound-alert.page0000644000373100047300000000264212320733003025424 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 选择要对消息播放的声音,设置警告音量,或者禁用警告声。 选择或禁用警告音

针对特定类型的信息和事件,您的计算机会播放一个简单的警报声。您可以为警报选择不同的音效片段,独立设置您系统音量中的警报音量,或完全禁用警报声。

单击顶部面板中的声音菜单并单击声音设置

声音效果标签页中,选择警告音效。单击每个音效时该声音就会播放,所以您可以进行预听。

使用声音效果标签页中的音量滑块以设置警告声的音量。这不会影响您的音乐、电影和其他音频的播放音量。

要完全禁用警报声,选择静音即可。

usr/share/help-langpack/zh_CN/ubuntu-help/bluetooth-visibility.page0000644000373100047300000000257712320733003027370 0ustar langpacklangpack00000000000000 其他设备是否可以发现您的计算机。 Shaun McCance shaunm@gnome.org 什么是蓝牙可见性?

蓝牙是否可见是指其他蓝牙设备是否可以搜索到您的计算机。当蓝牙被设置为可见的时候,您的计算机将被一定范围内的其他设备搜索到,这些设备可以尝试连接到您的计算机。

当您搜索周围的其他蓝牙设备时,您的计算机并不需要处于蓝牙可见状态。但是其他设备必须处于蓝牙可见状态您才可以搜索到它们。

在您连接到一个设备之后,您的计算机和该设备都不需要处于蓝牙可见状态就能互相搜索到对方。

除非您对另一设备的持有者十分信任,否则最好使蓝牙保持在不可见状态。

usr/share/help-langpack/zh_CN/ubuntu-help/wacom.page0000644000373100047300000000103412320733003024267 0ustar langpacklangpack00000000000000 调节 Wacom 手写板的设置。 Michael Hill mdhillca@gmail.com Wacom 图形手写板 usr/share/help-langpack/zh_CN/ubuntu-help/keyboard-cursor-blink.page0000644000373100047300000000300312320733003027367 0ustar langpacklangpack00000000000000 让插入点闪烁并控制其闪烁速度。 Shaun McCance shaunm@gnome.org Natalia Ruz Leiva nruz@alumnos.inf.utfsm.cl Julita Inca yrazes@gmail.com Michael Hill mdhillca@gmail.com 让键盘光标闪烁

如果您无法在文本框中看到光标,您可以让它闪烁以方便识别。

单击顶栏最右侧的图标,选择系统设置

在“硬件”部分中,单击键盘

选择文本域中光标闪烁

速度滑块调整光标闪烁速度。

usr/share/help-langpack/zh_CN/ubuntu-help/net-email-virus.page0000644000373100047300000000346512320733003026214 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com 病毒一般无法感染您的 Linux 计算机,但会感染您的电子邮件收件人。 是否需要扫描我的电子邮件中的病毒?

病毒是一种程序,如果它们侵入您的计算机,则会导致问题的发生。它们侵入计算机的常见方式之一就是通过电子邮件消息。

病毒影响 Linux 计算机的机率很小,因此您一般不会通过电子邮件或其他方式感染病毒。如果收到包含病毒的电子邮件,一般不会对您的计算机造成影响。因此,您一般不需要扫描电子邮件中的病毒。

然而,为防止将病毒转发给另一个人,您可能需要扫描一下电子邮件中的病毒。例如,如果您某个朋友的 Windows 计算机带有病毒,并且他向您发送了感染病毒的电子邮件,然后您将该电子邮件转发给另一位使用 Windows 计算机的朋友,则第二位朋友可能也会感染病毒。为防止出现这种情况,您可安装防病毒应用程序来扫描电子邮件,但这种情况不常见,大多数使用 Windows 和 Mac OS 的用户都有其自己的防病毒软件。

usr/share/help-langpack/zh_CN/ubuntu-help/net-chat.page0000644000373100047300000000132612320733003024670 0ustar langpacklangpack00000000000000 使用 Empathy 聊天、进行视频通话、安装 Skype、社交网络应用 Ubuntu 文档团队 聊天和社交网络 usr/share/help-langpack/zh_CN/ubuntu-help/video-dvd-restricted.page0000644000373100047300000000402312320733004027212 0ustar langpacklangpack00000000000000 大多数商业 DVD 都已加密,并且无解密软件将无法播放。 Ubuntu 文档项目 ubuntu-doc@lists.ubuntu.com 我如何启用受限制的编码解码器来播放 DVD?

由于法律和技术限制,默认情况下 Ubuntu 无法提供 DVD 支持。大多数商业 DVD 都已加密,因此为了播放它们需要使用解密软件。

使用 Fluendo 合法播放 DVD

您可购买商业 DVD 解码器,其可处理Fluendo添加的复制保护。它可运行于 LInux,并且在所有国家/地区使用都是合法的。

使用替代解密软件

在一些国家/地区,法律不允许使用以下未经许可的解密软件。确认您有使用它的权利。

安装 libdvdnav4、libdvdread4、gstreamer0.10-plugins-bad 和 gstreamer0.10-plugins-ugly。

如果您想要播放加密的 DVD(请参见以上法律备注),则打开 Dash 并启动终端

键入以下内容,然后按回车

sudo /usr/share/doc/libdvdread4/install-css.sh

输入您的密码以完成安装。

usr/share/help-langpack/zh_CN/ubuntu-help/files-delete.page0000644000373100047300000000571012320733004025531 0ustar langpacklangpack00000000000000 删除您不再需要的文件或文件夹。 Cristopher Thomas crisnoh@gmail.com Shaun McCance shaunm@gnome.org Jim Campbell jwcampbell@gmail.com Michael Hill mdhillca@gmail.com 删除文件和文件夹

当您删除某个项目时,该项目被移到“回收站”文件夹,在您清空回收站之前,它将一直存储在此处。如果您认为您还需要存储在“回收站”文件夹中的项目,或者这些项目是被意外删除的,您可以将其还原至原始位置。

要将文件移动到回收站:

单击您想要删除的项目。

按键盘上的 Delete 键。或者,将项目拖入侧边栏中的回收站

要永久删除文件以腾出部分磁盘空间,您必须清空回收站。要清空回收站,右键单击回收站图标并选择清空回收站

永久删除文件

您可以立即永久删除一个文件,而无需将其先放进回收站。

永久删除文件

选择您想要删除的项目。

按住 Shift 键,然后按键盘上的 Delete 键。

由于您无法取消此操作,因此会要求您确认是否确实要删除文件或文件夹。

如果您需要频繁地删除文件而不用回收站(例如,经常处理敏感数据),您可以在文件和文件夹的右键菜单中添加一个删除条目。在菜单栏点击文件,选择选项,然后选择行为标签,选择包括绕过回收站的删除命令

可移动设备上已删除的文件在其他操作系统上可能看不到,如 Windows 或 Mac OS。但这些文件仍然存在,当您将设备重新插入您的计算机时,将重新可用。

usr/share/help-langpack/zh_CN/ubuntu-help/nautilus-views.page0000644000373100047300000001263212320733004026167 0ustar langpacklangpack00000000000000 对文件管理器指定默认视图、排列顺序和缩放级别。 Tiffany Antopolski tiffany.antopolski@gmail.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com <app>文件</app> 中的视图参数

您可以改变新建文件夹的默认视图、文件和文件夹的默认排序、图标和简洁视图的缩放程度,还有文件在树边栏的显示。当 文件 打开时,在顶部菜单栏选择 Files 参数设置 ,然后选择 视图 标签。

默认视图 <gui>用于查看新文件夹</gui>

默认情况下,新建文件夹显示为图标视图。如果您喜欢列表视图,您可以将其设置为默认视图。或者,您可以通过在工具栏选择 列表视图 或者 图标视图 为浏览每个文件夹选择不同的视图方式。

<gui>排列项目</gui>

当文件夹中的文件被修改,或者当它们被访问,或者当它们被扔到回收站后,您可以使用参数设置下拉菜单中的 排列项目 按名称、文件大小和文件类型排序,改变文件夹中的默认排序次序。

您可以通过在工具栏点击 视图选项 按钮并选择 按名称按大小按类型 或者 按修改时间 ,或者在列表视图中点击列标题列表,改变个人文件夹中的 文件排序 。该菜单仅作用于当前文件夹。

<gui>将文件夹排列在文件之前</gui>

默认情况下,文件管理器不再显示所有文件夹在文件之前。想要在文件之前看到所有文件夹,启用该选项。

<gui>显示隐藏文件和备份文件</gui>

文件管理器默认未显示 隐藏文件 和文件夹,您可以通过选择该选项总是显示隐藏文件。

您也可以通过在工具栏的 视图选项 菜单中选择 显示隐藏文件 ,在个人窗口显示隐藏文件。

图标视图默认设置 <gui>默认缩放级别</gui>

您可以使用该选项让图标视图中的默认图标和文本文件更大或者更小,您也可以通过在工具栏上点击 视图选项 按钮并选择 放大, 缩小 或者 标准尺寸 ,来改变个人文件夹中的缩放设置。如果您经常使用一个较大或者较小尺寸,您可以通过该选项将其设置为默认显示尺寸。

在图标视图中, 图标说明 显示或多或少取决于您的图标缩放大小。

列表视图默认设置 <gui>默认缩放级别</gui>

您可以使用该选项让列表视图中的图标和文本文件更大或者更小。您也可以通过在工具栏上点击 视图选项 按钮并选择 放大, 缩小 或者 标准尺寸 ,来改变个人文件夹中的缩放设置。

usr/share/help-langpack/zh_CN/ubuntu-help/color-calibrate-screen.page0000644000373100047300000000401712320733004027505 0ustar langpacklangpack00000000000000 校准屏幕对显示颜色的准确性非常重要。 Richard Hughes richard@hughsie.com Michael Hill mdhillca@gmail.com 如何校准我的屏幕?

如果要进行计算机设计或美术工作,必须先校准显示屏。

色度计设备可以帮助您精确测量屏幕能够显示的色彩。请运行系统设置色彩创建新配置文件,向导会提示您如何安装色度计设备以及需要调整哪些设置。

色度计设备可以帮助您精确测量屏幕能够显示的色彩。请运行系统设置色彩创建新配置文件,向导会提示您如何安装色度计设备以及需要调整哪些设置。

屏幕始终在不断变化 - TFT 背光的亮度约 18 个月就会降低一半,随着其逐渐老化,也会越来越黄。这意味着颜色控制面板中出现 [!] 图标时,您就应该重新校准您的屏幕。

LED 背光液晶屏幕也会随着时间推移而变化,但比 TFT 要慢得多。

usr/share/help-langpack/zh_CN/ubuntu-help/nautilus-display.page0000644000373100047300000000452512320733004026501 0ustar langpacklangpack00000000000000 管理用于文件管理器中的图标说明。 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 文件管理器显示首选项

You can control how the file manager displays captions under icons. Click Edit in the menu bar, pick Preferences and select the Display tab.

图标标题

有标题的文件管理器图标

使用图标视图时,可决定在每个图标下的标题中显示更多有关文件和文件夹的信息。这样很有用,例如,常需要查看文件所有者或上次文件修改时间时。

You can zoom in a folder by clicking the View Zoom In or press Ctrl+. As you zoom in, the file manager will display more and more information in captions. You can choose up to three things to show in captions. The first will be displayed at most zoom levels. The last will only be shown at very large sizes.

如果已打开文件管理器窗口,则可能必须重新装入才能使图标标题更改生效。请依次单击视图重新装入或按 CtrlR

usr/share/help-langpack/zh_CN/ubuntu-help/documents-previews.page0000644000373100047300000000251612320733004027033 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2012 Michael Hill mdhillca@gmail.com 2012 您只能预览存储在本地的文件。 为什么一些文件没有预览呢?

当您打开文档应用程序,将会显示存储在本地文件的预览缩略图。那些存储在远程服务器上的文档,如 Google Docs SkyDrive 显示为缺失(或空白)预览缩略图。

如果您下载的 Google Docs SkyDrive 的文档存储到本地,将生成文档缩略图。

Google Docs SkyDrive 下载的文档的本地副本将失去其在线更新的能力。如果您想继续在线编辑,最好不要下载。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-launcher-change-size.page0000644000373100047300000000217112320733004030327 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 放大或缩小启动器图标尺寸。 改变启动器图标尺寸

您可以缩小启动器图标尺寸,使其可以容纳更多图标。亦可增大图标尺寸,使图标更易点击。

单击菜单栏最右侧的图标,选择系统设置

单击外观

移动启动器图标大小滑块以增大或减小启动器图标的尺寸。

启动器图标的默认尺寸为 48

usr/share/help-langpack/zh_CN/ubuntu-help/wacom-left-handed.page0000644000373100047300000000227312320733004026447 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com 2012 将 Wacom 手写板改为 左手习惯 以左手使用平板

有一些手写板的硬件按钮位于侧面,机器在 180 度旋转后也可以正常使用,以方便管用左手的用户。如需将使用方向切换为左手模式:

点击 菜单栏 最右端的图标并选择 系统设置

打开 Wacom 手写板

如果没有检测到手写板,则系统将会告诉您 请插入并打开您的 Wacom 手写板

打开 左手模式 开关。

usr/share/help-langpack/zh_CN/ubuntu-help/disk-capacity.page0000644000373100047300000000616312320733004025717 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org Natalia Ruz Leiva nruz@alumnos.inf.utfsm.cl Michael Hill mdhillca@gmail.com 使用磁盘使用分析器系统监控器来检查空间和容量。 检查剩余磁盘空间

您可以使用磁盘使用分析器系统监视器来检查剩余的磁盘空间。

利用磁盘使用分析器进行检查

要使用磁盘使用分析器检查空余磁盘空间和磁盘容量:

Dash 中打开磁盘使用分析器应用程序。窗口将会显示总文件系统容量总文件系统用量

活动概述中打开磁盘应用程序。窗口将会显示总文件系统容量总文件系统用量

单击工具栏上的对应按钮以扫描主文件夹扫描文件系统扫描文件夹,或扫描远程文件夹

根据文件夹用量大小 以及 内容显示信息。在磁盘使用分析器中可以看到更多信息。

利用系统监视器进行检查

要利用系统监视器检查空余磁盘空间和磁盘容量:

Dash 中打开系统监控器应用程序。

活动概述中打开系统监视器

选择文件系统标签页查看系统的分区和磁盘空间使用情况。信息根据总计空余可用已用分别显示。

如果磁盘过满怎么办?

如果磁盘过满,您应:

删除不重要或不再使用的文件。

对短时间内不需要的重要文件进行备份,然后将其从硬盘删除。

usr/share/help-langpack/zh_CN/ubuntu-help/legal.xml0000644000373100047300000000051512320733004024135 0ustar langpacklangpack00000000000000

此作品以创作共享署名-相同方式共享 3.0 未本地化版本许可协议 许可协议发布

usr/share/help-langpack/zh_CN/ubuntu-help/user-admin-explain.page0000644000373100047300000000651112320733004026671 0ustar langpacklangpack00000000000000 您需要具备管理员特权才能更改您系统的重要部分。 GNOME 文档项目 gnome-doc-list@gnome.org 管理特权的工作原理是什么?

新建的文件一样,您的计算机也有很多系统正常运行所需的文件。如果这些重要的系统文件被不当更改,会导致多种项目遭到破坏,因此在默认情况下保护会这些文件不受更改。特定的应用程序也会修改系统的重要部分,因此也受保护。

保护它们的方式是仅允许具有管理特权的用户更改文件或使用某些应用程序的。在日常使用中,您不需要更改系统文件或使用这些应用程序,因此,在默认情况正,您没有管理员特权。

有时您需要使用这些应用程序,因此您可临时获得管理特权,以允许您进行更改。如果应用程序需要管理员特权,它将向您询问密码。例如,如果您要安装某个新软件,则软件安装程序(软件包管理器)将向您询问管理员密码,以便它可将新的应用程序添加至该系统。一旦完成,您的管理员特权将再次被收回。

管理员权限与用户帐户密切相关。您可以授予一些用户管理员权限,而对另一些用户禁用这项权限。没有管理员权限的帐户无法安装软件。一些用户帐户(例如“root”帐户)永久性拥有管理员权限。您不应该永远开启账户的管理员权限,以免误操作造成严重的后果(例如误删系统文件)。

总之,管理员特权使您可在需要时更改系统的重要部分,但可防止您意外操作。

“超级用户”是什么意思?

拥有管理员特权的用户有时称为超级用户。这只是因为该用户比正常用户拥有更多特权。您可看到人们讨论如 susudo 这样的内容;这些是临时提供给您“超级用户”(管理)特权的程序。

管理员特权为何有用?

进行重要的系统更改前要求用户拥有管理员特权非常有用,因为它可防止您的系统被有意或无意地破坏。

如果您始终拥有管理员特权,则您可能意外更改重要文件,或者错误运行更改重要内容的应用程序。仅在需要时临时获取管理员特权降低了这些错误发生的风险。

您应当只为部分受信任的用户授予管理员权限。这样就可以阻止其它用户弄乱您的电脑,例如擅自卸载您需要的软件、擅自安装您不想看到的软件、或擅自改动重要的文件。从安全角度来说,只为完全信任的部分用户提供管理员权限是非常必要的。

usr/share/help-langpack/zh_CN/ubuntu-help/wacom-mode.page0000644000373100047300000000332512320733004025217 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com 2012 将手写板在平板模式和鼠标模式之间进行切换。 设置 Wacom 手写板的跟踪模式

跟踪模式 选项决定的是指针与屏幕之间位置关系的判定模式。

点击 菜单栏 最右端的图标并选择 系统设置

打开 Wacom 手写板

如果没有检测到手写板,则系统将会告诉您 请插入并打开您的 Wacom 手写板

跟踪模式 旁边,选择 手写板(绝对)触摸板(相对)

绝对 模式下,平板上的每一点都会与屏幕上的每一点一一对应。例如屏幕最左上角的像素点,永远对应平板最左上角的点。

相对 模式下,如果您将触控笔脱离平板,然后在另一个位置落下,电脑屏幕上的指针并不会改变位置。这与鼠标操控的方式是相同的,您可以用更少的手部动作覆盖更大的距离。

usr/share/help-langpack/zh_CN/ubuntu-help/user-accounts.page0000644000373100047300000000271412320733004025763 0ustar langpacklangpack00000000000000 用户 添加用户 或 访客用户,修改密码,管理员… GNOME 文档项目 gnome-doc-list@gnome.org 用户帐户

使用计算机的每个人员应该有不同的用户帐户。这使他们可将其自己的文件与您的文件分开,并选择他们自己的设置。这也更加安全。您只有知道密码才可访问不同的用户帐户。

帐户 管理用户帐户
密码
特权 用户特权
usr/share/help-langpack/zh_CN/ubuntu-help/keyboard-shortcuts-set.page0000644000373100047300000000510612320733004027613 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com Julita Inca yrazes@gmail.com 键盘设置项中定义或修改键盘快捷键。 设置键盘布局

要改变键盘快捷键的设置:

单击菜单栏最右侧的图标,选择系统设置

打开鼠标和触摸板,然后选择鼠标选项卡。

在左边的窗格中选择一个类别,并在右边行选择所需的操作,当前的快捷键定义将变更为 新快捷键...

按下所需的组合键,或者按下 退格 键进行清除。

自定义快捷键

要设置您的自定义快捷键:

在左边栏选择 自定义快捷键 ,然后点击 + 按钮(或者在任意类别中点击e + 按钮), 自定义快捷键 窗口将会弹出。

输入一个 名称 来标识这个快捷键,并输入一条 命令 来运行一个应用程序,然后点击 应用 。例如,如果您想要这个快捷键打开 Rhythmbox ,您可以命名它为 音乐 并使用 rhythmbox 命令。

在增加的行点击 禁用 ,当它变更为 新快捷键… 时,按下所需的快捷组合键。

您设定的命令名称必须是有效的系统命令。您可以打开一个终端输入命令来查看其是否有效。一般来说用于打开程序的命令就是该程序的名字。

如果您想要改变快捷键对应的命令,双击快捷键的名字,然后在弹出的编辑快捷键窗口中编辑命令。

usr/share/help-langpack/zh_CN/ubuntu-help/power-whydim.page0000644000373100047300000000256612320733004025630 0ustar langpacklangpack00000000000000 如果您的笔记本电脑在电池供电状态下运行,则屏幕将在计算机待机时变暗以省电。 GNOME 文档项目 gnome-doc-list@gnome.org Michael Hill mdhillca@gmail.com 为什么我的屏幕会在不久后变暗?

如果您的笔记本电脑通过电池供电运行,则屏幕将在计算机待机时变暗以省电。再次开始使用计算机时,屏幕将变亮。

您可以阻止屏幕自动变暗:

单击顶部菜单栏最右侧的图标,选择系统设置

打开 亮度和锁定,取消选择 使屏幕变暗以节省电量

usr/share/help-langpack/zh_CN/ubuntu-help/sound-nosound.page0000644000373100047300000001133712320733004026004 0ustar langpacklangpack00000000000000 检查确认未静音,电缆插入正确,并可以检测到声卡。 GNOME 文档项目 gnome-doc-list@gnome.org 听不到计算机的任何声音

如果您听不到计算机上的任何声音(例如,当您试图播放音乐时),请尝试这些故障诊断步骤能否解决您的问题。

确保没有静音

点击菜单栏中的 声音菜单(看上去像一个喇叭)并确保没有静音或调到很小的音量。

一些笔记本电脑的键盘上有静音开关或按键,尝试按下该键以查看能否取消静音。

您也应检查确认正在用来播放声音的应用程序(例如,您的音乐播放器或电影播放器)未静音。该应用程序的主窗口中可能有“静音”或“音量”按钮,如果的确有,请对其进行检查。另外,单击菜单栏中的声音按钮并选择声音设置声音窗口出现时,进入应用程序标签页并检查确认您的应用程序在此处未静音。

检查扬声器是否已正确插入并打开。

如果您的计算机有外部扬声器,则确保扬声器已打开并已调高音量。确保扬声器电缆已稳固插入计算机背面的“输出”音频插槽。此插槽一般为浅绿色。

有些声卡能够切换输出(至扬声器)和输入(从麦克风)插槽。Linux 上的输出和输入插槽可能与在 Windows 或 Mac OS 上的不同。尝试依次将扬声器电缆连接到计算机上不同的音频插槽以查看插槽是否起作用。

最后,检查音频电缆已稳固插入扬声器的背面。一些扬声器也不止有一个输入。

检查确认已选择正确的音效设备

一些计算机安装了多个“声音设备”。其中一些可以进行声音输出而另一些不能,因此您应检查确认已选择正确的声音设备。选择正确的声音设备可能需要反复的实验。

单击顶部面板中的声音菜单并单击声音设置

在弹出的 声音 窗口中,在 使用以下输出播放声音列表中尝试选择不同的输出。

对选中的设备,点击测试声音。在弹出的窗口中,点击每一个扬声器。每个按钮将只通过其对应的声道报告其位置。

如果不起作用,则您可能需要对列出的其他设备执行相同的操作。

检查已检测正常声卡

可能未正常检测您的声卡。如果这样,您的计算机会认为无法播放声音。无法正确检测到声卡的原因可能是因为没有安装声卡驱动程序。

前往 Dash 然后打开终端。

键入 aplay -l 并按回车

将显示设备列表。如果没有播放硬件设备,意味着不能检测到您的声卡。

如果没有检测到声卡,则您需要手动为其安装驱动程序。您要怎样做取决于您要使用的声卡。

通过使用终端中的 lspci 命令,您可查看您的声卡类型。如果以 超级用户 运行 lspci,则您可获得更完整的结果;输入 sudo lspci 并键入您的密码。查看是否列示了音频控制器音频设备 — 应包含该声卡的制造商和型号。sudo lspci -v 将会显示一个包含更多详细信息的列表。

您可以尝试通过网络搜索和安装读卡器驱动。如果仍然无法解决,则应 向 Ubuntu 报告一个问题。

如果找不到适合您声卡的驱动程序,则您可能需要购买一个新的声卡。您可以购买安装到计算机内部的声卡和外部的 USB 声卡。

usr/share/help-langpack/zh_CN/ubuntu-help/prefs-language.page0000644000373100047300000000217212320733004026066 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com Ubuntu 文档团队 安装语言,更改语言,区域和格式,输入源… 区域 & 语言
语言支持
文本框
usr/share/help-langpack/zh_CN/ubuntu-help/a11y-slowkeys.page0000644000373100047300000000433312320733004025620 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Phil Bull philbull@gmail.com Michael Hill mdhillca@gmail.com 按键之后,屏幕显示对应字母之前,有一些延迟。 开启慢速键

如果您希望按键后屏幕延迟显示对应字母,可开启慢速键。这意味着您必须按住您想要输入的每个键一小会儿,对应字母才会显示。在输入过程中会意外一次按下多个键时,或发现在键盘上第一次就能按下正确的键有困难时,可以使用慢速键。

单击顶部菜单栏最右侧的图标,选择系统设置

打开辅助功能,选择输入标签。

开启慢速键

快速开启和关闭慢速键

通过键盘启用中选择通过键盘开启辅助功能特性选项,启用从键盘开启或关闭慢速键的功能。启用该选项之后,按住 Shift 键 8 秒可以开启或禁用慢速键。

使用可接受延迟滑块来控制您必须按住键多久才能完成输入。

您可以对计算机进行设置,使其在键被按下、按键被接受或由于键因未按下足够长时间而被拒绝时发出声音提示。

usr/share/help-langpack/zh_CN/ubuntu-help/clock-set.page0000644000373100047300000000504112320733004025050 0ustar langpacklangpack00000000000000 更新屏幕顶部显示的时间/日期。 GNOME 文档项目 gnome-doc-list@gnome.org Ubuntu 文档项目 ubuntu-doc@lists.ubuntu.com Michael Hill mdhillca@gmail.com 更改日期和时间

如果显示在菜单栏上的日期和时间不正确或格式错误,您可以进行修改:

如果显示在顶部栏上的日期和时间不正确或格式错误,您可以进行修改:

调整时间和日期,点击位于菜单栏上的时钟,并选择日期 &和时间设置

通过点击地图上的位置或在位置框中输入城市名称来调整系统时区。

默认情况下,Ubuntu 将定期与网络时间服务器同步,因此您不必手动设置您的时钟。

点击顶部栏右侧的时钟并选择日期和时间设置

您可能需要点击解锁并输入管理员密码。

通过点击箭头选择小时和分钟调整日期和时间。您可以从下拉列表中选择年,月,日。

如果您喜欢,可以通过切换到网络时间自动更新时间。

当切换到网络时间,计算机会定期与网络上的时钟同步,因此您不必手工校正。这只有您连接到互联网才有效。

您也可以通过选择 24 小时 AM/PM 格式改变小时显示方式。

usr/share/help-langpack/zh_CN/ubuntu-help/clock-timezone.page0000644000373100047300000000334612320733005026116 0ustar langpacklangpack00000000000000 添加其他时区以便您能够看到其他城市的时间。 GNOME 文档项目 gnome-doc-list@gnome.org Michael Hill mdhillca@gmail.com 显示其他时区

如果您想要知道世界各地不同城市的时间,您可以在钟表菜单中添加其他时区。添加的这些城市将在您单击钟表时显示在日历下方。

点击时钟并选择日期 & 时间设置

转到时钟选项卡,然后选中其他地区的时间

单击选择位置

单击 + 可添加位置。

将您想要添加的城市名称填写在“位置”空白处。等待可能的城市列表显示在下拉列表中。

选择您想要的城市,该地当前的时间将自动填入。

单击 - 可从列表中删除城市。

您还可以拖放此位置窗口中的城市,改变它们在钟表菜单中的显示顺序。

usr/share/help-langpack/zh_CN/ubuntu-help/a11y-dwellclick.page0000644000373100047300000000542212320733005026056 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com “悬停点击”功能使您能够通过保持鼠标不动完成点击。 通过悬停模拟点击

您可以让鼠标在悬停时自动做出点击或拖动动作。如果您无法在移动鼠标的同时点击鼠标键,这样的做法将会带来很大的方便。这个特性叫做“悬停点击”。

当悬停点击特性开启时,您可以将鼠标指针移动到控件上,静待片刻,系统将自动为您完成单击鼠标的动作。

单击顶部菜单栏最右侧的图标,选择系统设置

Click your name on the menu bar and select System Settings.

打开通用辅助功能并选择指向和单击选项卡。

开启悬停点击

悬停点击窗口随即打开,并在其他所有窗口之上显示。您可以使用该窗口来选择悬停于按钮之上时发生哪种点击。例如,如果您选择次要点击,鼠标会当您在按钮上悬停几秒钟后完成右击。无论是完成双击、右击还是拖动后都会自动返回到单击。

将鼠标指针悬停于按钮上并保持不动时,其颜色会逐渐改变。完全变色后,按钮就会被点击。

使用延时滑块控制您必须按住键多久才能完成点击。

将鼠标悬停于按钮上以点击该按钮时不必完全保持鼠标不动 - 指针可以小幅移动,片刻后仍可完成点击。但如果移动的范围过大,则不会完成点击。

调整延时设置控制您必须按住键多久才能完成点击。

usr/share/help-langpack/zh_CN/ubuntu-help/accounts-which-application.page0000644000373100047300000000514512320733005030412 0ustar langpacklangpack00000000000000 Baptiste Mille-Mathias baptistem@gnome.org 2012-2013 Michael Hill mdhillca@gmail.com Andre Klapper ak-47@gmx.net Greg Beam ki7mt@yahoo.com 应用程序可使用通过在线账户创建的账户及相关服务。 哪些应用在使用在线账户?

利用在线账户,某些第三方应用程序可以自动进行配置。

Google 账户

Evolution 电子邮件应用会自动添加邮件账户,可以收发邮件、访问通讯录和显示Google 日历的记录项。

Empathy 即时通讯程序会自动添加您的在线账户,可以与朋友聊天。

通讯录应用可以查看或编辑联系人。

文档应用可以访问和显示在线文档。

Windows Live, Facebook 和 Twitter 账户

Empathy 使用这些账户连线网络,与联系人、好友以及粉丝聊天。

SkyDrive 账户

文档应用可以访问并显示 Microsoft SkyDrive 中的在线文档。

Exchange 账户

创建 Exchange 账户之后,Evolution 会从该账户收取邮件。

ownCloud 账户

设置 ownCloud 账户之后,Evolution 可以访问并编辑通讯录和日历约会。

文件等应用可以列出并访问您在 ownCloud 部署中存储的在线文件。

usr/share/help-langpack/zh_CN/ubuntu-help/user-forgottenpassword.page0000644000373100047300000001444212320733005027740 0ustar langpacklangpack00000000000000 重置密码的高级技术 GNOME 文档项目 gnome-doc-list@gnome.org 忘记密码

选择一个又好又安全的密码很重要,选择一个能够记住的密码也很重要。如果忘记登录到您计算机帐户的密码,则您可按照以下步骤重置密码。

如果您拥有加密的主目录,则您将无法重置已忘记的密码。

如果您只是想更改密码,请参见

使用 GRUB 重置密码

重新启动您的计算机,然后在启动期间按下 Shift 键以进入“引导程序”(GRUB)菜单。

如果您拥有双启动机器并且需要您在操作系统启动时选择,则无需按住 Shift 键引导程序菜单也会出现。

如果您无法进入“引导程序”根菜单且因此无法选择进入恢复模式,您可使用Live CD 重置您的用户密码。

按键盘上的上下箭头以突出显示以单词“恢复模式”结尾的行,然后按回车

您的计算机现在将开始引导流程。几分钟之后,将出现恢复菜单。使用您的向下箭头键以突出显示root 并按回车

# 符号处,键入:

passwd username,其中,username 是您正为其更改其密码的帐户的用户名。

将提示您输入新的 UNIX 密码,并确认新密码。

然后键入:

# reboot

成功登录后,您将无法访问您的密钥环(因为您已不记得旧密码)。这意味着您保存的无线网络、jabber 帐户等所有密码都将不再可用。您将需要删除旧的密钥环并启动一个新的密钥环。

使用 Live CD 或 USB 重置密码

启动 Live CD 或 USB。

挂载驱动器。

AltF2 以进入运行应用程序窗口。

键入 gksu nautilus 以启动拥有整个系统特权的文件管理器。

在您刚挂载的的驱动器内,您可通过单击 home 然后单击您的用户名来确认它为正确的驱动器。

进入已挂载驱动器的顶层目录。然后进入 etc 目录。

找到“shadow”文件,并备份:

右键单击影子文件并选择复制

然后在空白处右键单击并选择粘贴

重命名该备份“shadow.bak”。

使用文本编辑器编辑原始的“shadow”文件。

查找您忘记其密码的用户名。它应如下例所示(冒号后边的字符将有所不同):

username:$1$2abCd0E 或

username:$1$2abCd0E:13721a:0:99999:7:::

删除第一个冒号之后、第二个冒号之前的字符。这将移除该帐户的密码。

保存文件,退出所有程序并重新启动您的计算机(不再使用 Live CD 或 USB)。

开机进入您安装的系统后,单击菜单栏中您的名称。打开我的帐户并重置您的密码。

对于当前密码不要输入任何内容,因为您当前的密码为空。仅单击认证并输入新的密码。

成功登录后,您将无法访问您的密钥环(因为您已不记得旧密码)。这意味着您保存的无线网络、jabber 帐户等所有密码都将不再可用。您将需要删除旧的密钥环并启动一个新的密钥环。

清除密钥环

这将删除您保存的无线网络、即时通讯帐户等的密码。仅当您无法记起密钥环使用的密码时,执行此操作。

Dash 中输入“home”来进入主文件夹。

Ctrlh(或单击查看显示隐藏文件。)

双击文件夹 ~/.local/share

双击名为密钥环的文件夹。

删除 keyrings 文件夹中的所有文件。

重新启动计算机。

重新启动并登录后,将要求您输入无线网络密码。

usr/share/help-langpack/zh_CN/ubuntu-help/a11y-right-click.page0000644000373100047300000000537612320733005026151 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Shaun McCance shaunm@gnome.org 2012 Michael Hill mdhillca@gmail.com 按住鼠标左键完成右击。 模拟右键点击

您可以通过按住鼠标左键来完成右击。这在您发现分别移动一只手上的手指有困难时或者您使用的鼠标只有一个按键时非常有用。

单击顶部菜单栏最右侧的图标,选择系统设置

Click your name on the menu bar and select System Settings.

打开通用辅助功能并选择指向和单击选项卡。

开启模拟次要点击

您可以修改按住鼠标左键来完成一次右击的时间:在 指向与点击选项卡,修改模拟次要点击下方的延迟时间

要模拟右击动作,请先将鼠标移动到指定的位置然后按住左键,持续一段时间之后再松开。按住鼠标左键之后,指针会被逐渐填充成蓝色,请在指针完全变蓝之后,再松开左键模拟右击。

调整指针以及其它某些特殊的指针不会改变颜色,但即使指针没有视觉反馈,您仍然可以正常地使用模拟次要点击功能。

如果使用了鼠标键,可以在键盘上按 5 键模拟右击。

活动概述界面,不论功能是否开启,都可以通过长按左键来模拟右击。在该界面长按的方式略有不同:不需要释放左键就可以模拟右击。

usr/share/help-langpack/zh_CN/ubuntu-help/hardware-driver.page0000644000373100047300000000314612320733005026257 0ustar langpacklangpack00000000000000 计算机可通过硬件/设备驱动程序使用与其相连的设备。 GNOME 文档项目 gnome-doc-list@gnome.org 什么是驱动程序?

设备是计算机的实体 "部分"。设备可以是打印机和显示器之类的外部设备,设备也可以是显卡和声卡之类的内部设备。

为使计算机能够使用这些设备,必须了解如何与其进行通信。这要通过名为设备驱动程序的软件来实现。

与计算机连接设备时,必须已经安装相应驱动程序,所连接的设备才能运行。例如,如果插入打印机但没有相应驱动程序,则不能使用插入的打印机。用于各型设备的驱动程序通常互不兼容。

在 Linux 中,大多设备的驱动程序默认情况下都已安装好,因此插入设备时应该一切都能运行。但是,驱动程序可能必须手动安装,也可能根本就没有。

此外,某些现有驱动程序还不完整或有一部分还不能运行。例如,可能会发现不能用打印机进行双面打印,而除此之外的其他功能都能使用。

usr/share/help-langpack/zh_CN/ubuntu-help/net-nonm.page0000644000373100047300000000300012320733005024711 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org AltF2。键入 nm-applet 菜单栏上的没有网络菜单

如果网络菜单从顶部面板消失,您的 Network Manager 可能未运行。要重新启动 Network Manager:

AltF2

键入 nm-applet 并按回车

将会弹出无线网络身份验证框。在相应的框中输入密码并单击连接

如果它不工作,很有可能是网络管理器出问题了。如果是这种情况,到 Dash 中打开终端,输入 nm-applet 并按下 Enter 。如果出现网络菜单请查看;如果没有出现,您需要查看终端显示的错误信息。它们应该会告诉你哪里出错了,但描述会相当专业。如果这样,请在论坛上引用这些错误信息寻求帮助。

usr/share/help-langpack/zh_CN/ubuntu-help/a11y-font-size.page0000644000373100047300000000275512320733005025665 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 使用较大字体使文本更易于阅读。 更改屏幕上的文字大小

如果您阅读屏幕上的文字有困难,您可以更改字体的大小。

单击顶部菜单栏最右侧的图标,选择系统设置

打开辅助功能,选择视觉标签。

大号字体切换到开启状态。

在很多应用程序中,您可以随时按 Ctrl+ 来增加文字大小。要减小文字大小,请按 Ctrl-

usr/share/help-langpack/zh_CN/ubuntu-help/files-preview.page0000644000373100047300000000236612320733005025755 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 快速显示和隐藏文档、图像、视频以及更多内容。 预览文件和文件夹

您可以通过一个成熟的应用程序快速预览文件,无需直接打开它们。选中任一文件并按下空格键,文件将会出现在一个简单的预览窗口,再次按下空格键取消预览。

内置的预览插件支持绝大多数文件格式的文档、图像、视频和音乐。在预览窗口里,您可以滚动浏览文档或者播放视频和音频文件。

按下 f 查看全屏预览,再次按下 f 退出全屏预览,或者按下空格键完全退出预览。

usr/share/help-langpack/zh_CN/ubuntu-help/files-hidden.page0000644000373100047300000000574712320733005025535 0ustar langpacklangpack00000000000000 隐藏文件,使其不在文件管理器中显示 Phil Bull philbull@gmail.com Michael Hill mdhillca@gmail.com 隐藏文件

您可以使用 GNOME 文件管理器隐藏/显示文件。当一个文件被隐藏,在文件管理器中看不到它,但它仍然存在文件夹中。

要隐藏文件,在名称前添加 "." 来重命名文件。例如,要隐藏文件 example.txt,您应将其重命名为 .example.txt

您可以用与隐藏文件相同的方式隐藏文件夹。在名称前添加 "." 来重命名文件夹。

显示所有隐藏文件

如果您想在文件夹中查看所有的隐藏文件,进入该文件夹,或者点击工具栏上的向下按钮,勾选显示隐藏文件夹,或者按 Ctrl H 键。您将看到所有的隐藏文件和未隐藏的普通文件。

如果想再次将这些文件隐藏,或者点击工具栏上的向下按钮,勾选显示隐藏文件,或者再次按 Ctrl H 键。

取消隐藏文件

要取消隐藏文件,进入包含隐藏文件的文件夹,点击工具栏上的向下按钮,勾选显示隐藏文件。找到该隐藏文件将其重命名,去掉名字前的 . 。例如,要取消一个名为.example.txt的隐藏文件,将它重命名为 example.txt

重命名文件之后,您可以点击工具栏上的 向下 按钮选择 显示隐藏文件,或使用键盘快捷键 CtrlH 来再次隐藏其它隐藏文件。

隐藏文件将仅在当前窗口显示,直到您关闭文件管理器为止。要在所有文件管理器窗口中显示隐藏文件,请参阅

有些隐藏文件的名称以 "." 开头。另一些隐藏文件可能以 "~" 结尾(参阅)。

usr/share/help-langpack/zh_CN/ubuntu-help/accounts-provider-not-available.page0000644000373100047300000000323512320733005031353 0ustar langpacklangpack00000000000000 Baptiste Mille-Mathias baptistem@gnome.org Kevin M. Godby kevin@godby.org Michael Hill mdhillca@gmail.com Greg Beam ki7mt@yahoo.com Why aren't service providers listed? 为什么我使用的账户类型未被列出?

为了支持您喜爱的服务提供商,必须有人开发相应的插件,目前已经支持的在线账户有:

Facebook

Flickr

Google

Twitter

AIM

Windows Live

Salut

Jabber

Yahoo

如果您有兴趣支持其他服务,请通过 bug 跟踪系统联系开发者。

usr/share/help-langpack/zh_CN/ubuntu-help/shell-windows-tiled.page0000644000373100047300000000264412320733005027071 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 并排最大化两个窗口 平铺窗口

您可以只在屏幕的左侧或右侧最大化窗口,允许您将两个窗口快速并排放置以快速切换。

要沿屏幕的一侧最大化窗口,抓住标题栏并拖动到左侧或右侧直到该半边窗口高亮。使用键盘的相应操作是按住 CtrlSuper 再按 左方向键右方向键

按住 Alt 键并拖动窗口的任何地方可以移动窗口。

usr/share/help-langpack/zh_CN/ubuntu-help/net-firewall-ports.page0000644000373100047300000000454212320733005026730 0ustar langpacklangpack00000000000000 您需要指定正确的网络端口,以启用/禁用通过防火墙对程序的访问。 Paul W. Frields stickster@gmail.com 常用网络端口

这是提供网络服务的应用程序(如文件共享或远程桌面查看应用程序)常用的网络端口的列表。您可更改系统防火墙来阻止或允许对这些应用程序的访问。使用的端口有数千个,因此该表并不能包含所有端口。

端口

名称

目标

5353/udp

mDNS、Avahi

允许系统相互发现对方,并描述它们提供的服务,您无需手动指定详情。

631/udp

打印

允许您通过网络向打印机发送打印作业。

631/tcp

打印

允许您通过网络与其他人共享打印机。

5298/tcp

在线状态

允许您向网络上的其他人广播您的即时消息状态,如“在线”或“忙碌”。

5900/tcp

远程桌面

允许您共享桌面,以便其他人可以查看或提供远程协助。

3689/tcp

音乐共享 (DAAP)

允许您与网络上的其他人共享您的音乐库。

usr/share/help-langpack/zh_CN/ubuntu-help/net.page0000644000373100047300000000233112320733005023752 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 无线、有线、连接问题、网页浏览、电子邮件账户 和 即时通讯… 社交网络、互联网、电子邮件和聊天工具 usr/share/help-langpack/zh_CN/ubuntu-help/nautilus-list.page0000644000373100047300000000651212320733005026006 0ustar langpacklangpack00000000000000 控制显示在列表视图中的信息。 Phil Bull philbull@gmail.com Michael Hill mdhillca@gmail.com 文件管理器列表列首选项

这里有九列您可以在文件管理器列表视图中显示的信息。在菜单栏点击 文件 ,然后点击 参数设置 并选择 柱列表 标签,然后选择哪些列将可见。

可用上移下移按钮选择所选列的显示顺序。

<gui>名称</gui>

正在查看的文件夹中的文件夹和文件的名称。

<gui>大小</gui>

文件夹大小以文件夹所含项目数的形式显示。文件大小以字节、KB 或 MB 的形式显示。

<gui>类型</gui>

显示为文件夹或 PDF 文档、JPEG 图像、MP3 音频之类的文件类型。

<gui>修改时间</gui>

用于显示上次修改相应文件的日期和时间。

<gui>所有者</gui>

拥有相应文件夹或文件的用户的名称。

<gui>组</gui>

文件所属的组。在家庭计算机中,用户各有各的组。有时会在团体环境中使用组,其中的用户可能属于按部门或项目划分的组中。

<gui>权限</gui>

用于显示文件访问权,例如 drwxrw-r--

第一个字符 - 是文件类型。- 的含义是普通文件,d 的含义是目录(文件夹)。

对于拥有相应文件的用户,之后的三个字符 rwx 用于指定权限。

对于拥有相应文件的组的所有成员,之后的三个字符 rw- 用于指定权限。

对于系统中的所有其他用户,此列中的最后三个字符 r-- 用于指定权限。

每个字符的含义如下:

r:读取权限。

w:写入权限。

x:执行权限。

-:没有权限。

<gui>MIME 类型</gui>

用于显示相应项目的 MIME 类型。

<gui>位置</gui>

通往文件所在位置的路径。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-wepwpa.page0000644000373100047300000000241512320733005027111 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org WEP 和 WPA 是在无线网络上对数据进行加密的方法。 WEP 和 WPA 是什么?

WEP 和 WPA(及 WPA2)是用于保护无线连接的不同加密工具的名称。例如,通过加密来混淆网络连接信息,以防止他人对其进行窃听或偷窥您正在查看的网页。WEP 表示有线等效加密,WPA 表示无线保护访问。WPA2 是 WPA 标准的第二个版本。

使用加密总比未加密摇安全一些,但 WEP 是这些标准中最不安全的,请尽量避免使用此标准。WPA2 是这三种版本中最安全的标准。如果您的无线卡和路由器都支持 WPA2,则您应使用它设置无线网络。

usr/share/help-langpack/zh_CN/ubuntu-help/contacts-setup.page0000644000373100047300000000233612320733005026145 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com 2012 在本地通讯录或在线帐号中存储您的联系人。 首次启动联系人应用程序

首次运行 联系人,打开联系人设置窗口。

如果您配置了在线帐号 , 将会列出 本地通讯录。从列表中选择一个项目并点击 选择

点击在线帐号设置来编辑现有帐号设置。

如果您没有配置网络账号,点击在线帐号开始设置。如果您现在不想设置在线帐号,点击本地通讯录

usr/share/help-langpack/zh_CN/ubuntu-help/backup-restore.page0000644000373100047300000000254212320733005026116 0ustar langpacklangpack00000000000000 从备份中检索文件。 Tiffany Antopolski tiffany.antopolski@gmail.com GNOME 文档项目 gnome-doc-list@gnome.org 恢复备份

当您误删或丢失文件的时候,如果您已经进行了备份,那么就从备份中恢复文件。

To restore your backup from a device such as an external hard drive, USB drive or another computer on the network, you can copy the files back to your computer.

如果您通过 Déjà Dup 等备份程序进行备份,那么您应当通过同样的备份程序来恢复您的备份信息。阅读程序的帮助文档以了解怎样从备份中恢复数据,您可以在帮助文档中找到具体的步骤。

usr/share/help-langpack/zh_CN/ubuntu-help/keyboard-repeat-keys.page0000644000373100047300000000336412320733005027222 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Natalia Ruz Leiva nruz@alumnos.inf.utfsm.cl Julita Inca yrazes@gmail.com Michael Hill mdhillca@gmail.com 让键盘在按住键时不重复字母,或更改每个键的延迟和重复速度。 禁用重复键

默认情况下,按住键盘上的某个键时,会重复相应字母或符号,直到松开该键为止。如果难以足够快地收回手指,则可禁用这种特性,也可更改相应的时间长度选项。

单击菜单栏最右侧的图标,选择系统设置

在“硬件”部分中,单击键盘

关闭 按住某一键时重复该键以彻底禁用重复键。

您也可以拖动 延时 滑块和 速度 滑块来调整相应的选项。

usr/share/help-langpack/zh_CN/ubuntu-help/a11y-contrast.page0000644000373100047300000000271012320733006025574 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 让屏幕上的窗口和按钮层次分明,以便更好地区分它们。 调整对比度

您可以调整窗口和按钮的对比度来让它们更加清晰。这个功能和改变整个屏幕亮度不一样,它只改变用户界面部分的设置。

单击顶部菜单栏最右侧的图标,选择系统设置

打开辅助功能,选择视觉标签。

High Contrast 切换到开启状态。

usr/share/help-langpack/zh_CN/ubuntu-help/addremove-ppa.page0000644000373100047300000000371712320733006025722 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 添加 PPA 帮助测试预发行或专业软件。 添加个人软件包仓库(PPA)

个人软件包仓库(PPA) 是专为 Ubuntu 用户设计的软件仓库,比其他第三方软件库更易于使用。

请务必确保您添加的软件源的安全性。

第三方软件库未经过 Ubuntu 开发者检查安全性和可靠性,可能包含对您的计算机有害的软件。

安装 PPA

在 PPA 概述页面,寻找名为将此 PPA 添加到系统的标题。记下 PPA 的位置,它看起来类似于:ppa:mozillateam/firefox-stable

单击启动器中的 Ubuntu 软件中心图标,或在 Dash 搜索软件中心。

软件中心启动之后,单击编辑 软件源

切换到其他软件选项卡。

单击添加,然后输入 ppa: 地址。

单击添加软件源并在认证窗口输入密码。

单击添加来源,然后关闭“软件源”窗口。Ubuntu 软件中心将会检查您的软件源是否有新的更新。

usr/share/help-langpack/zh_CN/ubuntu-help/color-calibrationtargets.page0000644000373100047300000000236612320733006030172 0ustar langpacklangpack00000000000000 进行扫描仪和摄像机定型需要校准比色卡。 Richard Hughes richard@hughsie.com 支持哪些比色卡类型?

支持以下类型的比色卡:

CMP DigitalTarget

ColorChecker 24

ColorChecker DC

ColorChecker SG

i1 RGB Scan 14

LaserSoft DC Pro

QPcard 201

IT8.7/2

您可以在各种网上商店购买知名厂商的比色卡,如 KODAK、X-Rite 和 LaserSoft。

您也可以从 Wolf Faust 以比较便宜的价格购买比色卡。

usr/share/help-langpack/zh_CN/ubuntu-help/hardware-cardreader.page0000644000373100047300000000470312320733006027061 0ustar langpacklangpack00000000000000 排除读卡器故障 GNOME 文档项目 gnome-doc-list@gnome.org 读卡器问题

许多计算机中都有 SD (Secure Digital)、MMC (MultiMediaCard)、SmartMedia、Memory Stick、CompactFlash 读卡器和其他存储介质卡。这些卡应该都可以自动检测到并挂载好。否则请看以下故障排除步骤:

确保卡放置正确,许多卡正确插入后却看似倒置,同时确保卡已牢固的插入卡槽;一些卡,例如 CF 卡,正确插入需要些许用力。(请不要用力过猛!如果在此过程中遇到硬物,请不要强行用力。)

使用 Dash 打开 文件 管理器,插入的卡出现在左边栏的 设备 列表上了吗?有时候卡出现在这个列表中却不被安装,请点击一下挂载它。(如果侧边栏不可见,按下 F9 或者点击 视图 侧边栏 显示侧边栏 。)

如果卡未出现在侧边栏中,请依次单击转到计算机。如果读卡器已经配置妥当,则没有卡时会将读卡器显示为驱动器,卡挂载好后则会显示卡本身(请见下图)。

能看到读卡器却不能读取卡中内容,则卡本身可能有问题。请用另一个卡试一试;如有可能,也可在另一读卡器中检查存储卡本身是否有问题。

如果计算机文件夹中没有卡或驱动程序,则可能是因为有驱动程序问题而不能将读卡器用于 Linux。如果读卡器是内置读卡器(在计算机内而不是外置),则这种可能性更大。最有效的解决方法是直接将设备(相机、手机等设备)连接到计算机 USB 端口上。也可使用外置 USB 读卡器,Linux 对这种读卡器的支持要好得多。

usr/share/help-langpack/zh_CN/ubuntu-help/net-install-java-plugin.page0000644000373100047300000000142412320733006027634 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 调整您的浏览器以与需要 Java 的网站相兼容。 安装 Java 浏览器插件

有些网站使用 Java 程序,需要安装 Java 插件才能运行。

安装 icedtea6-plugin 软件包以在浏览器中查看 Java 程序。

usr/share/help-langpack/zh_CN/ubuntu-help/user-changepicture.page0000644000373100047300000000271512320733006026770 0ustar langpacklangpack00000000000000 将您的照片添加到您的登录和用户屏幕。 GNOME 文档项目 gnome-doc-list@gnome.org Shaun McCance shaunm@gnome.org 更改您的登录屏幕图片

登录或切换用户时,您将看到带有登录图片的用户列表。您可将您的图片更改为图片库图像或您自己的照片。您甚至可以使用网络摄像头拍摄新的登录图片。

点击 菜单栏 最右端的图标并选择 系统设置

打开 用户帐户

单击您名称旁边的图片。将显示带有一些图片库登录图片的下拉图表。如果您喜欢其中之一,则单击采用。

如果您想使用您计算机中已有的图片,则单击浏览更多图片

usr/share/help-langpack/zh_CN/ubuntu-help/shell-windows-states.page0000644000373100047300000000725412320733006027276 0ustar langpacklangpack00000000000000 恢复、调整、排列和隐藏。 Shaun McCance shaunm@gnome.org 2012 窗口操作

窗口可以调整大小或隐藏以适合工作流程。

最小化,恢复和关闭

要最小化窗口或隐藏窗口,您可以:

点击应用程序的菜单栏中看起来像“减号”的按钮。如果应用程序已最大化(填满您的整个屏幕),则菜单栏将出现在屏幕最上方。否则,最小化按钮将出现在应用程序窗口的顶端。

或者按 AltSpace 显示窗口菜单。然后按 n。窗口“消失”到了启动器中。

要恢复该窗口:

启动器 上点击或者通过按 AltTab 在窗口切换器中获取。

要关闭该窗口:

单击位于窗口左上角的x,或者

AltF4,或者

AltSpace 以呼出窗口菜单。然后按 c

调整大小

窗口最大化时无法调整大小。

要调整窗口的水平或竖直大小:

将鼠标指针移至窗口的任意一个角,直到显示“角落光标”。然后,按住鼠标并拖动,以在任意方向调整窗口尺寸。

要只在水平方向调整

将鼠标指针移至窗口的左右任意一条边,直到显示“边线光标”。然后,按住鼠标并拖动,以在水平方向调整窗口尺寸。

要只在竖直方向调整大小:

将鼠标指针移至窗口顶部或底部,直到它分别更改为“向上指针”或“向下指针”。然后,按住鼠标并拖动,可以在垂直方向调整窗口尺寸。

在工作区中排列窗口

要将窗口肩并肩排列:

点击窗口的标题栏并向屏幕的左边缘拖动。当鼠标指针接触到屏幕边缘时,左半侧屏幕将突出显示。放开鼠标按钮后此窗口将填满左侧屏幕。

将其他窗口拖动到右侧:当右半边屏幕高亮时放开。每个屏幕将分别占据屏幕的半边。

在窗口的任意位置单击时按 Alt,将允许您移动该窗口。有些人可能发现这比在应用程序的标题栏单击更加容易。

usr/share/help-langpack/zh_CN/ubuntu-help/index.page0000644000373100047300000000354212320733006024301 0ustar langpacklangpack00000000000000 Ubuntu 桌面指南 Ubuntu 桌面指南 <media type="image" mime="image/png" width="16" height="16" src="figures/ubuntu-logo.png">帮助</media> Ubuntu 桌面指南 <media type="image" src="figures/ubuntu-logo.png">Ubuntu 徽标</media> Ubuntu 桌面指南 usr/share/help-langpack/zh_CN/ubuntu-help/documents-viewgrid.page0000644000373100047300000000276112320733006027013 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2012 Michael Hill mdhillca@gmail.com 2012 Greg Beam ki7mt@yahoo.com 2014 改变文档的显示方式。 以列表或网格方式查看文件

文档和集合默认以网格形式显示。以列表方式查看:

转到顶部栏,点击文档显示应用程序菜单。

查看部分点击列表

列表视图中显示文档类型和修改日期,以及文档是存储在本地还是存储在 Google Docs SkyDrive 上。

在应用程序菜单中点击网格返回到默认格式。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-troubleshooting-initial-check.page0000644000373100047300000000505612320733006033544 0ustar langpacklangpack00000000000000 Ubuntu 文档 wiki 撰稿人 GNOME 文档项目 gnome-doc-list@gnome.org 检查基本网络设置正确,并准备进行接下来的调试步骤。 无线网络故障排除程序 执行初始检查

在这一步中您将检查关于无线网络链接的一些基本信息。这将帮助您解决由简单问题导致的联网问题,例如无线网络连接被关闭等,并为接下来的调试步骤做准备。

请确保您的笔记本电脑未连接到有线网络连接。

如果您有外部无线适配器(如无线 USB 适配器或 PCMCIA 卡),请确保已将其插入您计算机上的相应插槽中。

如果无线卡在您的计算机内部,请确保无线适配器开关已打开。

单击顶部面板上的网络菜单且确保已选中启用无线网络设置。

打开终端,输入 nm-tool 并按回车

这将显示您的网络硬件和连接状态信息。查看信息列表,寻找有关无线网卡的部分,每个网络设备的信息均被一排破折号隔开。如果您在您的无线网卡部分发现了 State: connected 这一行,这就意味着它已经开始工作并且连接到了您的无线路由。

如果您已连接到无线路由器,但仍无法访问网络,则您的路由器设置可能错误或互联网服务提供商 (ISP) 可能遇到了一些技术问题。请复核您的路由器和 ISP 安装指南,或与您的 ISP 联系以获取支持。

如果 nm-tool 命令的输出未告诉您是否已连接到网络,则请继续到故障诊断指南的下一部分。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wired.page0000644000373100047300000000123112320733006025061 0ustar langpacklangpack00000000000000 有线网络连接 和 固定 IP 地址… Ubuntu 文档团队 有线网络 usr/share/help-langpack/zh_CN/ubuntu-help/session-language.page0000644000373100047300000000567012320733006026442 0ustar langpacklangpack00000000000000 将用户界面和帮助文本切换到另外一种语言。 GNOME 文档项目 gnome-doc-list@gnome.org Shaun McCance shaunm@gnome.org Andre Klapper ak-47@gmx.net Michael Hill mdhillca@gmail.com Ubuntu 文档团队 更改系统语言

如果正确 安装了语言包 您可以以几十种语言使用桌面和应用程序。

单击菜单栏最右侧的图标,选择系统设置

单击语言支持

语言标签页中选择所需的语言。将该语言拖至列表顶部。

您必须注销并重新登录以使语言设置生效。点击菜单栏的右上角处并选择 注销 以退出登录。

一些翻译可能未完成,某些应用程序可能不支持您的语言。

在您的主文件夹下存在一些特殊的文件夹,可被应用程序用来存储音乐、图片和文档等。这些文件夹使用基于您语言的标准名称。更换语言登录时,将询问您是否要将这些文件夹更名为用于选定语言的标准名称。如果您始终准备使用新语言,则应该更新文件夹名称。

更改系统语言

当您更改您的语言时,您只更改了登录后账户内的语言。您也可以更改系统语言,这用于登录界面等地方。

如上所述,更改您的语言。

单击应用到整个系统

需要管理员特权。请输入您的密码或要求的管理员账号的密码。

您可在语言支持帮助中找到更多有关语言和地区格式的详细指南。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-dash-files.page0000644000373100047300000000317612320733006026362 0ustar langpacklangpack00000000000000 查找文件目录和下载。 Jeremy Bicha jbicha@ubuntu.com 文件栏目

文件栏目是 栏目条 上 Dash 主目录后的第二个栏目,其图标为一个文档。文件栏目可以用于访问最近使用的文件、文件夹或下载。

可以使用 SuperM 直接打开显示文件栏目的 Dash。

如果要使用 Google Drive,确保将 Google 账户的认证信息填到 Online Accounts以查看 Google Drive 中的搜索结果。

预览

在搜索结果上点击右键可以打开 预览。此预览可以显示文件格式、文件大小和最后保存的时间。

可以打开文件,使用电子右键发送或者打开包含此文件的目录。

过滤器

点击 过滤结果 以根据文件类型、文件大小或者文件最后一次保存的时间过滤。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-airplane.page0000644000373100047300000000271312320733006027403 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org Ubuntu 文档团队 单击顶部面板中的网络菜单并取消选中“启用无线”。 关闭无线(飞行模式)

如果您携带计算机乘坐飞机(或其他一些不允许使用无线连接的交通设备和地点),应将无线关闭。有时您可能也需要关闭无线连接以节省电量。

要进行这项操作,点击顶部菜单栏中的 网络菜单,反选 启用无线网络。这将关闭无线连接,直到您再次将其开启。

要重新打开无线,单击顶部面板上的网络菜单 并选中 启用无线网络

如果未关闭蓝牙,您的笔记本电脑仍将广播无线信号。

usr/share/help-langpack/zh_CN/ubuntu-help/documents-select.page0000644000373100047300000000313412320733006026445 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2012 Michael Hill mdhillca@gmail.com 2012 使用选择模式选择多个文档或集合。 选择文档

使用文档的选择模式,您可以打开、打印、查看或将您的文档分组。使用选择模式:

点击 按钮。

选择一个或多个文档或者集合。按钮栏将根据您的选择显示。

选择模式操作

选择一个或多个文档,您可以在:

打开文档查看器(文件夹图标)。

打印(打印机图标):打印文件(仅当选择单个文档)。

组织(加号图标):创建文档的集合。

属性(扳手图标):显示文档的属性(仅当选择单个文件)。

删除(回收站图标):删除一个或多个集合。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-dash-friends.page0000644000373100047300000000263412320733006026710 0ustar langpacklangpack00000000000000 浏览在线社交媒体账户的信息。 Jeremy Bicha jbicha@ubuntu.com 朋友分类

朋友分类是 栏目条 上 Dash 主目录后的第六个栏目,其图标使用一个说话的气泡。朋友分类可以帮助您访问社交媒体账号。

可以使用 SuperM 直接打开显示朋友分类的 Dash。

栏目将会闪烁,一直到在 在线账户 中输入证书或密码。

预览

在搜索结果上点击右键可以打开 预览。此预览可以显示给您更多信息,并可以让您“赞”或者转发。

过滤器

点击 过滤结果 通过账户来过滤。

usr/share/help-langpack/zh_CN/ubuntu-help/power-suspend.page0000644000373100047300000000321412320733006026001 0ustar langpacklangpack00000000000000 挂起将使您的电脑进入睡眠状态,使用较少的电能。 GNOME 文档项目 gnome-doc-list@gnome.org Ekaterina Gerasimova kittykat3756@gmail.com 挂起或休眠计算机时会发生什么?

挂起计算机时,将使其进入睡眠状态。您的所有应用程序和文档都保持打开,但是屏幕和计算机的其他部件将关闭以省电。计算机仍然处于打开状态且使用少量电源。您可按任一键或单击鼠标将其唤醒。如果没有解决问题,则尝试按电源按钮。

有些计算机的硬件支持存在问题,这意味着可能无法正常挂起或休眠。在您的计算机上测试挂起/休眠以查看它是否正常工作是个不错的办法。

总是在挂起/休眠之前保存您的工作

您应该在挂起或将计算机置于休眠之前保存所有工作,以防出现错误和再次打开计算机时不能恢复所打开的应用程序和文档。

usr/share/help-langpack/zh_CN/ubuntu-help/contacts-link-unlink.page0000644000373100047300000000504512320733006027241 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com 从多个来源合并联系人信息。 链接和取消链接联系人 usr/share/help-langpack/zh_CN/ubuntu-help/keyboard-layouts.page0000644000373100047300000001234212320733006026466 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 2012 Julita Inca yrazes@gmail.com Michael Hill mdhillca@gmail.com Juanjo Marín juanj.marin@juntadeandalucia.es Ubuntu 文档团队 添加输入源并在它们之间切换。 使用备选输入源

对于各种语言,键盘有数百种不同的布局。即使是对于一种语言,也往往会有多种键盘布局,如适用于英语的 Dvorak 布局。无论印在键上的字母和符号如何,均可让键盘与布局不同的另一键盘的行为相同。如果常轮番使用多种语言,可以通过这种方式来高效地使用键盘。

诸如汉语、韩语这样的语言,不仅仅是一个简单字符映射,它们需要更为复杂的输入法,因此您可以在能适用于这种输入法的输入源中做选择。

Options with input methods are only available if respective input method (IM) engine is installed. When you install a language, a suitable IM engine is automatically installed if applicable. For example, if you install Korean, the package ibus-hangul is installed, and the input source option Korean (Hangul) is made available next time you log in. You can also install the IBus IM engine of your choice separately.

添加输入源

您可以通过在列表中选中或者点击 预览 按钮来预览任意布局的图像。

单击菜单栏最右侧的图标,选择系统设置

在个人部分中,点击 文本输入

点击 + 按钮,选择一种输入源,然后点击 添加 按钮。

默认源为列表顶部的源,使用 按钮在列表中上下移动源的位置。

If you select a source with an input method, you can click preferences to access that method's preferences dialog if any.

输入源指示符

你可以通过菜单栏的输入源指示符在选择的源中快速切换输入源。菜单将显示一个当前源的短标识符,例如将 En 作为英语布局的标准或者作为使用了特殊输入法的源一种象征,例如,汉语(Chewing)。点击输入源指示符并从菜单中选择您想要使用的源。

键盘快捷键

您还可以使用键盘快捷键在您选择的输入源中进行快速切换,切换到下一个源的默认快捷键为 SuperSpace ,不过您可以改变它:

单击菜单栏最右侧的图标,选择系统设置

在个人部分中,点击 文本输入

点击 切换使用下一个源 标签下方的当前快捷键定义。

当快捷键定义变更为 新快捷键... 时,按下您想要使用的键作为新快捷键即可。

为所有窗口或者单独为每个窗口设置输入源

当您使用多个源时,您可以选择让所有窗口使用同一个源或者为每个窗口设置不同的源。为每个窗口使用不同的源是有用的,例如,如果您在一个文字处理器窗口正使用另一种语言写一篇文章,您的输入源选择将在切换窗口时记住您为每个窗口进行的设置。

默认情况下,新窗口将使用默认输入源。您可以让它们选择使用您最后使用窗口的源。

usr/share/help-langpack/zh_CN/ubuntu-help/tips.page0000644000373100047300000000117112320733006024145 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 特殊字符,中键点击快捷键… 方法和技巧 usr/share/help-langpack/zh_CN/ubuntu-help/sound-crackle.page0000644000373100047300000000335212320733007025724 0ustar langpacklangpack00000000000000 检查您的音频电缆和声卡驱动程序。 GNOME 文档项目 gnome-doc-list@gnome.org 声音播放时有噼啪声或嗡嗡声

在计算机上播放声音时,如果听到噼啪声或嗡嗡声,那么您的音频电缆、接口或者声卡驱动程序可能有问题。

检查扬声器是否已正确插入。

如果扬声器未完全插入,或者插入错误插槽,则您可能会听到嗡嗡声。

确保扬声器/耳机电缆没有损坏。

音频电缆和接口会因使用而磨损。尝试将电缆或耳机插入其他音频设备(如 MP3 播放器或 CD 播放器)以检查是否仍有噼啪声。如果有,您可能需要更换电缆或耳机。

检查声卡驱动程序是否运行良好。

因为没有合适的驱动程序,Linux 系统上的一些声卡无法良好地运行。该问题更难识别。尝试在互联网上搜索您声卡的制造商和型号,再加上关键字“Ubuntu”,以查看其他人是否有相同的问题。

您可以运行终端中的 sudo lspci -v 以获取关于您声卡的更多信息。

usr/share/help-langpack/zh_CN/ubuntu-help/sound-usemic.page0000644000373100047300000000342712320733007025610 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 使用模拟或 USB 麦克风并选择默认输入设备。 用一个不同的麦克风

您可以使用外部麦克风进行音频会议,制作音频文件,或者使用其他多媒体应用程序。即使您的计算机有内置麦克风或带有麦克风的网络摄像头,但是单独的麦克风可提供更出色的音质。

如果您的麦克风带有一个圆形插头,则将其插入您计算机适当的插槽中。多数计算机有两个插槽:一个插麦克风,另一个插扬声器。麦克风插槽旁边可以看到一个麦克风图标。默认情况下,通常将使用插入插槽的麦克风。如果没有,请参阅以下默认输入设备选择的说明。

如果您有 USB 麦克风,则将其插入您电脑上的任意一个 USB 端口。USB 麦克风作为单独的音频设备,您必须指定默认使用的麦克风。

选择默认的音频输入设备

单击顶部工具栏上的声音菜单并选择声音设置

输入标签页中,选择设备列表中的设备。当您说话时,输入电平指示器会做出回应。

usr/share/help-langpack/zh_CN/ubuntu-help/net-browser.page0000644000373100047300000000144212320733007025437 0ustar langpacklangpack00000000000000 更改默认浏览器、安装 Flash、安装 Java 插件 和 软件开发支持… Ubuntu 文档团队 Web 浏览器 usr/share/help-langpack/zh_CN/ubuntu-help/net-default-browser.page0000644000373100047300000000322212320733007027057 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Michael Hill mdhillca@gmail.com 单击面板最右侧的图标,选择系统设置 改变默认浏览器选项

单击任何应用程序中的 Web 页面链接时,Web 浏览器会自动打开相应页面。然而,如果安装了多个浏览器,该页面可能不会在首选的 Web 浏览器中打开。要解决此问题,请更改默认的 Web 浏览器:

单击顶部菜单栏最右侧的图标,选择系统设置

打开系统信息并从窗口左边的列表中选择默认应用程序

通过更改 网络 选项,选择您想用于打开链接的 Web 浏览器。

打开不同的 Web 浏览器时,系统可能会提示该浏览器不再是您的默认浏览器。此时,请单击取消按钮或类似选项,相应浏览器将不再尝试将其自身设为默认浏览器。

usr/share/help-langpack/zh_CN/ubuntu-help/look-resolution.page0000644000373100047300000000571312320733007026342 0ustar langpacklangpack00000000000000 更改屏幕分辨率和屏幕方向(旋转角度)。 GNOME 文档项目 gnome-doc-list@gnome.org Natalia Ruz Leiva nruz@alumnos.inf.utfsm.cl Michael Hill mdhillca@gmail.com 更改屏幕大小/旋转角度

通过更改屏幕分辨率,可更改内容显示在屏幕上时的大小(或详细程度)。通过更改旋转,可更改显示内容的方向。

单击顶部面板最右侧的图标,选择系统设置

取消选中镜像显示

如果您有多个未工作的显示区,您可以在每个显示区进行不同的设置,在预览区域选择一个显示区。

选择您需要的分辨率和屏幕方向

单击应用将应用新的设置但是会有 30 秒的恢复时间。这样如果您应用了新设置之后出错无法进行操作的话,30 秒后系统将自动恢复旧的设置。如果您对新配置满意,请单击保持当前配置

使用另一显示屏时(如投影仪),系统会自动检测到该显示屏以便您更改其设置,其更改方法与普通显示屏相同。如果未自动检测到另一显示屏,只须单击检测显示器

分辨率

分辨率是指在每个方向上所能显示的像素数量。每个显示器都有一个高宽比。宽屏显示器一般使用 16:9 的高宽比,而普通显示器则一般使用 4:3,如果您选择了不正确的高宽比设置,屏幕将会在适当的边缘加入黑边以避免图像被拉伸变形。

可从下拉菜单中选择最合适的分辨率。请注意,如果所选分辨率不适用于屏幕,则屏幕看起来可能会很模糊或像素化。

旋转角度

在一些笔记本电脑中,您可以多角度旋转屏幕。能够改变显示旋转是很有用的,您可以从 旋转 下拉菜单中选择您想要的显示旋转。

usr/share/help-langpack/zh_CN/ubuntu-help/printing-differentsize.page0000644000373100047300000000322112320733007027656 0ustar langpacklangpack00000000000000 以不同的纸张尺寸或方向打印文档。 Phil Bull philbull@gmail.com Jim Campbell jwcampbell@gmail.com 打印时更改纸张尺寸

如果要更改文档的纸张尺寸(例如,在 A4 纸上打印 US 信纸大小的 PDF),您可以更改该文档的打印格式。

单击文件打印

选择页面设置选项卡。

页面栏中,从下拉列表中选择纸张尺寸

单击打印,将打印文档。

您还可以使用页面方向菜单以选择不同的方向:

纵向

横向模式

纵向翻转

横向翻转

usr/share/help-langpack/zh_CN/ubuntu-help/net-othersconnect.page0000644000373100047300000000402212320733007026627 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Michael Hill mdhillca@gmail.com 您可以保存网络连接的设置信息(例如密码),这样每个使用这台电脑的人都可以进行联网。 其他用户无法连接到 Internet

如果已设置了网络连接,但计算机上的其他用户无法连接到网络,则他们在尝试连接时可能未输入正确的设置。例如,如果您使用无线连接,他们可能未输入正确的无线安全密码。

您可以采用此设置,以便在您设置连接后所有人都可共享网络连接的设置。这意味着您只需要设置一次,使用这台计算机的其他所有用户将能够连接到网络,而系统不会询问他们任何问题。要如此设置,请:

单击顶部面板中的网络菜单,然后单击编辑连接

找到您希望对所有人可用的连接。您可能还需要切换到 无线 选项卡。选择相应的网络名称然后点击 编辑

选中对所有用户可用并单击保存。您必须输入管理员密码才能保存更改。仅管理员用户可执行此操作。

计算机上的其他用户现在无需输入其他任何信息即可使用此连接。

usr/share/help-langpack/zh_CN/ubuntu-help/net-chat-skype.page0000644000373100047300000000340712320733007026027 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 Skype 是专有软件,您必须自行手动将其安装在 Ubuntu 上。 如何在 Ubuntu 上使用 Skype?

Skype 是专有软件,通过它您可以使用计算机并 拨打网络电话。

Skype 使用分散式点对点技术,您的通话不会经由中央服务器,而是经由分布式服务器和其他用户节点进行连接。

Skype 软件可免费使用,但不是自由软件;源代码为专有且不可进行修改。

默认情况下 Ubuntu 没有安装 Skype。安装 skype以开始使用。

您需要 激活 Canonical 合作伙伴库 以安装 Skype

有关 <app>Skype</app> 使用的其他资源和信息

如何记录 Skype 交谈内容

与 Skype 兼容的网络摄像头列表

Skype 故障排除 — 适用于高级用户

usr/share/help-langpack/zh_CN/ubuntu-help/nautilus-file-properties-permissions.page0000644000373100047300000000774212320733007032525 0ustar langpacklangpack00000000000000 控制谁能查看和编辑用户的文件和文件夹。 Tiffany Antopolski tiffany@antopolski.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 设置文件权限

可用文件权限控制谁能查看和编辑用户拥有的文件。要查看和设置文件权限,请右键单击文件,选择属性,然后选择权限选项卡。

要详细了解可以设置的权限的类型,请参见下面的

文件

可设置文件所有者、组所有者和所有其他系统用户的权限。对于用户的文件,用户是所有者,用户也能赋予自己只读或读写权限。如果不想意外更改文件,请将文件设置为只读文件。

计算机中的每位用户都属于某个组。在家庭计算机中,用户通常各有各的组,但往往不会设置组权限。在团体环境中,有时会将组用于部门或项目。除了有所有者,每个文件都还属于某个组。可设置文件所属的组并控制该组中所有用户的权限。用户仅可将文件所属的组设置为自己所属的组。

也可对除所有者以外的其他用户,以及文件所属的组中的用户设置权限。

如果文件是一个程序(如脚本),则必须选择允许以程序的形式执行文件才能运行文件。即使已选择此选项,文件管理器还是有可能在应用程序中打开文件或询问要执行什么操作。对于更多信息,请参见

文件夹

对于文件夹所有者、组和其他用户,均可对文件夹设置权限。对于所有者、组和其他用户的说明,请参见上面的文件权限详细信息。

可对文件夹设置的权限,都不同于可对文件设置的权限。

<gui>无</gui>

用户甚至不能查看文件夹中有什么文件。

<gui>只能列出文件</gui>

用户将能够查看文件夹中有什么文件,但不能打开、创建或删除文件。

<gui>能访问文件</gui>

用户将能够打开文件夹中的文件(前提是他们有权对特定文件执行这种操作),但不能创建新文件或删除文件。

<gui>创建和删除文件</gui>

用户将对相应目录拥有最高访问权,包括打开、创建和删除文件的权限。

您还可以在文件夹中通过点击 改变封闭文件权限 为所有文件快速设置文件权限,使用下拉列表调整包含文件或者文件夹的权限,然后点击 更改 ,该权限也将应用于任何深度的子文件夹中的文件和文件夹。

usr/share/help-langpack/zh_CN/ubuntu-help/look-background.page0000644000373100047300000000512112320733007026247 0ustar langpacklangpack00000000000000 如何将图像设置为桌面背景。 GNOME 文档项目 gnome-doc-list@gnome.org April Gonzales loonycookie@gmail.com Natalia Ruz Leiva nruz@alumnos.inf.utfsm.cl Shaun McCance shaunm@gnome.org Andre Klapper ak-47@gmx.net Michael Hill mdhillca@gmail.com 更改桌面背景

您可以更改用作桌面背景的图像,也可将其设置为单色或渐变色背景。

右键单击桌面,然后选择更改桌面背景

选择图像或颜色。系统将立即应用所修改的设置。切换到空工作区即可查看整个桌面。

左侧的下拉列表中有三个选项。

选择壁纸可选用随 Ubuntu 附带的许多高品质背景图像中的一个图像。除了 Ubuntu 默认壁纸外,所有系统自带壁纸均由社区壁纸设计大赛优胜者制作。

某些壁纸部分透明,可露出背景色。对于这些壁纸,右下角中会有一个颜色选择器按钮。

选择图片文件夹即可使用图片文件夹中自己拍摄的照片。大多照片管理应用程序都在该文件夹中存储照片。

也可选择颜色和渐变,以便仅使用一种颜色或线性渐变色。颜色选择器按钮会显示在右下角。

通过单击 + 按钮,也可查找计算机中的任一图片。任何以此方式添加的图片都会显示在图片文件夹下。通过先选中图片再单击 - 按钮,可将图片从列表中删除。

usr/share/help-langpack/zh_CN/ubuntu-help/mouse-mousekeys.page0000644000373100047300000000640512320733007026346 0ustar langpacklangpack00000000000000 启用鼠标键,通过小键盘控制鼠标。 Phil Bull philbull@gmail.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 使用小键盘点击和移动鼠标指针。

如果难以使用鼠标或其他指针设备,则可通过键盘上的数字键盘控制鼠标指针。

Super 键打开 Dash

输入 Universal Access ,然后按下 回车 打开通用访问设置。

按一次 Tab 键选择 观看 标签。

按一次 键选择 对准和点击 标签。

按一次 键选择 鼠标键 开关,然后按下 回车 开启它。

确保已关闭 Num Lock。现在将能够通过数字键盘移动鼠标指针。

通过这些方法,您可以用键盘控制鼠标指针。在通用辅助功能中还可以看到更多无障碍访问选项。

数字键盘是键盘上的一套数字按钮,通常以方格的形式排列。如果键盘上没有数字键盘(如笔记本电脑键盘),则可能必须按住功能(Fn)键,并且用键盘上的一些其他的键作为数字键盘。如果常在笔记本电脑上使用这种特性,则可购买外置 USB 数字键盘。

数字键盘上的每个数字都相应于一个方向。例如,按 8 会向上移动鼠标指针,按 2 则会向下移动鼠标指针。按 5 键可执行一次鼠标单击操作,也可快速按该键两次执行双击操作。大多键盘都有一个专用键,可用于执行右键单击操作;该键往往在空格键附近。但请注意,此键会对键盘焦点而不是鼠标指针所在的位置作出回应。

大部分键盘上都有一个可以模拟右键单击的键;一般位于空格键的右边。请注意这个键将在焦点处而不是鼠标指针所在处触发鼠标右键。您可以查阅获取更多模拟右键点击方式的指导。

如果要在启用鼠标键后用数字键盘输入数字,请打开 Num Lock。但打开 Num Lock 后不能用数字键盘控制鼠标指针。

键盘顶部的普通数字键不能用于控制鼠标指针。只能使用数字键盘数字键。

usr/share/help-langpack/zh_CN/ubuntu-help/accounts.page0000644000373100047300000000204712320733007025011 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Greg Beam ki7mt@yahoo.com 添加账户, 删除账户, 禁用服务 在线账户

您可以在在线账户中输入 Google, Facebook 等在线服务的登录详情。该服务使您不用重复输入帐号信息就可以访问个人日历、邮件、聊天帐号等应用。

usr/share/help-langpack/zh_CN/ubuntu-help/color-whatisspace.page0000644000373100047300000000636712320733007026632 0ustar langpacklangpack00000000000000 色彩空间是定义的颜色范围。 Richard Hughes richard@hughsie.com 什么是色彩空间?

色彩空间是定义的颜色范围。知名的色彩空间有 sRGB、AdobeRGB 和 ProPhotoRGB。

人类视觉系统不是简单的 RGB 传感器,但利用 CIE 1931 色度图,我们可以估计眼睛是如何响应的,该图显示人类视觉响应呈马蹄形。您可以看到,在人类视觉中,检测到的绿色色调比蓝色或红色多得多。对于类似 RGB 的三原色色彩空间,我们在计算机上使用三个值来表现颜色,这甚至会限制编码颜色三角形

使用 CIE 1931 色度图等模型可以大大简化人类视觉系统,实际色域以 3D 壳体而不是 2D 投影来表示。3D 形状的 2D 投影有时会产生误导,因此如果您想要观看 3D 壳体,请使用 gcm-viewer 应用程序。

由白色三角形表示的 sRGB、AdobeRGB 和 ProPhotoRGB

sRGB 是其中最小的一个色彩空间,能够编码的颜色最少。sRBG 是对 10 年前一个 CRT 显示器的近似,大多数现代显示器都能够显示更多颜色。sRGB 是一个最小公分母标准,在很多应用(包括英特网)中广泛使用。

AbodeRGB 经常被用作编辑空间。它可以编码的颜色比 sRGB 多,这意味着您可以调整照片中的颜色,而不必过于担心最亮的颜色被剪辑掉或黑色被挤压。

ProPhoto 是最大的色彩空间,常应用于文件档案中。ProPhoto 基本囊括了人眼所能看到的全部颜色,甚至还能编码某些人眼无法检测到的颜色。

那么如果 ProPhoto 明显较好,为什么不直接用它呢?这是由于量化的考虑,如果每个通道用 8 位(256个色阶)编码,那么要表示的颜色范围越大,每个值之间的步长也就越大。

阶差越大意味着捕获的颜色和存储的颜色之间的误差越大,对于某些颜色,这是一个大问题。其结果是,关键颜色,如皮肤颜色非常重要,即使很小的误差也会让未经训练的观看者注意到照片上有地方看起来不对劲。

当然,使用 16 位图像可以获得更多色阶和更小的量化误差,但同时也会使图像文件的体积增大一倍,因此目前大部分内容均为 8bpp,即 8 位每像素。

色彩管理是从一个色彩空间转换到另一个色彩空间的过程,该过程中的色彩空间可以是知名的已定义空间(如 sRGB),也可以是自定义空间(如您的显示器或打印机配置文件)。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-troubleshooting-device-drivers.page0000644000373100047300000001316712320733007033756 0ustar langpacklangpack00000000000000 Ubuntu 文档 wiki 撰稿人 Phil Bull philbull@gmail.com 有些驱动程序无法同个别型号的无线适配器很好地工作,所以您可能需要寻找一个更好的替代品。 无线网络故障排除程序 确保已安装可用的设备驱动

在这步中可以检查您的无线适配器驱动是否正常工作。设备驱动 是一种帮助电脑同硬件设备协同工作的软件。尽管电脑已经识别出无线适配器,设备驱动仍可能存在问题。您可能找到其他能够工作的驱动,请尝试下列几个:

检查您的无线适配器是否在受支持设备列表中

多数 Linux 发行办都有一个支持的无线设备列表。有时这些列表中还包括了如何获取和设置相关的驱动程序。查看您所使用的发行版的页面(例如 Ubuntu、Fedora 或 openSuSE),并查找您正在使用的型号。您可能会从中获得一些关于如何使无线驱动正常工作的信息。

寻找专有驱动程序?

尽管 Ubuntu 默认支持大量设备,仍有部分驱动需要单独安装。使用 附加驱动 工具检查是否有合适的 专有 驱动。

单击顶栏最右侧的图标,选择系统设置

在系统部分,点击 软件源

切换到 附加驱动 标签。

使用 Windows 网卡驱动

通常情况下您无法在一个操作系统上使用为另一个操作系统设计的设备驱动程序(例如不能在 Linux 上使用 Windows 驱动程序)。这是因为不同的操作系统同硬件的交互方式存在差别。然而,对于无线适配器来说,您可以安装名为 NDISwrapper 的兼容层使得 Windows 无线驱动可以为 Linux 工作。由于多数网卡都提供了 Windows 驱动,NDISwrapper 对 Linux 用户而言便极具价值。您可以查看 NDISwrapper 的主页了解其使用方法。请注意并不是全部无线网卡驱动都可以通过 NDISwrapper 运行。

此页面提供了 ndiswrapper 的完整信息,还包括 ndiswrapper 的故障排除帮助信息。

usr/share/help-langpack/zh_CN/ubuntu-help/documents-filter.page0000644000373100047300000000236612320733007026462 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com 2012 选择要显示的文档。 文档过滤器

点击 搜索栏旁边的 向下 按钮,在这些类别中限制搜索的范围:

来源:本地、Google、SkyDrive 或全部。

类型:集合、PDF 文档、演示文稿、电子表格、文本文档或者所有。

标题,作者或全部。

为了让 Google SkyDrive 出现在过滤器列表中,需要配置 Google 或 Windows Live 作为一个在线帐号。

usr/share/help-langpack/zh_CN/ubuntu-help/display-dual-monitors.page0000644000373100047300000000507712320733007027440 0ustar langpacklangpack00000000000000 在您的笔记本电脑上设置双显示器。 Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 将外接显示器连接到您的笔记本电脑
设置外接显示器

要为笔记本电脑设置外接显示器,首先将显示器连接到笔记本。如果系统无法立刻认出显示器,您需要调整以下设置:

单击顶部菜单栏最右侧的图标,选择系统设置

取消选中镜像显示

单击您需要开启或关闭的显示器,并调整其 开启/关闭状态。

默认情况下,启动器只显示主显示器。要改变“主”显示器,在启动布局下拉框中改变显示器。您也可以拖动预览中的启动器设置为“主”显示器的显示器。

如果您想在启动器上显示所有显示器,修改启动器布局所有显示

如果您想要调整显示器的相对位置,单击对应显示器并拖动即可。

如果您想让两个显示器显示同样的内容,勾上镜像显示选项即可。

当您对设置满意时,点击 应用,然后再点击 保留此设置

To close the Displays click on the x in the top corner.

粘着边

使用双屏显示器时经常会遇到的一个问题是鼠标指针容易不小心滑到另一个显示器上。Unity 的粘着边特性解决了这一误操作问题。您需要用力移动才能将鼠标指针从一个显示器移动到另一个显示器。

您也可以选择关闭粘着边功能。

usr/share/help-langpack/zh_CN/ubuntu-help/power-batterylife.page0000644000373100047300000000700712320733007026637 0ustar langpacklangpack00000000000000 减少您计算机能耗的技巧。 GNOME 文档项目 gnome-doc-list@gnome.org Phil Bull philbull@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com Michael Hill mdhillca@gmail.com 降低能耗,提高电池寿命

计算机可使用大量能量。通过使用一些简单的节能措施,您可以节约电费并保护环境。如果您使用的是笔记本电脑,这些措施可以有效提高电池续航时间。

常规措施

在不使用计算机时将其挂起。这样可以大幅降低计算机使用的电量且可以快速唤醒计算机。

当您不打算再使用您的计算机时,请 关闭 它。有人担心定期关闭电脑也许会导致磨损快,但事实并非如此。

系统设置 中的 电源 设置中有多个节能选项:您可以在一段时间后自动将显示器变暗或使其进入睡眠模式;降低笔记本电脑显示器的亮度;如果在一段时间内不使用,则将计算机自动转到睡眠模式。

当您不使用外部设备(如打印机和扫描仪)时,请关闭它们。

笔记本、台式机和其他使用电池的设备

降低屏幕的亮度;为屏幕供电占笔记本电脑功耗的很大一部分。

大多数笔记本电脑的键盘上都有可用于降低亮度的按钮。

如果您短时间不需要互联网连接,请关闭无线/蓝牙装置。这些设备需要发射无线电波,这会非常耗电。

有些计算机上配备了可用于关闭无线适配器和蓝牙设备的物理开关,另外一些计算机上有键盘快捷键替代物理开关供您使用。您可根据需要选择打开或关闭。

更多高级技巧

减少后台运行的任务数量。计算机所执行的任务越多则需要更多电能。

您所运行的大多数程序在最小化状态下能耗很小。但是,经常从网络抓取数据的应用程序、音乐和电影播放器、分布式计算软件等都可能影响耗电量。

usr/share/help-langpack/zh_CN/ubuntu-help/look-display-fuzzy.page0000644000373100047300000000475212320733007026773 0ustar langpacklangpack00000000000000 屏幕分辨率可能设置得不正确。 GNOME 文档项目 gnome-doc-list@gnome.org Natalia Ruz Leiva nruz@alumnos.inf.utfsm.cl Phil Bull philbull@gmail.com Michael Hill mdhillca@gmail.com 为何屏幕上的内容看起来很模糊/像素化?

发生这种情况的原因是,所设置的显示分辨率不适用于屏幕。

要解决这种问题,请单击面板最右侧的图标,然后转到系统设置。在“硬件”部分中,选择显示。试用其中的一些分辨率选项,然后设置可使屏幕看起来较为舒适的分辨率。

连接多个显示屏时的设置

如果有两个显示屏与计算机相连(例如,一个普通显示器,一个投影仪),则两个显示屏的分辨率可能会不相同。但是,计算机显卡一次仅可以一种分辨率显示屏幕内容,因此其中至少会有一个显示屏可能看起来很模糊。

您也可以将两个显示屏设置为不同的分辨率,但不能同时在两个屏幕上显示相同的内容。两个显示器上的内容会互相独立,您可将窗口从一个屏幕移到另一屏幕中,但不能同时在两个屏幕上显示同一窗口。

为每个屏幕设置不同的分辨率:

单击面板最右侧的图标,选择系统设置。打开显示

取消选中镜像显示

显示窗口顶部的灰框中依次选择每个显示屏。更改分辨率,直到显示屏看起来没有问题为止。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wired-connect.page0000644000373100047300000000274012320733007026517 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org 要设置有线网络连接,通常您只需插入网线。 连接到有线(以太网)网络

要设置有线网络连接,通常您只需插入网线。顶部面板中的网络图标将旋转几秒钟,然后在您已连接时更改为“插座”图标。

如果未出现此现象,您应首先确保网线已插入。网线的一端应插入计算机上的矩形以太网(网络)端口,另一端应插入交换机、路由器、壁装插座或类似设备(具体取决于您的网络设置)。

您不能使用网线将一台计算机直接与另一台相连(至少在没有进行额外设置的情况下不能)。要连接两台计算机,您应将它们都连接到网络集线器、路由器或交换机。

如果仍未连接,您的网络可能不支持自动设置 (DHCP)。在此情况下,您必须进行自动配置。

usr/share/help-langpack/zh_CN/ubuntu-help/addremove-install-synaptic.page0000644000373100047300000000465312320733010030433 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 Greg Beam ki7mt@yahoo.com

创作共享署名-相同方式共享 3.0 (CC BY-SA 3.0)

新立得是一款可以替代 Ubuntu 软件中心的功能强大但非常复杂的软件管理工具。
使用新立得进行更高级的软件管理

新立得软件包管理器功能更为强大,可以执行 Ubuntu 软件中心无法完成的一些软件包管理任务。新立得的界面更为复杂,不支持较新的软件中心功能,如评级和审核,因此不建议 Ubuntu 新手使用。

默认情况下,Ubuntu 上没有安装 Synaptic,但您可以使用软件中心 安装 它。

使用新立得安装软件

Dash启动器打开新立得,在认证窗口输入您的密码。

新立得 打开时,单击搜索搜索应用程序,或单击组别,浏览类别以查找。

右键单击您想要安装的应用程序,并选择标记以便安装

如果提示您标记其他修改,请单击标记

选择您想要安装的其他应用程序。

单击应用,然后在出现的窗口中单击应用。您选择的应用程序将下载并安装。

For more information about using Synaptic, consult the Synaptic How To.

usr/share/help-langpack/zh_CN/ubuntu-help/report-ubuntu-bug.page0000644000373100047300000000543012320733010026571 0ustar langpacklangpack00000000000000 如何报告 Ubuntu 问题。 Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 如何报告 Ubuntu 问题

如果您发现 Ubuntu 系统中存在问题,则可以进行错误报告

AltF2 然后输入 ubuntu-bug 程序名字

如果有硬件问题或不知道受影响程序的名称,则仅键入 ubuntu-bug 即可

运行以上命令之后,Ubuntu 将会收集与 Bug 有关的信息。这可能需要几分钟。如果需要可以查看收集到的信息。点击 发送 以继续。

新的 Web 浏览器将打开,以继续处理错误数据。Ubuntu 使用网站 Launchpad 管理其错误报告。如果您没有 Launchpad 帐户,则需要注册一个账户,以完成错误报告流程并接收有关此问题解决进度的电子邮件更新。您可通过单击创建新帐户执行此操作。

登录 Launchpad 后,请输入问题描述。

单击下一步后,Launchpad 将搜索类似错误,以防报告的错误重复报告。如果错误已报告,则您可以将该错误标记为也影响您。您还可以订阅错误报告以接收有关修复进程的更新信息。如果错误未报告,则请单击No, I need to report a new bug

在描述文本框中填写尽可能多的信息。指明以下三点非常重要:

您预期发生的情况

实际发生情况

如果可能,需要使用最少的步骤使其重现,其中步骤 1 是“启动程序”

将为您的报告提供一个 ID 号码,其状态在处理期间将更新。谢谢您为 Ubuntu 更好发展做出的努力!

如果您收到“此非正版 Ubuntu 软件包”的错误,这意味着您正尝试报告错误的软件不是来自官方 Ubuntu 软件库。在此情况下,您无法使用 Ubuntu 内置错误报告工具。

有关报告 Ubuntu 中错误的更多信息,请阅读我们提供的大量联机文档。

usr/share/help-langpack/zh_CN/ubuntu-help/net-default-email.page0000644000373100047300000000277012320733010026464 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Michael Hill mdhillca@gmail.com 单击面板最右侧的图标,选择系统设置 修改默认的电子邮件应用程序

单击发送新电子邮件的按钮或链接时,您的默认邮件应用程序将会打开,其中显示一封空邮件供您开始撰写。然而,如果安装了多个邮件应用程序,可能会打开错误的邮件应用程序。您可通过更改默认电子邮件应用程序来解决此问题:

单击顶部菜单栏最右侧的图标,选择系统设置

打开系统信息并从窗口左边的列表中选择默认应用程序

通过更改电子邮件选项,选择您要在默认情况下使用的电子邮件客户端。

usr/share/help-langpack/zh_CN/ubuntu-help/power-batteryoptimal.page0000644000373100047300000000341212320733010027353 0ustar langpacklangpack00000000000000 类似 "不要让电池充电过少" 的小贴士。 GNOME 文档项目 gnome-doc-list@gnome.org Phil Bull philbull@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com 更好地利用您的笔记本电池

笔记本电脑电池的续航能力随其使用时间的增加而降低。这里有几个有助于延长其使用寿命的技巧,尽管效果可能不明显。

不要让电池过度放电,虽然大多数电池都有内置的保护措施防止电量过低,但请在电池电量变得很低 充电。电量较低时充电效果更有效,而电量损耗不多时充电对电池是有害的。

高温对于电池充电效率会有影响,不要让电池过热。

即使只放着,电池也会老化。和原有电池同时购买备用电池没有太大用处 - 只在需要时购买替换用的电池。

此建议尤其适用于锂离子电池,这是最常用的电池类型。其他类型电池的情况可能有所不同。

usr/share/help-langpack/zh_CN/ubuntu-help/prefs-language-install.page0000644000373100047300000000337412320733010027534 0ustar langpacklangpack00000000000000 安装更多翻译和相关语言支持包。 Gunnar Hjalmarsson gunnarhj@ubuntu.com 安装语言

安装 Ubuntu 时,会同时安装选择的语言和英语,但是可以添加其他语言。

单击菜单栏最右侧的图标,选择系统设置

在“个人”部分,单击语言支持

点击 安装/移除语言...已安装语言窗口列出所有可用的语言,并选中了其中已安装的语言。

选择要安装的语言,取消选择已安装但要删除的语言。

点击 应用变更

需要管理员特权。请输入您的密码或要求的管理员账号的密码。

除了用于显示菜单和消息的翻译,安装新语言还可能添加多个语言支持组件,比如拼写检查的词典、字体和输入法。

一些翻译可能未完成,某些应用程序可能不支持您的语言。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-dash-intro.page0000644000373100047300000000555612320733010026412 0ustar langpacklangpack00000000000000 Dash 是启动器顶部的按钮。 Jeremy Bicha jbicha@ubuntu.com 使用 Dash 查找应用、文件、音乐和更多。

搜索

Dash 可以用于搜索应用程序、文件、音乐和视频,以及显示您最近使用的项目。如果您最近使用过数据表或者编辑过图片,但是忘记了存在了哪里,您将会发现 Dash 的这个功能很好用。

要使用 Dash,请点击 启动器 顶部的按钮。此按钮上有 Ubuntu 图标。要更快访问,可以直接按 Super 键。

要隐藏 Dash,再次点击顶部按钮或者按 SuperEsc

在 Dash 主界面可以搜索所有

打开 Dash 后看到的第一个界面就是 Dash 主界面。不需要输入或点击,Dash 主界面将显示最近使用的程序和文件。

每种类型将只显示一行。如果有更多结果,可以点击 查看更多结果 来查看。

要搜索,请直接输入。相关的搜索结果将直接显示在不同的已经安装的栏目中。

点击一个结果以打开之,或者可以按 Enter 来打开列表中的第一项。

栏目

栏目可以让你在 Dash 搜索结果中集中精力,并排除其他栏目的结果。

你可以在 栏目条 - 也就是 Dash 底部深色的条 - 中看到可用的栏目。

要切换到不同的栏目,点击相应的按钮或按 CtrlTab

过滤器

过滤器可以进一步缩窄搜索结果。

点击 过滤结果 来选择过滤器。你可能需要点击过滤器头,比如 来查看可用的选项。

预览

如果在搜索结果上点击右键,将会打开 预览,其含有关于结果更详细的信息。

要关闭预览,点击任何空白区或按 Esc

usr/share/help-langpack/zh_CN/ubuntu-help/disk-format.page0000644000373100047300000000526512320733010025411 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org 通过格式化删除外部硬盘或 USB 闪存驱动器上的所有文件和文件夹。 擦除可移动磁盘上的所有内容

如果您有可移动磁盘,例如 U 盘或者移动硬盘,您有时可能需要彻底删除上面的所有文件和文件夹。您可以通过格式化该磁盘来完成删除 - 这将删除磁盘上的所有文件,将其彻底清空。

格式化可移动磁盘

Dash 中打开 磁盘 应用程序。

活动概述中打开磁盘应用程序。

存储设备列表中选择您想要擦除的磁盘。

确保您选择的是正确的磁盘!如果您选错磁盘,该磁盘上的所有文件也都将被删除!

在“卷”部分,单击卸载卷。然后单击格式化卷

在弹出的窗口中,为磁盘选择文件系统类型

如果除 Linux 计算机以外,您还要在 Windows 和 Mac OS 计算机上使用该磁盘,请选择 FAT 格式。如果您仅在 Windows 中使用它,选择 NTFS 可能更好。在这里您还将看到各个文件系统类型的简单说明。

为磁盘命名,然后单击格式化开始擦除磁盘。

格式化一旦完成,即可安全删除磁盘。现在磁盘已被全部清空并可重新使用。

格式化磁盘并不是安全地删除您的文件

格式化磁盘并不是擦除所有数据的绝对完全方式。经过格式化的磁盘不会显示含有文件,但通过特殊的数据软件却可能重新恢复这些文件。如果您需要安全地删除文件,您将需要使用命令行程序,如 shred

usr/share/help-langpack/zh_CN/ubuntu-help/sound-broken.page0000644000373100047300000000152012320733010025565 0ustar langpacklangpack00000000000000 解决没有声音或声音质量差等问题。 GNOME 文档项目 gnome-doc-list@gnome.org 音效问题

您计算机上音效播放受损的原因有很多。以下哪个主题能最好地描述您正在经历的问题?

usr/share/help-langpack/zh_CN/ubuntu-help/unity-dash-photos.page0000644000373100047300000000276112320733010026566 0ustar langpacklangpack00000000000000 查看您的电脑或在线社交账户中的照片。 Jeremy Bicha jbicha@ubuntu.com 照片栏目

照片是 Dash 分类栏 上的第六个栏目,以照相机图标进行表示。您可以在照片栏目中查看您本地电脑或者在线账户 中的照片。

如要在打开 Dash 时直接进入照片栏目,可以使用 SuperC 快捷键组合。

预览

右键单击搜索结果可以打开 预览 界面,以便查看尺寸更大的缩略图,以及照片的更多相关信息。

您可以对本地照片进行各种操作,如打开、打印、查看或通过电子邮件发送。

过滤器

单击 过滤结果 可以根据来源或拍照日期对照片进行过滤。

usr/share/help-langpack/zh_CN/ubuntu-help/net-what-is-ip-address.page0000644000373100047300000000302412320733010027351 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com 计算机的 IP 地址类似于电话号码。 IP 地址是什么?

IP 地址代表Internet 协议地址,连接到网络(如 Internet)的每个设备都有一个 IP 地址。

IP 地址类似于电话号码。您的电话号码是标识您电话的唯一数字集,这样其他人就可以呼叫您。同样,IP 地址是标识计算机的唯一数字集,这样计算机就可与其他计算机收发数据。

当前,多数 IP 地址均由四组数字构成,每组数字之间用句点分隔。192.168.1.42 是一个 IP 地址示例。

IP 地址分为动态静态两种。动态 IP 地址是在您的计算机每次访问网络时临时为其分配的地址。静态 IP 地址是固定的 IP 地址,不会更改。动态 IP 地址比静态地址更常用,静态 IP 地址通常仅在特殊情况下使用,例如在管理服务器时使用。

usr/share/help-langpack/zh_CN/ubuntu-help/color-howtoimport.page0000644000373100047300000000266312320733010026677 0ustar langpacklangpack00000000000000 打开色彩配置文件时自动导入。 Richard Hughes richard@hughsie.com Michael Hill mdhillca@gmail.com 如何导入色彩配置文件?

在文件浏览器中双击 .ICC 或 .ICM 类型的文件,自动导入配置。

还可以通过在系统设置色彩下选择导入配置…为设备选择一个配置。

还可以通过在系统设置色彩下选择导入配置…为设备选择一个配置。

usr/share/help-langpack/zh_CN/ubuntu-help/wacom-stylus.page0000644000373100047300000000376512320733010025643 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com 2012 调节 Wacom 手写笔的按键功能和压感设置。 设置手写笔

点击 菜单栏 最右端的图标并选择 系统设置

打开 Wacom 手写板

如果没有检测到手写板,则系统将会告诉您 请插入并打开您的 Wacom 手写板

面板下半部分包括了手写笔的细节和设置选项。在这个选项面板上,您可以调节以下功能:

擦除器压力感应:使用滑块来调节擦除器的压力感应强度,即您所施加的物理压力在系统中所对应的数字值。

按键 / 滚轮 设置(这些设置用于调节手写笔功能)。单击各个标签胖的菜单来从这些功能中进行选择:无动作、鼠标左键单击、鼠标中键单击、鼠标右键单击、向上滚动、向下滚动、向左滚动、向右滚动、后退、前进。

尖端压力感应:拖动滑块来调节尖端压力感应的强度。

如果您有多于一支手写笔,当其它手写笔接近平板时,一个分页符将会出现在手写笔设备名称旁边。使用分页符来控制您需要调节哪支手写笔的设置。

usr/share/help-langpack/zh_CN/ubuntu-help/mouse-problem-notmoving.page0000644000373100047300000001021312320733010027762 0ustar langpacklangpack00000000000000 如何在鼠标无法使用时检查鼠标。 Phil Bull philbull@gmail.com Shaun McCance shaunm@gnome.org 鼠标指针不动
核实鼠标是否已经插入

如果使用的是有线鼠标,请核实是否已将其在计算机中插牢。

如果是 USB 鼠标,请尝试将其插入另一 USB 端口。如果是 PS/2 鼠标,请确保已将其插入绿色鼠标端口而不是紫色键盘端口。如果未将 PS/2 鼠标插入,则可能必须重新启动计算机。

核实计算机是否已识别出鼠标

键入 CtrlAltT 开启 终端

在终端窗口中的提示符($)处输入 xsetpointer -l | grep Pointer,要与显示在此处的命令完全相同,然后按 回车

您将看到一个简短的鼠标设备列表。确保其中至少有一个项目的旁边显示 [XExtensionPointer],并且其中一个 [XExtensionPointer] 项目的左侧有鼠标名称。

如果没有一个条目有鼠标名称和后面的 [XExtensionPointer],则计算机未识别出鼠标。如果有这样的条目,则计算机已识别出鼠标。这种情况下应该核实鼠标是否已插入,并且正在运行。

如果鼠标带的是串行(RS-232)连接器,则可能必须多执行几步才能使其运行。这几步可能取决于鼠标的制造方式和型号。

鼠标检测问题解决起来可能会很复杂。如果认为鼠标未被检测到的情况不妥,请要求分销商或供应商提供支持。

检查鼠标是否可以使用

将鼠标插入另一计算机,然后看鼠标是否能用。

如果鼠标是光学鼠标或激光鼠标,鼠标打开后应该会从底部发光。如果不发光,请核实是否已将其打开。如果已将其打开,但还是不发光,则鼠标可能有故障。

检查无线鼠标

请确保鼠标已经开启。一般鼠标底部会有一个开关可以将鼠标完全关闭。您可以根据实际情况调整开关的状态。

如果您使用蓝牙鼠标,请确保您已经将鼠标与电脑正确配对。参阅

单击鼠标键,看鼠标指针现在是否移动。某些无线鼠标会为省电而进入休眠模式,因此可能单击鼠标键后才有响应。

核实鼠标电池是否已经充电。

确保已经接收器正确插入计算机中。

如果鼠标和接收器能运行在不同的无线电频道中,请确保已用同一频道设置两者。

可能必须按下鼠标键或接收器上的按钮后才能建立连接。如果情况如此,则鼠标说明书中应该有更多详细信息。

大多射频(无线电)无线鼠标插入计算机时都应该会自动运行。如果使用的是蓝牙或 IR(红外)无线鼠标,则可能必须多执行几步才能使其运行。这几步可能取决于鼠标的制造方式和型号。

usr/share/help-langpack/zh_CN/ubuntu-help/documents-print.page0000644000373100047300000000213112320733010026311 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2012 Michael Hill mdhillca@gmail.com 2012 打印存储在本地或在线文档。 打印文档

打印文档:

点击 按钮。

在选择模式下,选中要打印的文档。

点击按钮栏上的打印按钮。将打开打印对话框。

当多个文件被选中,或者选择一个集合时打印机不可用。

usr/share/help-langpack/zh_CN/ubuntu-help/color-calibrationdevices.page0000644000373100047300000000352112320733010030130 0ustar langpacklangpack00000000000000 我们支持大量的校准设备。 Richard Hughes richard@hughsie.com 支持哪些颜色测量仪器?

GNOME 依靠 ArgyllCMS 色彩管理系统来支持颜色仪器。因此,支持以下显示测量仪器:

Gretag-Macbeth Eye-One Pro(光谱仪)

Gretag-Macbeth Eye-One Monitor(光谱仪)

Gretag-Macbeth Eye-One Display 1、2 或 LT(色度计)

X-Rite ColorMunki Create(色度计)

X-Rite ColorMunki Design 或 Photo(光谱仪)

X-Rite ColorMunki Create(色度计)

X-Rite ColorMunki Create(色度计)

Pantone Huey(色度计)

MonacoOPTIX(色度计)

ColorVision Spyder 2 和 3(色度计)

Colorimètre HCFR(色度计)

Pantone Huey 目前是最便宜、Linux 支持最好的硬件。

系统通过 Argyll 程序支持多种光谱仪,您可以用这些光谱仪来校正和调试打印机的颜色:

X-Rite DTP20 "Pulse"

X-Rite DTP22 Digital Swatchbook

X-Rite DTP41

X-Rite DTP41T

X-Rite DTP51

usr/share/help-langpack/zh_CN/ubuntu-help/a11y-visualalert.page0000644000373100047300000000314512320733010026270 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 播放警告声时,启用视觉警告:屏幕或窗口闪烁。 警告声响起时屏幕闪烁

您的计算机将针对特定类型的消息和事件播放简单的警告声。如果您很难听到这些声音,可以在播放警告声时让整个屏幕或当前窗口闪烁。

此功能还可以在图书馆等需要让计算机保持安静的环境中使用(请查阅了解如何静音)。

单击顶部菜单栏最右侧的图标,选择系统设置

打开通用辅助功能并选择指向和单击选项卡。

开启视觉警告,选择整个屏幕闪烁或仅当前窗口的标题栏闪烁。

usr/share/help-langpack/zh_CN/ubuntu-help/color-testing.page0000644000373100047300000000336612320733010025762 0ustar langpacklangpack00000000000000 Richard Hughes richard@hughsie.com 色彩管理测试很容易,我们为它提供了一些测试配置文件。 如何测试色彩管理系统是否在正确地工作?

颜色配置的作用有时候十分微妙,可能看不出有太多变化。

GNOME 提供多个配置文件用于测试,应用这些配置会得到清晰的效果:

Bluish Test: 屏幕会变成蓝色,测试校准曲线是否发送到显示器

ADOBEGAMMA-test: 屏幕会变成粉红色,测试屏幕配置文件的不同特性

FakeBRG: 不改变屏幕显示,而是从 RGB 通道切换到 BGR。所有颜色渐变看上去大致正确,整个屏幕不会有太多变化,但是在支持色彩管理的应用中,图像看上去会有很大不同。

Add one of the test profiles to your display device using the System SettingsColor preferences.

使用这些配置文件您可以清楚地看到应用程序是否支持色彩管理。

usr/share/help-langpack/zh_CN/ubuntu-help/disk-benchmark.page0000644000373100047300000000420212320733010026041 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org Natalia Ruz Leiva nruz@alumnos.inf.utfsm.cl Michael Hill mdhillca@gmail.com 您可以在您的硬盘上运行性能测试程序,检查其速度。 测试您的硬盘的性能

测试您的硬盘的速度

Dash 中打开 磁盘应用程序。

从活动概述中打开磁盘应用程序。

磁盘驱动器列表中选择硬盘。

点击齿轮按钮,选择性能测试驱动器

点击开始性能测试,调整传输速率,并根据需要设定存取时间参数。

点击开始性能测试 按钮,测试从磁盘读取数据的速度。可能需要管理员权限。输入您的密码,或请求管理员的帐号密码。

如果同时进行写入性能测试被选中,将会进行快速的从磁盘读取和写入数据的性能测试。这将花费更长的时间才能完成。

测试结束后,

图像下方将显示最大、最小和平均读写率等多个指标的数值。

usr/share/help-langpack/zh_CN/ubuntu-help/color-calibrate-printer.page0000644000373100047300000000307712320733010027713 0ustar langpacklangpack00000000000000 校准打印机对打印颜色的准确性非常重要。 Richard Hughes richard@hughsie.com 如何校准我的打印机?

获取打印设备配置文件的方法有两种:

使用光子谱仪设备,如 Pantone ColorMunki

从颜料厂商下载打印参考文件

如果您只有一或两个不同的纸张类型,让颜料厂商生成打印机配置文件一般是最便宜的选择。通过从公司网站下载参考图,您之后可以用内衬信封将打印件发送回公司,公司将扫描这页纸,生成配置文件并通过电子邮件给您发送准确的 ICC 配置文件。

只有在您要获取大量油墨集或纸张类型的配置文件时,使用昂贵设备(如 ColorMunki)才比较划算。

如果您改变了您的油墨供应商,请务必重新校准打印机!

usr/share/help-langpack/zh_CN/ubuntu-help/files-templates.page0000644000373100047300000000357412320733011026271 0ustar langpacklangpack00000000000000 通过自定义文件模板快速创建新文档。 Anita Reitere nitalynx@gmail.com Michael Hill mdhillca@gmail.com 常用文档类型的模板

如果您经常需要基于相同的内容创建文档,可以通过使用文档模板来提高效率。文件模板可以是任何类型的文档,其中有要重复使用的格式或内容。例如,可通过信头创建模板文档。

创建新模板

创建要用作模板的文档。例如,可在字处理应用程序中创建信头。

将含有模板内容的文件存入 主文件夹 文件夹中的 模板 文件夹。如果 模板 文件夹不存在,则必须先创建该文件夹。

用模板创建文档

打开要放置新文档的文件夹。

在文件夹的空白处点击右键,选择 新建文档 ,可用的模板名称将会罗列在子菜单中。

从列表中选择合适的模板。

为刚刚创建的文档输入文件名。

双击该文件将其打开,然后开始编辑。

usr/share/help-langpack/zh_CN/ubuntu-help/color-notifications.page0000644000373100047300000000343312320733011027152 0ustar langpacklangpack00000000000000 Richard Hughes richard@hughsie.com 当色彩配置太旧而不精确时会提醒您。 当色彩配置不精确时,我会得到提醒吗?

不幸的是我们无法在不进行校准的情况下判断设备的配置是否精确,因此我们根据上次校准的时间决定是否推荐您重新进行校准。

由于不精确的色彩配置会给终端产品带来很大的差异,有些公司特别指定了配置文件的过期策略。

If you set the timeout policy and a profile is older than the policy then a red warning triangle will be shown in the System SettingsColor dialog next to the profile. A warning notification will also be shown every time you log into your computer.

要设置显示和打印设备的策略,请指定配置文件的过期天数:

[rupert@gnome] gsettings set org.gnome.settings-daemon.plugins.color recalibrate-printer-threshold 180 [rupert@gnome] gsettings set org.gnome.settings-daemon.plugins.color recalibrate-display-threshold 180
usr/share/help-langpack/zh_CN/ubuntu-help/addremove-remove.page0000644000373100047300000000275312320733011026432 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 删除您不再使用的软件。 删除应用程序

Ubuntu 软件中心可协助您删除不再使用的软件。

单击启动器中的 Ubuntu 软件中心图标,或在 Dash 搜索软件中心。

软件中心打开后,单击顶部的已安装按钮。

使用搜索框或通过翻阅已安装应用列表找到要删除的应用程序。

选中该应用程序,然后单击删除

您可能会被要求输入密码。输完密码后,该应用程序就将被删除。

有些应用程序依赖其他应用才能正常工作,若果您试图删除一个被依赖的应用程序,依赖它的应用程序也会被删除。软件中心会在删除动作之前跟您再次确认。

usr/share/help-langpack/zh_CN/ubuntu-help/net-othersedit.page0000644000373100047300000000414312320733011026122 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Michael Hill mdhillca@gmail.com 您需要在连接设置中取消选中对所有用户可用选项。 其他用户无法控制网络连接

如果您可编辑网络连接,但计算机上的其他用户不能,则您可能已将连接设置为对所有用户可用。这使得计算机上的所有人均可使用该连接,但仅允许具有管理员权限的用户更改其设置。

这是因为如果更改设置,所有人都将受到影响,因此只允许高度可信的用户(管理员)修改连接。

如果其他用户确实需要自己更改连接,请使连接对计算机上的所有人可用。这样一来,所有人均可管理其自己的连接设置,而不再依赖于该连接的一组共享的系统级设置。

不再共享连接

单击顶部面板中的网络菜单,然后单击编辑连接

查找您要让所有人自己管理/编辑的连接。单击以选择连接,然后单击编辑

您必须输入管理员密码才能更改连接。仅管理员用户可执行此操作。

取消选中对所有用户可用并单击保存。计算机上的其他用户现在可以自己管理连接。

usr/share/help-langpack/zh_CN/ubuntu-help/hardware.page0000644000373100047300000000226312320733011024762 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 硬件 硬件问题、打印机、电源设置、色彩管理、蓝牙 和 disks… 硬件和驱动程序 更多主题
问题 硬件问题 常见问题
usr/share/help-langpack/zh_CN/ubuntu-help/net-macaddress.page0000644000373100047300000000367712320733011026071 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Jim Campbell jwcampbell@gmail.com Michael Hill mdhillca@gmail.com 为网络硬件分配的唯一代码。 什么是 MAC 地址?

A MAC address is the unique identifier that is assigned by the manufacturer to a piece of network hardware (like a wireless card or an Ethernet card). MAC stands for Media Access Control, and each identifier is intended to be unique to a particular device.

一个 MAC 地址由六组双字符组成,每组之间用英文冒号分隔。00:1B:44:11:3A:B7 是一个 MAC 地址示例。

识别网络硬件的 MAC 地址:

单击菜单栏上的网络菜单

选择连接信息

您的 MAC 地址将显示为硬件地址

实际上,您可能需要 修改或者“谎报” 一个 MAC 地址 。例如,一些互联网服务提供商可能需要一个特殊的 MAC 地址用于访问他们的服务。如果网卡停止工作,您需要换上新卡;新卡换上后服务将不再工作。在这种情况下,您就需要谎报 MAC 地址了。

usr/share/help-langpack/zh_CN/ubuntu-help/sharing-bluetooth.page0000644000373100047300000000262212320733011026622 0ustar langpacklangpack00000000000000 Bluetooth file sharing and receiving options. Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com Control sharing over Bluetooth

You can allow access to your Public and Downloads folders for Bluetooth file sharing, and also restrict that access to only trusted devices. Configure Personal File Sharing Preferences to control access to the shared folders on your computer.

A Bluetooth device is trusted if you have paired, or connected your computer to it. See .

Share your <file>Public</file> folder over Bluetooth

In the Dash, open Personal File Sharing.

Select the desired Bluetooth file sharing and receiving options options from the list.

usr/share/help-langpack/zh_CN/ubuntu-help/app-cheese.page0000644000373100047300000000273212320733011025200 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 它就像您自己的个人照相馆。 使用摄像头创建有趣的照片和视频

摄像头加上 茄子大头贴 应用程序可以照相、拍摄视频、加上有趣的特效并与朋友分享。

Ubuntu 中未默认安装茄子大头贴。要安装茄子大头贴:

单击此链接启动软件中心

阅读有关茄子大头贴的信息和评注以确保您确实要安装它。

如果您选择安装,从“软件中心”窗口单击安装

您可能需要提供管理密码才能完成安装。

如需茄子大头贴的帮助,请阅读茄子大头贴用户指南。

您需要先安装茄子大头贴才能阅读其用户指南。

usr/share/help-langpack/zh_CN/ubuntu-help/about-this-guide.page0000644000373100047300000000325312320733011026337 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org Ubuntu 文档团队 使用 Ubuntu 桌面指南的几个技巧。 关于本指南

本指南将带您体验 Ubuntu 桌面特性,回答计算机相关的问题,并给出一些提高计算机使用效率的小提示。

本指南不是按章节组织,而是由面向任务的小主题组成,因此您不需要浏览完整的帮助手册就能找到问题的答案。

相关的内容通过链接组织在一起,帮助页面底部的“参见”链接将为您提供相关主题的导航。

指南顶部的文本输入框是一个搜索栏,一旦开始输入,相关结果马上就会在其下面出现,请单机打开。

本指南还在不断完善中。我们努力为您提供全面的帮助信息,但无法在指南中回答所有的问题,更多有用的信息将会陆续加入。

感谢您阅读 Ubuntu 桌面指南

-- Ubuntu 文档团队

usr/share/help-langpack/zh_CN/ubuntu-help/shell-workspaces-switch.page0000644000373100047300000000337412320733011027756 0ustar langpacklangpack00000000000000 打开工作区切换器并双击其中一个工作区。 GNOME 文档项目 gnome-doc-list@gnome.org 在工作区之间进行切换 使用鼠标:

打开启动器并单击靠近底部的工作区切换器按钮。双击要切换到的任意窗口或工作区,或者再次按下“工作区切换器”按钮返回至上一个工作区。

使用键盘:

CtrlAlt 以转移到当前工作区右侧的工作区。

CtrlAlt 以转移到当前工作区左侧的工作区。

CtrlAlt 以转移到当前工作区下面的工作区。

CtrlAlt 以转移到当前工作区上面的工作区。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-launcher-menu.page0000644000373100047300000000311512320733011027073 0ustar langpacklangpack00000000000000 Stephen M. Webb stephen@ubuntu.com 右键单击启动器图标即可显示动作菜单。 启动器图标菜单

Right clicking on a Launcher icon will reveal a menu of actions. The actions available depend on whether the icon is locked to the launcher or not, if the icons is for an application whether it's running or not, and on the specific icon itself. Available actions can include the following.

启动应用程序或打开文档、文件夹或设备

如果图标已被固定在启动器上,您可以将其解锁(请参考

如果图标尚未固定在启动器上,您可以将其固定 (see )

如果应用程序正在运行,您可以关闭它们

如果一个应用程序打开了多个窗口,您可以在窗口之间进行切换

一些应用程序自带特别的快速操作选项,例如打开新文档,或打开新窗口

usr/share/help-langpack/zh_CN/ubuntu-help/bluetooth.page0000644000373100047300000000225712320733011025175 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 连接,发送文件,开启与关闭… 蓝牙

蓝牙是一个无线传输协议。您可以通过蓝牙协议将外置设备连接到您的电脑。蓝牙在耳机、键盘、鼠标等设备上有着广泛的使用。您也可以使用蓝牙 发送文件,例如从电脑向手机传送信息。

蓝牙问题 问题
usr/share/help-langpack/zh_CN/ubuntu-help/net-install-moonlight.page0000644000373100047300000000270512320733011027416 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com 有些网站使用 Silverlight 来显示 Web 页面。Moonlight 插件使您可以查看这些页面。 安装 Sliverlight 插件

Silverlight 是一种 Web 浏览器插件,使您可以在一些网站上观看视频和使用交互式 Web 页面。如未安装 Silverlight,一些网站可能无法运行。

如果查看启用了 Silverlight 的网站而您未安装该插件,则您可能会看到一条提示您安装 Silverlight 的消息。此消息应包括该插件的安装说明,但这些说明可能不适用于您的 Web 浏览器或 Linux 版本。

如果要查看启用了 Silverlight 的网站,您应安装 Moonlight 插件。这是一个可在 Linux 上运行的免费开源Silverlight 版本。

有关详细信息和安装说明,请参见 Moonlight 网站。

usr/share/help-langpack/zh_CN/ubuntu-help/documents-search.page0000644000373100047300000000233512320733011026431 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2012 Michael Hill mdhillca@gmail.com 2012 通过标题或作者找到您的文档。 搜索文件

文档中开始搜索:

Ctrl F 键。

点击放大镜图标。

开始输入。文档将通过标题或作者进行匹配。

您可以通过点击 向下按钮,选择不同的过滤器来限制或筛选搜索结果。

usr/share/help-langpack/zh_CN/ubuntu-help/printing-2sided.page0000644000373100047300000000275312320733011026173 0ustar langpacklangpack00000000000000 双面打印或每张多页打印。 Phil Bull philbull@gmail.com Jim Campbell jwcampbell@gmail.com 双面打印和多页面布局

可在纸张两面进行打印:

单击文件打印

转入打印窗口选项卡的页面设置并从下拉列表中选择双面选项。如果该选项已禁用,则打印机不可用于双面打印。

打印机以不同方式处理双面打印。逐个尝试使用以了解其工作方式是个不错的办法。

还可在纸张的每一面打印多页文档。使用每面页数选项执行此操作。

这些选项是否可用取决于您的打印机类型和您正在使用的应用程序。这个选项并不总是可用。

usr/share/help-langpack/zh_CN/ubuntu-help/color-notspecifiededid.page0000644000373100047300000000234712320733011027606 0ustar langpacklangpack00000000000000 Richard Hughes richard@hughsie.com 默认显示器配置文件没有校准日期。 为什么默认显示器配置文件不会过期?

每个显示器的默认色彩配置是根据存储在显示器芯片中的显示器 EDID 自动生成的,EDID 只保存了显示器制造时可用颜色的快照,不包含其他色彩校准信息。

由于 EDID 不能更新,所以没有过期时间。

从显示器供应商获取或自己创建配置文件能够更精确地校准色彩。

usr/share/help-langpack/zh_CN/ubuntu-help/documents-view.page0000644000373100047300000000246412320733011026141 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2012 Michael Hill mdhillca@gmail.com 2012 全屏查看文档。 显示存储在本地或网络上的文档

当您打开文档应用程序,存储在本地和网络上的文档,以缩略图的方式显示。

为了让您的 Google Docs SkyDrive 文档出现,需要分别配置 Google 或 Windows Live 作为在线帐户。

查看文档内容。

点击缩略图。在文档窗口中全宽显示该文档(如果最大化,全屏显示)。

要退出文档,点击后退箭头按钮。

usr/share/help-langpack/zh_CN/ubuntu-help/nautilus-file-properties-basic.page0000644000373100047300000001161112320733011031214 0ustar langpacklangpack00000000000000 查看基本文件信息,设置权限,以及选择默认应用程序。 Tiffany Antopolski tiffany@antopolski.com Shaun McCance shaunm@gnome.org 文件属性

要查看有关文件或文件夹的信息,请右键单击文件或文件夹,然后选择属性。也可先选择文件再按 AltEnter

文件属性窗口用于显示文件类型、文件大小和上次文件修改时间之类的信息。如果常需要了解这些信息,则可将其显示在列表视图列或图标标题中。也可用此窗口设置文件权限和选择用于打开文件的应用程序。

显示在基本选项卡中的信息的说明如下。其中也有权限打开方式选项卡。对于某些类型的文件(如图像和视频),会多显示一个选项卡,其中有尺寸、持续时间和编码之类的信息。

基本属性 <gui>名称</gui>

可通过更改此字段重命名文件。也可在属性窗口外重命名文件。请参阅

<gui>类型</gui>

此字段有助于识别文件的类型,如 PDF 文档、OpenDocument 文本文件或 JPEG 图像。文件类型等属性决定着哪种应用程序能打开相应文件。例如,不能用音乐播放器打开图片。对于更多信息,请参见

文件的 MIME 类型显示在括号中;使用 MIME 类型是计算机用于指代相应文件类型的标准方式。

目录

如果正在查看文件夹而不是文件的属性,则此字段已显示出来。此字段有助于查看文件夹中的项目数量。如果所查看的文件夹中有其他文件夹,则会将其中的每个文件夹视为一个项目,即使其中含有其他项目。每个文件也都视为一个项目。如果文件夹是空的,则会在内容中显示

大小

如果正在查看文件(不是文件夹),则此字段已显示出来。从文件大小中可以看出文件占有多少磁盘空间。从中还可看出下载文件或通过电子邮件发送文件会耗费多长时间(收发大文件所耗的时间较长)。

可能会以字节、KB、MB 或 GB 为单位显示大小;如果用后三种方式显示大小,也会在括号中以字节为单位显示大小。从技术角度来说,1 KB 是 1024 字节,1 MB 是 1024 KB,以此类推。

位置

每个文件在计算机中的位置均由其绝对路径显示。这是文件在计算机中的唯一 "地址",由列出的文件夹构成,必须转到这些文件夹中才能找到相应文件。例如,如果 Jim 的主文件夹中有个文件名为 Resume.pdf,则其位置会是 /home/jim/Resume.pdf

存有文件的文件系统或设备。此字段用于显示文件实体的存储位置,例如,文件是在硬盘还是 CD 中,在网络共享还是服务器中。可将硬盘分为多个磁盘分区;磁盘分区也会显示在下。

可用空间

仅会对文件夹显示此字段。此字段用于显示其中有相应文件夹的磁盘上的可用磁盘空间量。可用此字段核实硬盘是否已满。

访问时间

上次打开文件的日期和时间。

修改时间

上次修改文件的日期和时间。

usr/share/help-langpack/zh_CN/ubuntu-help/user-changepassword.page0000644000373100047300000000531312320733011027150 0ustar langpacklangpack00000000000000 通过在您的帐户设置中经常更改密码来保证您帐户的安全。 GNOME 文档项目 gnome-doc-list@gnome.org 更改密码

不时更改密码是个好办法,特别是在您认为别人可能知道您的密码的情况下。

点击 菜单栏 最右端的图标并选择 系统设置

打开 用户帐户

单击密码旁边的标签。

如果您已设置了密码,则标签应看起来像一系列点或框。

输入您的当前密码,然后输入新密码。在确认密码字段再次输入您的新密码。

您也可单击新密码字段旁边的按钮,以选择随机产生的安全密码。这些密码别人难以猜测,但是它们也很难记住,所以一定要小心。

单击更改

确保您选择一个良好的密码。这将有助于保证您的用户帐户安全。

更改密钥环密码

如果您更改登录密码,则它可能变得与密钥环密码不同步。密钥环仅需一个密码即可访问全部内容,您因此无需记住很多不同的密码。如果您更改了用户密码(请参见上述内容),则您的密钥环密码将仍将和您的旧密码一致,要更改密钥环密码(以和登录密码匹配):

Dash 中打开 密码和密钥 程序。

确保 视图 菜单中的 根据密钥环 选项已被勾上。

在侧栏中的 密码 部分,右键单击 登录 并选择 更改密码

输入您的旧密码,然后输入新密码,并且通过再次输入确认您的新密码。

单击确定

usr/share/help-langpack/zh_CN/ubuntu-help/power-batteryestimate.page0000644000373100047300000000435512320733012027532 0ustar langpacklangpack00000000000000 单击电池图标时所显示的电量只是粗略估计值。 GNOME 文档项目 gnome-doc-list@gnome.org Phil Bull philbull@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com 估计的电池剩余时间有误

检查剩余电池寿命时,您可能发现它报告的剩余时间与电池实际持续的时间不同。这是因为系统只能对剩余的电池寿命量进行估计。但是,随着时间的推移,估计会越来越准确。

要对剩余的电池寿命进行估计,则必需考虑多种因素。一个因素是计算机当前使用的电量:耗电量因您打开程序个数、插入设备的类型的不同和是否运行任何密集型任务(例如,看 DVD 或转换音乐文件)而不同。这些信息随时变化因而难以预测。

另一个因素是电池放电的方式。一些电池剩余电量越少,消耗电力速度越快。在对电池如何放电没有精确了解的情况下,只能对剩余的电池寿命进行粗略的估计。

电池放电时,电源管理器将算出其放电属性并了解如何对电池寿命进行更好的估计。但是,这样的估计无法做到完全准确。

如果您获取了一个不合情理的电池续航时间估计值(几百天),则电源管理器可能无法探测到部分需要的数据。

如果您拔下电源插头并使用电池运行笔记本电脑一会儿,然后插上电源并将其继续充电,则电源管理器应该可以重新获取到其需要的数据。

usr/share/help-langpack/zh_CN/ubuntu-help/files-copy.page0000644000373100047300000000720712320733012025243 0ustar langpacklangpack00000000000000 复制或移动项目至新目录。 Cristopher Thomas crisnoh@gmail.com Tiffany Antopolski tiffany.antopolski@gmail.com Michael Hill mdhillca@gmail.com 复制或移动文件和文件夹

文件或文件夹可以通过鼠标拖拽将其复制或移动到新的位置,或者使用复制和粘贴命令,或者使用快捷键。

例如,您可能需要把演示文稿复制一份放进 U 盘以便随身携带和修改。您也可能需要在修改文档之前先复制一份。

这些做法对文件和文件夹都有效,您可以用同样的方式移动和复制文件和文件夹。

复制和粘贴文件

单击以选择您想要复制的项目。

点击右键,选择 复制,或者按 Ctrl C 键。

前往您想要存放复制后文件的目录。

点击齿轮按钮,选择粘贴来完成复制文件,或按 Ctrl V 键。这将在源文件夹和其他文件夹上生成这个文件的一个拷贝。

通过剪切和粘贴操作来移动文件

单击选择您想要移动的项目。

点击右键,选择剪切,或者按 Ctrl X 键。

前往您想要存放移动后项目的文件夹。

点击工具栏上的齿轮按钮,选择粘贴来完成移动文件,或者按 Ctrl V 键。该文件将从原始文件夹移动到其他文件夹。

拖动文件以复制或移动

打开文件管理器至包含您想要复制项目的文件夹。

点击顶部栏的文件,选择新窗口 (或者按 Ctrl N 键)打开新窗口。在新窗口中,导航到您要移动或复制的文件的文件夹。

单击并将该项目从一个窗口拖动至另一个。默认情况下,如果目的地在同一设备上(即如果两个文件夹都在计算机的同一硬盘上),拖动项目将移动该项目。

例如,如果您将一个文件从 U 盘拖拽到主文件夹中,因为这是从一个设备拖拽到另一个设备,文件将会被复制过去。

要强制复制文件,请在拖动的同时按住 Ctrl 键。

您不能将文件复制或移动到只读文件夹。有些文件是只读的以防止您更改其内容。您可以通过更改文件权限来更改文件的只读状态。

usr/share/help-langpack/zh_CN/ubuntu-help/accounts-disable-service.page0000644000373100047300000000336012320733012030043 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Greg Beam ki7mt@yahoo.com 某些在线账户提供多项服务(如日历、电子邮件等),您可以控制本地应用使用哪些服务。 关闭账户服务

某些在线账户为单个用户提供多项服务,例如 Google 账户可以提供电子邮件、日历、代码、通讯录等服务。您可以选择使用 Google 的电子邮件、Yahoo! 的聊天,也按照其他方式对服务进行组合。

禁用服务:

单击顶部菜单栏最右侧的图标,选择系统设置

选择在线账户

从左侧窗口选择要修改的账户。

右侧窗口列出了该账户提供的服务。

关闭不希望使用的服务。

服务被禁用之后,本地应用将不再访问该服务。如需恢复访问,请回到在线账户设置,开启该项服务。

usr/share/help-langpack/zh_CN/ubuntu-help/documents-collections.page0000644000373100047300000000356512320733012027511 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2012 Michael Hill mdhillca@gmail.com 2012 组织相关集合中的文档。 文档集合

文档让您将不同类型的文档放在一起叫做集合。如果您有相关联的文档,可以将他们分组,让他们更容易找到。例如,您有一个商务旅行,做了一个演讲,您的幻灯片、飞行旅程( PDF 文件),预算电子表格,和其他混合 PDF/ODF 文档,可以划分为一个集合。

创建或添加到集合:

点击 按钮。

在选择模式下,选中要收集的文档。

点击按钮栏上的 + 按钮。

在集合列表中,点击添加,键入新的集合名称,或选择现有集合。选定的文档将被添加到集合中。

集合与文件夹不同,没有层次结构:集合中不能包含集合。

删除集合:

点击 按钮。

在选择模式下,选中要删除的集合。

点击按钮栏上的回收站按钮。集合将被删除,保留原始文档。

usr/share/help-langpack/zh_CN/ubuntu-help/user-goodpassword.page0000644000373100047300000000741712320733012026663 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org Phil Bull philbull@gmail.com Tiffany Antopolski tiffany.antopolski@gmail.com Michael Hill mdhillca@gmail.com 使用更长、更复杂的密码。 添加密码

使您的密码对您来说很容易记住,但是对别人(包括计算机程序)来说很难猜测。

选择一个好的密码将有助于保证您计算机的安全。如果您的密码很容易猜到,则有人可能猜到并获取您个人信息的访问权限。

人们甚至可以使用计算机来系统地猜测您的密码,因此人类很难猜到的密码,计算机程序可能很容易破译。以下是选择一个好密码的一些技巧:

最好在密码中混合使用大写字母、小写字母、数字、符号和空格,这样会让密码更难被外人猜到。您可以选择混用多种特殊符号,这样如果其它人尝试猜测您的密码,猜对的可能性会变得非常低。

选择密码有很多种方法,例如您可以选择一个熟悉的短语,然后取短语中每个单词的首字母。短语可以是一部电影、一本书、一首歌或者一张专辑的名字。例如 "Flatland: A Romance of Many Dimensions" 按照这种方式就可以变成 F:ARoMD 或者 faromd 或者 f: aromd,都是比较理想的密码。

您的密码越长越好。密码包含的字符越多,人或计算机猜测它所花费的时间越长。

不要直接使用任何常用的单词或短语。因为自动密码破解工具一般都会优先尝试这些组合可能。研究结果表明最常见的密码就是“password”,这样的密码很容易就会被破解掉。

不要使用任何公开的个人信息作为密码,比如重要纪念日、驾照号码或者家人的名字。

不要使用任何名词。

选择可以在瞬间快速输入的密码,以免在输入密码时被人轻易偷窥和记住。

永远不要把密码写在任何地方,很容易被别有用心的人找到!

不同的地方使用不同的密码。

不同的帐户使用不同的密码。

如果您所有的帐户都使用相同的密码,则任何猜到的人都将能够立即访问您所有的帐户。

记住多个密码会比较困难。为每个服务使用不同的密码固然是最安全的,但是如果没有精力这样做,您也可以将各种服务分成数类,对不重要的服务使用同一个密码(例如随手注册的网站),而为特别重要的服务使用各不相同的密码(例如网上银行或者个人邮箱)。

等其更改密码。

usr/share/help-langpack/zh_CN/ubuntu-help/media.page0000644000373100047300000000303012320733012024236 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Digital cameras, iPods, playing videos… 声音、视频和图片
声音 声音 声音 音量、扬声器和耳机 和 麦克风… 基本声音问题
音乐和播放器 音乐和便携音频播放机
照片 照片和数码相机
视频 视频和摄像机
usr/share/help-langpack/zh_CN/ubuntu-help/a11y-braille.page0000644000373100047300000000200412320733012025342 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 使用 Orca 屏幕阅读器在盲文显示机上显示。 使用盲文阅读屏幕

GNOME provides the Orca screen reader to display the user interface on a refreshable Braille display. Depending on how you installed GNOME, you might not have Orca installed. Install Orca, then refer to the Orca Help for more information.

usr/share/help-langpack/zh_CN/ubuntu-help/bluetooth-connect-device.page0000644000373100047300000000670312320733012030062 0ustar langpacklangpack00000000000000 配对蓝牙设备。 Jim Campbell jwcampbell@gmail.com Paul W. Frields stickster@gmail.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 将您的计算机连接至一蓝牙设备

在您能够使用诸如鼠标和耳机等蓝牙设备之前,您首先需要将计算机连接到它们。这也称为“配对”蓝牙设备。

首先,请确保您的电脑开启了蓝牙。请查阅

顶部面板中点击蓝牙图标,然后选择设置新设备...

单击顶栏上的蓝牙图标,然后选择设置新设备

将另一蓝牙设备设置为可发现或可见,将其置于距离您的计算机不超过 10 米的地方。然后选择继续。您的计算机将开始搜索设备。

如果列出的设备过多,选择设备类型下拉栏,仅显示列表中某一类型的设备。

选择 PIN 选项...,设置向另一设备发送 PIN 的方式。

自动 PIN 设置将使用六位数字代码。没有输入键或屏幕的设备,如鼠标或耳机,可能需要特殊 PIN(如 0000),或根本不需要 PIN。查阅您设备的手册了解正确的设置。

为设备选择适当的 PIN 设置,然后选择关闭

选择继续。如果您没有选择预设 PIN,PIN 将显示在屏幕上。

如果需要的话请查阅您设备上的 PIN 码信息。设备应该会在电脑屏幕上显示 PIN 码,或者弹出窗口要求您输入 PIN 码,确认 PIN 码准确输入之后点击 配对

在大多数设备上,您需要在约 20 秒内完成输入,否则连接将无法完成。如果没有及时输入 PIN,请返回设备列表,重新开始。

配对成功后您将看到连接成功的信息。然后关闭窗口。

如果需要,稍后您可以删除蓝牙连接。

通过蓝牙共享可设置要访问共享文件,请查阅

usr/share/help-langpack/zh_CN/ubuntu-help/user-admin-change.page0000644000373100047300000000364412320733012026461 0ustar langpacklangpack00000000000000 您可通过提供给用户管理特权来更改允许对系统进行更改的用户。 GNOME 文档项目 gnome-doc-list@gnome.org 更改拥有管理特权的人员

管理特权是决定可对系统的重要部分进行更改的人员的一种方式。您可更改哪些用户拥有管理特权,哪些用户不拥有管理特权。它们是保持您的系统安全并防止潜在未经授权破坏性更改的好方法。

点击 菜单栏 最右端的图标并选择 系统设置

打开 用户帐户

单击解锁并输入您的密码,以解锁帐户设置。(要提供给用户管理员特权,您自己必须拥有管理员特权。)

选择您要更改权限的用户。

账户类型 选项卡中单击 标准 标签,并选择 管理员

关闭“用户帐户”窗口。用户下次登录时,其特权将会更改。

系统上的第一个用户帐户拥有管理特权。这是您首次安装系统时新建的用户帐户。

为同一系统上的太多用户赋予管理员特权并非明智之选。

usr/share/help-langpack/zh_CN/ubuntu-help/bluetooth-problem-connecting.page0000644000373100047300000000462312320733012030760 0ustar langpacklangpack00000000000000 适配器可以关闭或可能没有驱动程序,又或者蓝牙可能已被禁用或拦截。 Phil Bull philbull@gmail.com 为什么无法连接我的蓝牙设备?

您无法连接蓝牙设备(如手机或耳机)可能的原因有很多。

连接被拦截或不被信任

有些蓝牙设备会默认拦截连接,或要求您更改设置才能允许建立连接。确保将您的设备设置为允许连接。

蓝牙硬件无法识别

您的蓝牙适配器/加密狗可能未被计算机识别。这可能是因为未安装适配器的驱动程序。有些蓝牙适配器不受 Linux 支持,因此您可能无法获取这些适配器的正确驱动程序。这种情况下,您可能必须使用另外的蓝牙适配器。

适配器未开启

确保您的蓝牙适配器已开启。在菜单栏中单击蓝牙图标,检查确定它未禁用。

请确认蓝牙适配器的开关处于打开的状态,单击顶栏上的蓝牙图标,确认蓝牙设备未处于禁用状态。

设备蓝牙连接已关闭

检查确定您尝试连接的设备上的蓝牙已开启。例如,如果您要尝试连接至一部手机,请确保它未处于飞行模式。

计算机上没有蓝牙适配器

很多计算机都不具备蓝牙适配器。如果您想要使用蓝牙,可以购买适配器。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-disconnecting.page0000644000373100047300000000551212320733012030434 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Phil Bull philbull@gmail.com 信号太弱,或者网络不允许您正常连接。 为什么我的无线网络一直处于断开状态?

您可能会发现您的无线连接经常断开。通常情况下,一旦断开连接,您的计算机就会尝试重新连接到网络(尝试重新连接时,顶部工具栏中的网络图标将旋转),这可能会对您造成不便。

弱无线信号

从无线网络断开链接的常见原因是信号太弱。无线网络的覆盖范围有限,因此,如果距离无线基站太远,您获得的信号强度可能不足以保持连接。您和基站之间的墙壁或其他物体也会减弱信号。

顶部工具栏中的网络图标显示了无线信号的强度。如果信号较弱,请尝试移至距离无线基站较近的位置。

无法建立网络连接

有时,当您连接到无线网络时,开始时可能显示您已成功连接,但随后又会断开。这种情况通常是因为您的计算机未完全成功连接到网络,它设法建立连接,但因某种原因而无法最终确定连接状态,因此会断开。

一种可能的原因是您输入了错误的无线密码,或者您的计算机不被允许访问网络(例如,网络可能要求使用用户名进行登录)。

没有可用的无线硬件驱动程序

有些无线网络硬件可能不太可靠。无线网络很复杂,因此无线适配器和基站偶尔会出现小问题并失去连接。这种情况会造成很大不便,但在很多设备上却很常见。如果您经常从无线连接断开,这可能会是一个重要原因。如果频繁发生,您要考虑使用不同的硬件。

繁忙无线网络

流量密集地区(例如大学和咖啡厅的无线网络)通常有很多计算机同时尝试连接到网络。有时,这些网络太繁忙而无法应付所有尝试连接的计算机,因此有些计算机会断开连接。

usr/share/help-langpack/zh_CN/ubuntu-help/power-willnotturnon.page0000644000373100047300000000453612320733012027263 0ustar langpacklangpack00000000000000 电缆变松和硬件问题是可能的原因。 GNOME 文档项目 gnome-doc-list@gnome.org 我的计算机无法开机

计算机打不开的原因有很多。本主题简要介绍了一些可能的原因。

某个插头没又插好,电池没电或电缆松动

确保计算机的电源线已牢固插入且电源插座打开。确保显示器也插入且打开。如果您使用的是笔记本电脑,则连接充电电缆(防止电池电量耗尽)。您可能还需要检查电池是否正确安装到位(检查笔记本电脑的底部)。

计算机硬件问题

计算机的组件可能损坏或出现故障。在此情况下,您需要对计算机进行维修。常见故障包括电源供应设备损坏、组件安装错误(如内存/RAM)和主板故障。

计算机出现蜂鸣声,然后关闭

如果计算机在您打开时出现多次蜂鸣声,然后自动关闭(或无法打开),则可能是因为检测到某些问题。有时,这些蜂鸣声称为蜂鸣代码,蜂鸣声的模式旨在告诉您计算机的问题所在。不同的制造商使用不同的蜂鸣代码,因此,您必须查看计算机主板的手册或将计算机送交售后服务人员进行维修。

计算机风扇正在旋转,但是屏幕上未显示任何内容

首先需要检查显示器是否已插入并打开。

问题可能由于硬件故障造成。按电源按钮时风扇将打开,但电脑的其他关键部件可能无法开启。在此情况下应将计算机送去进行维修。

usr/share/help-langpack/zh_CN/ubuntu-help/color-assignprofiles.page0000644000373100047300000000401312320733012027325 0ustar langpacklangpack00000000000000 查看系统设置颜色了解更改此项设置的选项。 Richard Hughes richard@hughsie.com Michael Hill mdhillca@gmail.com 我如何为设备指定配置文件?

打开系统设置颜色,单击您希望向其添加配置文件的设备。

打开系统设置颜色,单击您希望向其添加配置文件的设备。

通过单击添加配置,您可以选择现有配置文件或导入一个新文件。

可以每个设备指定多个配置文件,但只有一个配置文件可以作为默认配置文件。在没有额外信息来供自动选择配置文件时使用默认配置文件。举例来说,如果为光面纸和另一种普通纸分别创建了配置文件,这时就会进行自动选择。

您可以使用单选按钮将配置文件设置为默认。

如果校准硬件已连接,校准…按钮会创建一个新的配置。

usr/share/help-langpack/zh_CN/ubuntu-help/sound-usespeakers.page0000644000373100047300000000465212320733012026652 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 连接扬声器或耳机,并选择默认的音频输出设备。 使用其他扬声器或耳机

您可以在计算机上使用外部扬声器或耳机。通常使用圆形 TRS(尖端,环形,套筒)插头或 USB 连接扬声器。

如果您的扬声器或耳机带有 TRS 插头,则将其插入到您计算机上相应的插槽。多数计算机有两个插槽:一个插麦克风,另一个插扬声器。耳机插槽旁边可以看到一个耳机图标。默认情况下,通常将使用插入到 TRS 插槽的扬声器或耳机。如果没有,则请参阅以下说明选择默认设备。

一些电脑支持多声道环绕声输出。这通常会使用编有不同颜色的多 TRS 插孔。如果不确定不同插头所对应的插槽,则您可在声音设置里测试声音输出。单击菜单栏中的声音菜单,然后单击声音设置。在硬件选项卡的设备列表中选择您的扬声器,然后单击测试扬声器。单击弹出窗口中每个扬声器的按钮。每个按钮将仅向与其扬声器对应的声道报告自己的位置。

如果您有 USB 扬声器或耳机,或插入到USB 声卡中的模拟耳机,则将其插入到任意的 USB 端口。USB 麦克风作为单独的音频设备,您必须指定默认情况下使用的扬声器。

选择默认的音频输入设备

单击顶部工具栏上的声音菜单并选择声音设置

输出标签页中,选择设备列表中的设备。

如果在输出标签页中看不到您的设备,则选中硬件选项卡。选择您的设备,并尝试不同的配置。

usr/share/help-langpack/zh_CN/ubuntu-help/sound-volume.page0000644000373100047300000000425312320733012025624 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Shaun McCance shaunm@gnome.org 设置计算机的音量并控制每个应用程序的声音大小。 更改音量

要更改音量,请单击菜单栏上的声音菜单,并左右移动音量滑块。您可以通过选中静音来彻底关闭音量。

一些键盘上有让您用来控制音量的按键。这些按键一般都印有伴随“波浪”出现的类似扬声器的图案,并且通常在“F”键上(例如:F7)。按住键盘上的 Fn 可以使用它们。

当然,如果您有外部扬声器,则您也可通过其自带的音量控制来更改音量。一些耳机也带有音量控制。

更改单个应用程序的音量

您可更改一个应用程序的音量,而不影响其他的程序音量。例如,如果您正在边听音乐边浏览网页,则这将非常有用。您可能想要关掉网站浏览器的音量,这样网站的声音不会干扰音乐。

一些应用程序的主窗口中有音量控制。如果您的应用程序就有一个,则用它来更改音量。否则,单击菜单栏中的声音菜单并单击声音设置。进入应用程序标签页更改那里应用程序的音量。

只有正在播放声音的应用程序才会被列出。如果没有列出正在播放声音的应用程序,则该应用程序可能不支持这样控制音量的功能。在这种情况下,您不能更改它的音量。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-dash-apps.page0000644000373100047300000000334712320733012026220 0ustar langpacklangpack00000000000000 运行,安装或卸载应用。 Jeremy Bicha jbicha@ubuntu.com 应用程序栏目

应用栏目是栏目条上 Dash 主界面后的第一个栏目。音乐栏目可以帮助您访问以及安装的或者可用安装的程序。

可以使用 SuperM 直接打开显示应用程序栏目的 Dash。

预览

在搜索结果上点击右键打开 预览。预览显示应用的简短描述,一个截图,软件中心 中的评分以及可用的版本。

对于已经安装的应用,可以查看何时安装的或者启动或者卸载。一些重要的应用不能在预览中卸载。

对于还没有安装的应用,可以在预览中安装。

过滤器

如果只想看到特定类型应用程序的结果,请点击 Filter results。您也可以点击 SourcesLocal Apps 以只查看已安装的应用或 软件中心以只显示可以安装的应用。

usr/share/help-langpack/zh_CN/ubuntu-help/shell-workspaces-movewindow.page0000644000373100047300000000352712320733012030654 0ustar langpacklangpack00000000000000 打开工作区切换器并将该窗口托动到不同的工作区。 GNOME 文档项目 gnome-doc-list@gnome.org 将窗口移动到另一个工作区

使用鼠标:

打开启动器并单击靠近底部的工作区切换器按钮。

将窗口拖动到您选择的工作区。

使用键盘:

选择您想切换到的窗口。

CtrlAltShift 将窗口移动到工作区切换器里右侧的工作区。

CtrlAltShift 将窗口移动到工作区切换器里左侧的工作区。

CtrlAltShift 将窗口移动到工作区切换器里下方的工作区。

CtrlAltShift 将窗口移动到工作区切换器里上方的工作区。

usr/share/help-langpack/zh_CN/ubuntu-help/net-chat-empathy.page0000644000373100047300000000277312320733012026344 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 使用 Empathy,您可以在多种网络上与朋友和同事聊天、通话和进行视频通讯。 在 Ubuntu 上使用即时通讯工具

使用 Empathy 即时通讯程序,您可与使用 Google Talk、AIM、Windows Live 和其他多种聊天程序的朋友和同事聊天。借助麦克风或网络摄像头,您还可以进行音频或视频通话。

Ubuntu 默认预装了 Empathy 。从 Dash、启动器 或者从 消息菜单 选择 聊天 ,开启 Empathy 即时通讯 程序。

您可以在 消息菜单 中改变您的即时通讯状态 (在线、离开、忙碌等) 。

有关使用 Brasero 的帮助,请阅读 用户指南。

usr/share/help-langpack/zh_CN/ubuntu-help/nautilus-bookmarks-edit.page0000644000373100047300000000415212320733012027742 0ustar langpacklangpack00000000000000 在文件管理器中添加、删除和重命名书签。 Tiffany Antopolski tiffany.antopolski@gmail.com Michael Hill mdhillca@gmail.com 编辑文件夹书签

您的书签将在文件管理器的侧边栏被列出。

添加书签:

打开要对其添加书签的文件夹(或位置)。

点击工具栏上的齿轮按钮,选择 添加该路径到书签

删除书签:

点击顶部面板的 文件 ,然后在弹出的程序菜单中选择 书签

书签 窗口中,选择您想要删除的书签,然后点击 - 按钮。

重命名书签:

点击顶部面板的 文件 ,然后在弹出的程序菜单中选择 书签

书签 窗口中,选择您想要重命名的书签。

名称文本框中,为该书签输入新名称。

重命名书签不会重命名文件夹。如果有指向位置不同的两个不同文件夹的书签,但书签和相应文件夹的名称都相同,则两个书签的名称会相同,而且不能将两者区分开。这种情况下,让书签的名称不同于所指向的文件夹的名称会很有用。

usr/share/help-langpack/zh_CN/ubuntu-help/disk.page0000644000373100047300000000135412320733013024121 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 磁盘空间, 性能, 问题,卷和分区… 磁盘和存储器 usr/share/help-langpack/zh_CN/ubuntu-help/keyboard.page0000644000373100047300000000230512320733013024764 0ustar langpacklangpack00000000000000 Input sources, cursor blinking, super key, keyboard accessibility… Shaun McCance shaunm@gnome.org Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 键盘 区域 & 语言 通用辅助功能 其他主题 usr/share/help-langpack/zh_CN/ubuntu-help/mouse-sensitivity.page0000644000373100047300000000426312320733013026711 0ustar langpacklangpack00000000000000 使用鼠标或触摸板时更改指针移动速度。 Phil Bull philbull@gmail.com Tiffany Antopolski tiffany.antopolski@gmail.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 调整鼠标和触摸板速度

如果您在使用鼠标或者触摸板时感觉鼠标指针移动太快或者太慢,您可以为这些设备调整指针移动速度。

单击顶部菜单栏最右侧的图标,选择系统设置

打开 鼠标 & 触摸板

调整 指针速度 滑块到最合适您的速度。

您可以为您的鼠标和触摸板设置不同的指针移动速度。有时在一种设备中最合适的设置并不是另一种设备最适合的。只需分别在 鼠标触摸板 部分设置滑块即可。

触摸板 部分仅在您的系统包含触摸板时可见。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-launcher-shapes.page0000644000373100047300000000375612320733013027427 0ustar langpacklangpack00000000000000 Jeremy Bicha jbicha@ubuntu.com 三角形指示器告诉您应用程序目前正在运行。 启动器图标的各种形状和颜色分别是什么含义?

当您启动应用程序时,启动器图标会跳动,告诉您 Ubuntu 正在打开这一程序。这是因为只有少数程序可以做到瞬间启动,其它程序需要一点时间进行加载。

当应用程序启动完毕,启动器图标的左侧会出现白色小三角形指示器。两个小三角形表示这个程序打开了两个窗口。如果程序打开了三个或更多窗口,则会显示三个小三角形指示器。

图标处于半透明状态的是当前并未打开的程序。当程序开始运行时,其图标则会变得不透明。

通知

如果有应用程序希望发出通知引起您的注意(比如有文件下载完成),其对应的启动器图标将会晃动并发光,其三角形指示器将变为 蓝色。您可以单击启动器图标来取消通知。

应用程序也可以在启动器图标上显示数字。即时消息类应用可以用数字来告知您未读消息的数量。而软件更新工具可以用数字告诉您当前可用的更新数量。

最后,应用也可以使用进度条来直接在图标上告知您特定操作过程的进度,而不用总是将应用程序窗口保持在视线内。

usr/share/help-langpack/zh_CN/ubuntu-help/addremove-install.page0000644000373100047300000000446512320733013026607 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 使用 Ubuntu 软件中心添加程序,使 Ubuntu 功能更加丰富。 安装其他软件

Ubuntu 开发团队选择了一组我们认为会使 Ubuntu 对大多数日常任务都非常有用的默认应用程序。不过,您肯定想要安装更多软件以使 Ubuntu 对您更有用。

要安装其他软件,请按以下步骤操作:

使用 无线 或 有线 连接到互联网。

单击启动器中的 Ubuntu 软件中心图标,或在 Dash 搜索软件中心。

软件中心启动后,搜索应用程序,或选择类别然后从列表中寻找应用程序。

选择您感兴趣的应用程序,然后单击安装

您会被要求输入密码。输完密码后安装即会开始。

安装通常很快就能完成,但如果您的网络连接速度较慢,就会花上一段时间。

新应用的快捷方式会添加到启动器。如果要禁用该特性,请取消选中视图新应用程序置于启动器中

usr/share/help-langpack/zh_CN/ubuntu-help/sharing.page0000644000373100047300000000141112320733013024614 0ustar langpacklangpack00000000000000 Desktop sharing, Share files… Ekaterina Gerasimova kittykat3756@gmail.com Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 共享 usr/share/help-langpack/zh_CN/ubuntu-help/net-mobile.page0000644000373100047300000000453212320733013025223 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 使用移动宽带连接到互联网 连接到移动宽带

移动宽带是指由外部设备(如 3G USB 网卡或内置 HSPA/UMTS/GPRS 数据连接的移动电话)提供的高速 Internet 连接。最近生产的部分笔记本电脑已内置了移动宽带设备。

Most mobile broadband devices should be recognized automatically when you connect them to your computer. Ubuntu will prompt you to configure the device.

当您连接设备时,新移动宽带连接 向导将自动打开。

单击下一步并输入详细信息,包括发行移动宽带设备的国家/地区、网络提供商以及连接类型(例如包月预付费)。

提供连接名称并单击应用

您的连接现已可用。要连接,请单击顶部面板中的网络菜单并选择您的新连接。

要断开连接,请单击顶部面板中的网络菜单并单击断开链接

If you are not prompted to configure the device when you connect it, it may still be recognized by Ubuntu. In such cases you can add the connection manually.

单击顶部面板中的网络菜单并选择编辑连接...

切换到移动宽带选项卡。

单击添加

这将打开新移动宽带连接向导。根据上述说明输入详情。

usr/share/help-langpack/zh_CN/ubuntu-help/contacts-add-remove.page0000644000373100047300000000343612320733013027031 0ustar langpacklangpack00000000000000 Lucie Hankey ldhankey@gmail.com Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com 从本地地址簿添加或删除一个联系人。 添加或删除联系人

添加联系人:

新建按钮。

新建联系人窗口输入联系人姓名和相关信息,点击每个字段旁的菜单选择单位住宅其他

创建联系人按钮。

删除联系人:

从联系人列表选择要删除的联系人。

通讯录应用右上角的编辑按钮。

删除联系人按钮。

usr/share/help-langpack/zh_CN/ubuntu-help/mouse-touchpad-click.page0000644000373100047300000000776212320733013027220 0ustar langpacklangpack00000000000000 在触摸板上使用手势操作进行点击、拖动或者滚屏 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 使用触摸板进行点击、拖动或者滚屏操作

仅通过触摸板即可进行单击、双击、拖动和滚动操作,无须另按硬件按钮。可在鼠标和触摸板设置中显示这些特性。

单击顶部菜单栏最右侧的图标,选择系统设置

打开 鼠标 & 触摸板

触摸板 部分,勾选 启用触摸板点击

触摸板 部分仅在您的系统包含触摸板时可见。

通过触摸板进行单击或滚动操作

双击打开项目。

要拖动一个项目,双击这一项目并保持手指停在触摸板上,然后拖动项目到任意地方,然后抬起手指离开触摸板。

如果您的触摸板支持多指点击,则可以通过两指同时点击来触发右键单击动作。否则您需要按下实体右键方可完成动作。请参阅获得更多关于模拟右键点击的信息。

如果您的触摸板支持多指点击,三指同时点击可以模拟中键点击动作。

当您进行多指点击或拖动时,请确保您的手指分得够开。如果手指过于接近,电脑可能会误认为是单指动作。

双指滚动

您可以在触摸板上使用双指滚动

单击顶部菜单栏最右侧的图标,选择系统设置

打开 鼠标 & 触摸板

触摸板 部分,勾选 双指滚动

选中此项后,单指时的点击和拖动将正常工作,但是如果您使用双指触碰触摸板将会变成滚动。如果您还选中了 允许水平拖动 ,你就可以左右来回滑动您的手指水平滚动屏幕。注意保证手指间有些许间隙。如果您的手指贴得太近,它们看起来就像一根大手指放在触摸板上。

两指滚动操作并不能在所有触摸板上进行。

内容跟随手指

您可以使用触摸板拖动内容,就像在一张真正的纸上移动。

单击顶部菜单栏最右侧的图标,选择系统设置

打开 鼠标 & 触摸板

触摸板 部分,勾选 内容跟随手指

这个特性也被称作 自然滚屏 或者 反向滚屏

usr/share/help-langpack/zh_CN/ubuntu-help/shell-windows-maximize.page0000644000373100047300000000321412320733013027604 0ustar langpacklangpack00000000000000 双击或拖动标题栏以最大化或恢复窗口。 Shaun McCance shaunm@gnome.org 最大化和取消最大化(恢复)窗口。

可以将窗口最大化以使其使用桌面地全部空间或者取消窗口最大化以将其恢复正常大小。也可以沿屏幕地左边或右边将窗口垂直最大化,以便同时看两个床。查看 获取更多信息。

要最大化窗口,抓住其标题栏然后拖动到屏幕的顶端,或者双击标题栏。要使用键盘最大化窗口,按住 CtrlSuper 再按

要将窗口恢复到其非最大化时的大小,将它拖离屏幕边缘。如果窗口是完全最大化的,可以双击标题栏来恢复大小。您也可以使用键盘快捷键 Ctrl Super 和

按住 Alt 键并拖动窗口的任何地方可以移动窗口。

usr/share/help-langpack/zh_CN/ubuntu-help/printing.page0000644000373100047300000000237712320733013025027 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com 区域设置,顺序和整理,双面和多页… 打印
设置 设置打印机
大小和布局 不同的纸张尺寸和布局
未检测到打印机,卡纸,打印结果错误… 打印机问题
usr/share/help-langpack/zh_CN/ubuntu-help/a11y-bouncekeys.page0000644000373100047300000000337112320733013026110 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 忽略对同一个键的快速重复按键动作。 开启回弹键

开启回弹键可以忽略快速重复的按键动作。例如,如果您患有手颤,这会导致在您只想按一次时却多次重复按键,这时应开启回弹键。

单击顶部菜单栏最右侧的图标,选择系统设置

打开辅助功能,选择输入标签。

开启回弹键

拖动可接受延迟滑块,设置多长时间后,接受这个键的第二次按键动作。选中当某个键被拒绝时发出蜂鸣声,则每次按键被忽略时会发出响铃,提醒您按键太快了。

usr/share/help-langpack/zh_CN/ubuntu-help/nautilus-preview.page0000644000373100047300000000463712320733013026521 0ustar langpacklangpack00000000000000 控制文件是否使用缩略图。 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 文件管理器预览首选项

文件管理器创建缩略图进行图像、视频和文本文件的预览。缩略图预览对于大文件或者网络上可能会很慢,所以此时您可以控制是否进行缩略图预览。在菜单栏点击 文件 ,然后点击 参数设置 并选择 预览 标签。

<gui>文件</gui>

默认情况下,仅本地文件 可以预览,那些在您的计算机或者已连接的外部设备上的文件。您可以设置为 总是 或者 从不 预览。文件管理器可以通过局域网或者互联网 浏览其它计算机上的文件 。如果您经常使用局域网浏览文件,并且是高带宽网络,您也许想要设置预览选项为 总是

此外,您可以使用 仅预览小于指定大小的文件 设置来限制预览文件的大小。

<gui>文件夹</gui>

如果在列表视图列或图标标题中显示文件大小,则显示文件夹时会显示所含文件和文件夹的数量。对文件夹中的项目计数可能会很慢,尤其是对于非常大的文件夹或通过网络计数的情况。可启用或禁用这种特性,也可仅对计算机和本地外部驱动器中的文件启用这种特性。

usr/share/help-langpack/zh_CN/ubuntu-help/printing-envelopes.page0000644000373100047300000000371312320733013027020 0ustar langpacklangpack00000000000000 确保将信封/标签放置正确,并已选择正确的纸张尺寸。 Phil Bull philbull@gmail.com Jim Campbell jwcampbell@gmail.com 打印信封和标签

大多数打印机可以在信封或标签上直接打印内容。在需要邮寄大量信件等情况下,此操作非常有用。

在信封纸上打印

在将文字内容打印到信封上之前需要进行两项检查。第一,让打印机了解信封的尺寸。单击打印且出现打印窗口后,转至页面设置选项并选择纸张类型,如果可以,选择“信封”。如不能选择,请将纸张大小更改为信封尺寸(例如“C5”)。信封包装上会显示尺寸;大多数信封都是标准尺寸。

第二,需要确保信封正面朝上置于打印机的纸盒。有关此操作,可查看打印机的使用手册,或尝试打印一个信封,然后根据打印结果查看正确的放置方法。

有些打印机设计不能打印信封,尤其是一些激光打印机。请查看使用手册以了解其是否接受打印信封,否则,放入信封将损坏打印机。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-launcher-change-autohide.page0000644000373100047300000000253512320733013031163 0ustar langpacklangpack00000000000000 Jeremy Bicha jbicha@ubuntu.com Show the Launcher only when you need it. 自动隐藏启动器

您可以让启动器自动隐藏,这样只有在您将鼠标或触控板指针移动到屏幕最左侧时才会看到它。

单击顶部菜单栏最右侧的图标,选择系统设置

在“个人”区域中,单击 外观

切换到 行为 选项卡。

打开 自动隐藏启动器 开关。

为了防止在自动隐藏模式下因为误操作而显示启动器,您必须稍微用力将鼠标或触控板指针“推向”屏幕左侧方可显示启动器。您可以手动调整启动器的 呈现灵敏度

usr/share/help-langpack/zh_CN/ubuntu-help/net-manual.page0000644000373100047300000000425512320733013025233 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com 如果网络设置并未自动生效,您可能需要手工输入进行配置。 手动设置网络设置

如果您的网络不为计算机自动分配网络设置,则您可能必须手动输入设置。本主题假定您已了解要使用的正确设置。如果不了解,您可能要咨询网络管理员或查看路由器或交换机的设置。

手动设置网络连接:

单击顶部面板中的网络菜单,然后单击编辑连接

查找您要手动设置的网络连接。例如,如果通过网线接入网络,请查看有线选项卡。

从列表中选择您想要编辑的连接,然后单击编辑

转到IPv4 设置选项卡,然后更改方式设置手动

单击 添加 并在 地址 列表的相应栏中键入 IP 地址子网掩码默认网关。键入每个地址后按 回车

这三个地址必须是 IP 地址;也就是说,它们必须是分隔开的四段数字 (例如:123.45.6.78) 。

键入您要使用的 DNS 服务器的 IP 地址,地址间用英文逗号分隔。

单击保存。如果未连接到网络,请转到顶部工具栏中的“网络”图标并连接到网络。您可以通过访问网站或查看共享文件来检验您的网络设置。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-dash-music.page0000644000373100047300000000261612320733013026374 0ustar langpacklangpack00000000000000 在本地计算机或互联网上查找和播放音乐。 Jeremy Bicha jbicha@ubuntu.com 音乐栏目

音乐栏目是栏目条上 Dash 主界面后的第四个栏目,其使用一个音乐图标。音乐栏目可以让你访问本地和在线音乐。

可以使用 SuperM 直接打开显示音乐栏目的 Dash。

预览

右键单击搜索结果可以打开 预览。预览界面将会展示专辑封面和所有音轨。

单击音轨编号可以直接在预览界面播放歌曲。再次单击音轨编号可以停止播放。

过滤器

单击 过滤结果 可以根据年代或类型对结果进行过滤。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-introduction.page0000644000373100047300000000472712320733013027065 0ustar langpacklangpack00000000000000 Unity 桌面的图文介绍。 Shaun McCance shaunm@gnome.org Jim Campbell jwcampbell@gmail.com 欢迎来到 Ubuntu

Ubuntu 使用 Unity,一种使用电脑的全新方式。Unity 的设计原则是消除多余的界面元素,最大化操作区域,帮助您高效完成工作。

This guide is designed to answer your questions about using Unity and your Ubuntu desktop. First we will take a moment to look at some of Unity's key features, and how you can use them.

开始使用 Unity

Unity 桌面

启动器

启动器

启动器在登录到桌面时自动显示,让您更容易启动最常用的应用程序。

了解与启动器相关的更多信息。

Dash

Ubuntu 按钮 位于屏幕左上角,永远是启动器上的第一个图标。单击 Ubuntu 按钮,即可打开 Unity 的重要特性 Dash

Unity Dash

Dash 功能帮助您更快地发现、打开和使用应用程序、文件、音乐和其它资源。例如当你在 搜索框 中输入“文档”时,Dash 将展示给您可用于撰写和编辑文档的各种应用程序,以及您最近使用的文档和相关文件夹。

了解与 Dash 相关的更多信息。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-troubleshooting-hardware-check.page0000644000373100047300000001350212320733013033701 0ustar langpacklangpack00000000000000 Ubuntu 文档 wiki 撰稿人 GNOME 文档项目 gnome-doc-list@gnome.org 即便您已经连接了无线适配器,它仍可能未被电脑完全识别。 无线网络故障排除程序 检查您的无线网卡是否被识别

即便您已经连接了无线适配器,它仍可能未被电脑识别为网络设备。在这一步中,您将检查设备是否已被正确识别。

打开一个终端窗口,输入 sudo lshw -C network 并按回车。如果报错,则需要在计算机上安装 lshw 程序;您可通过在终端键入 sudo apt-get install lshw 来安装此程序。

检查命令的输出内容,然后检查 Wireless interface 部分。如果检测到您的无线适配器,则输出应类似于:

*-network description: Wireless interface product: PRO/Wireless 3945ABG [Golan] Network Connection vendor: Intel Corporation

如果列出了无线设备,则继续转入设备驱动程序页面。

您采取的步骤取决于使用的设备类型。请参阅与计算机上所用无线适配器类型相关的部分。PCI、USB 或 PCMCIA。

PCI 无线适配器(内置)

内部 PCI 适配器最常见,在过去几年间已大规模内置在笔记本电脑中。PCMCIA 适配器是外置的卡式适配器,在旧式笔记本电脑上使用较多。

打开终端,输入 lspci 并按回车

在整个设备列表中寻找被标记为 Network controllerEthernet controller 的设备。可能有多个设备有这样的标记,而代表您的无线适配器的那项里很可能包含类似 wirelessWLANwifi802.11 等字眼。以下是一个例子:

Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection

如果之前的命令可以识别您的设备,请继续转到设备驱动程序页面。如果上述命令不显示与您的无线适配器相关的任何输出,请查看本页底部的说明。

USB 无线适配器

USB 无线适配器相对少见。这种设备可以直接插到 USB 端口,或使用 USB 线连接。这种设备与 3G 无线上网卡外形相似,所以如果当您无法确定手中的设备是 USB 网卡时,请先检查它是否是 3G 无线上网卡。要检查您的 USB 无线适配器是否已被识别:

打开终端,输入 lsusb 并按回车

在整个设备列表中寻找可能是无线或网络设备的项目。代表无线网卡的项目可能包含类似 wirelessWLANwifi802.11 等字眼。以下是一个例子:

Bus 005 Device 009: ID 12d1:140b Huawei Technologies Co., Ltd. EC1260 Wireless Data Modem HSD USB Card

如果之前的命令可以识别您的设备,请继续转到设备驱动程序页面。如果上述命令不显示与您的无线适配器相关的任何输出,请查看本页底部的说明。

检查 PCMCIA 设备

PCMCIA 无线适配器通常是用于插入到笔记本侧面插槽的矩形卡,在旧电脑上比较多见。要检查您的 PCMCIA 适配器是否被识别:

启动您的计算机,而不插入无线适配器。

将以下内容键入出现的屏幕中,然后按回车

tail -f /var/log/dmesg

这将显示关于您电脑硬件的一系列信息,并将随着硬件变化自动更新。

把您的无线适配器插到 PCMCIA 插槽并查看您的终端窗口。发生变化的内容将包括一些关于无线适配器的信息。在其中查找可能对您有用的信息。

要终止该命令,请按 CtrlC 组合键。之后您便可以关闭终端。

如果之前的命令可以识别您的设备,请继续转到设备驱动程序页面。如果上述命令不显示与您的无线适配器相关的任何输出,请查看本页底部的说明。

未能识别无线适配器

如果您的无线适配器未被识别,可能是由于相应的驱动程序没有安装或不能正常工作。

要获得帮助,请查看您所用发行版的帮助信息。这包括对应的邮件列表、网络聊天室等。

usr/share/help-langpack/zh_CN/ubuntu-help/accounts-add.page0000644000373100047300000000462212320733014025536 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Michael Hill mdhillca@gmail.com Greg Beam ki7mt@yahoo.com 连接到在线账户 添加账户

添加账户可以设置将您的电子邮件、聊天工具等在线账户连接到 Ubuntu 桌面。

单击顶部菜单栏最右侧的图标,选择系统设置

选择在线账户

从右侧窗口选择账户类型

如果要设置更多账户,请重复此过程。

请在弹出的迷你网页界面输入您的在线账户信息,例如在设置 Google 帐号时,请输入您的 Google 用户名、密码并登录。

如果输入的账户信息正确,程序会弹出用户协议信息,请接受协议以继续进行设置。接受协议之后,Ubuntu 会请求访问账户的权限,请点击允许访问按钮,在弹出框输入当前用户的密码。

此后就可以选择希望与在线账户连接的应用了。例如当您想用在线账户聊天,但不想使用在线日历时,请关闭日历选项。

After you have added the accounts, each application you have selected will automatically use those credentials when you log into your account.

为了安全考虑,Ubuntu 不直接存储您的密码,而是存储在线服务的令牌。如果要撤销计算机与某在线服务之间的所有连接,请删除该账户。

usr/share/help-langpack/zh_CN/ubuntu-help/backup-check.page0000644000373100047300000000276412320733014025516 0ustar langpacklangpack00000000000000 检查您的备份是否成功。 GNOME 文档项目 gnome-doc-list@gnome.org 检查备份

备份文件后,您应确保备份已成功完成。如果备份未正常进行,您可能会丢失重要数据,因为备份中可能会缺少某些文件。

当您使用文件管理器复制或移动文件时,计算机会进行检查以确保所有数据都被正确传输。不过,如果您传输的数据对您非常重要,您可能想要更仔细检查以确认您的数据被正确传输。

您可以通过浏览目标介质上复制的文件和文件夹进行额外检查。通过检查确保您传输的文件和文件夹确实在备份中,您可以更加确信传输过程是成功的。

如果您要对大量数据进行定期备份,您可能会发现使用专用备份程序(如 Déjà Dup)会更简单。与仅仅复制和粘贴文件相比,此类程序功能更强大、更可靠。

usr/share/help-langpack/zh_CN/ubuntu-help/session-screenlocks.page0000644000373100047300000000313512320733014027163 0ustar langpacklangpack00000000000000 亮度和锁定 设置中更改锁屏前等待的时间。 GNOME 文档项目 gnome-doc-list@gnome.org Michael Hill mdhillca@gmail.com 屏幕锁定地太快

如果您离开计算机几分钟,则屏幕将自动锁定,因此您需要输入密码才可再次使用。这是出于安全考虑(即使您将计算机处于无人看管的状态,也没有人能够将您的工作弄乱),但是如果屏幕锁定地太快,也会恼人。

自动锁定屏幕前等待较长时间:

单击顶部菜单栏最右侧的图标,选择系统设置

点击 亮度和锁定

在此时间内无操作则锁定屏幕下拉列表中更改值。

如果您不想让屏幕自动锁定,则关闭锁定

usr/share/help-langpack/zh_CN/ubuntu-help/contacts.page0000644000373100047300000000127212320733014025005 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com 2012 访问您的联系人。 联系人

在本地或者您的在线帐号使用联系人来存储、访问或编辑联系人信息。

usr/share/help-langpack/zh_CN/ubuntu-help/contacts-search.page0000644000373100047300000000330512320733014026247 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com 搜索联系人。 搜索联系人

您可以选择一种方式搜索在线联系人:

活动概述中,开始键入联系人名称。

匹配的联系人将会显示在概述中,而不是应用程序列表。

回车键选择列表顶部的联系人,如果联系人不在顶部单击要选择的联系人。

联系人搜索:

在搜索域中点击。

开始键入联系人名称。

usr/share/help-langpack/zh_CN/ubuntu-help/shell-keyboard-shortcuts.page0000644000373100047300000001203112320733014030123 0ustar langpacklangpack00000000000000 使用键盘浏览桌面 Shaun McCance shaunm@gnome.org 2012 键盘快捷键

此页面提供了可以让你更有效地使用桌面和应用程序的键盘快捷键的总览。如果不能使用鼠标或其他指点设备,查看 来获取更多关于只使用键盘浏览用户界面的信息。

桌面常用快捷键

AltF4

关闭当前窗口。

AltF2

弹出命令行窗口(永远快速运行命令行)

AltTab

在窗口之间快速切换。按住Shift可反向排序。

Alt`

在同一个应用程序的不同窗口或AltTab后选中的程序间切换

此快捷键使用美国键盘上的 `,这个键在 Tab 上方。在全部其它键盘上,这个快捷键是 AltTab 上方那个键。

SuperS

激活工作区切换器。缩小所有工作区。

SuperW

激活“Expo”模式。显示当前工作区的所有窗口。

CtrlAlt方向键

在工作区之间切换。

CtrlAltShift方向键

将当前窗口移至其他工作区。

CtrlAltDelete

注销。

CtrlSuperD

隐藏所有窗口并显示桌面。再次按下按钮可以恢复窗口。

CtrlAltL

锁定屏幕。

常用编辑快捷方式

CtrlA

在列表中选择所有文本或项目。

CtrlX

剪切(移除)选中文本或项目并将其置于剪贴板。

CtrlC

复制选中文本或项目并将其置于剪贴板。

CtrlV

粘贴剪贴板内的内容。

CtrlZ

撤销最近一次操作。

从屏幕捕捉

Print Screen

获取屏幕截图。

AltPrint Screen

获取窗口的截图。

ShiftPrint Screen

获取屏幕上某个区域的截图。光标变为十字。点击并拖动选择区域。

usr/share/help-langpack/zh_CN/ubuntu-help/bluetooth-remove-connection.page0000644000373100047300000000325512320733014030627 0ustar langpacklangpack00000000000000 从蓝牙设备列表中删除设备。 Jim Campbell jwcampbell@gmail.com Paul W. Frields stickster@gmail.com 删除蓝牙设备之间的连接

如果您不再希望连接到蓝牙设备,您可以移除连接。当您不想再继续使用蓝牙鼠标或耳机,或者不想再与某个设备之间传送文件时可以进行移除连接的操作。

单击菜单栏上的蓝牙图标,选择蓝牙设置

单击顶栏上的蓝牙图标,选择蓝牙设置

从列表中选择您想要向断开的设备,然后单击列表下边的-图标。

在确认窗口中单击删除

如果需要,稍后您可以重新连接蓝牙设备。

usr/share/help-langpack/zh_CN/ubuntu-help/shell-guest-session.page0000644000373100047300000000462212320733014027106 0ustar langpacklangpack00000000000000 让朋友或同事以一种安全的方式借用您的计算机。 Gunnar Hjalmarsson gunnarhj@ubuntu.com 启动有限制的客人会话
具有权限限制的临时会话

有时,亲戚朋友或者同事可能需要借用您的计算机。Ubuntu 的 来宾回话 功能提供了一种方便且高度安全的将计算机借给他人的方式。来宾回话可以从登录界面或在普通回话中启动。如果已经登录了,点击 菜单栏最右端的图标然后选择 来宾会话,将锁定自己现在会话的的屏幕并启动来宾会话。

来宾不能查看其他用户的主目录,默认上任何存储的数据和更改的设置都将在注销时删除或重置。这意味着会话每次启动时都是一个新环境,不受以前的来宾做了什么的影响。

自定义

自定义来宾会话 在线教程解释了如何自定义外观和行为。

禁用此功能

如果不希望来宾访问计算机,可以禁用 来宾会话 功能。如果要这样,按 CtrlAltT 来打开终端窗口,然后允许此命令(这是一个长命令,即使是在屏幕上换行了 - 复制粘贴即可):

sudo sh -c 'printf "[SeatDefaults]\nallow-guest=false\n" >/usr/share/lightdm/lightdm.conf.d/50-no-guest.conf'

此命令创建一个小地配置文件。要重新启用 来宾回话,只需删除此文件:

sudo rm /usr/share/lightdm/lightdm.conf.d/50-no-guest.conf

usr/share/help-langpack/zh_CN/ubuntu-help/files-share.page0000644000373100047300000000506212320733014025372 0ustar langpacklangpack00000000000000 从文件管理器传输文件到您的电子邮件联系人。 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 共享和传输文件

您可以和您的联系人共享文件,传输它们到外部设备或者直接从文件管理器 网络共享 。

打开文件管理器。

找到要传输的文件。

右键单击要传输的文件,然后选择发送到

会显示发送到窗口。选择发送文件的目的地,然后单击发送。如需更多信息,请参见以下列表。

一次可发送多个文件。通过按住 Ctrl,然后右键单击所选文件,可选择多个文件。可将文件自动打包到 tar 或 zip 压缩文件中。

目的地

要通过电子邮件发送文件,请选择电子邮件,然后输入收件人的电子邮件地址。

要向聊天对象发送文件,请选择即时消息,然后从下拉列表中选择联系人。您可能需要先启动即时通讯工具方可进行这一操作。

要将文件写入 CD 或 DVD,请选择 CD/DVD 创建器。请参阅了解更多信息。

要向蓝牙设备传输文件,请选择蓝牙(OBEX 推送)。对于更多信息,请参见

要将文件复制到 USB 闪存驱动器之类的外部设备中,或将文件上载到相连的服务器中,请选择可移动的光盘和共享,然后选择要向其中复制文件的设备或服务器。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-dash-video.page0000644000373100047300000000252012320733014026355 0ustar langpacklangpack00000000000000 发现和播放本地或网络视频。 Jeremy Bicha jbicha@ubuntu.com 视频栏目

视频是 Dash 分类栏 上的第四个栏目,以胶卷图标进行表示。您可以在视频栏目中查看您的本地或在线视频。

您甚至可以直接在 Dash 中购买或租赁视频。

如要在打开 Dash 时直接进入视频栏目,可以使用 SuperV 快捷键组合。

预览

右键单击搜索结果,可以打开 preview 界面查看视频文件的更多相关信息。

过滤器

单击 过滤结果 可以根据视频来源进行过滤。

usr/share/help-langpack/zh_CN/ubuntu-help/documents-tracker.page0000644000373100047300000000204212320733014026615 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2012 Michael Hill mdhillca@gmail.com 2012 本地或远程文档不会出现。 我的文档不能被看到

如果您的文件无法在文档中显示,跟踪可能没有运行或配置不正确。确保跟踪器在您的会话中运行。默认的配置是在您的 home 目录(非递归)和 XDG 文件夹(递归)设置索引文件。确保您的文档在其中一条路径中。

usr/share/help-langpack/zh_CN/ubuntu-help/wacom-multi-monitor.page0000644000373100047300000000246712320733014027121 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com 2012 将 Wacom 手写板映射到特定显示器。 选择显示器

点击 菜单栏 最右端的图标并选择 系统设置

打开 Wacom 手写板

如果没有检测到手写板,则系统将会告诉您 请插入并打开您的 Wacom 手写板

单击 映射到显示器

勾上 映射到单个显示器

输出 选项旁边,选择您需要接收手写板输入信号的显示器。

只有已经设置完成的显示器才可以选择。

单击关闭

usr/share/help-langpack/zh_CN/ubuntu-help/display-dimscreen.page0000644000373100047300000000454512320733014026611 0ustar langpacklangpack00000000000000 调暗屏幕以节省电力,或提高亮度使屏幕在亮光下更便于阅读。 GNOME 文档项目 gnome-doc-list@gnome.org Natalia Ruz Leiva nruz@alumnos.inf.utfsm.cl Shaun McCance shaunm@gnome.org Ekaterina Gerasimova kittykat3756@gmail.com 设置屏幕亮度

您可以更改屏幕的亮度以节省电力或使屏幕在亮光下更便于阅读。您还可以使屏幕在使用电池供电时自动变暗并在不用时自动关闭。

设置亮度

单击顶部菜单栏最右侧的图标,选择系统设置

选择 亮度 & 锁屏

亮度滑块调整至适宜的值。

很多笔记本电脑的键盘上有特殊的功能键可以调整亮度。这些键上带有类似太阳的图标,通常位于 F8F9 键。按住 Fn 键以使用这些功能键。

选择调暗屏幕以省电以在使用电池供电时自动调低亮度。屏幕背光会消耗大量电能,极大缩短电池充电前可维持的使用时间。

您停止使用一段时间后屏幕将自动关闭。这仅影响显示屏,不会关闭您的计算机。您可以使用关闭屏幕下拉列表调整停用的时间。

usr/share/help-langpack/zh_CN/ubuntu-help/net-vpn-connect.page0000644000373100047300000000563312320733014026212 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org VPN 使用户可以通过互联网连接到本地网络。了解怎样设置 VPN 连接。 连接到到一个虚拟专用网络

VPN(或虚拟专用网)是通过 Internet 连接到本地网络的一种方式。例如,假设您想在出差途中连接到工作场所的本地网络。您可在某地(如宾馆)查找 Internet 连接,然后连接到您工作场所的 VPN。这与您在工作时直接连接到网络无异,但实际网络连接则是通过宾馆的 Internet 连接实现。VPN 连接通常加密,以防止那些未登录的用户访问您所连接的本地网络。

VPN 有多种不同的类型。根据您所连接的 VPN 类型,您可能需要额外安装一些软件。查明 VPN 主管方以及需要使用的 VPN 客户端等连接详情。然后打开 Ubuntu 软件中心 并搜索与您的 VPN 配合工作的 network-manager 软件包(如果有)并进行安装。您需要单击 Ubuntu 软件中心 底部的显示技术项目链接。

如果没有适合您 VPN 类型的网络管理器软件包,则可能需要下载安装来自 VPN 软件提供公司的专用客户端软件。要使连接正常工作,您可能要遵循一些不同的说明。

一旦完成,您即可设置 VPN 连接:

单击顶部面板中的网络菜单,在 VPN 连接下面选择配置 VPN

单击添加并选择您要使用的 VPN 类型。

单击新建并按屏幕上的说明操作,输入用户名和密码等详细信息。

完成 VPN 设置后,单击顶部面板中的网络菜单,转到 VPN 连接并单击刚刚新建的连接。这将尝试建立一个 VPN 连接,尝试连接时,网络图标将会发生变化。

正常情况下,您将成功连接到 VPN。如果不能,您可能需要再次检查输入的 VPN 设置。您可通过单击网络菜单、选择编辑连接并转到VPN 选项卡来实现此操作。

要断开 VPN,请单击网络菜单中相应 VPN 名称后的的断开

usr/share/help-langpack/zh_CN/ubuntu-help/mouse-doubleclick.page0000644000373100047300000000405712320733014026601 0ustar langpacklangpack00000000000000 控制两次按下鼠标键的行为被识别为双击操作的速度。 Phil Bull philbull@gmail.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 调整双击速度

仅当连续按鼠标键两次的动作足够快时,才能执行双击操作。如果按第二次与按第一次的时间差过大,则仅会分别执行两次单击操作,而不是一次双击操作。如果您难以将鼠标键按得很快,则应该延长超时时间。

单击顶部菜单栏最右侧的图标,选择系统设置

打开 鼠标 & 触摸板

常规 中,调整 双击 滑块到一个最合适您的值。

点击 测试设置 按钮进行测试。单击窗口将会高亮显示外圈。双击窗口将会高亮显示内圈。

如果本想单击却双击了鼠标(即使您已延长了双击超时时间),则鼠标可能有故障。请试将另一鼠标插入计算机,然后看该鼠标是否可以正常使用。也可将鼠标插入另一计算机,然后看鼠标是否仍有同样的问题。

这一设置将同时影响您的鼠标、触控板和其他指点装置。

usr/share/help-langpack/zh_CN/ubuntu-help/screen-shot-record.page0000644000373100047300000000346112320733014026677 0ustar langpacklangpack00000000000000 拍下屏幕上显示的内容。 Tiffany Antopolski tiffany.antopolski@gmail.com 2011 Shaun McCance shaunm@gnome.org 2012 屏幕截图

您可以对屏幕进行截图。这在向他人演示如何操作计算机时非常有用;屏幕截图是正常的图片文件,因此,您可以发送电子邮件并在网站上共享。

屏幕截图

要进行屏幕截图:

前往 Dash 然后打开 截图工具。

截图 窗口中,选择抓取整个桌面,单个窗口还是屏幕的一个区域。如果要为截图设置下桌面或者选择窗口,可以设置延时。然后选择需要的特效。

单击抓图

如果选择了 选择抓取区域,鼠标将会变成十字。在要截取的区域点击并拖动。

保存截图 窗口中,输入文件名并选择文件夹,然后点击 保存

usr/share/help-langpack/zh_CN/ubuntu-help/prefs-display.page0000644000373100047300000000123212320733014025745 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 背景,尺寸和旋转,亮度… 显示器和屏幕 usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-troubleshooting.page0000644000373100047300000000377512320733014031047 0ustar langpacklangpack00000000000000 Ubuntu 文档 wiki 撰稿人 GNOME 文档项目 gnome-doc-list@gnome.org 确定和解决无线连接问题 无线网络故障排除程序

这是一个手把手的调试指南,帮助您查找并解决无线问题。如果您无法连接到无线网络,请尝试以下指导。

我们将通过以下步骤将您的计算机连接到 Internet:

执行初始检查

收集硬件相关信息

检查硬盘

尝试连接到无线路由器

对调制解调器和路由器进行检查

要开始操作,请单击页面右上角的下一步链接。此链接及后续页面上的类似链接将带领您完成本指南中的各个步骤。

使用命令行

该指南中的一些指令要求您输入命令到 命令行 (终端)。您可以在 Dash 中找到终端应用程序。

如果您不熟悉使用命令行,请不要担心,这个指南将在每一步给出详细的指导。您只需记住,所有命令都是区分大小写的,所以输入的命令必须和这个指南中显示的完全一样,最后要在输入命令的最后按下回车执行。

usr/share/help-langpack/zh_CN/ubuntu-help/user-add.page0000644000373100047300000000626012320733014024675 0ustar langpacklangpack00000000000000 添加新用户以便其他人可登录该计算机。 GNOME 文档项目 gnome-doc-list@gnome.org Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 添加新用户帐户

您可为您的计算机添加多个用户帐户。为您所在家庭或公司的每个人员提供一个帐户。每个用户有他们自己的主文件夹、文档和设置。

点击 菜单栏 最右端的图标并选择 系统设置

打开 用户帐户

您需要 管理员权限 来添加用户帐户。单击右上方的 解锁 按钮并输入您的密码。

在左侧的账户列表中,单击 + 按钮来添加新的用户帐户。

如果您希望新建帐户拥有 管理员权限,则要在帐户类型中选择 管理员。管理员可以添加或删除其它用户,安装软件和驱动,或改变日期和时间设置。

输入新用户的全名。根据全名将会自动填充用户名。默认可能就可以了,但如果愿意您可以更改。

单击 添加

在您选择密码管理方案之前,该账户将处于禁用状态。在 登陆选项 部分中单击 密码 选项旁边的 账户已禁用。从 动作 下拉菜单中选择 现在设置密码,然后在 新密码 框中输入密码,并在 确认密码 框中再次输入。更多信息可以参考

您也可单击新密码字段旁边的按钮,以选择随机产生的安全密码。这些密码别人难以猜测,但是它们也很难记住,所以一定要小心。

单击更改

您可以在 用户帐户 窗口中点击用户名右侧的图像来为帐户设置头像。该头像将显示在登录窗口中。GNOME 提供了一些默认头像图片,您也可以选择自己喜爱的照片,或直接用摄像头自拍一张照片。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-shopping.page0000644000373100047300000000356312320733015026172 0ustar langpacklangpack00000000000000 在线资源的集成使 Dash 拥有更多功能,也有力地促进了 Ubuntu 的开发工作。 Jeremy Bicha jbicha@ubuntu.com Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 为什么 Dash 中会存在商品购买链接?

In addition to helping you find apps or files on your computer, the Dash also shows you related online results for your searches. Online sources include Amazon.com and dozens of other online sources.

当您从这些商店购买音乐或产品时,因为 Canonical 公司为这些商店带去了客户,会从中获得一小部分返利。而作为 Ubuntu 项目的母公司和最大支持者,Canonical 将用这些资金进一步推动 Ubuntu 的发展。

关闭在线搜索结果

如果您不愿接收在线搜索建议,您可以关闭这个特性。

点击 菜单栏 最右端的图标并选择 系统设置

Open Security & Privacy and select the Search tab.

关闭 包含在线搜索结果 开关。

您将需要注销,然后重新登录,此项更改才能生效。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-troubleshooting-hardware-info.page0000644000373100047300000000411712320733015033563 0ustar langpacklangpack00000000000000 Ubuntu 文档 wiki 撰稿人 GNOME 文档项目 gnome-doc-list@gnome.org 您可能需要提供无线适配器具体型号和重现问题的详细步骤。 无线网络故障排除程序 收集硬件相关信息

在这一步中,您将会手机关于无线网卡设备的信息。这能够帮助您修复很多特定厂商和型号的无线适配器问题,所以请尽可能地进行详细记录。这些信息也可能存在于随电脑附赠的材料中,如设备驱动安装盘。请您尝试寻找以下物品:

设备的包装和说明书(特别是路由器的用户指南)

驱动程序光盘,即使仅包含 Windows 驱动程序

您的电脑、无线适配器和路由器的生产厂商和型号。这些信息通常可以在设备背面找到。

可能印刷在您的设备或其包装上的任何版本号。这些信息非常有用,请仔细查看。

驱动程序光盘上的任何信息都可能帮助识别设备信息、固件版本,或其使用的芯片组。

如果可能,请通过其他方式连接到网络并下载必要的软件和驱动。(直接将电脑连接到路由器是一种较常见的做法)

当您找到尽可能多的上述物品后,点击 下一步

usr/share/help-langpack/zh_CN/ubuntu-help/files.page0000644000373100047300000000345112320733015024273 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 文件 Searching, delete files, backups, removable drives, documents… 文件、文件夹和搜索

Nautilus 文件管理器

常见任务 更多主题
可移动驱动器和外部磁盘
备份
文档
提示和问题
usr/share/help-langpack/zh_CN/ubuntu-help/disk-check.page0000644000373100047300000000550112320733015025174 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org Natalia Ruz Leiva nruz@alumnos.inf.utfsm.cl Michael Hill mdhillca@gmail.com 您可以测试硬盘是否有问题以确保其健康。 检查硬盘是否有问题
检查硬盘

硬盘中含有一个内置健康检查工具,叫做作 SMART,该工具可以不断检查磁盘的潜在问题。如果磁盘即将发生故障,SMART 还会提出警告,帮助您避免重要数据的丢失。

尽管 SMART 能够自动运行,您仍然可以运行磁盘应用程序检查磁盘运行状况:

通过运行磁盘应用程序,检查磁盘运行状况

Dash 中打开 磁盘 应用程序。

活动概述中打开磁盘应用程序。

存储设备列表中选择您想要检查的磁盘。磁盘的信息和状态随即出现在驱动下方。

SMART 状态应显示 “磁盘健康”。

单击 SMART 数据按钮,可查看更多驱动器信息,或运行硬盘自检。

如果磁盘不健康怎么办?

即使 SMART 状态指示磁盘健康,您一般也无需担忧。不过,最好还是做好备份以防数据丢失。

如果状态显示 “故障先兆”,说明虽然磁盘仍然比较健康,但是已检测到磨损的迹象,这意味着近期它可能出现故障。如果您的硬盘(或计算机)已使用数年,您很可能会在某些健康检查中看到此消息。您应经常备份重要文件,并定期检查磁盘状态以查看它是否老化。

如果磁盘持续老化,您最好将计算机/硬盘交由专业人员进行进一步诊断或维修。

usr/share/help-langpack/zh_CN/ubuntu-help/get-involved.page0000644000373100047300000000246112320733015025574 0ustar langpacklangpack00000000000000 怎样报告有关这些帮助主题的问题。 Tiffany Antopolski tiffany@antopolski.com 参加志愿者社区以改善本指南

本帮助系统由志愿者社区创建。欢迎大家参加志愿者社区。如果发现这些帮助页面有问题(如错别字、不正确的指令或本应涉及但未涉及的主题),则可提交错误报告

要提交错误,请按 AltF2,然后输入 ubuntu-bug ubuntu-docs,按 回车 即可开始收集错误。

参阅 Ubuntu Bug 提交说明 了解更多关于如何提交 Bug 的信息。

感谢您为改善 Ubuntu 帮助而提供帮助!

usr/share/help-langpack/zh_CN/ubuntu-help/contacts-connect.page0000644000373100047300000000250612320733015026436 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com 2012 Ekaterina Gerasimova kittykat3756@gmail.com 2013 跟一个联系人发邮件、聊天或者打电话。 与联系人联系。

通讯录中跟他人发邮件、聊天或者打电话。

从联系人列表选择要删除的联系人。

按要使用的详情 ,例如要发邮件给联系人,请按电子邮件地址。

根据选择的联系人详情,会启动对应的应用程序。

usr/share/help-langpack/zh_CN/ubuntu-help/power-othercountry.page0000644000373100047300000000400612320733015027065 0ustar langpacklangpack00000000000000 您的计算机将正常工作,但可能需要不同的电源线或旅行适配器。 GNOME 文档项目 gnome-doc-list@gnome.org Phil Bull philbull@gmail.com 我的计算机可以使用其他国家/地区的电源工作吗?

不同国家/地区所使用的电源的电压(通常 110V 或 220-240V)和交流频率(通常 50 Hz 或 60 Hz)有所不同。只要您具有相应的电源适配器,计算机即可使用不同国家/地区的电源工作。您可能还需要准备插头转换器。

如果您使用的是笔记本电脑,则您所需做的就是为电源线准备一个合适的转换插头。有些笔记本电脑的包装带有多个转换插头,因此您可能无需另外准备。如果未随附,则将现有的插头插入标准旅行适配器即可。

如果您使用的是台式计算机,则可以购买一根带不同插头的电缆,或使用旅行适配器。但是,此种情况下,您可能需要调整计算机电源上的电压转换开关。很多计算机没有此类开关,它们可以在任何电压下正常工作。查看计算机的背面并查找电源线插入的插座。在附近的某个位置,可能有一个标记为“110V”或“220V”的开关。如果需要,请将其打开。

更改电源线或使用旅行适配器时,请格外小心。如果可能,请首先关闭所有电源。

usr/share/help-langpack/zh_CN/ubuntu-help/shell-exit.page0000644000373100047300000000634612320733015025255 0ustar langpacklangpack00000000000000 了解如何通过注销、切换用户等退出您的用户帐户。 Shaun McCance shaunm@gnome.org Andre Klapper ak-47@gmx.net Alexandre Franke afranke@gnome.org 注销、关机、切换用户

您使用完计算机后,可以将其关闭、挂起(以节能)或保持开机并注销。

注销或切换用户

要使其他用户使用您的计算机,您可以注销或保持自身的登录,仅切换用户即可。如果您仅切换用户,则所有应用程序将继续运行,您再次登录时,一切将保留原样。

要注销或切换用户,点击菜单栏的右上角处的 系统菜单 并选择相应的操作。

锁定屏幕

如果您要离开计算机一小段时间,则应该锁定屏幕以防止其他人访问您的文件和运行应用程序。您返回后,只需输入密码即可重新登录。如果您未锁定屏幕,则它将在一段特定时间后自动锁定。

要锁定屏幕,请单击顶部面板上的会话菜单并选择锁定屏幕

屏幕锁定后,其他用户可以通过单击密码屏幕上的切换用户登录到其各自的帐户。他们用完后,您可以切回到桌面。

挂起

要节能,请在不使用时挂起计算机。如果是笔记本,合上盖子的时候 Ubuntu将会自动挂起。这可以将您的状态保存到计算机内存中并关闭大部分功能。暂停期间,仍有极少量的耗电量。

要手工挂起您的计算机,单击菜单栏中的系统菜单并选择挂起

关机或重启

如果您要彻底地关闭电源,或进行一次重启,点击 系统菜单 并选择 关机

如果有其他用户已登录,则将不允许您关闭或重新启动计算机,因为这样会中断他们的会话。如果您是管理员用户,则需要使用密码关机。

usr/share/help-langpack/zh_CN/ubuntu-help/net-email.page0000644000373100047300000000120412320733015025036 0ustar langpacklangpack00000000000000 默认电子邮件应用程序 Ubuntu 文档团队 GNOME 文档项目 邮件 & 邮件客户端 usr/share/help-langpack/zh_CN/ubuntu-help/power-constantfan.page0000644000373100047300000000337712320733015026650 0ustar langpacklangpack00000000000000 可能是因为您未安装某种风扇控制软件,或者您的笔记本电脑运行温度较高。 GNOME 文档项目 gnome-doc-list@gnome.org 笔记本电脑风扇持续运行

如果您的笔记本冷却风扇总是运行,则控制笔记本冷却系统的硬件可能在 Linux 中未得到很好的支持。有些笔记本电脑需要额外的软件以有效控制其冷却风扇,但此软件可能尚未安装(或 Linux 可用),因此,风扇始终以全速运行。

在这种情况下,您可能要更改一些设置或安装允许完全控制风扇的额外软件。例如,可安装 vaiofand 以控制一些 Sony VAIO 笔记本电脑的风扇。安装此软件对技术有较高的要求,在很大程度上取决于您计算机的制造商和型号,因此您可能需要寻找针对您计算机型号的专业建议。

还有可能您的笔记本电脑确实发出大量热量。这并不一定意味着笔记本过热;它可能确实需要风扇始终以全速运行,以实现完全冷却。在这种情况下,您只能选择让风扇始终以全速运行。有时,您可以额外购买其他冷却配件,这可能会有所帮助。

usr/share/help-langpack/zh_CN/ubuntu-help/power-batteryslow.page0000644000373100047300000000172512320733015026704 0ustar langpacklangpack00000000000000 有些笔记本电脑在使用电池运行时有意减速。 GNOME 文档项目 gnome-doc-list@gnome.org 为何使用电池时,笔记本变慢了?

为了节省电量,一些笔记本在使用电池时故意变慢。笔记本中的处理器 (CPU) 切换到低速模式,慢速运行时处理器使用的电量也少,所以电池可以使用更长时间。

这一功能称为 CPU 频率调整

usr/share/help-langpack/zh_CN/ubuntu-help/net-security-tips.page0000644000373100047300000000514412320733015026602 0ustar langpacklangpack00000000000000 使用 Internet 时需要记住的常规提示 Steven Richards steven.richardspc@gmail.com 使用网络时保持安全

A possible reason for why you are using Ubuntu is the robust security that Linux based systems are known for. One reason that Linux is relatively safe from malware and viruses is due to the lower number of people who use it. Viruses are targeted at popular operating systems like Windows, that have an extremely large user base. Linux based systems are also very secure due to their open source nature, which allows experts to modify and enhance the security features included with each distribution.

Despite the measures taken to ensure that your installation of Ubuntu is secure, there are always vulnerabilities. As an average user on the internet you can still be susceptible to:

网络钓鱼(尝试通过欺骗获取敏感信息的站点)

转发恶意电子邮件

带有恶意企图的应用程序(病毒)

Unauthorized remote/local network access

要远离恶意入侵,请牢记以下提示:

不要打开未知人员发送的电子邮件、附件或链接。

如果网站的优惠让人难以置信,或者询问一些敏感信息,请再三考虑您提交的内容,以及如果该信息被黑客或其他犯罪分子利用可能产生的后果。

向任何应用程序提供最高级别权限(特别是之前从未用过或不太了解的应用程序)时,请格外小心。为任何人/事提供最高级别权限将为您的计算机带来高暴露风险。

请确保您只运行必要的远程访问服务。SSHVNC 有时会很有用,但如果保障不力,也会让您的计算机对入侵敞开大门。考虑使用防火墙来帮助计算机防御入侵。

usr/share/help-langpack/zh_CN/ubuntu-help/windows-key.page0000644000373100047300000000417212320733015025452 0ustar langpacklangpack00000000000000 The Super key provides access to the Dash and the Launcher. GNOME 文档项目 gnome-doc-list@gnome.org Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com Super 键是什么?

此键通常可以在键盘左下角靠近 Alt 键的地方找到,并且经常标记有 Windows/方框键。它有时也会被称为 Windows 键,徽标键或系统键。

如果您使用苹果键盘,那么键盘上没有 Windows 键。此时您可以使用 (Command) 键作为替代。

Super 键在 Unity 中具有特殊功能。如果您按一下 Super 键,则显示 Dash。如果您按住 Super 键,则会显示很多 Unity 的键盘快捷键,直到释放 Super 键。

Super 键可帮助您执行更多操作。要了解关于 Super 键使用的更多信息,请参见键盘快捷方式页面。

usr/share/help-langpack/zh_CN/ubuntu-help/user-admin-problems.page0000644000373100047300000000241212320733015027052 0ustar langpacklangpack00000000000000 如果您拥有管理员特权,您仅能执行类似安装应用程序这样的操作。 GNOME 文档项目 gnome-doc-list@gnome.org 管理限制导致的问题

您可能经历过因为您没有管理特权而产生的问题。一些操作需要您拥有管理员特权,以便工作,如:

连接至一些网络或无线网络

查看插入到计算机的可移动硬盘的目录,或者不同磁盘分区的目录(例如,如果您拥有 Windows 分区)

安装新的应用程序

您可更改拥有管理员特权的人员。

usr/share/help-langpack/zh_CN/ubuntu-help/net-findip.page0000644000373100047300000000360112320733015025223 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Jim Campbell jwcampbell@gmail.com Michael Hill mdhillca@gmail.com 了解您的 IP 地址有助于排除网络问题。 查找您的 IP 地址

了解您的 IP 地址可帮助您排除 Internet 连接问题。一般情况下您有两个 IP 地址:一个 IP 地址供计算机在内部网络上使用,一个供计算机在 Internet 上使用。

查找您的内部 IP 地址:

单击顶部菜单栏最右侧的图标,选择系统设置

打开 网络 ,根据您想要查看的 IP 地址,在列表左边选择 有线 或者 无线

您的内部 IP 地址将会显示在信息列表中。

查找您的外部 Internet IP 地址:

访问 whatismyipaddress.com

该站点将显示您的外部 IP 地址

根据电脑联网方式的不同,这些地址可能是相同的。

usr/share/help-langpack/zh_CN/ubuntu-help/session-formats.page0000644000373100047300000000517512320733015026332 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com Ubuntu 文档团队 选择日期时间、数字、货币和测量使用的区域。 更改日期格式和计量单位

您可以控制日期时间、数字、货币、和测量使用的格式以符合您所在区域的习惯。

单击顶部菜单栏最右侧的图标,选择系统设置

打开语言支持并选择区域格式标签。

选择与您最喜欢使用的格式最符合的区域。默认上,此列表只显示使用语言标签页设置的语言的区域。

您必须注销并重新登录以使这些设置生效。点击菜单栏的右上角处并选择 注销 以退出登录。

选择一个区域之后,列表下方的区域显示日期和其他一些值如何显示的例子。虽然没有在例子中显示,您的区域设置也会控制日历中每周从周几开始。

更改系统格式

当您更改了区域格式后,只会更改您登录后自己帐号的设置。您也可以更改系统格式,其用于登录界面等地方。

根据上面的描述,更改您的格式。

单击应用到整个系统

需要管理员特权。请输入您的密码或要求的管理员账号的密码。

您可在语言支持帮助中找到更多有关语言和地区格式的详细指南。

usr/share/help-langpack/zh_CN/ubuntu-help/backup-thinkabout.page0000644000373100047300000000560012320733015026602 0ustar langpacklangpack00000000000000 文件夹列表,您可以在其中找到您可能想要备份的文档、文件和设置。 Tiffany Antopolski tiffany.antopolski@gmail.com GNOME 文档项目 gnome-doc-list@gnome.org Michael Hill mdhillca@gmail.com 我可以在哪里找到想要备份的文件?

Listed below are the most common locations of important files and settings that you may want to back up.

个人文件(例如文档、音乐、照片和视频)

These are usually stored in your home folder (/home/your_name). They could be in subfolders such as Desktop, Documents, Pictures, Music, and Videos.

如果您用于备份的介质中空间充足(例如您使用大容量移动硬盘来进行备份),最好能备份整个主文件夹的内容。您可以通过磁盘使用分析器获知主文件夹的大小。

隐藏文件

名称以句点开始的文件或文件夹会被默认隐藏。要查看隐藏文件,单击查看显示隐藏文件或按 CtrlH

个人设置(例如桌面设置,主题设置和软件设置)

大部分软件都以隐藏文件的形式将设置信息存储在您的主文件夹中(如需获得关于隐藏文件的信息,请查阅上文)。

大多数应用程序的设置保存在用户主目录的隐藏文件夹 .config, .gconf, .gnome2.local中。

系统级设置

系统关键部分的设置信息并不存放在主文件夹中。而可能存放在其他一些地方。大部分情况下,这些信息会被存储在 /etc 文件夹中。一般来说作为桌面用户您并不需要保存这些信息。如果您使用的是服务器,那么您可能会需要保存这些信息。

usr/share/help-langpack/zh_CN/ubuntu-help/net-chat-social.page0000644000373100047300000000310712320733015026142 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 直接从桌面发布到 TwitterFacebook 及其他社交网络站点 桌面上的社交网络

在 Ubuntu 系统中,您可以通过桌面连接到您最喜欢的社交网站。Ubuntu 通过 Friends 允许您在一个地方整理您的社交网站,并且不需要打开任何网站仅通过 我的菜单 就能提交更新。

设置您的社交网络帐户:

打开菜单栏右手边的 系统菜单 并选择“系统设置...”。

选择 在线账户

选择您想要建立的社交网站并点击 添加账户...

单击授权并输入您在该站点的帐户设置,然后按说明操作。

您现在可以在 广播 部分菜单栏右手边的 消息菜单 查看您的社交网站信息,点击该部分中的任意项目,打开 Friends 并在您的社交网站上查阅或者提交消息。

usr/share/help-langpack/zh_CN/ubuntu-help/color.page0000644000373100047300000000173112320733015024306 0ustar langpacklangpack00000000000000 Richard Hughes richard@hughsie.com 为什么重要,色彩配置文件,如何校准设备… 色彩管理
色彩配置文件
校准
问题
usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless.page0000644000373100047300000000162112320733016025610 0ustar langpacklangpack00000000000000 连接到 WIFI 网络、隐藏网络、编辑连接设置 和 断开… Ubuntu 文档团队 无线网络 usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-hidden.page0000644000373100047300000000374612320733016027053 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org Ubuntu 文档团队 单击顶部面板中的网络菜单并选择连接到隐藏的无线网络 设置隐藏无线网络

您可将无线网络设置为“隐藏”。隐藏网络不会在单击顶部面板中的网络菜单时显示的网络列表中出现,也不会在其他任何计算机上的无线网络列表中出现。

单击顶部面板中的网络菜单并选择连接到隐藏的无线网络

要连接到隐藏的无线网络,请单击顶部面板中的网络菜单并选择连接到隐藏的无线网络。在出现的窗口中,键入网络名称、选择无线安全类型,然后单击连接

您可能要检查无线基站/路由器的设置才能确定网络名称。有时称为 BSSID(基本服务集标识符),看起来类似于:02:00:01:02:03:04

您还要检查无线基站的安全设置;查找说明中的 WEP 和 WPA 等术语。

您可能认为隐藏无线网络可防止不知道网络的人连接到该网络,从而提高安全性。实际情况并非如此,虽然查找隐藏网络略有难度,但它仍可被检测到。

usr/share/help-langpack/zh_CN/ubuntu-help/power-batterybroken.page0000644000373100047300000000272112320733016027176 0ustar langpacklangpack00000000000000 您的电池可能并未损坏,而只是老化折旧。 GNOME 文档项目 gnome-doc-list@gnome.org 收到电池容量较低的警告信息

您首次登录时,可能会看到一条这样的消息:

电池可能损坏。电池容量非常低,表示它可能陈旧或已经损坏。

计算机检测到您的电池无法存储较多电量时将显示此消息。最可能的原因是您的电池过旧;它一般并未完全损坏,因此您不必特别担心。

随着时间的推移,所有笔记本电脑电池都将逐步失去存储电量的功能。不久(通常一年或以上),旧电池存储的电量将是新电池的很少一部分。发生该情况时,将显示以上消息。

如果您的计算机或电池比较新,则它应该可以存储较多设计电量。如果不能,则您的电池可能损坏且您可能需要寻找替代电池。

usr/share/help-langpack/zh_CN/ubuntu-help/net-general.page0000644000373100047300000000151612320733016025373 0ustar langpacklangpack00000000000000 查看 IP 地址、WEP & WPA 安全、MAC 地址 和 代理… Ubuntu 文档团队 GNOME 文档项目 网络术语与提示 usr/share/help-langpack/zh_CN/ubuntu-help/more-help.page0000644000373100047300000000145312320733016025062 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com Jim Campbell jwcampbell@gmail.com 建议使用本指南 和 帮助改善本指南… 获取更多帮助

usr/share/help-langpack/zh_CN/ubuntu-help/net-problem.page0000644000373100047300000000127312320733016025416 0ustar langpacklangpack00000000000000 解决无线连接问题 和 查看 WIFI 网络network… Ubuntu 文档团队 网络问题 usr/share/help-langpack/zh_CN/ubuntu-help/color-canshareprofiles.page0000644000373100047300000000265312320733016027641 0ustar langpacklangpack00000000000000 共享色彩配置文件绝不是个好主意,因为硬件在随时间不断变化。 Richard Hughes richard@hughsie.com 我可以共享我的色彩配置文件吗?

您自己创建的色彩配置文件是特定于您校准的硬件和光照条件的。使用数百小时的 DreamColor LP2480zx 和下一序列号使用了一千小时的类似显示器就有很大不同。

这意味着,如果您与他人共享您的色彩配置文件,您可能使他们更接近校准值,但要说他们的显示器已校准却只是一种误导。

除非团队中的每个人在同样的室内光照条件下查看和修改图片,否则与与人分享您自己的特定环境下所使用的色彩配置文件几乎没有什么意义。

您应认真检查从厂商网站下载或为您创建的配置文件的再发布条件。

usr/share/help-langpack/zh_CN/ubuntu-help/printing-order.page0000644000373100047300000000371712320733016026142 0ustar langpacklangpack00000000000000 逐份打印和调转打印顺序。 Phil Bull philbull@gmail.com Jim Campbell jwcampbell@gmail.com 以不同的顺序打印纸张
调转打印顺序

通常,打印机先打印第一页,最后打印最后一页,因此打印出来的页面顺序是逆向的。如有需要,可反向打印顺序。

要进行逆打印:

单击文件打印

在打印窗口的 常规 选项卡下找到 份数,选中 逆续。这样会先打印最后一页,然后逆续进行。

逐份打印

如果要对文档进行多份复印,则默认情况下将按页码对输出品进行分组(即先打印出每份的第一页,然后是每份的第二页,依此类推)。然而,逐份打印可使每个副本随其分组的页面按正确顺序一起打印出。

要逐份打印:

单击文件打印

在打印窗口的 常规 选项卡下找到 份数,选中 校正

usr/share/help-langpack/zh_CN/ubuntu-help/video-sending.page0000644000373100047300000000524512320733016025730 0ustar langpacklangpack00000000000000 检查确认他们已安装正确的视频编码解码器。 GNOME 文档项目 gnome-doc-list@gnome.org 其他人无法播放我制作的视频

如果您在您的 Linux 计算机上制作了一个视频,并且将其发送给使用 Windows 或 Mac OS 的其他人,则您可能会发现他们在播放该视频时出现问题。

要能够播放您的视频,您发送至的人员必须安装正确的解码器。解码器是一种小软件,知道如何读取视频并在屏幕上播放该视频。有很多不同的视频格式,每种格式都需要用不同的编码解码器来播放。您可以使用下述方法了解视频的格式:

打开文件管理器。

右键单击视频文件并选择属性

选择 音频/视频选项卡并查看视频下有哪些解码器

询问遇到播放问题的人他们是否安装了正确的编码解码器。他们会发现,通过网络搜索编码的名称和他们视频播放程序的名称会非常有帮助。例如,如果您的视频使用 Theora 格式并且您的朋友使用Windows 媒体播放器试图观看它,则搜索“theora windows 媒体播放器”。如果未安装,则您将经常能够免费下载正确的编码解码器。

如果您未找到正确的编码解码器,则尝试 VLC 媒体播放器。它可在 Windows、Mac.OS 及 Linux 上运行,并支持各种视频格式。或者,尝试将您的视频转换成另外一种格式。大多数视频编辑器可执行此操作,并且还可使用特定的视频转换应用程序。可以在 Ubuntu 软件中心查找这类可用软件。

也有其他一些问题可能让其他人无法播放您的视频。视频可能在您发送给他们时受损了(有时大型文件没有完美复制)、他们的视频播放应用程序可能有问题或者视频可能创建不当(您保存该视频时可能发生了一些错误)。

usr/share/help-langpack/zh_CN/ubuntu-help/printing-streaks.page0000644000373100047300000000324512320733016026477 0ustar langpacklangpack00000000000000 如果打印出来的纸张上面带有条纹、颜色暗淡或没有颜色,请检查油墨剩余量并清洗打印头。 GNOME 文档项目 gnome-doc-list@gnome.org 打印输出品中为何会有条纹、线条或颜色错误?

如果打印出的纸张上面出现有条纹、颜色暗淡或印有多余线条,或者存在其他质量问题,这可能是打印机的问题,也可能是因为油墨或彩墨不足。

文档或图片颜色暗淡

油墨或彩墨可能用完。如有需要,请检查油墨和彩墨余量并购买新的墨盒。

条纹和线条

如果是喷墨式打印机,打印头可能会变脏或阻塞。尝试清洗打印头(请参阅打印机使用手册)。

颜色错误

打印机的彩墨或油墨用完。如有需要,请检查油墨、彩墨并购买新的墨盒。

锯齿形线,或线条不直

如果打印材料上面的线条呈锯齿状,则需对齐打印头。有关如何操作的详情,请参见打印机说明手册。

usr/share/help-langpack/zh_CN/ubuntu-help/files-search.page0000644000373100047300000000666012320733016025544 0ustar langpacklangpack00000000000000 根据文件名称和类型定位文件。保存搜索供以后使用。 GNOME 文档项目 gnome-doc-list@gnome.org Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 搜索文件

您可以根据文件的名称或类型直接在文件管理器中搜索文件。您甚至可以保存常用搜索,它们将作为特殊文件夹出现在您的主文件夹中。

其他搜索应用程序 搜索

打开文件管理器

如果您知道您想要的文件位于特定文件夹中,则转到该文件夹。

点击工具栏上的放大镜按钮,或者按下组合键 CtrlF

输入您知道的出现在文件名中的字词。例如,如果您使用“Invoice”命名了您所有的发票文件,输入 invoice ,然后按下 Enter ,字母不区分大小写。

您可以通过存放位置和文件类型来缩小搜索范围。

点击 主文件夹 来限制搜索结果位于您的 Home 文件夹,或者选择 所有文件 搜索整个文件系统。

点击 + ,然后从下拉菜单中选择一种 文件类型 ,基于文件类型缩小搜索范围。点击 x 按钮删除此选项,扩大搜索范围。

与在文件管理器中的任何文件夹中一样,您可以在搜索结果中打开、复制、删除或以其它方式处理您的文件。

再次点击工具栏上的放大镜按钮退出搜索并返回文件夹。

如果您经常执行某些搜索,您可以保存这些搜索以供快速访问。

保存搜索

如上所述开始搜索。

当您对搜索参数感到满意时,点击齿轮按钮并选择 保存搜索为

为搜索命名,然后单击保存。如果您喜欢,可选择不同的文件夹来保存搜索。当您查看该文件夹时,您将看到您保存的搜索显示为带有放大镜图案的橙色文件夹图标。

删除搜索结果的方式与删除其他文件的方式相同。当您删除某个已保存的搜索结果时,搜索结果中的文件并不会被删除。

usr/share/help-langpack/zh_CN/ubuntu-help/power-hibernate.page0000644000373100047300000000657112320733016026273 0ustar langpacklangpack00000000000000 由于休眠功能尚不完善,Ubuntu 默认将其禁用。 GNOME 文档项目 gnome-doc-list@gnome.org Ekaterina Gerasimova kittykat3756@gmail.com Jeremy Bicha jbicha@ubuntu.com 如何让我的电脑休眠?

当计算机处于休眠状态时,您的所有应用程序和文档都将保持打开状态,而计算机则将完全关闭几乎不再耗电。当您再次打开计算机时,应用程序和文档将仍处于开启状态。

不幸的是,很多时候休眠 无法工作,如果你期望重新打开电脑时,程序和文档都能重新打开,这可能会造成丢失数据。

测试休眠是否工作 务必在休眠之前保存您的工作

您应该在挂起计算机或将计算机置于休眠之前保存所有工作,以防出现错误导致再次打开计算机时不能恢复所打开的应用程序和文档。

您可以使用以下命令测试休眠是否在您的电脑上正常工作。

通过按 Ctrl Altt 或在 Dash 中搜索 终端 来打开 终端

活动总揽 中搜索 终端 打开 终端

在终端里输入 pm-hibernate 并按回车

按提示输入密码。

当电脑关闭后,重新将其打开,您原来打开的程序是否重新打开了?

如果休眠不能正常工作,请检查您的 SWAP 分区的大小是否大于或等于您物理内存的大小。

启用休眠

如果休眠测试成功,您可以在需要休眠的时候使用 sudo pm-hibernate 命令进行休眠。

您也可以打开菜单中的休眠选项。您需要用文本编辑器创建 /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla 文件,并填写以下内容保存:

[Re-enable hibernate by default in upower] Identity=unix-user:* Action=org.freedesktop.upower.hibernate ResultActive=yes [Re-enable hibernate by default in logind] Identity=unix-user:* Action=org.freedesktop.login1.hibernate ResultActive=yes
usr/share/help-langpack/zh_CN/ubuntu-help/bluetooth-send-file.page0000644000373100047300000001056312320733016027045 0ustar langpacklangpack00000000000000 和蓝牙设备(如手机)共享文件。 Jim Campbell jwcampbell@gmail.com Paul W. Frields stickster@gmail.com Michael Hill mdhillca@gmail.com 发送文件至另一蓝牙设备

您可以将文件发送至连接的蓝牙设备,如某些手机或其他计算机。某些类型的设备不允许传输文件,或传输特定类型的文件。您可以用以下三种方法之一发送文件:使用菜单栏上的蓝牙图标,从蓝牙设置窗口,或直接从文件管理器。

您可以将文件传输到连接的蓝牙设备,包括移动电话、其他计算机等。某些类型的设备不允许传输文件,或是不允许传输特定类型的文件。您可以通过顶栏上的蓝牙图标或是蓝牙设置窗口传输文件。

如果要直接从文件管理器中发送文件,请查阅

首先,请确保您的电脑开启了蓝牙。请查阅

使用蓝牙图标发送文件

单击菜单栏中的蓝牙图标,然后单击发送文件到设备

单击顶栏上的蓝牙图标,选择传输文件到设备

选择您想要发送的文件,然后单击选择

要发送一个文件夹中的多个文件,请在选择每个文件时按住 Ctrl 键。

从列表中选择您想要向其发送文件的设备,然后单击发送

设备列表中将列出所有 已经连接过的设备 和 其他搜索到的设备 。如果您并未连接到所选设备,则系统会弹出窗口让您配对设备。配对操作可能会需要在另一个设备上进行确认。

如果设备列表很长,您可以用设备类型下拉菜单来控制系统只显示特定类型的设备。

接收设备的所有者一般必须按一个按钮才能接收文件。一旦所有者接收或拒绝,文件传输结果就会在您的屏幕上显示。

在蓝牙设置中发送文件

单击菜单栏上的蓝牙图标,选择蓝牙设置

单击顶栏上的蓝牙图标,选择蓝牙设置

从左侧的列表中选择需要发送文件的设备。列表将仅显示您已连接到的设备。更多信息请查阅

在右边的设备信息中,单击发送文件

选择您想要发送的文件,然后单击选择

要发送一个文件夹中的多个文件,请在选择每个文件时按住 Ctrl 键。

接收设备的所有者一般必须按一个按钮才能接收文件。一旦所有者接收或拒绝,文件传输结果就会在您的屏幕上显示。

usr/share/help-langpack/zh_CN/ubuntu-help/color-calibrate-scanner.page0000644000373100047300000000327412320733016027666 0ustar langpacklangpack00000000000000 校准扫描仪对捕获颜色的准确性非常重要。 Richard Hughes richard@hughsie.com Michael Hill mdhillca@gmail.com 如何校准我的扫描仪?

首先扫描目标文件并保存为未压缩的 TIFF 文件,然后点击系统设置色彩下的 校准…按钮为设备创建配置文件。

首先扫描目标文件并保存为未压缩的 TIFF 文件,然后点击系统设置色彩下的 校准…按钮为设备创建配置文件。

扫描设备随着时间推移和温度变化极其稳定,一般不需要重新校准。

usr/share/help-langpack/zh_CN/ubuntu-help/user-delete.page0000644000373100047300000000347012320733016025411 0ustar langpacklangpack00000000000000 移除不再使用您计算机的用户。 Tiffany Antopolski tiffany@antopolski.com GNOME 文档项目 gnome-doc-list@gnome.org Shaun McCance shaunm@gnome.org 删除用户帐户

您可为您的计算机添加多个用户帐户。请参见了解如何操作。如果某人不再使用您的计算机,则您可删除该用户的帐户。

点击 菜单栏 最右端的图标并选择 系统设置

打开 用户帐户

单击右上角的解锁并键入您的密码以进行更改。要删除用户帐户,您必须是管理员用户。

选择您要删除的用户并单击 - 按钮。

每个用户都有存放他们自己文件和设置的主文件夹。您可选择保留或删除用户的主文件夹。如果您确定文件不再使用并且您需要空出磁盘空间,则您可删除相关文件。永久删除这些文件。它们无法恢复。删除文件之前,您可将其备份至外部驱动或 CD。

usr/share/help-langpack/zh_CN/ubuntu-help/printing-paperjam.page0000644000373100047300000000223612320733016026621 0ustar langpacklangpack00000000000000 如何清除卡纸取决于该打印机的制造和型号。 Jim Campbell jwcampbell@gmail.com 清除卡纸

有时,打印机会错误吞打印纸并卡住纸张。

通常,打印机的使用手册中将提供如何清除卡纸的详细说明。通常,需要打开其中一个打印机面板以查找内部堵塞,然后将卡住的纸张从打印机的供应装置中缓缓拉出(请务必格外小心!)。

清除堵塞物后,您可能需要按恢复按钮以再开始打印。对于有些打印机,您可能需要关闭打印机,再打开,然后再开始打印任务。

usr/share/help-langpack/zh_CN/ubuntu-help/accounts-whyadd.page0000644000373100047300000000221412320733016026263 0ustar langpacklangpack00000000000000 Susanna Huhtanen ihmis.suski@gmail.com 2012 Michael Hill mdhillca@gmail.com Greg Beam ki7mt@yahoo.com 为什么要在桌面系统中添加电子邮件和社交媒体账户? 为什么要添加账户?

添加账户之后可以在桌面直接运行日历、聊天、电子邮件等服务,给您无缝的用户体验。通过添加多个账户,可以同时与多个不同的账户保持联系。在第一次设置好账户和服务,以后每次开机都可以直接使用。

usr/share/help-langpack/zh_CN/ubuntu-help/color-calibrate-camera.page0000644000373100047300000000272612320733016027466 0ustar langpacklangpack00000000000000 校准对让摄像机捕获准确的颜色非常重要。 Richard Hughes richard@hughsie.com 如何校准我的摄像机?

摄像设备是通过在理想照明条件下对比色卡拍摄照片来校准的。通过将 RAW 文件转换为 TIFF 文件,可用该方法来校准颜色控制面板中的摄像设备。

请裁剪 TIFF 文件到只保留目标,务必让白色或黑色的边界保持可见。校准程序无法在图像上下颠倒或有较大形变的情况下工作。

生成的配置文件仅在您获得原始图像时所使用的照明条件下有效。这意味着您可能需要针对摄影室明亮阳光多云照明条件进行多次获取配置文件。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-connect.page0000644000373100047300000000564212320733016027246 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org Ubuntu 文档团队 以无线方式连接到 Internet。 连接到无线网络

如果您的计算机启用了无线,则可在处于无线网线覆盖范围时连接到该网络,以访问 Internet、查看网络上的共享文件以及执行其他操作。

如果计算机上有无线硬件开关,请确保打开该开关。

单击顶部面板中的网络菜单,然后查找所需的网络。

如果您的无线网络名称未出现在列表中,请单击更多网络,以查看该网络是否在列表的下方。如果仍未看到该网络,您可能超出了网络覆盖范围或该网络可能已隐藏。

如果网络受到(密码)保护,请在出现提示时输入密码并单击连接

如果不知道密钥,它可能写在无线路由器或基站设备的底部、说明手册中,或者您可向无线网络管理员咨询。

计算机尝试连接到网络时,网络图标的外观将更改。

如果连接成功,该图标将更改为类似 wifi 标志的图标。图标上的信号格数越多,表示与网络的连接越强。如果信号格数很少,则表示连接较弱且可能不太稳定。

如果连接不成功, 也许会要求您再次输入密码 或者它可能会告诉您连接已断开。有很多事情可能会造成这种情况发生,例如:可能是您输错了密码、无线信号太弱或者您计算机的无线网卡出问题了。查阅 获取更多帮助。

较强的无线网络连接并不一定意味着Internet 连接速度更快,或者您的下载速度更快。无线连接将您的计算机连接到提供 Internet 连接的设备(如路由器或调制解调器),但设备本身所提供无线信号的强度与网速无关。

usr/share/help-langpack/zh_CN/ubuntu-help/net-fixed-ip-address.page0000644000373100047300000000431312320733017027105 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com 使用静态 IP 地址可简化一些网络服务的管理。 使用固定 IP 地址创建连接

当您连接到网络时,多数网络会自动为您的计算机分配 I P 地址和其他信息。这些信息可能会定期更改,但您可能要为计算机设置固定的 IP 地址,以便时刻了解您计算机的 IP 地址(例如当该计算机被用于文件服务器时)。

要为计算机提供固定(静态)IP 地址:

单击顶部面板中的网络菜单,然后单击编辑连接

有线 标签上选择 有线连接 或者在 无线 标签上选择 WiFi 连接,然后点击 编辑

转到无线安全选项卡,然后更改安全设置

如果地址列表中未列出任何连接信息,或者您想设置新的连接,请单击添加

在相应的框中输入 IP 地址子网掩码网关 信息。您对这些选项的选择取决于您的网络设置,有一些特定的规则负责管理哪些 IP 地址和子网掩码对给定的网络是否有效。

如有必要,请在 DNS 服务器 框中输入 DNS 服务器 地址。这是查找 DNS 服务器的 IP 地址;多数公司网络和 Internet 提供商会提供专用的 DNS 服务器。

按下保存按钮,网络连接的 IP 地址应该可以得到修复。

usr/share/help-langpack/zh_CN/ubuntu-help/sharing-desktop.page0000644000373100047300000000672212320733017026301 0ustar langpacklangpack00000000000000 Ekaterina Gerasimova kittykat3756@gmail.com Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 让其他人使用 VNC 查看您的桌面并与桌面进行交互。 分享桌面

您可让其他人使用桌面查看程序从其他计算机查看和控制您的桌面。配置桌面共享以允许其他人访问您的桌面并设置安全选项。

Dash 中打开 桌面共享

要允许其他人查看您的桌面,请启用允许其他人查看您的桌面选项。这意味着其他人可试图连接到您的计算机并查看您的桌面的内容。

要允许其他人与您的桌面进行交互,请启用允许其他人控制您的桌面选项。这可允许其他人根据您当前使用的安全性设置在您的计算机上移动鼠标、运行应用程序和浏览文件。

安全

在更改前,考虑每个安全性选项的完整范围非常重要。

确定对您机器的访问

如果您想要选择是否允许其他人访问您的桌面,请选择必须为对本机器的每次访问进行确认。如果您禁用此选项,则将不会被询问是否允许其他人连接到您的计算机。

默认情况下,此选项已启用。

启用密码

要想要求其他人在连接到您的桌面时使用密码,请选择要求远程用户输入此密码:。如果您不使用此选项,则任何人都可尝试查看您的桌面。

默认情况下,此选项已禁用,但是您应该将其启用并设置安全密码。

允许通过网络访问您的桌面

如果您的路由器支持 UPnP 网络网关设备协议且已启用,您可以允许本地网络以外的其他人查看您的桌面。要允许此操作,请选择自动配置 UPnP 路由器以打开和转发端口。此外,您可以手动配置路由器。

默认情况下,此选项已禁用。

显示通知区图标

要将正在查看您桌面的用户断开链接,您需要启用此选项。如果您选择总是,则无论是否有人正在查看您的桌面,此图标都可见。

如果此选项已禁用,则根据安全性设置的不同,其他人可能在您不知道的情况下连接到您的桌面。

usr/share/help-langpack/zh_CN/ubuntu-help/video-dvd.page0000644000373100047300000000375712320733017025065 0ustar langpacklangpack00000000000000 您可能未安装正确的编码解码器,或者可能 DVD 区域错误。 GNOME 文档项目 gnome-doc-list@gnome.org DVD 为何无法播放?

如果您将 DVD 插入计算机,其不播放,则您可能未安装正确的 DVD 解码器,或者该 DVD 可能来自不同的“区域”。

安装正确的解码器来播放 DVD

为了播放 DVD,您需要安装正确的解码器。解码器是某个允许应用程序读取视频或音频格式的软件。如果您试图播放 DVD 并且未安装正确的解码器,则电影播放器将提示您并帮您安装。

DVD 也使用被称为 CSS 的系统防复制。这防止您复制 DVD,但也阻止您播放它们,除非您有某个额外的软件处理复制保护。

检查 DVD 区域

DVD 具有“区域代码”,其告知您在世界哪个区域允许播放该 DVD。如果您计算机的 DVD 播放器的区域和尝试播放的 DVD 光盘的区域不符,将不能播放此 DVD。例如,如果您拥有区域 1 DVD 播放器,则将仅允许您播放来自北美的 DVD。

通常可以更改 DVD 播放器的区域,但是只能进行数次,之后就会永久锁定到一个区域。要更改计算机的 DVD 播放器的 DVD 区域,可以使用 regionset。

usr/share/help-langpack/zh_CN/ubuntu-help/power-hotcomputer.page0000644000373100047300000000472212320733017026700 0ustar langpacklangpack00000000000000 计算机在运行中发热是正常的,但是如果它过热,则会造成损坏。 GNOME 文档项目 gnome-doc-list@gnome.org 我的计算机变得很热

大部分计算机在运行一段时间后都会处于温热状态,一部分计算机甚至会非常热。一般情况下这种现象是正常的:这是计算机散热方式的一部分。但是如果您的计算机持续过热的话将会导致一定的损害。

大多数笔记本电脑在您使用后不久都会适当变热。一般情况下,这不必担心,计算机产生大量热量且笔记本电脑非常紧凑,因此它们需要快速散热,外壳变热就是这种散热机制的一部分。然而,有些笔记本电脑变得过热,甚至影响正常使用。这通常就是冷却系统设计不佳所造成的结果。有时,您可以选购一些冷却配件以为笔记本电脑提供更有效的冷却。

如果您的台式计算机摸上去很热,这可能是降温冷却机制未能完全生效的结果。如果您对此有疑问,则可购买其他冷却风扇或检查冷却风扇和通风口是否有灰尘及其他堵塞物。您可能也会考虑将计算机置于一个通风更好的地方,如果放置在一个封闭空间(如橱柜)中,则计算机的冷却系统可能无法正常散热。

一些人担心使用过热的笔记本电脑可能存在健康风险。有人认为长时间在膝盖上使用过热的笔记本电脑可能会降低(男性)生育能力,并有报道称还会造成轻微烧伤(极个别情况)。如果您担心这些潜在的问题,则可以向医生咨询征求意见。当然,一般情况下只需避免将笔记本电脑置于膝盖上即可。

大多数现代计算机在其过热的情况下会自动关闭以防止发生损坏。如果您的计算机一直无法开机,这可能就是原因所在。如果计算机确实过热,则您可能需要对其进行修理。

usr/share/help-langpack/zh_CN/ubuntu-help/a11y.page0000644000373100047300000000460412320733017023747 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 视觉, 听觉, 肢体活动能力, 盲文… 通用辅助功能

Unity 桌面包含帮助有不同障碍或特殊需求用户的辅助技术,能够与常用的辅助设备进行交互,多数功能可以在系统设置辅助功能中找到。

GNOME 桌面包含帮助有不同障碍或特殊需求用户的辅助技术,能够与常用的辅助设备进行交互,多数功能可以在顶栏的辅助功能菜单中找到。

视觉障碍 失明 弱视 色盲 其他主题
听觉障碍
运动障碍 鼠标移动 点击和拖动 键盘使用 其他主题
usr/share/help-langpack/zh_CN/ubuntu-help/backup-what.page0000644000373100047300000000425512320733017025404 0ustar langpacklangpack00000000000000 备份不允许出现任何问题的内容。 GNOME 文档项目 gnome-doc-list@gnome.org Tiffany Antopolski tiffany.antopolski@gmail.com Michael Hill mdhillca@gmail.com 备份对象

您首先应备份您最重要的文件以及难以重新创建的文件。最重要到最不重要文件示例:

您的个人文件

这可能包括文档、电子表格、电子邮件、日历约会、财务数据、家庭照片,或任何您认为不可替代的其他个人文件。

您的个人设置

其中包括您可能对您桌面上的颜色、背景、屏幕分辨率和鼠标设置做出的更改。另外还包括应用程序首选项,如对 LibreOffice、您的音乐播放器以及您的电子邮件程序的设置。这些是可替代的,但可能需要一段时间才能重新创建。

系统设置

大多数人从不更改安装期间创建的设置。如果您确实定制了您的系统或者将计算机作为服务器使用,您可能希望备份这些设置。

安装的软件

软件一般可以通过重新安装来恢复。

通常,您会想要备份不可替代的文件以及如果没有备份需要投入大量时间才能恢复的文件。另一方面,如果内容非常简单替代,您可能不希望备份挤占磁盘空间。

usr/share/help-langpack/zh_CN/ubuntu-help/accounts-remove.page0000644000373100047300000000302612320733017026303 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com Greg Beam ki7mt@yahoo.com 删除在线账户服务 删除账户

单击顶部菜单栏最右侧的图标,选择系统设置

选择在线账户

From the left windowpane, select the account you wish to remove.

单击窗口右下角的删除账户按钮。

在线账户中删除账户不会对在线账户本身造成任何影响。

单击删除

无需完全删除账户,您可以通过限制服务指定本计算机可访问的服务类型。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-hud-intro.page0000644000373100047300000000401612320733017026250 0ustar langpacklangpack00000000000000 使用 HUD 搜索您使用的程序的菜单 Jeremy Bicha jbicha@ubuntu.com HUD 是什么?

HUDHeads Up Display 是一个基于搜索的菜单快速定位和选择系统,是传统菜单体系的一种进化,最早在 Ubuntu 12.04 LTS 中投入使用。

一些应用程序,比如 Gimp 或 Inkscape 有非常多的菜单项。如果您使用那样的应用程序,您可能记住了菜单项的名字,但是忘记了它们在哪里。

您可以通过搜索框检索的方式快速定位菜单项,比传统菜单体系更为快捷。对于部分无法精确控制鼠标指针的用户来说,HUD 也比传统菜单体系更加方便。

使用 HUD

要使用 HUD 菜单:

按住 Alt 调出 HUD。

开始输入。

当您在候选结果中看到需要使用的选项,只需通过上下方向键进行选定,然后按下 回车 即可,您也可以直接单击搜索结果。

要退出 HUD 菜单,只需再次单击 Alt 键,或单击 Esc 键即可。点击 HUD 菜单之外的任意区域也可以将其关闭。

HUD 跟踪您输入的内容,并且会自动调整搜索结果以让您用起来更加方便。

usr/share/help-langpack/zh_CN/ubuntu-help/color-whatisprofile.page0000644000373100047300000000240712320733017027167 0ustar langpacklangpack00000000000000 色彩配置文件是一个表述色彩空间或设备响应的简单文件。 Richard Hughes richard@hughsie.com 什么是色彩配置文件?

色彩配置文件是一组描述设备(如投影仪)或色彩空间(如 sRGB)特征的数据。

大多数色彩配置文件采用 ICC 配置文件的形式,这是一种带有 .ICC 或 .ICM 文件扩展名的小文件。

色彩配置文件可嵌入图像以指明数据的色域范围。这可以确保用户在不同设备上看到相同颜色。

处理颜色的每一台设备都应具有自己的 ICC 配置文件,实现这一点后,系统即被认定拥有端到端色彩管理工作流程。有了这种工作流程,您就可以确信颜色不会丢失或修改。

usr/share/help-langpack/zh_CN/ubuntu-help/display-lock.page0000644000373100047300000000325512320733017025570 0ustar langpacklangpack00000000000000 防止其他人趁您离开时偷偷使用您的电脑。 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 自动锁定您的屏幕

当您离开您的计算机时,您应锁定屏幕以防止其他人使用您的桌面和访问您的文件。您仍将保持登录状态,所有应用程序都继续运行,但您必须输入密码才能重新使用您的计算机。您可以手动锁定屏幕,但您也可以使屏幕自动锁定。

单击顶部菜单栏最右侧的图标,选择系统设置

选择 亮度 & 锁屏

确保锁定已打开,然后从下方下拉列表中选择超时时间。屏幕将在您停止操作超过该时间后自动锁定。您还可以选择关闭屏幕以在屏幕自动关闭后锁定屏幕。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-menubar-intro.page0000644000373100047300000001240312320733017027120 0ustar langpacklangpack00000000000000 菜单栏是位于屏幕顶端的黑色工具栏。 Ubuntu 文档团队 在菜单栏上管理应用和设置

菜单栏 是位于屏幕顶部的黑色工具栏。包括窗口管理按钮、应用菜单和状态菜单。

窗口管理按钮

窗口管理按钮 是位于窗口左上方的按钮。在最大化时,按钮位于屏幕左上方。您可以通过这些按钮来关闭、最小化、最大化或恢复窗口尺寸。

程序菜单

The app menus are by default located to the right of the window management buttons. Unity hides the app menus and the window management buttons unless you move your mouse pointer to the top left of the screen or press AltF10. This feature enables you to see more of your content at once, which is especially valuable on small screens like netbooks.

If you want, you can change the default behavior, and have your menus attached to the window title bar of respective application instead of the menu bar.

单击菜单栏最右侧的图标,选择系统设置

In the Personal section, click Appearance and choose the Behavior tab.

Under Show the menus for a window, select In the window's title bar.

状态菜单

菜单栏的右侧有多个不同的 状态菜单(有时也被叫做 指示器)。您可以很方便地在这些状态菜单中检查和修改电脑本身和各种程序的状态。

状态菜单名称和功能列表

网络菜单脱机网络图标

连接到有线、无线、手机和 VPN网络。

Input source menu Input source icon

Select keyboard layout/input source, configure input sources.

蓝牙菜单蓝牙图标

通过蓝牙发送或接收文件。如果检测不到蓝牙支持设备,该菜单是不显示的。

消息菜单消息图标

轻松启动消息程序并接收消息通知,这类应用程序包括电子邮件、社交网络和网络聊天。

电池菜单电池图标

查看您笔记本电脑的电池充电状态。如果检测不到电池,该菜单是隐藏不显示的。

声音菜单音量图标

设置音量、配置声音设置和控制媒体播放器,如 Rythmbox

时钟

查看当前时间和日期。Evolution 日历 中的日程项目也会显示在这里。

系统菜单“Power cog”图标

查看计算机的详细信息、本帮助指南和 系统设置。切换用户、锁屏、注销、挂起、重启或关闭计算机。

一些图标由指示器菜单根据应用程序状态更改。

其他程序,如 TomboyTransmission 也可将指示器菜单添加到面板。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wrongnetwork.page0000644000373100047300000000277512320733017026535 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Phil Bull philbull@gmail.com 编辑您的连接设置并移除不需要的连接选项。 我的电脑连接到了错误的无线网络

您打开计算机或将其移至其他所在地时,计算机将尝试自动连接到您以前连接过的无线网络。如果它每次都试图连接到错误的网络,则请执行以下操作:

单击顶部面板中的网络菜单,然后单击编辑连接

转至无线选项卡并查找不想让其保持连接的网络。

单击选定该网络并单击删除。您的计算机将不再尝试连接到该网络。

如果您稍后想要连接到刚删除的网络,则只需从您单击顶部面板上网络菜单时出现的无线网络列表中选择它即可,和连接到任何其他无线网络步骤一致。

usr/share/help-langpack/zh_CN/ubuntu-help/clock-calendar.page0000644000373100047300000000446712320733017026045 0ustar langpacklangpack00000000000000 在屏幕顶部的日历上显示您的约会。 GNOME 文档项目 gnome-doc-list@gnome.org Michael Hill mdhillca@gmail.com 日历约会

如果您使用名为 Evolution 的邮件和日历应用程序,则可通过单击面板上的时钟,管理您的日历约会。

如果您已安装 Evolution,单击顶栏的时钟,然后单击添加事件即可开始添加约会。约会添加后,当您单击时钟时,即会显示在日历下方。

要快速转到完整的 Evolution 日历,单击时钟,然后单击显示当日日期的第一行。

这仅在您已拥有 Evolution 帐户时有效。否则,会出现一个窗口,显示添加首个帐户需要的步骤。

关闭 Evolution 日历集成

如果您喜欢,您还可以关闭该功能。

单击时钟,然后选择时间和日期设置

现在,转到时钟标签页。

取消选中 Evolution 日历中即将到来的事件

usr/share/help-langpack/zh_CN/ubuntu-help/color-whyimportant.page0000644000373100047300000000623712320733017027061 0ustar langpacklangpack00000000000000 色彩管理对设计师、摄像师和艺术家非常重要。 Richard Hughes richard@hughsie.com 色彩管理为何非常重要?

色彩管理是使用输入设备捕获颜色、在屏幕上显示颜色,然后全部打印,同时在每个介质上维持准确的颜色和颜色范围的过程。

冬季霜冻天气里的一只鸟的照片也许能够很好地说明色彩管理的必要性。

相机取景器中看到的站在结满冰霜的墙壁上的鸟

典型地显示出蓝色通道过饱和,使图像看起来很冷。

这是用户在典型的商务笔记本电脑屏幕上看到的画面

注意为何白色不是“白纸白”,而黑眼珠现在是泥褐色。

这是在用一般喷墨打印机打印后用户看到的画面

这里的基本问题是每台设备能够处理不同的颜色范围。因此,虽然您可能能够拍摄一张铁蓝色的照片,但大多数打印机却无法将其重现出来。

大多数图像设备以 RGB(红、绿、蓝)捕获图像,然后必须转换为 CMYK(青、洋红、黄和黑)来打印。另一个问题是无法获得白色油墨,因此白色只能与白纸的颜色一样。

再一个问题是单位。不指定测量颜色的量度标准,我们就不知道 100% 红是近红外还是打印机上最深的红色油墨。您的显示器上的 50% 红可能在我的显示器上就会显示为约 62%。这就像告诉一个人您刚刚行驶了 7 个单位的距离,而没有单位您就不知道是 7 千米还是 7 米。

对于颜色,我们使用色域作为单位。色域实质上是可以重现的颜色范围。设备(如 DSLR 摄像机)可能具有很大的色域,能够捕获日落的所有颜色,但投影仪的色域却很小,所有颜色将看起来像“褪了色”。

在某些情况下,我们可以通过改变我们发送给设备的数据来校正设备响应,但在其他不能进行校正的情况下(您无法打印铁蓝色),我们需要向用户展示结果会是什么样子。

对于照片,使用彩色设备的全色调范围是有道理的,能够实现颜色的平滑改变。对于其它图形,您可能想要使颜色完全匹配,如果您要尝试打印带 Red Hat 标识的定制马克杯,它就必须是准确的 Red Hat 红,这一点非常重要。

usr/share/help-langpack/zh_CN/ubuntu-help/files-disc-write.page0000644000373100047300000000611512320733017026345 0ustar langpacklangpack00000000000000 Michael Hill mdhillca@gmail.com 使用 CD/DVD 刻录机将文件和文档刻入空白 CD 或 DVD。 将文件写入 CD 或 DVD

通过使用 CD/DVD 创建器 可以将文件刻入空白磁盘,方便文件传输到其他计算机或进行备份。要将文件写入 CD 或 DVD:

将一张空白磁盘放入光驱。

在出现的空白 CD/DVD-R 磁盘窗口中,选择 CD/DVD 创建器,然后单击确定CD/DVD 创建器文件夹窗口随即打开。

(您也可以在文件管理器侧边栏中单击空白 CD/DVD-R 磁盘(在设备部分中))。

磁盘名称字段中,输入磁盘的名称。

将所需文件拖入或复制到该窗口中。

单击写入到光盘

选择要写入的磁盘中,选择该空白磁盘。

(您也可以选择镜像文件。这会将文件放入光盘镜像,光盘镜像将保存在您的计算机上。您可以稍后再将该光盘镜像刻录到空白磁盘上。)

如果您想要调整刻录速度、临时文件的位置以及其他选项,请单击属性。一般使用默认选项就可以了。

单击刻录按钮开始录制。

如果选择刻录多个副本,会提示您插入其他磁盘。

磁盘刻录完成后,将自动弹出。选择制作更多副本关闭以退出。

对于更高级的 CD/DVD 刻录项目,请试用 Brasero 光盘刻录器

当使用 Brasero 需要帮助时,请阅读用户指南。

如果未能成功进行光盘刻录

有时光盘可能无法正确刻录,此时当您将其插入计算机时,将无法看到您写入光盘的文件。

在这种情况下,请使用较低的刻录速度,如 12x 而不是 48x,重新尝试刻录一次。以较低的速度刻录更为可靠。您可以通过单击 CD/DVD 创建器中的属性按钮来选择速度。

usr/share/help-langpack/zh_CN/ubuntu-help/files-select.page0000644000373100047300000000371312320733017025553 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org CtrlS 键可选择多个具有相似名称的文件。 对文件进行模糊搜索

您可以对文件进行模糊搜索。按 CtrlS 打开选择匹配的项目窗口。输入一个带有通配符的模糊文件名。您可以使用两种通配符:

* 匹配任意数量的任意字符,甚至无字符。

? 仅匹配任意一个字符。

例如:

如果您有一个 ODT 文件、一个 PDF 文件和一个图像,都具有相同的基础名称 Invoice,则可使用模糊搜索

Invoice.* 将三者全部选中。

如果有一些照片的名称类似于 Vacation-001.jpgVacation-002.jpgVacation-003.jpg,则可通过以下样式将其全都选中

Vacation-???.jpg

如果有一些与上述照片相同的照片,但已编辑其中的某些照片,并且已将 -edited 添加到编辑过的照片文件名末尾,则可通过以下样式选择编辑过的照片

Vacation-???-edited.jpg

usr/share/help-langpack/zh_CN/ubuntu-help/printing-cancel-job.page0000644000373100047300000000545512320733017027026 0ustar langpacklangpack00000000000000 取消待定的打印任务并将其从队列中移除。 Phil Bull philbull@gmail.com Jim Campbell jwcampbell@gmail.com Jana Svarova jana.svarova@gmail.com 2013 取消、暂停或释放打印作业

可以在打印机设置中取消等待中的打印任务并将其从队列中删除。

取消打印任务

如果错误地启动了一个打印作业,可以取消这个作业以防浪费纸张和墨。

如何取消打印作业:

点击 菜单栏 最右端的图标并选择 系统设置

点击 打印机

点击 打印机 对话框的右边的 显示作业 的按钮。

通过点击“播放-暂停-停止”符号上的停止按钮取消打印。

如果这没有如期望的那样取消打印作业,试试按住打印机上的 取消 按钮。

如果仍不起作用,尤其是在无法取消多页、大量打印任务时,将纸张从打印机纸张供纸盒中取出。这样打印机将意识到没有存放纸张并停止打印。然后,您可以再次尝试取消打印任务,或者关闭打印机再重新打开。

但是,取出纸张之时请务必小心,以免损坏打印机,如果太过用力,也将不能取出纸张。

暂停和释放打印作业

如果要暂停或释放打印作业,可以前往打印机设置的作业对话框然后点击对应按钮。

点击 菜单栏 最右端的图标并选择 系统设置

点击 打印机

点击 打印机 对话框右边的 显示作业,然后根据需要暂停或释放作业。

usr/share/help-langpack/zh_CN/ubuntu-help/net-firewall-on-off.page0000644000373100047300000000533312320733017026747 0ustar langpacklangpack00000000000000 您可以自行控制能够访问 Internet 的程序,这有助于您保护计算机的安全。 Paul W. Frields stickster@gmail.com Jeremy Bicha jbicha@ubuntu.com 启用和阻止防火墙访问

Ubuntu 配有 Uncomplicated Firewall(ufw),但默认情况下不会启动此防火墙。由于 Ubuntu 没有任何开放式网络服务(基本网络架构除外),在默认安装状态下,您并不需要通过防火墙来阻止有恶意企图的连接。

有关如何使用 ufw 的详细信息,请参见联机文档。

开启或关闭防火墙

要打开防火墙,请在终端输入 sudo ufw enable。要关闭 ufw,请输入 sudo ufw disable

允许或阻止特定网络活动

很多程序专用于提供网络服务。例如,您可共享内容或允许其他人远程查看您的桌面。根据您安装的附加程序,您可能需要调整防火墙设置,以允许这些服务正常运行。UfW 附带了很多已预配置好的规则。例如,要允许 SSH 连接,请在终端输入 sudo ufw allow ssh。要阻止 ssh,请输入 sudo ufw block ssh

提供服务的每个程序都使用特定的网络端口。要允许访问该程序的服务,您可能需要允许访问在防火墙上为其分配的端口。要允许连接端口 53,请在终端输入sudo ufw allow 53。要阻止端口 53,请输入 sudo ufw block 53

要检查 ufw 的当前状态,请在终端输入 sudo ufw status

不通过终端使用 ufw

如果您想不使用终端来设置防火墙,也可安装 gufw。要进行安装,请单击此链接。

您可通过在Dash中搜索防火墙配置来启动此程序。防火墙工作时,不需要将此程序保持打开状态。

usr/share/help-langpack/zh_CN/ubuntu-help/whats-new.page0000644000373100047300000000643412320733017025114 0ustar langpacklangpack00000000000000 最新版 Ubuntu 中的新功能。 Jeremy Bicha jbicha@ubuntu.com Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com Ubuntu 14.04 中有哪些新功能?

Ubuntu 14.04 LTS continues the evolution of the Unity interface. Below are a few highlights of changes since Ubuntu 12.04 LTS.

最新改进与特性

The menus of the currently focused application are by default available in Ubuntu's integrated menu bar. However, if you want you can switch to the conventional style and show the app menus in the window title bar of respective application instead (this latter option is new since Ubuntu 13.10).

Support added for scaling Unity on a per-monitor basis, which allows for a better experience on high-DPI displays. Similar scaling support is also available in LibreOffice and Chromium.

Improved look and style including rounded window decorations, a new interface for screen unlock, and other tweaks to the theme.

The integrated Text Entry interface and the related input source status menu are designed to set both keyboard layout and IBus input methods.

A number of improvements have been made to the Dash:

The Dash may now search dozens of different online sources simultaneously. The Internet-based searches may be disabled.

The Dash search results may be filtered by category and source..

Right-clicking on a search result in the Dash will display a full-screen preview with more information.

Use the photos lens to view photos from your computer or from your social networks.

Dash 中添加或移除内容来源,以定制自己的使用体验。

从全新的 好友分类 中查看好友的社交网络消息。

Enter your credentials in Online Accounts to easily set up online integration for the Dash, Empathy, and more.

Keep track of contact information for your friends and colleagues with Contacts, your personal address book.

usr/share/help-langpack/zh_CN/ubuntu-help/files-sort.page0000644000373100047300000000676512320733020025267 0ustar langpacklangpack00000000000000 按名称、大小、类型或更改时间排列文件。 Phil Bull philbull@gmail.com Jim Campbell jwcampbell@gmail.com Michael Hill mdhillca@gmail.com 对文件和文件夹进行排序

您可以使用不同的方式对文件夹中的文件进行排序,例如按照修改日期或文件大小排序。参阅 下常用排序方式列表排列文件,参阅 了解怎样改变默认的排序次序。

您可以排列文件的方式取决于您当前使用的 文件夹视图 。您可以点击工具栏上的列表或图标按钮来更改当前视图。

图标视图

要使用其他方式对文件进行排序,点击工具栏上的 下拉 按钮,然后选择 按名称 按大小 按类型 或者 按修改日期

例如,如果您选择 按名称 排序,文件将会按照名称的字母顺序来排列,参阅 了解其他选项。

您可以通过在下拉菜单中选择 逆序 让文件按相反顺序排列。

列表视图

要按另一顺序排列文件,请单击文件管理器中的某个列标题。例如,单击类型可按文件类型排序。再次单击该列标题即可以倒序排列文件。

在列表视图中,您可以使用更多的属性显示列并排序,点击工具栏上的 下拉 按钮,选择 可见列 并选择您想要显示的属性列。然后您就可以按照这些属性列来排列文件了,参阅 了解可见列的详细信息。

文件排序方式 按名称排序

按文件名以字母顺序排列。

按大小排序

按文件大小(文件占用的磁盘空间)排序。默认情况下会从最小到最大排列。

按类型排序

按文件类型以字母顺序排列。会将同类文件归并到一起,然后按名称排序。

按修改日期排序

按上次更改文件的日期和时间排序。默认情况下会从最旧到最新排列。

usr/share/help-langpack/zh_CN/ubuntu-help/clock-more-info.page0000644000373100047300000000341512320733020026151 0ustar langpacklangpack00000000000000 选择显示其他信息,如日期或星期几。 Ubuntu 文档项目 ubuntu-doc@lists.ubuntu.com 更改在时钟中显示多少信息

默认情况下,Ubuntu 仅在时钟中显示时间。您可以选择对时钟进行设置,以显示更多信息。

点击时钟并选择日期 & 时间设置。切换到 时钟 标签。选择您想要显示的时间和日期选项。

您也可以通过取消选中在菜单栏显示时钟完全关闭时钟。

如果您以后改变了主意,可以通过单击菜单栏右上角的图标并选择系统设置来重新开启时钟。在“系统”部分,单击时间和日期

更改日期格式

您还可以更改时钟的日期格式以与您所在位置的首选标准一致。

单击菜单栏最右侧的图标,选择系统设置

在“个人”部分,单击语言支持

转到区域格式标签页。

在下拉列表中选择您的首选位置。

您需要 注销并重新登录此更改才会生效。

usr/share/help-langpack/zh_CN/ubuntu-help/tips-specialchars.page0000644000373100047300000000526112320733020026604 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com Ubuntu 文档团队 键入在您的键盘上找不到的字符,包括外国字母、数学符号以及杂锦符号。 输入特殊字符

您可输入和查看世界上大多数写入系统的数千种字符,虽然在您的键盘上无法找到它们。此页面列出了一些您可输入特殊字符的不同方式。

输入字符的方法
字符映射表

GNOME 带有的字符映射表应用程序允许您浏览 Unicode 中的所有字符。使用字映射表查找您想要的字符,然后将其复制并粘贴到您需要的位置。

可以在 Dash 中查找 字符映射表。关于字符映射表的更多信息,请查看 字符映射表手册。

码位

您可仅通过字符的码位用键盘输入任何 Unicode 字符。每个字符可由四位的字符码位表示。要找到一个字符的码位,请在字符映射表应用程序中找到该字符,并查看状态栏或字符详情标签页。码位为 U+ 后的四个字符。

要通过其码位键入字符,请按住 CtrlShift,先输入 u 再输入四位码位,最后释放 CtrlShift。如果您经常使用容易地通过其他方法获得的字符,您会发现记住这些字符的码位非常有用,这样您可快速的输入这些字符。

输入源

您可以使您的键盘的行为类似其他语言的键盘,无论键上打印的字母。您甚至可以通过菜单栏上的一个图标在不同的输入源间切换。要了解如何做,请查看

usr/share/help-langpack/zh_CN/ubuntu-help/power-suspendfail.page0000644000373100047300000000725412320733020026641 0ustar langpacklangpack00000000000000 有些计算机硬件会造成挂起/休眠问题。 GNOME 文档项目 gnome-doc-list@gnome.org Ekaterina Gerasimova kittykat3756@gmail.com 为什么计算机在我将其挂起后无法重新打开?

如果您将计算机置于挂起 或 休眠 模式,然后尝试唤醒它或重新打开,您可能发现它无法达到预期的工作效果。这可能是因为您的硬件不完全支持挂起/休眠模式。

我的计算机已挂起且无法唤醒

如果将计算机置于挂起状态,然后按任一键或单击鼠标,则它应该能被唤醒并显示输入密码界面。如果未出现此现象,则尝试按电源按钮(无需长按,只按一下即可)。

如果这仍不能解决问题,则确保计算机的显示器已打开并尝试再次按键盘上的键。

如果仍不起作用,则最后一种方法是通过按住电源按钮 5 到10 秒钟关闭计算机。您这样操作会丢失未保存的工作。但是,您应该可以再次打开计算机。

如果这种情况在计算机每次睡眠时都发生,则可能是您的硬件无法支持挂起功能。

如果您的电脑没有其他的电源供给(如一个可用的电池),它将关闭。

再次打开计算机时无法恢复应用程序/已打开文件的状态。

如果将您的计算机置于休眠后再次打开时无法恢复应用程序/已打开文件的状态,则可能之前未能正常休眠。有时出现此情况是偶然现象且计算机在您下次操作又可以正常休眠和唤醒。而有时则是因为您安装了需要重启计算机的软件更新;在这种情况下,计算机可能已自动关机而不是休眠。

计算机无法休眠,还有可能是因为硬件支持不完整。例如,这可能是因为硬件的 Linux 驱动程序存在问题。您可以通过再次休眠进行测试并查看第二次是否能够正常工作。如果不能,则可能是您的计算机驱动程序存在问题。

我的无线连接(或其他硬件)无法在唤醒计算机时工作。

如果您使计算机挂起或休眠,然后将其恢复,可能会发现网络连接、鼠标或其他一些设备不能正常工作。这可能是因为这些设备地驱动不能正确支持挂起或休眠。这是 驱动的问题,不是设备本身的问题。

如果设备有电源开关,则尝试将其关闭,然后再打开。多数情况下,设备将能够再次开始工作。如果它通过 USB 电缆或类似设备连接,则拔出设备,然后再插入并查看其是否可以工作。

如果您无法关闭/拔出设备,或它依然无法工作,您可能需要为该设备重新启动计算机以使其再次开始工作。

usr/share/help-langpack/zh_CN/ubuntu-help/documents-formats.page0000644000373100047300000000152112320733020026633 0ustar langpacklangpack00000000000000 Michael Hill mdhill@src.gnome.org 2012 文档显示了一些流行的文件类型。 支持的格式

文档显示了 PDF 、DVI、XPS、PostScript 和文件浏览器(Evince), Microsoft Office LibreOffice 以及 Google Docs 支持的格式。

usr/share/help-langpack/zh_CN/ubuntu-help/music-cantplay-drm.page0000644000373100047300000000363412320733020026701 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org 可能未安装那种文件格式的支持功能,也可能是歌曲 "受版权保护"。 不能播放从在线音乐商店购买的歌曲

如果从在线商店下载了音乐,则可能会发现不能在计算机中播放下载的音乐,尤其是对于在 Windows 或 Mac OS 计算机中购买音乐后复制过来的情况。

这可能是因为计算机未识别出音乐的格式。要能够播放歌曲,必须已经安装相应音频格式的支持功能,例如,如果要播放 MP3 文件,则必须已经安装 MP3 支持功能。尝试播放歌曲时,如果不支持特定音频格式,则会显示一条消息,说明要如此操作。对于为那种格式安装支持功能的方法,该消息中也会有说明,这样就能播放歌曲了。

如果确实已为要播放的歌曲的音频格式安装支持功能,但还是不能播放所要播放的歌曲,则所要播放的歌曲可能受版权保护(也称为有 DRM 限制)。DRM 是一种限制歌曲播放者和设备的方法。这要受控于售出歌曲的公司而不是用户。如果某个音乐文件受到 DRM 限制,则多半不能播放该音乐文件,一般都必须用供应商的专用软件播放有 DRM 限制的文件,但这种软件往往不受 Linux 支持。

您可在电子前沿基金会中详细了解 DRM。

usr/share/help-langpack/zh_CN/ubuntu-help/files-open.page0000644000373100047300000000616012320733020025226 0ustar langpacklangpack00000000000000 使用文件类型默认应用程序以外的应用程序打开文件。您也可以更改默认设置。 Cristopher Thomas crisnoh@gmail.com Shaun McCance shaunm@gnome.org 使用其他应用程序打开文件

文件管理器中双击某个文件时,该文件会使用该文件类型的默认应用程序打开。您可以使用另一不同的应用程序将其打开,在线搜索应用程序,或为同一类型的所有文件设置默认应用程序。

要使用默认应用程序以外的应用程序打开某个文件,右击该文件,从菜单顶部选择您想要的应用程序。如果没有看到您想要的应用程序,单击使用其他应用程序打开。默认情况下,文件管理器仅显示它认为可以处理该文件的应用程序。要浏览您计算机上的所有应用程序,请单击显示其他应用程序

如果您仍然找不到您想要的应用程序,您可以通过单击在线寻找应用程序来搜索更多应用程序。文件管理器将在线搜索包含已知能够处理该类型文件的软件包。

更改默认应用程序

您可以更改用来打开给定类型文件的默认应用程序。这将使您能够在双击打开某个文件时打开您首选的应用程序。例如,在您双击 MP3 文件时,您可能希望打开您常用的音乐播放器。

选择您想要更改其默认打开方式的一个文件。例如,要更改用来打开 MP3 文件的应用程序,请选择一个 .mp3 文件。

右击该文件,然后选择属性

选择打开方式选项卡。

选择您想要的应用程序,然后单击设为默认。默认情况下,文件管理器仅显示它认为可以处理该文件的应用程序。要浏览您计算机上的所有应用程序,请单击显示其他应用程序

如果其他应用程序中包含您有时想要使用的某个应用程序,但又不想将其设为默认,请选中该应用程序,然后单击添加。这会将该程序添加到推荐应用程序。之后您将能够通过右击文件并从列表中选择该应用程序来使用它。

这样的操作将为同一类型的所有文件更改默认应用程序。

usr/share/help-langpack/zh_CN/ubuntu-help/documents-info.page0000644000373100047300000000372412320733020026122 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2012 Michael Hill mdhillca@gmail.com 2012 Greg Beam ki7mt@yahoo.com 2014 查看文档的名称、位置、修改日期以及类型。 找到有关文档的信息

创建文档时,它带有元数据文档应用显示每个文档的元数据:

标题:文档的名称,可编辑;

来源:包含文档的文件夹路径;

修改日期;

类型:文档的文件格式。

查看文档的属性:

点击选中按钮,切换到选择模式。

选择一个文档。

点击按钮栏右端的属性按钮。

某些类型的文件(如 PDF 文件)可以使用密码保护,防止文件的元数据或内容被访问。

文件目前还没有提供任何机制向文件添加隐私。您可以用创建文档的应用程序添加隐私信息(如 LibreOffice Adobe Acrobat )。

usr/share/help-langpack/zh_CN/ubuntu-help/backup-where.page0000644000373100047300000000407012320733020025540 0ustar langpacklangpack00000000000000 有关在何处存储备份以及使用何种存储设备的建议。 c GNOME 文档项目 gnome-doc-list@gnome.org Tiffany Antopolski tiffany.antopolski@gmail.com 在何处存储备份

您应该将文件的备份副本存储在独立于您计算机的地方 - 例如,外部硬盘驱动器。这样,如果计算机出故障,备份仍可保持完好无损。为实现最大安全性,您不应与计算机在同一建筑内保存备份。如果发生火灾或偷盗,两份数据保存在一起就可能都会丢失。

选择合适的备份介质同样非常重要,最好在有足够空间放下所有备份文件的硬盘上保存您的备份。

本地和远程存储选项

U盘(容量较小)

可写入光盘(容量较低/中等)

外置硬盘驱动器(容量通常较大)

内置磁盘驱动器(容量较大)

网络驱动器(容量较大)

文件/备份服务器(容量较大)

Online backup service (Amazon S3, for example; capacity depends on price)

某些选项具备系统完整备份,也就是备份系统中所有文件的能力。

usr/share/help-langpack/zh_CN/ubuntu-help/files-rename.page0000644000373100047300000001014112320733020025526 0ustar langpacklangpack00000000000000 更改文件或文件夹名称。 GNOME 文档项目 gnome-doc-list@gnome.org Shaun McCance shaunm@gnome.org Jim Campbell jwcampbell@gmail.com Michael Hill mdhillca@gmail.com 重命名文件或文件夹

您可以使用文件管理器来为文件和文件夹进行重命名。

重命名文件或文件夹

右击文件或文件夹,然后选择重命名,或选择文件,然后按 F2 键。

输入新名称,然后按回车键。

您还可以从属性窗口重命名文件。

当您重命名文件时,仅会选择文件名称的第一部分,而不会选择文件扩展名("." 之后的部分)。扩展名通常指示文件是什么类型(如,file.pdf 是 PDF 文档),您一般不需要更改它。如果您也需要更改扩展名,请用鼠标将其选中,或按 CtrlA 选中整个文件名称。

如果您重命名了错误的文件或者命名您的文件不当,您可以撤销重命名。立即点击工具栏上的齿轮按钮,选择 撤销 即可恢复原来的文件名。

文件名称的有效字符

在文件名称中,您可以使用除 / (斜杠)字符以外的任何字符。不过有些设备,使用的文件系统对文件名称有更多限制。例如,USB 闪存驱动器常常利用 FAT32 文件系统格式化。在这些设备上,或者如果您想要与使用另一操作系统的人共享文件,您应避免以下字符:|\?*<":>/

如果您使用 . 作为第一个字符为文件命名,该文件将被隐藏。

常见问题 该名称已被使用

在同一文件夹中不能有两个文件或文件夹使用同一名称。如果您尝试将文件重命名为您所在文件夹中已存在的名称,文件管理器将不允许该操作。使用不同的名称。

文件和文件夹名称区分大小写。例如,File.txtfile.txt 是两个不同的名称。需要注意的是这种做法可能会造成您日后识别困难,因此并不推荐使用。

文件名称过长

在一些文件系统中,文件名不能超过255个字符,这255个字符数限制同时存在于文件名和文件路径中(例如:/home/wanda/Documents/work/business-proposals/… ),因此您应该尽可能避免过长的文件和文件夹名。

重命名选项变灰

如果重命名变灰,您将无权重命名文件。一般,如果您没有重命名文件的正确权限,您就不应重命名文件。请参阅

usr/share/help-langpack/zh_CN/ubuntu-help/addremove-sources.page0000644000373100047300000000564512320733020026623 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 添加其他软件仓库来扩展 Ubuntu 用于安装和升级的软件来源。 添加其他软件仓库

软件可从第三方来源以及默认 Ubuntu 软件库获得。如果您想要安装来自第三方软件库的软件,您必须将其添加到 Ubuntu 的可用软件仓库列表。

请务必确保您添加的软件源的安全性。

第三方软件库未经过 Ubuntu 开发者检查安全性和可靠性,可能包含对您的计算机有害的软件。

安装其他软件仓库

单击启动器中的 Ubuntu 软件中心图标,或在 Dash 搜索栏中搜索“Ubuntu 软件中心”。

软件中心启动之后,单击编辑 软件源

您会被要求输入密码。输完密码后,转到其他软件标签页。

单击添加,然后输入软件仓库的 APT 行。该行应可从软件库的网站获得,看起来类似于:

deb http://archive.ubuntu.com/ubuntu/ trusty main

单击添加源,然后关闭“软件源”窗口。Ubuntu 软件中心之后会检查您的软件来源是否有新的更新。

激活 Canonical 合作伙伴软件仓库

Canonical 合作伙伴仓库提供一些免费的专有应用程序,但这些应用程序是闭源的。其中包括 SkypeAdobe ReaderAdobe Flash Plugin 等软件。此库中的软件将出现在 Ubuntu 软件中心搜索结果中,但在该库启用后才能安装。

要启用该库,请遵照上述步骤打开其他软件选项卡(在软件源中)。如果您在列表中看到 Canonical 合作伙伴仓库,请确保将其选中, 然后关闭“软件源”窗口。如果没有看到该库,单击添加,然后输入:

deb http://archive.canonical.com/ubuntu trusty partner

单击添加源,然后关闭“软件源”窗口。等待 Ubuntu 软件中心下载软件仓库信息。

usr/share/help-langpack/zh_CN/ubuntu-help/music-player-ipodtransfer.page0000644000373100047300000000311412320733020030271 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org 先用媒体播放器复制歌曲,然后再安全地拔出 iPod。 将歌曲复制到 iPod 中之后不显示

当您把 iPod 插入您的电脑时,它将显示在您的音乐播放器应用程序和文件管理器(启动器 中的 文件 管理器程序)中。

您还必须等到向 iPod 中复制歌曲的操作结束,然后再拔出 iPod。请先确保已选择 安全移除,然后再拔出 iPod。这样可以确保所有歌曲都已妥善地复制过来。

歌曲没有在您的 iPod 出现更深层次的原因可能是,您使用的音乐播放器不支持音乐文件的格式转换。如果您复制了一首格式不被您的 iPod 支持的歌曲(例如,一个 .oga 文件),音乐播放器将尝试将其转换为 iPod 可以识别的格式,比如 MP3 格式。如果相应的转换软件(或称编码解码器或者编码器)没有安装,音乐播放器将无法完成转换,也就无法复制这首歌曲。在软件安装器中查找下相应的编码解码器。

usr/share/help-langpack/zh_CN/ubuntu-help/net-antivirus.page0000644000373100047300000000324512320733020025776 0ustar langpacklangpack00000000000000 Linux 病毒很少,因此很可能不需要防病毒软件。 GNOME 文档项目 gnome-doc-list@gnome.org Ubuntu 文档团队 是否需要防病毒软件?

如果惯于使用 Windows 或 Mac OS,则也很可能惯于始终都在运行防病毒软件。防病毒软件在后台运行,不断检查计可能会设法侵入计算机的计算机病毒。

适用于 Linux 的防病毒软件不存在,但很可能不需要使用这种防病毒软件。可影响 Linux 的病毒仍很罕见。有的人认为这是因为 Linux 的使用范围不如其他操作系统广泛,因此没人针对 Linux 写病毒。有的人认为 Linux 本质上更为安全,而且可由病毒编写者利用的安全问题很快就会得到解决。

无论原因如何,目前 Linux 病毒都少得令人无须担心。

如果要添加一重安全措施,或者要检查在自己和使用 Windows 和 Mac OS 的人之间传送的文件中的病毒,则还是可以安装防病毒软件。请查看 Ubuntu 软件中心,其中有一些应用程序可用。

usr/share/help-langpack/zh_CN/ubuntu-help/net-security.page0000644000373100047300000000124212320733020025614 0ustar langpacklangpack00000000000000 杀毒软件 和 基本防火墙… Ubuntu 文档团队 在网络浏览时保持安全 usr/share/help-langpack/zh_CN/ubuntu-help/prefs.page0000644000373100047300000000147712320733020024312 0ustar langpacklangpack00000000000000 设置 Shaun McCance shaunm@gnome.org 键盘,鼠标,显示,语言,用户账户… 用户 & 系统设置 usr/share/help-langpack/zh_CN/ubuntu-help/files-browse.page0000644000373100047300000000604712320733020025572 0ustar langpacklangpack00000000000000 利用文件管理器管理和组织文件。 Tiffany Antopolski tiffany.antopolski@gmail.com Shaun McCance shaunm@gnome.org Phil Bull philbull@gmail.com Michael Hill mdhillca@gmail.com Ubuntu 文档团队 浏览文件和文件夹

文件文件管理器浏览和组织您电脑上的文件。您也可以使用它来管理存储设备上(外置硬盘)、文件服务器和网络共享上的文件。

To start the file manager, open Files in the Launcher. You can also search for files and folders with the Dash in the same way you would search for applications. They will appear under the heading Files and Folders.

查看文件夹内容。

在文件管理器中,双击任何文件夹查看其内容。双击文件,使用文件的默认应用程序打开它。您也可以右键点击一个文件夹,在新标签页或新窗口中打开它。

文件和文件夹列表上方的路径栏显示您正在查看的文件夹,其中包括最高可至主目录、可移动设备根目录或文件系统根目录的父文件夹。单击路径栏中的父文件夹可转到该文件夹。右击路径栏中的任一文件夹可在新标签或窗口中将其打开,对其进行复制或移动,或查看其属性信息。

如果您想快速跳到您正在浏览的文件夹中的文件,键入文件名称。一个搜索框将出现在窗口的顶部,符合您搜索的第一个文件将被高亮显示。按向下箭头键,或滚动鼠标,可跳到符合您的搜索下一个文件。

您可以快速地从侧边栏访问常用的位置。如果您看不到侧边栏,点击工具栏上的向下按钮,选择显示侧边栏。您可以将经常使用的文件夹添加书签,它们将出现在侧边栏。可以使用书签菜单,或者将文件夹托放到侧边栏。

usr/share/help-langpack/zh_CN/ubuntu-help/files-removedrive.page0000644000373100047300000000517012320733020026614 0ustar langpacklangpack00000000000000 Jim Campbell jwcampbell@gmail.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 2012 弹出或卸载 USB 闪存驱动器、CD、DVD 或其他设备。 安全删除外部设备

当您使用外部存储设备(如 USB 闪存驱动器)时,您应在将其拔下之前安全删除它们。如果您只是拔下设备,就会遇到拔下时应用程序仍在使用设备的危险,这会造成您的部分文件丢失或受损。当您使用 CD 或 DVD 等光盘时,您可以使用相同步骤将光盘从计算机中弹出。

格式化可移动磁盘

打开文件管理器。

在侧边栏找到设备。它的名称旁边应有一个小的弹出图标。单击弹出图标以安全删除或弹出设备。

此外,您可以用右键单击侧边栏上的设备名并选择 弹出

安全删除外部设备

如果您存储在设备上的任何文件已在任何应用程序中打开,您将无法安全删除该设备。您将会看到提示窗口,提示您 “卷被占用”,并列出设备上所有打开的文件。当您关闭设备上的所有文件后,设备将自动安全删除(以便您拔下或弹出)。

如果您无法关闭其中一个文件,例如使用该文件的应用程序已被锁定,您可以在卷被占用窗口中右击该文件,然后选择结束进程。这将强制整个被锁定的应用程序关闭,从而可能会关闭使用该应用程序打开的其他文件。

您还可以选择 强制弹出 来移除设备,无需关闭打开的文件,但这可能会导致打开的这些程序文件出错。

usr/share/help-langpack/zh_CN/ubuntu-help/net-slow.page0000644000373100047300000000554712320733020024745 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com 其他因素包括下载困难,比如您的连接质量较差,或者处于网络使用的高峰时段。 Internet 连接速度很慢

有很多原因可能导致网络连接的速度变慢。

尝试关闭 Web 浏览器再重新打开,从Internet 断开再重新连接。(这样做可以重置很多可能导致 Internet 变慢的因素。)

网络繁忙

Internet 服务提供商通常将 Internet 连接设置成在多个家庭之间共享。即使您是通过自己的电话线或宽带连接单独连接,但电话交换机上与 Internet 剩余部分的连接实际上可能处于多人共享状态。如果是这种情况,并且您的很多邻居都在同时使用 Internet,则您会发现网速变慢。当您的邻居可能也在访问 Internet(例如在晚上)时,您最有可能遇到这种情况。

一次下载很多内容

如果您或使用 Internet 连接的其他人一次下载多个文件或者在观看视频,则 Internet 连接可能达不到理想的速度。在此情况下,您会感到网速较慢。

不可靠的连接

有些 Internet 连接不可靠,特别是临时连接或高需求区域的连接。如果您流量密集的咖啡厅或会议中心,Internet 连接可能非常繁忙或不可靠。

弱无线连接信号

如果通过无线 (wifi) 连接到 Internet,请检查顶部面板中的网络菜单,确定无线信号是否良好。如果信号不好,则Internet 的速度可能较慢,因为您的信号并不强。

使用的移动网络连接速度较慢

如果您使用移动网络连接,并发现速度较慢,则您可能进入了接收信号较弱的区域。出现此情况时,Internet 连接将自动从快速“移动宽带”连接(如 3G)切换到更可靠但较慢的连接(如 GPRS)。

Web 浏览器有问题

有时 Web 浏览器会遇到导致速度变慢的问题。导致这种情况的原因有很多,例如,您访问了浏览器不能顺利加载的网站,或者您打开浏览器的时间太长。尝试关闭浏览器的所有窗口,然后重新打开浏览器,查看前后有无差异。

usr/share/help-langpack/zh_CN/ubuntu-help/hardware-driver-proprietary.page0000644000373100047300000000305312320733020030627 0ustar langpacklangpack00000000000000 专有驱动程序不免费提供,或者不是开源软件。 Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 什么是专有驱动程序?

与计算机相连的大多设备(硬件)都应该能在 Ubuntu 中正常运行。这些设备很可能都有开源驱动程序,这意味着 Ubuntu 开发人员能修改这些驱动程序,其问题也能得到解决。

某些硬件没有开源驱动程序,通常是因为硬件制造商未发布其硬件的详细信息,这就不可能创建开源驱动程序了。这些设备可能功能受限,也可能根本就不能运行。

如果某种设备附带专有驱动程序,则可安装其专有驱动程序,以使设备可以正常运行或使用某些高级特性。例如,通过为某些显卡安装专有驱动,可使用更绚丽的视觉效果。

对许多计算机都根本无须使用专有驱动,因为开源驱动程序可以全面支持相应硬件。

大多专有驱动的问题都不能由 Ubuntu 开发人员解决。

usr/share/help-langpack/zh_CN/ubuntu-help/power-lowpower.page0000644000373100047300000000357412320733021026204 0ustar langpacklangpack00000000000000 让电池完全放电对计算机极为不利。 GNOME 文档项目 gnome-doc-list@gnome.org Ekaterina Gerasimova kittykat3756@gmail.com 为什么计算机在电池电量降至 10% 时会关闭/挂起?

计算机将在电池电量过低时自动挂起(即,它将保存所有打开的文档和应用程序,然后关闭)。这样可确保电池不会完全放电,因为完全放电会损坏电池。如果电池电量正好耗尽,则计算机将没有足够时间以正常关机。

You can change what happens when the battery level gets too low. First, click the battery menu in the menu bar and select Power Settings. At the 'When power is critically low' setting, you can choose for the computer to suspend, hibernate, or shut down. If you choose shut down, your applications and documents will not be saved when the computer turns off.

有些计算机的挂起模式存在问题,您再次打开计算机时可能无法恢复已经开启的应用程序和文档。在此情况下,如果您在计算机挂起之前未进行保存,则可能会丢失一些工作。遇到这种情况时,您可以修复休眠问题。

usr/share/help-langpack/zh_CN/ubuntu-help/backup-why.page0000644000373100047300000000227412320733021025242 0ustar langpacklangpack00000000000000 关于文件备份的信息和指导 备份 GNOME 文档项目 gnome-doc-list@gnome.org 备份您的重要文件

备份文件仅仅意味着备份您的文件以策安全。备份是为了防止原始文件由于丢失或损坏而变得无法使用。发生丢失时可以使用这些副本来恢复原始数据。副本应存储在与原始文件不同的设备上。例如,您可以使用 USB 驱动器、外部硬盘驱动器、光盘,甚至异地服务。

备份文件的最佳方式就是定期备份,并且异地、加密(若可能)保存副本。

usr/share/help-langpack/zh_CN/ubuntu-help/printing-inklevel.page0000644000373100047300000000313012320733021026621 0ustar langpacklangpack00000000000000 查看打印机墨盒中剩余油墨和彩墨的容量。 Anita Reitere nitalynx@gmail.com 如何查看打印机中的剩余油墨和彩墨?

如何查看打印机中的剩余油墨和彩墨取决于您的打印机型号和制造商及计算机上安装的驱动程序和应用程序。

有些打印机上有屏幕显示油墨量和其他信息。

大多数 HP 打印机的驱动程序和状态工具均由 HP Linux 成像和打印 (HPLIP) 项目提供。其他制造商也可能提供具有类似功能的专有驱动程序。

此外,您还可以安装应用程序以检查或监控油墨量。Inkblot 程序可以显示很多 HP、Epson 和 Canon 打印机的油墨状态。您可以查看打印机是否处于受支持的型号列表中。用于 Epson 和一些其他打印机的其他油墨量应用程序是 mktink

Linux 对有些打印机的支持不太好,而其他一些打印机本身就无法显示剩余油墨量。

usr/share/help-langpack/zh_CN/ubuntu-help/display-dual-monitors-desktop.page0000644000373100047300000000376312320733021031103 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com Michael Hill mdhillca@gmail.com 2013 在您的台式计算机上设置双显示器。 连接额外的显示器

设置第二个显示器与您的台式计算机显示器连接。如果您的系统不能立即识别它,或者您想调整设置:

Click your name on the menu bar and select System Settings.

取消选中镜像显示

单击您需要开启或关闭的显示器,并调整其 开启/关闭状态。

The monitor with the menu bar is the main monitor. To change which monitor is "main", click on the top bar and drag it over to the monitor you want to set as the "main" monitor.

如果您想要调整显示器的相对位置,单击对应显示器并拖动即可。

如果您想让两个显示器显示同样的内容,勾上镜像显示选项即可。

当您对设置满意时,点击 应用,然后再点击 保留此设置

To close the Displays click on the x in the top corner.

usr/share/help-langpack/zh_CN/ubuntu-help/files-autorun.page0000644000373100047300000001172012320733021025761 0ustar langpacklangpack00000000000000 为 CD 和 DVD、摄像机、音频播放器及其他设备和介质设定自动运行的应用程序。 GNOME 文档项目 gnome-doc-list@gnome.org Michael Hill mdhillca@gmail.com 当您插入某个设备时自动打开应用程序

当您插入某个设备时,您可以自动启动特定的应用程序。例如,当您插入数码相机时,您可能希望启动您的照片管理器。您也可以将其关闭,这样在您插入对应设备时系统将不自动进行任何操作。

要决定您插入各种设备时应运行哪些应用程序:

单击顶部菜单栏最右侧的图标,选择系统设置

依次单击详细信息可移动介质

找到您想要的设备或介质类型,然后选择适合该介质类型的应用程序或操作。参见下面不同类型的设备和介质的描述。

除了启动应用程序,您还可以进行设置,以便该设备可以在文件管理器中显示。当这种情况发生时,您会被要求做什么,或者什么也不会自动发生。

软件选项与其他略有不同 - 如果计算机检测到您插入的磁盘上有软件,它可以尝试自动运行该软件。如果您的 CD 上有一个应用程序,并且您希望它在 CD 被插入时自动启动 (例如全屏幻灯片程序等),该功能将非常有用。

如果您在列表中没有看到您想要更改的设备或介质类型(如蓝光光盘或电子书阅读器),单击其他介质查看更详细的设备列表。

如果无论您插入任何设备,您都不希望自动打开任何应用程序,请勾选“可移动介质”窗口底部的介质插入时从不提示或启动程序

设备和介质的类型 音频光盘

选择您最常用的音乐应用程序或 CD 音频提取器来处理音频 CDs。如果您使用音频 DVDs(DVD-A),选择在其他介质中如何打开他们。如果用文件管理器打开​​音频光盘,该曲目将显示为WAV文件,您可以在任何音频播放器中播放。

视频光盘

选择您最常用的视频应用程序来处理视频 DVDs。使用其他介质按钮设置为蓝光应用,高清 DVD,影音光碟(VCD)和超级视频 CD(SVCD)。如果 DVDs 视频光盘或其他视频光盘不正常工作时,请参阅

空白光盘

使用其他介质按钮为空白 CD、空白 DVD 、空白蓝光光盘和空白高清 DVD 选择一个磁盘写入应用。

照片和相机

当您插入数码相机或者摄像头介质卡,如 CF、SD、MMC 或 MS 卡时,从照片下拉栏选择一个照片管理应用程序来运行。也可以使用文件管理器浏览照片。

根据其他介质,您可以选择一个应用程序来打开柯达照片 CD。这些是常规数据 CDs 与 JPEG 图像存放在名为照片的文件夹中。

音乐播放器

选择一个应用程序来管理您便携式音乐播放器中的音乐库,或者使用文件管理器来管理您的文件。

电子书阅读器

使用其他媒体按钮,选择应用程序管理您电子书阅读器上的书籍,或者使用文件管理器管理您的文件。

软件

当介质插入计算机时,光盘和包含软件的可移动介质应该自动运行。当带有自动运行软件的介质插入时,用软件选项来控制该做什么。在软件运行前总是会提示您进行确认。

永远不要运行介质中您不信任的软件。

usr/share/help-langpack/zh_CN/ubuntu-help/mouse-middleclick.page0000644000373100047300000000630312320733021026557 0ustar langpacklangpack00000000000000 用中键执行打开应用程序、粘贴文本、打开选项卡等操作。 Tiffany Antopolski tiffany.antopolski@gmail.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 中键单击

许多鼠标和某些触摸板都有中键。在有滚轮的鼠标上,通常可直接按下滚轮执行中键单击操作。如果鼠标没有中键,则可同时按左右鼠标键执行中键单击操作。

在支持多指点击的触摸板上,可用三个手指同时点击,以执行中键单击操作。必须在触摸板设置中启用触摸板的鼠标点击,才能使上述操作奏效。

许多应用程序都将中键单击作为一个操作快捷键。

例如中键单击粘贴所选文本就是一种常见的操作快捷键。(这有时称为首选内容粘贴。)选中要粘贴的文本,然后转到需要进行粘帖操作的位置,最后单击中键。会将所选文本粘贴到鼠标光标所在的位置。

通过鼠标中键粘贴文本与普通的剪贴板毫无关系。选中文本并不会将其复制到剪贴板中。这种快速粘贴法只能通过鼠标中键执行。

使用滚动条和滑块时,在空白区域单击一下将向对应的方向滚动一定的距离(例如向下滚动一页)。您也可以中键单击空白部分来将滚动条或滑块移动到您按下的位置。

您可以使用中键单击快速打开一个应用程序的新窗口。在左边的 启动器 或者 Dash 中,中键单击应用程序的图标即可。

大多网络浏览器均可用鼠标中键快速打开链接。只须用鼠标中键单击链接,就会在新选项卡中将其打开。但单击 Firefox 网络浏览器中的链接时要小心。在 Firefox 中,如果用中键单击的不是链接,则会尝试以 URL 的形式加载所选文本,效果等同于通过中键单击将其粘贴到位置栏中并按 Enter

在文件管理器中,中键单击有两种作用。如果中键单击文件夹,则会在新选项卡中将其打开。这是在模仿热门网络浏览器的功能。如果中键单击文件,则会打开文件,如同执行的是双击操作。

在某些专用应用程序可用鼠标中键执行其他功能。请搜索应用程序帮助,以了解 中键单击鼠标中键 的更多功能。

usr/share/help-langpack/zh_CN/ubuntu-help/shell-apps-favorites.page0000644000373100047300000000320512320733021027233 0ustar langpacklangpack00000000000000 在启动器上添加、移动或移除常用的程序图标。 GNOME 文档项目 gnome-doc-list@gnome.org Ubuntu 文档项目 ubuntu-doc@list.ubuntu.com 更改哪些程序显示在启动器上

要将一个程序添加到 启动器 以快速访问:

将应用程序的图标从 Dash 拖动到启动器上。

或者在程序运行时,右键单击应用程序图标并选择 锁定到启动器

可以通过将一个图标拖出启动器然后拖回需要的位置来更改启动器上图标的顺序。

要在启动器上移除应用程序图标,在图标上点击右键,然后选择 在启动器上解除锁定

usr/share/help-langpack/zh_CN/ubuntu-help/color-why-calibrate.page0000644000373100047300000000242712320733021027037 0ustar langpacklangpack00000000000000 如果您在意您显示或打印的颜色,校准将非常重要。 Richard Hughes richard@hughsie.com 为何需要自己进行校准?

通用配置文件通常都不好。制造商制造一个新型号时,他们仅仅从生产线抽取几个产品,然后取它们的平均值:

平均配置文件

不同装置的显示面板差异很大,并随着显示时间加长而出现实质变化。对于打印机,情况更为困难,因为仅仅是更换纸张类型或重量就会使特征分析状态无效,使配置文件不准确。

确保您所拥有的配置文件准确的最佳方法是自己进行校准,或请外部公司根据您的确切特征分析状态为您提供配置文件。

usr/share/help-langpack/zh_CN/ubuntu-help/backup-frequency.page0000644000373100047300000000327612320733021026437 0ustar langpacklangpack00000000000000 应该多久备份一次文件以确保数据安全? Tiffany Antopolski tiffany.antopolski@gmail.com GNOME 文档项目 gnome-doc-list@gnome.org 备份频率

多久备份一次取决于要备份的数据的类型。例如,如果您运行的网络环境含有存储在服务器上的关键数据,则每晚备份可能都不够。

另一方面,如果您要备份家用计算机上的数据,每小时备份一次就不必要了。规范备份时,可能需要考虑如下几个因素:

您花在计算机上的时间量。

计算机上的数据变化的频率以及幅度。

如果仅仅是一些音乐、电子邮件和家庭照片,每周甚或每月备份一次可能足矣。但是,如果您碰巧处在税务审计期间,可能需要更频繁的备份。

通常,备份间隔时间不应超过您能够忍受的重做丢失作业所需的时间。例如,如果用一周的时间来重写丢失的文档对您来说太久了,您就应该至少每周备份一次。

usr/share/help-langpack/zh_CN/ubuntu-help/power-closelid.page0000644000373100047300000000455312320733021026122 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org Ekaterina Gerasimova kittykat3756@gmail.com 当关闭盖子时,让笔记本电脑进入睡眠模式以节省电能。 计算机为什么会在我关闭盖子时关闭?

关闭笔记本电脑盖子时,您的计算机将被挂起以省电。这意味着计算机并不是真正关闭,而是仅进入睡眠模式。您可通过打开盖子将其唤醒。如果它未被唤醒,则尝试单击鼠标或按任一键。如果仍无效,则按电源键。

有些计算机无法正常挂起,通常由于其硬件未完全受操作系统的支持(例如 Linux 驱动程序不完整)。在此情况下,您可能会发现在关闭盖子后无法唤醒计算机。您可以尝试解决挂起计算机所引发的问题,或者可以阻止计算机在您关闭盖子时尝试挂起。

防止计算机在关闭盖子时挂起

如果不想让计算机在您关闭盖子时挂起,则可以更改此行为的设置:

如果您要更改此设置,请格外小心。如果您在盖子关闭的情况下继续运行,尤其是在将其置于狭小区域(如背包)中时可能会导致机器过热。

单击顶部菜单栏最右侧的图标,选择系统设置

布局选项卡中单击电源

合盖时旁边的选择菜单中选择什么都不做

usr/share/help-langpack/zh_CN/ubuntu-help/keyboard-osk.page0000644000373100047300000000254512320733021025563 0ustar langpacklangpack00000000000000 Jeremy Bicha jbicha@ubuntu.com Julita Inca yrazes@gmail.com Michael Hill mdhillca@gmail.com 通过使用鼠标点击屏幕键盘来输入文字。 使用屏幕键盘

如果您的电脑上没有接入键盘,或者不喜欢使用键盘,您可以打开屏幕键盘来输入文字。

单击菜单栏最右侧的图标,选择系统设置

打开辅助功能,选择输入标签。

开启输入助手以显示屏幕键盘。

usr/share/help-langpack/zh_CN/ubuntu-help/addremove.page0000644000373100047300000000137712320733021025141 0ustar langpacklangpack00000000000000 添加或删除软件 Ubuntu 文档团队 安装,删除, 额外的软件仓库… 添加或删除软件 usr/share/help-langpack/zh_CN/ubuntu-help/music-player-notrecognized.page0000644000373100047300000000453312320733021030452 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org 添加 .is_audio_player 文件向计算机表明这是音频播放机。 为何插入音频播放机时未将其识别出来?

如果已将音频播放机(MP3 播放机等)插入计算机,但不能在音乐整理应用程序中看到插入的音频播放机,则可能未真正将其识别为音频播放机。

请试着先拔出再插入所插入的音频播放机。如果这样做不行,请打开文件管理器。会看到插入的播放机列在侧边栏中设备下,单击即可打开该音频播放机的文件夹。现在依次单击文件新建文档空文档,然后输入 .is_audio_player 并按 Enter(其中的句点和下划线都很重要,应该都是小写形式)。此文件可向计算机表明要将这种设备识别为音频播放机。

现在在文件管理器侧边栏中找到该音频播放机,然后将其弹出(单击右键后单击弹出)。先拔出再插入该音频播放机。这次音乐整理器应该已将其识别为音频播放机。否则请尝试先关闭再打开音乐整理器。

这些说明对 iPod 和某些其他音频播放机无效。但如果播放机是 USB 大容量存储 设备,则应该能参考这些说明;如果播放机是 USB 大容量存储设备,则应该已在其手册中说明。

再次查看音频播放机文件夹时,不会看到 .is_audio_player 文件。这是因为其文件名中的句点用于向文件管理器表明要隐藏该文件。通过依次单击视图显示隐藏文件,可核实该文件是否仍在该文件夹中。

usr/share/help-langpack/zh_CN/ubuntu-help/nautilus-behavior.page0000644000373100047300000001027412320733021026630 0ustar langpacklangpack00000000000000 单击即可打开文件,运行或查看可执行文本文件,以及指定回收站行为。 Tiffany Antopolski tiffany@antopolski.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com Sindhu S sindhus@live.in 文件管理器行为首选项

您可以控制是单击还是双击文件、可执行文本文件的处理方式和回收站特性。点击菜单栏的 文件 ,选中 参数设置 并选择 特性 标签。

行为 单击打开项目 双击打开项目

默认情况下,单击可选择文件,双击可打开文件。但可以决定单击文件和文件夹就将其打开。使用单击模式时,可按住 Ctrl 键后再单击,以选择一个或多个文件。

可执行文本文件

可执行文本文件是指包含可运行 (执行) 程序的文件。它的 文件权限 还必须允许这个文件作为一个程序运行。最常见的可执行文本文件有 ShellPythonPerl 脚本文件。他们的拓展名分别为 .sh.py.pl

当您打开一个可执行文本文件时,您可以选择从:

当可执行文本文件被打开时运行它们

当可执行文本文件被打开时查看它们

总是询问

如果选择了 总是询问 ,对话框将在您想要运行或者查看选中的文本文件时弹出询问。

可执行文本文件也称作脚本文件,所有 ~/.local/share/nautilus/scripts 中的脚本文件都将出现在 脚本 子菜单下的文件快捷菜单中。当一个脚本从本地文件夹执行时,所有被选中的文件都将作为该脚本的参数被粘贴。在文件中执行脚本:

需要的文件夹导航。

选择需要的文件。

右击文件打开右键菜单,从 脚本 选择所需的脚本文件执行。

当脚本文件从远程文件夹执行时将不会传递任何参数,就像一个显示网页或者 ftp 内容的文件夹。

文件管理器回收站首选项 回收站 清空回收站或删除文件之前询问

默认情况下已选中此选项。清空回收站时会显示消息,用于确认要清空回收站或删除文件。

<gui>包含一条跳过回收站的删除命令</gui>

选中此项后,将会在您右击 文件 管理器中的文件弹出的菜单中添加 删除 选项。

通过删除菜单项删除项目会彻底绕过回收站。会将删除的项目从系统中彻底清除。无法恢复已删除的项目。

usr/share/help-langpack/zh_CN/ubuntu-help/a11y-screen-reader.page0000644000373100047300000000163412320733021026457 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 使用 Orca 屏幕阅读器朗读用户界面。 朗读屏幕

GNOME provides the Orca screen reader to speak the user interface. Depending on how you installed GNOME, you might not have Orca installed. Install Orca, and then refer to the Orca Help for more information.

usr/share/help-langpack/zh_CN/ubuntu-help/mouse-wakeup.page0000644000373100047300000000215312320733021025606 0ustar langpacklangpack00000000000000 如果必须先晃动或点击鼠标,鼠标才有响应。 GNOME 文档项目 gnome-doc-list@gnome.org 鼠标在开始工作前存在延迟

无线光标与笔记本上的触摸板一样,在开始工作前需要被唤醒,当不使用时它们将自动休眠节省电量,您可以点击鼠标或者摇晃鼠标唤醒鼠标或者触摸板。

笔记本触摸板在您停止打字开始工作前存在延迟,这是为了防止您的手掌打字时不小心碰到触摸板。参阅 了解详细信息。

usr/share/help-langpack/zh_CN/ubuntu-help/mouse.page0000644000373100047300000000231412320733021024313 0ustar langpacklangpack00000000000000 左手习惯、速度和灵敏度 和 触摸板的点击和滚动… Tiffany Antopolski tiffany.antopolski@gmail.com 鼠标
常见鼠标问题 常见问题 常见问题
鼠标 提示 提示
usr/share/help-langpack/zh_CN/ubuntu-help/net-install-flash.page0000644000373100047300000000444312320733021026515 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com 您可能需要安装 Flash 才能查看 YouTube 等视频播放和交互式 Web 页面的网站。 安装 Flash 插件

Flash 是一种 Web 浏览器插件,使您可以在有些网站上观看视频和使用交互式 Web 页面。没有 Flash,有些网站无法正常运行。

如果未安装 Flash,在访问需要该程序的网站时,您可能会看到一则告诉您安装 Flash 的消息。Flash 可免费下载(但非开源软件)并适用于大多数 Web 浏览器。

如何安装 Flash

单击此链接启动软件中心

阅读有关 Cheese 的信息和评论以确保您确实要安装它。

如果您选择安装,从“软件中心”窗口单击安装

如果已打开任何 Web 浏览器窗口,请关闭相关窗口再重新打开。再次打开时,Web 浏览器会检测到 Flash 已安装,现在您应可以使用 Flash 查看该网站。

Flash 的开源替代品

有一些免费开源的软件可以替代 Flash。有些功能甚至优于 Flash 插件(例如对音效播放的处理更好),但在其他方面较差(例如无法在 Web 页面上显示一些特别复杂的 Flash 页面)。

如果对 Flash 播放器不满意,或者您想尽可能在计算机上多使用开源软件,则您可以尝试其中某款软件。下面提供了几个选项:

Gnash

LightSpark

usr/share/help-langpack/zh_CN/ubuntu-help/mouse-disabletouchpad.page0000644000373100047300000000270012320733021027443 0ustar langpacklangpack00000000000000 打字时禁用触摸板,以防意外执行单击操作。 Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 打字时禁用触摸板

便携式计算机上的触摸板往往位于打字时放置手腕的位置,这样有时会在打字时导致意外执行单击操作。打字时可禁用触摸板。这样只有在上次击键之后稍等片刻才能使用触摸板。

单击顶部菜单栏最右侧的图标,选择系统设置

打开 鼠标 & 触摸板

触摸板 部分,勾选 输入文本时禁用

触摸板 部分仅在您的系统包含触摸板时可见。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-find.page0000644000373100047300000000366312320733021026532 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org 无线可能会关闭或中断,附近可能有太多无线网络,或者您超出了网络覆盖范围。 列表中找不到我的无线网络

在单击顶部工具栏中的网络图标时显示的网络列表时,您看不到您的无线网络的原因有很多种。

如果列表中不显示任何网络,则表明您的无线硬件已关闭或工作不正常。确保打开无线硬件。

如果附近有很多无线网络,则您要查找的网络可能未显示在列表的第一页。在此情况下,请查看箭头指向右方的列表的底部并将鼠标悬停于箭头之上,以显示剩余的无线网络。

您可能处在网络覆盖范围之外。尝试移至距离无线基站/路由器更近的地方,并在稍后确定网络是否出现在列表中。

更新无线网络列表需要一段时间。如果刚打开计算机或移至不同的地点,请等待几分钟,然后检查所需网络是否出现在列表中。

网络可能隐藏。如果网络隐藏,您需要以不同的方式连接。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-noconnection.page0000644000373100047300000000512412320733022030301 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com 复查密码,尝试使用密钥替代密码,关闭无线网卡后重启… 我输入了正确的密码,但仍无法连接。

如果您确定输入的无线密码正确,但仍无法成功连接到无线网络,请尝试以下某些操作:

检查确认您输入了正确的密码

密码区分大小写(区分字母大小写),因此请确保所有字母的大小写都正确。

尝试使用十六进制或 ASCII 通行码

您输入的密码也可以其他形式表示,即作为十六进制的字符串(数字 0-9 和字母 a-f)。如果您可访问通行码和密码/口令,请尝试键入通行码。确保在系统询问密码时选择正确的无线安全选项(例如,如果在为WEP 加密连接键入 40 个字符的通行码,则选择WEP 40/128 位密钥)。

尝试关闭无线适配器,然后再重新打开。

无线适配器有时会出现故障或者遇到导致无法连接的小问题。关闭网卡再重新打开以进行重置。有关详细信息,请参见

检查您使用的无线安全类型是否正确

提示您输入无线安全密码时,您可选择要使用的无线安全类型。确保选择路由器或无线基站使用的无线安全类型。默认情况下应已选择无线安全类型,但有时因某种原因而未选中。如果不知是何种安全类型,请依次c尝试不同的选项。

检查您的无线网卡是否被良好支持

有些无线适配器未得到很好的支持。它们能显示无线连接,但因其驱动程序功能缺失而无法连接到网络。确定您是否可获得替代的无线驱动程序,或者是否需要执行附加设置(如安装不同的固件)。有关详细信息,请参见

usr/share/help-langpack/zh_CN/ubuntu-help/disk-partitions.page0000644000373100047300000000535512320733022026320 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org 了解什么是卷和分区,使用磁盘实用程序管理卷和分区。 管理卷和分区

是一个描述硬盘等存储设备的术语。当您把存储设备分成若干个区之后,它也可以指设备上的部分存储空间。您可以将卷挂载到计算机上。您可以挂载硬盘、USB 驱动器、DVD-RW、SD 卡以及其他介质。如果某个卷现在处于已挂载状态,您就可以对其进行读取和写入操作。

已被挂载的卷一般被称为分区,尽管这两个术语严格来说并不相同。“分区”是指一个磁盘驱动器上的物理存储区域。分区安装后,也可以被称为卷,因为您可以对其进行读写操作。

使用磁盘实用工具查看和管理卷和分区

您可以使用磁盘实用工具检查和修改计算机的存储卷。

打开 Dash 启动磁盘应用程序。

在标为存储设备的窗格中,您可以找到硬盘、CD/DVD 驱动器及其他连接到计算机的存储设备。单击您想要查看的设备。

在右窗格中,标记为的区域提供所选设备上存在的卷和分区的直观分类图示。您也可以在这一区域找到用来管理这些卷的各种工具。

请注意:使用这些实用程序可能会彻底清除您磁盘上的数据。

一般来说,您的计算机有至少一个分区和一个单一的交换分区。交换分区由操作系统用来进行内存管理,很少被挂载。主分区包含您的操作系统、应用程序、设置以及个人文件。为安全或方便起见,这些文件还可能分布在多个分区。

一个主分区必须包含您的计算机进行启动(或称引导)所需要的信息。因此,它有时被称为引导分区,或引导卷。要确定卷是否可引导,可在磁盘实用程序中查看其分区标志。外部介质,如 USB 驱动器和 CD,也可能包含可引导卷。

usr/share/help-langpack/zh_CN/ubuntu-help/files-tilde.page0000644000373100047300000000320112320733022025361 0ustar langpacklangpack00000000000000 这些都是备份文件。这些文件默认情况下处于隐藏状态。 Phil Bull philbull@gmail.com Michael Hill mdhillca@gmail.com 文件名末尾有 "~" 的文件是什么文件?

对于在 Gedit 文本编辑器及其他应用程序中编辑过的文档,文件名末尾有 "~" 的文件(如 example.txt~)都是自动创建的备份副本。将其删除通常没有问题,但一般情况下不需要这么做。

这些文件是默认隐藏的。如果您能看到它们,是因为您选中了 显示隐藏文件(在 文件 管理器工具栏的 下拉 菜单中),或者按下了组合键 CtrlH 。您可以通过操作这些步骤中的任意一种再次隐藏它们。

这些文件视同普通隐藏文件。对于有关隐藏文件处理方式的建议,请参见

usr/share/help-langpack/zh_CN/ubuntu-help/color-calibrationcharacterization.page0000644000373100047300000000432412320733022032045 0ustar langpacklangpack00000000000000 校准和特征分析是完全不同的两件事。 Richard Hughes richard@hughsie.com 校准和特征分析有何不同?

很多人起初都不清楚校准和特征分析之间的不同。校准是修改设备颜色行为的过程。这一般使用两种机制来完成:

更改它所具有的控制或内部设置

对其颜色通道应用曲线

校准的概念是根据一个设备的颜色响应把它置于一个已定义状态。通常将其作为保持可重复行为的常用方式。典型的校准会以设备或系统指定的文件格式存储,用以记录设备设置情况或各个频道的校准曲线。

特征分析(或获取配置文件)是一个设备复原或者颜色响应的记录过程。一般结果存储在设备 ICC 配置文件中。此类配置文件本身不能以任何方式修改颜色。它允许像 CMM (色彩管理模块)系统或颜色感知应用程序在与其他设备配置文件组合时修改颜色。只有知道两个设备的特征分析曲线,才能顺利地从一个设备传输颜色到另一个设备。

注意一个特征分析(配置文件)仅在和特征分析时相同的使用条件下有效。

就显示配置文件而言,由于为方便起见校准信息常常存储于配置文件中,因此会存在其它一些混淆。为了方便,它存储在名为 vcgt 的标签内。虽然它存储在配置文件内,但正常的基于 ICC 的工具或应用程序都不能识别它,或利用它做任何事。同样地,一般显示校准工具和应用程序也不能识别或利用 ICC 特征分析(配置文件)信息做任何事。

usr/share/help-langpack/zh_CN/ubuntu-help/shell-overview.page0000644000373100047300000000201612320733022026136 0ustar langpacklangpack00000000000000 桌面 简介,键盘快捷键,窗口… GNOME 文档项目 gnome-doc-list@gnome.org 桌面、应用和窗口
桌面
应用程序和窗口
usr/share/help-langpack/zh_CN/ubuntu-help/mouse-lefthanded.page0000644000373100047300000000254412320733022026415 0ustar langpacklangpack00000000000000 在鼠标设置中对调左右鼠标键的功能。 Phil Bull philbull@gmail.com Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 用左手使用鼠标

可互换鼠标或触摸板左右键的行为,以使其用左手操作起来更加舒适。

单击顶部菜单栏最右侧的图标,选择系统设置

打开 鼠标 & 触摸板

常规 部分,切换 主按钮右边

这一设置将同时影响您的鼠标、触控板和其他指点装置。

usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-edit-connection.page0000644000373100047300000001740012320733022030667 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org Phil Bull philbull@gmail.com 了解如何更改无线连接选项。 编辑无线连接

本主题描述您在编辑无线网络连接时可用的所有选项。要编辑连接,请单击顶部面板中的网络菜单并选择编辑连接

如果保留这些设置的默认值,多数网络都可正常工作,因此您可能无需更改任何默认值。此处系统还提供了很多其他选项,使您可以更好地控制更高级的网络。

对所有用户可用/自动连接 <gui>自动连接</gui>

如果您想让计算机在处于无线网络覆盖范围内时尝试自动连接到该网络,请选中此选项。

如果设置为自动连接的多个网络均有覆盖,计算机将连接到网络连接窗口无线选项卡中显示的第一个网络。它不会从一个可用网络断开而连接到刚进入搜索范围的其他网络。

<gui>对所有用户可用</gui>

如果您想让计算机上的所有用户均可访问此无线网络,请选中此选项。如果该网络有 WEP/WPA 密码并且您已选中了此选项,则您只需输入一次密码。计算机上的其他所有用户将可连接到该网络,而无需知道密码。

如果选中此选项,您需要以管理员身份更改该网络的设置。系统可能会要求您输入管理员密码。

无线 <gui>SSID</gui>

当前连接的无线网络的名称。除非您更改了无线网络的名称(例如,更改了无线路由器或基站的名称),否则请勿更改此名称。

<gui>模式</gui>

使用这个来指定选择哪一种连接到 基础 网络(一个计算机无线连接到中心基站或者路由器的地方)或者 自组 网络(无需基站,通过在网计算机相互连接)。大多数网络都是基础网络,您也许希望 设置您自己的自组网络 。

如果选择 Ad-hoc,您将看到其他两个选项:波段频道。这些选项决定了 ad-hoc 无线网络工作时使用的无线频率波段。有些计算机只能在特定波段工作(例如,仅 A 或仅 B/G),因此您可能要挑选一个 ad-hoc 网络中的所有计算机均可使用的波段。在繁华场所,可能有多个无线网络共享同一频道,这可能会导致您的连接变慢,您也可以通过更改频道来解决这一问题。

<gui>BSSID</gui>

SSID 是用户看到的网络名称,而 BSSID 是计算机理解的名称(是一个由字母和数字组成的字符串,假定为无线网络上的唯一名称)。如果网络隐藏,则无 SSID 而使用 BSSID。

<gui>设备 MAC 地址</gui>

MAC 地址是标识网络硬件(例如无线适配器、以太网网卡或路由器)的代码。可以连接到网络的每个设备都有一个在工厂预设的唯一 MAC 地址。

此选项可用于更改网卡的 MAC 地址。

<gui>克隆 MAC 地址</gui>

您的网络硬件(无线适配器)可假装具有不同的 MAC 地址。如果您的某个设备或服务仅与特定的 MAC 地址(例如有线宽带调制解调器)通信,则此功能非常有用。如果将该 MAC 地址置于克隆 MAC 地址框中,设备/服务会将网卡的 MAC 地址识别为克隆后的值(而非真实的 MAC 地址)。

<gui>MTU</gui>

此设置更改最大传输单元,即可通过网络发送的数据块的最大尺寸。通过网络发送文件时,数据被拆分为多个小数据块(或数据包)。适于您网络的最佳 MTU 取决于数据包丢失率(连接噪声导致)和连接速度。通常,您无需更改此设置。

无线安全 <gui>安全</gui>

此选项定义您的无线网络使用的加密类型。加密的连接有助于防止无线连接被入侵,以使其他人无法“侦听”和查看您正在访问的网站及其他信息。

有些加密类型功能较强,但较旧的无线网络装置可能不支持。通常您只需键入连接密码;更复杂的安全类型可能还要求提供用户名和数字“证书”。有关主要无线加密类型的详细信息,请参见

IPv4 设置

使用此选项卡定义计算机的 IP 地址及其要使用的 DNS 服务器等信息。更改方法以查看获取/设置此信息的不同方式。

以下方法可用:

<gui>自动 (DHCP)</gui>

DHCP 服务器获取要使用的 IP 地址和 DNS 服务器等信息。DHCP 服务器是一台连接到网络的计算机(或其他设备,如路由器),它决定了您计算机应具备的网络设置 — 当您首次连接到网络时,系统会自动为您分配正确的设置。多数网络都使用 DHCP。

<gui>自动 (DHCP) 仅地址</gui>

如果选择此设置,您的计算机将从 DHCP 服务器获取 IP 地址,但您必须手动定义其他详情(如要使用的 DNS 服务器)。

<gui>手动</gui>

如果要自己定义所有网络设置(包括计算机要使用的 IP 地址),请选择此选项。

<gui>仅本地链接</gui>

本地链接是将网络上的计算机连接起来的一种方式,但不需要 DHCP 服务器或手动定义 IP 地址和其他信息。如果连接到本地链接网络,网络上的计算机将自行决定要使用的 IP 地址等信息。如果您想临时将几台计算机连接起来以便相互通信,此选项则非常有用。

<gui>已禁用</gui>

此选项将禁用网络连接并阻止您连接到网络。请注意,IPv4IPv6 即使用于同一网卡,也将被视为单独的连接。如果已启用其中一个,您可能需要将另一个也设为禁用。

IPv6 设置

此选项与 IPv4 选项卡类似,不同之处在于IPv6 标准更新。较新的网络都使用 IPv6,但目前IPv4 仍很流行。

usr/share/help-langpack/zh_CN/ubuntu-help/printing-setup-default-printer.page0000644000373100047300000000360612320733022031264 0ustar langpacklangpack00000000000000 选择最常用的打印机。 Jim Campbell jwcampbell@gmail.com Paul W. Frields stickster@gmail.com Jana Svarova jana.svarova@gmail.com 2013 设置默认打印机。

如果有多台打印机可用,则可选择一台作为默认打印机。可选择最常用的一台作为默认打印机。

点击 菜单栏 最右端的图标并选择 系统设置

打开 打印机

从可用的打印机列表中右键单击所需的默认打印机,并单击设为默认

在可用打印机列表中选择时,你可以通过制定打印机的名字或位置来过滤,例如 一楼 或 入口。

搜索结果过滤选项仅出现在添加新打印机的对话框中。

在打印应用程序时,将自动使用默认的打印机,除非您事先为该特定打印任务选择了不同的打印机。

usr/share/help-langpack/zh_CN/ubuntu-help/shell-windows.page0000644000373100047300000000441112320733022025763 0ustar langpacklangpack00000000000000 移动并组织您的窗口。 GNOME 文档项目 gnome-doc-list@gnome.org 窗口和工作区

如其他桌面环境一样,Unity 也使用窗口来显示正在运行的程序。通过同时使用 Dash启动器,可以启动新程序并控制那个窗口活动。

除窗口之外,您还可在工作区中将您的应用程序组合到一起。访问下面窗口和工作区的帮助主题,以更好的了解如何使用这些功能。

窗口 使用窗口
工作区 使用工作区工作
usr/share/help-langpack/zh_CN/ubuntu-help/backup-how.page0000644000373100047300000000417512320733022025233 0ustar langpacklangpack00000000000000 使用 Déjà Dup(或其他一些备份应用程序)复制重要文件和设置以防止丢失。 Tiffany Antopolski tiffany.antopolski@gmail.com GNOME 文档项目 gnome-doc-list@gnome.org Michael Hill mdhillca@gmail.com 如何备份

推荐您使用备份应用程序来管理备份过程,保存文件和设置。有很多备份软件可供我们选择,比如 Déjà Dup

您所选备份应用程序的帮助将引导您逐步设置备份首选项,并将介绍在出现问题时如何恢复您的数据。

另一个选择是复制您的文件到安全位置,如外部硬盘驱动器、网络上的其他计算机或 USB 驱动器。您的个人文件和设置一般存放在您的主文件夹中,因此您可以从这里复制它们。

您可以备份的数据量受存储设备大小限制。如果您的备份设备上有足够空间,最好备份整个主文件夹,以下文件除外:

已经通过其他方式进行备份的文件。例如已经保存在 CD,DVD 或者 其他可移动磁盘里的数据。

您可以轻易重建的文件。例如,如果您是一名程序员,您并不需要备份编译后产生的文件,而只备份源代码即可。

回收站文件夹下的文件。回收站文件夹可以在 ~/.local/share/Trash 中找到。

usr/share/help-langpack/zh_CN/ubuntu-help/net-chat-video.page0000644000373100047300000000215212320733022025773 0ustar langpacklangpack00000000000000 Ubuntu 文档团队 怎样进行视频通话? 视频呼叫

使用 Empathy,您不需要安装其他任何软件即可从 Ubuntu 中进行视频通话,当然,还是通过 Google TalkMSNJabber SIP 等网络。有关使用 Empathy 进行视频通话的帮助,请参见 Empathy 用户手册。

支持视频通话的其他应用程序包括

Skype

Ekiga 视频会议

usr/share/help-langpack/zh_CN/ubuntu-help/contacts-edit-details.page0000644000373100047300000000342612320733022027355 0ustar langpacklangpack00000000000000 Tiffany Antopolski tiffany.antopolski@gmail.com Michael Hill mdhillca@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com 编辑每个联系人的信息。 编辑联系人详情

编辑联系人详情可以保持通讯录处于完整和最新的状态。

从联系人列表选择要删除的联系人。

通讯录应用右上角的编辑按钮。

编辑联系人详情。

要增加新电话号码或电子邮件地址等详情,请按新详情按钮并选择要添加的字段。

请按完成按钮结束联系人编辑。

对于链接联系人,可以通过点击头像来编辑联系人条目。

usr/share/help-langpack/zh_CN/ubuntu-help/music-player-newipod.page0000644000373100047300000000240012320733022027235 0ustar langpacklangpack00000000000000 GNOME 文档项目 gnome-doc-list@gnome.org 必须通过 iTunes 软件设置全新的 iPod,然后才能使用全新的 iPod。 我的新 iPod 不能用

如果新 iPod 从未连接到计算机,则将其连接到 Linux 计算机时无法将其正常识别出来。这是因为必须用 iTunes 软件(仅可在 Windows 和 Mac OS X 中运行)设置和更新 iPod。

要设置 iPod,请将 iTunes 安装到 Windows 或 Mac 计算机中,然后再插入 iPod。会引导用户执行几个步骤设置 iPod。询问卷格式时,请选择 MS-DOS (FAT)Windows 或类似格式。将另一种格式用于 Linux 的效果不像这么好。

设置完毕后,将 iPod 插入 Linux 计算机时,iPod 应该可以正常运行。

usr/share/help-langpack/zh_CN/ubuntu-help/printing-select.page0000644000373100047300000000236712320733022026303 0ustar langpacklangpack00000000000000 仅打印某些页,或者某一范围之内的页码。 Phil Bull philbull@gmail.com 仅打印特定页

仅打印文档中的特定页:

单击文件打印

打印窗口中的常规选项卡中,从范围部分中选择页码

在文本框中键入需要打印的页码数,用逗号隔开。使用仪表盘指示页码范围。

例如,如果在页码文本框中输入“1,3,5-7,9”,则将会打印出第 1、3、5、6、7 页和第 9 页。

usr/share/help-langpack/zh_CN/ubuntu-help/power-nowireless.page0000644000373100047300000000357712320733022026524 0ustar langpacklangpack00000000000000 有些无线设备可解决计算机置于挂起模式时无法再次正常被唤醒的问题。 GNOME 文档项目 gnome-doc-list@gnome.org Ekaterina Gerasimova kittykat3756@gmail.com Michael Hill mdhillca@gmail.com 我在唤醒计算机时丢失无线网络

如果您挂起了计算机或者它休眠了,你可能会发现恢复之后,无限网络不工作了。如果无线设备的 驱动 不支持某些节能功能。一般的原因就是这些无线连接在恢复时没能正确地打开。

尝试关闭无线适配器,然后再重新打开。

单击面板最右侧的图标,选择系统设置

打开网络并选中无线选项卡。

尝试关闭无线适配器,然后再重新打开。

如果无线仍然不能工作,打开飞行模式再关闭

如果此操作无效,您需要重启计算机以使无线网络恢复工作。

usr/share/help-langpack/zh_CN/ubuntu-help/clock.page0000644000373100047300000000133412320733022024260 0ustar langpacklangpack00000000000000 设置时间和日期,时区,日历和约会… Shaun McCance shaunm@gnome.org 时间和日期 usr/share/help-langpack/zh_CN/ubuntu-help/files-lost.page0000644000373100047300000000404712320733022025252 0ustar langpacklangpack00000000000000 如果您找不到您创建或下载的文件,请按照以下方式进行操作。 GNOME 文档项目 gnome-doc-list@gnome.org Shaun McCance shaunm@gnome.org Michael Hill mdhillca@gmail.com 寻找丢失的文件

如果您创建或下载了一个文件,但现在却找不到它,请按照以下方式进行操作。

如果您忘记文件保存的位置,但您还记得其名称,您可以按名称搜索该文件。请参阅了解如何搜索。

如果您刚刚下载了该文件,您的浏览器可能已自动将其保存在某个文件夹中。检查您的主文件夹中的桌面下载文件夹。

您可能意外删除了文件。您删除文件时,文件将被移入回收站,在您手动清空回收站之前,它将一直保存在此处。请参阅了解如何还原已删除的文件。

以重命名文件的方式隐藏文件。在文件管理器中以 . 开头或以 ~ 结尾的文件是隐藏文件。点击文件管理器工具栏上的 向下按钮,选择显示隐藏文件来显示他们。请参阅了解更多。

usr/share/help-langpack/zh_CN/ubuntu-help/unity-launcher-intro.page0000644000373100047300000000305212320733022027264 0ustar langpacklangpack00000000000000 启动器位于屏幕左侧。 Ubuntu 文档团队 使用启动器启动应用程序

启动器图标

启动器 是 Unity 桌面的核心组件之一。进入桌面之后,您会看到启动器位于屏幕最左侧。您可以在启动器上快速控制应用程序、工作区、各种外接设备和回收站。

如果启动器上有您需要运行的程序,那么您只需单击程序图标即可启动和使用这一程序。

如需关于启动器的更多信息,请进入以下任意帮助主题。

使用启动器
定制启动器
usr/share/help-langpack/zh_CN/ubuntu-help/net-wireless-adhoc.page0000644000373100047300000000315212320733022026662 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Shaun McCance shaunm@gnome.org ad-hoc 网络可以使其他设备连接到您的电脑并共享网络连接设置。 创建无线热点

您可以将自己的电脑用作无线热点。其他设备可以连接到您的电脑。您可以与这些设备分享自己的有线或者蜂窝网络连接。

单击菜单栏最右侧的图标,选择系统设置

打开网络并选中左侧的无线

单击用作热点按钮。

如果您已经连接到了一个无线网络,系统会询问您是否需要断开无线连接。单一的无线网卡只能连接或分享一个无线网络。您可以单击创建无线热点进行确认。

系统将自动生成一个 SSID 和一个密钥。SSID 将会是您的计算机名。其他设备将需要 SSID 和密钥来连接到您所创建的无线热点。

usr/share/help-langpack/zh_CN/ubuntu-help/printing-setup.page0000644000373100047300000000576312320733023026170 0ustar langpacklangpack00000000000000 设置连接至您计算机的打印机。 Phil Bull philbull@gmail.com Jim Campbell jwcampbell@gmail.com Paul W. Frields stickster@gmail.com Shaun McCance shaunm@gnome.org Steven Richards steven.richardspc@gmail.com Michael Hill mdhillca@gmail.com 设置本地打印机

连接后,您的系统可以自动识别多种打印机类型。大多数打印机使用 USB 线缆连接到计算机。

现在不需要选择是否想安装网络或本地打印机。他们列在了同一个窗口中。

确保打印机已打开。

通过合适的连接线将打印机连接到您的系统。您可以在系统搜索驱动程序时查看屏幕上的信息,屏幕上可能会弹出信息要求您认证以安装驱动。

系统完成安装打印机时将会显示一条消息。选择 打印测试页 来打印一个测试页,或者 选项 来在打印机设置中做进一步修改。

如果打印机不能自动设置,则您可以在打印机设置中添加。

点击 菜单栏 最右端的图标并选择 系统设置

打开 打印机

单击添加并从设备窗口中选择打印机。

单击前进并等待其搜索驱动。

如有需要,您可以自定义打印机的名称、描述和所在地。完成后,单击应用

现在,您可以打印测试页或单击取消跳过这一步。

如果您的计算机中存在多个可用驱动,系统可能要求您选择一个驱动程序。要使用建议的驱动程序,在制造和型号屏幕上单击“下一步”即可。

安装打印机后,您可能要更改默认打印机。

usr/share/help-langpack/zh_CN/ubuntu-help/power-batterywindows.page0000644000373100047300000000361612320733023027412 0ustar langpacklangpack00000000000000 根据制造商和不同的电池寿命估计进行的调整可能是此问题的根源所在。 GNOME 文档项目 gnome-doc-list@gnome.org Phil Bull philbull@gmail.com 与运行 Windows/Mac OS 时的电池寿命相比,为什么我的电池寿命更短?

有些计算机在 Linux 上运行的电池寿命似乎比在 Windows 或 Mac OS 上运行的电池寿命短。原因之一在于计算机厂商为 Windows/Mac OS 安装了特殊软件,可优化计算机的各种硬件/软件设置。这些调整通常针对性较高,优化方式未被公开,因此也很难包含在Linux 中。

遗憾的是,在对其不十分了解的情况下,Linux 开发者很难为您应用这些调整。但是,您可能会发现使用一些简单的节能方法会有所帮助。如果您的计算机有变速处理器,您会发现更改其设置也很有用。

差异的另外一个可能原因在于 Windows/Mac OS 上估计电池寿命的方法与在 Linux 上使用的方法不同。实际电池寿命可能完全相同,但是不同的方法提供不同的估计。有关更多信息,请参见

usr/share/help-langpack/zh_CN/ubuntu-help/files-recover.page0000644000373100047300000000330312320733023025731 0ustar langpacklangpack00000000000000 当您删除文件时,它们一般会被移动到回收站。您可以将它们从回收站取回。 GNOME 文档项目 gnome-doc-list@gnome.org 还原您删除的文件

当从文件管理器中删除文件时,该文件一般会被放入回收站,并可以随时恢复出来。

要从回收站还原文件:

打开 启动器 ,然后单击位于启动器下方的 回收站 快捷键。

如果您删除的文件在此处,右击该文件,选择还原。它随即被还原到删除前所在的文件夹。

如果您删除文件时使用的是 ShiftDelete 或命令行,文件将无法使用该方法还原,因为它已被永久删除。

有一些还原工具有时能够还原永久删除的文件。不过,一般用起来不太容易。如果您意外永久删除了某个文件,最好还是到支持论坛咨询是否能够将其还原。

usr/share/help-langpack/zh_CN/ubuntu-help/color-missingvcgt.page0000644000373100047300000000206612320733023026642 0ustar langpacklangpack00000000000000 全屏颜色校正修改所有窗口的所有屏幕颜色。 Richard Hughes richard@hughsie.com 缺少全屏颜色校正的信息?

不幸的是,很多由厂商提供的 ICC 配置文件都不包含全屏颜色校正所需的信息。这些配置文件依然可以为应用程序用以颜色补偿,但您将不能看到您屏幕更改的所有颜色。

为了创建包含全部校准和特征分析数据的显示器配置文件,您需要使用一个特别的颜色测量仪器,称作色度计或光谱仪。

usr/share/help-langpack/zh_CN/ubuntu-help/nautilus-prefs.page0000644000373100047300000000117112320733023026146 0ustar langpacklangpack00000000000000 Shaun McCance shaunm@gnome.org 文件管理器首选项 usr/share/help-langpack/zh_CN/ubuntu-help/color-virtualdevice.page0000644000373100047300000000365712320733023027162 0ustar langpacklangpack00000000000000 虚拟设备是一种未连接计算机的色彩管理设备。 Richard Hughes richard@hughsie.com Michael Hill mdhillca@gmail.com 什么是虚拟色彩管理设备?

虚拟设备是一种未连接计算机的色彩管理设备。例如其可以是:

将照片上传、打印,然后发送给您的网上打印商店。

来自数码相机的存储在记忆卡上的照片

要为数码相机创建虚拟配置文件,只需将一个图像文件拖放到系统设置 颜色对话框即可。之后您可以像对其他设备一样为其分配配置文件,甚或校准它。

要为数码相机创建虚拟配置文件,只需将一个图像文件拖放到系统设置 颜色对话框即可。之后您可以像对其他设备一样为其分配配置文件,甚或校准它。

usr/share/help-langpack/zh_CN/ubuntu-help/net-proxy.page0000644000373100047300000000426612320733023025142 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com Baptiste Mille-Mathias baptistem@gnome.org Michael Hill mdhillca@gmail.com 代理服务器过滤您查看的网站,通常基于控制或安全目的。 代理服务器设置
代理服务器是什么?

Web 代理服务器过滤您查看的网站。通常在企业或公共无线热点中用于控制您可以查看的网站,防止您不登录帐户就访问 Internet,或者用于对网站执行安全检查。

改变网络代理设置

单击菜单栏最右侧的图标,选择系统设置

打开网络并从窗口左边的列表中选择网络代理

在以下代理方式中选择您需要的一项。

应用程序将直接连接到网络获取信息。

手动

为每个代理协议指定代理服务器地址和端口信息。这些协议是 HTTPHTTPSFTPSOCKS

自动

An URL points to a resource, which contains the appropriate configuration for your system.

代理设置将用于选择此配置的网络应用程序。

usr/share/help-langpack/zh_CN/ubuntu-help/shell-workspaces.page0000644000373100047300000000432612320733023026460 0ustar langpacklangpack00000000000000 工作区是将您桌面上的窗口分组的一种方法。 GNOME 文档项目 gnome-doc-list@gnome.org 工作区是什么,它对我有何帮助?

“工作区切换器”按钮

工作区是指您的桌面窗口的分组。这些虚拟桌面增大了您工作区域。工作区是为了减少混乱,使桌面更容易导航。

您可以使用工作区来组织您的工作。例如,您可使所有的通信窗口(如电子邮件和您的聊天程序)位于一个工作区,并且使您正在进行的工作位于另一个工作区,您的音乐管理器可位于第三个工作区。

打开启动器并单击靠近底部的工作区切换器图标。默认情况下,Ubuntu 会显示 4 个工作区,成 2 排 2 列排列。您可以轻松更改工作区数量:

更改工作区编号

前往 Dash 并打开 终端

要更改行的数量,请键入以下命令,将最终数量更改成您希望的数字。按回车

gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ vsize 2

要更改列编号,请键入以下命令,将最终数量更改成您希望的数字。按回车

gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize 3
usr/share/help-langpack/zh_CN/ubuntu-help/documents.page0000644000373100047300000000224212320733023025166 0ustar langpacklangpack00000000000000 Julita Inca yrazes@gmail.com 2012 Ubuntu 文档团队 ubuntu-doc@lists.ubuntu.com 整理存储在本地计算机上或在线创建的文档。 文档

文档是一个 GNOME 应用程序。可以显示,组织和打印在您计算机上或使用 Google DocsSkyDrive 远程创建的文档。

查看,排序和搜索
选择、组织、打印
问题
usr/share/help-langpack/zh_CN/ubuntu-help/shell-windows-switching.page0000644000373100047300000000547012320733023027767 0ustar langpacklangpack00000000000000 AltTab GNOME 文档项目 gnome-doc-list@gnome.org Ubuntu 文档项目 ubuntu-doc@lists.ubuntu.com 在窗口间进行切换
从启动器

将鼠标移动到屏幕的左上角可以显示 启动器

正在运行的应用程序左侧有一个白色小三角箭头。点击正在运行的应用程序图标可以切换到该应用程序。

如果正在运行的应用程序打开了多个窗口,则左侧会有多个白色箭头。两次单击应用程序图标,可以显示缩小了的所有打开的窗口。点击您想切换到的窗口。

从键盘

AltTab 可以呼出 窗口切换器

释放 Alt 在切换器中选择下一个高亮窗口。

或者,仍然是按住 Alt 键, 按 Tab 以在打开的窗口列表中循环,或者 ShiftTab 反向循环。

窗口切换器中的窗口是按程序分组的。有多个窗口的程序的预览可以在点击时显示。

也可以使用 在窗口切换器的应用图标中切换。或者选择使用鼠标选择一个。

只有一个窗口的程序的预览可以使用 键来显示。

将只显示当前工作区的窗口。要显示其他工作区的窗口,按住 CtrlAlt 键并再按TabShiftTab

SuperW 缩小显示所有打开的窗口。

点击您想切换到的窗口。

usr/share/help-langpack/zh_CN/ubuntu-help/hardware-problems-graphics.page0000644000373100047300000000127012320733023030401 0ustar langpacklangpack00000000000000 Phil Bull philbull@gmail.com 解决屏幕和显卡问题。 屏幕问题

大多显示问题都由显卡驱动程序或配置失误引起。以下哪个主题最能说明所遇到的问题?

usr/share/help-langpack/zh_CN/ubuntu-help/color-gettingprofiles.page0000644000373100047300000000271512320733023027513 0ustar langpacklangpack00000000000000 色彩配置文件可以由厂商提供,也可以自行生成。 Richard Hughes richard@hughsie.com 从哪里可以获取色彩配置文件?

获取配置文件的最佳方式是自行生成,尽管这确实需要一些初始费用。

很多制造商都尽力为设备提供色彩配置文件,只不过有时它们被打包在驱动程序软件包内,您可能需要下载、提取,然后搜索色彩配置文件。

有些制造商不为硬件提供准确的配置文件,配置文件被尽量避免使用。一个好思路是下载配置文件,但如果创建日期在设备购买日期之前一年以上,则可能是由无用的虚拟数据生成的。

请参阅了解有关为什么厂商提供的配置文件常常有害无益的信息。

usr/share/help-langpack/zh_CN/glade/index.docbook0000644000373100047300000004611512300405315023611 0ustar langpacklangpack00000000000000 ]>
Glade 界面设计器手册 Glade 是 GTK+ 应用程序的一个图形界面设计器。 2006 Vincent Geddes 2004 2003 Sun Microsystems 20022000 Michael Vance GNOME 文档项目 Vincent Geddes GNOME Documentation Project
vincent.geddes@gmail.com
Sun GNOME Documentation Team Sun Microsystems Michael Vance GNOME Documentation Project
Glade Manual 3.0 5 December 2006 Vincent Geddes GNOME Documentation Project Glade Manual 2.1; 17 June 2004 Sun GNOME Documentation Team GNOME Documentation Project Glade User Manual 2.0 25 February 2004 Sun GNOME Documentation Team GNOME Documentation Project Glade User Manual 1.2 10 Feb 2004 Sun GNOME Documentation Team GNOME Documentation Project Glade User Manual 1.1 30 Mar 2002 Michael Vance GNOME Documentation Project Glade User Manual 1.0 11 May 2000 Michael Vance GNOME Documentation Project 本手册描述了 3.1.0 版的 Glade。 反馈 To report a bug or make a suggestion regarding the Glade application or this manual, follow the directions in the GNOME Feedback Page.
glade user interface designer 导言 Glade 界面设计器是您可以创建和编辑 GTK+ 应用程序的用户界面设计。 GTK+ 库提供了一个用户界面的积木扩展集,比如文本框、对话框的标签、数字输入框、复选框和菜单。这些积木被叫做 widgets。您可以使用 Glade 将 widget 放置在一个图形界面中。Glade 允许您修改这些 widget 的布局和属性。您也可以使用 Glade 添加 widget 和程序源代码之间的联系。 Glade 设计的用户界面保存在 XML 格式,使其可以容易的与外部工具集成。可以使用 libglade 库从 XML 描述动态的创建图形用户界面。 开始 启动 <application>Glade</application> 可以按如下方法启动 Glade 应用程序 菜单 Choose Programming Glade Interface Designer . 命令行 要从命令行启动 Glade,输入如下命名然后按 Returnglade-3 启动 <application>Glade</application> 时 启动 Glade 时,将显示下列窗口。
<application>Glade</application> 窗口 Shows theGlade window.
Glade 包含如下元素: 菜单栏 菜单栏上的菜单包括所有你使用 Glade 要用到的命令。 工具栏 工具栏包括了你可以从菜单栏里找到的命令中的一部分。 设计区 设计区是可以可视化设计用户界面的地方。 构件库 构件库包含了可以用来构建用户界面的 widgets。 检查器 检查器显示工程中控件的信息。 属性编辑器 属性编辑器是用来处理控件的属性以及添加和源代码之间联系的。 状态栏 状态栏显示关于当前 Glade 活动的信息,以及关于菜单条目的语境信息。
使用工程 新建一个工程 创建一个新工程,选择 文件新建。程序将在 Glade 窗口显示一个空工程。 打开一个工程 打开一个已有的工程,选择 文件打开。程序将在 Glade 窗口显示这个工程。 保存当前工程 您可以按以下方法保存工程: 将改动保存到已有的工程文件,选择 文件保存 To save a new project file or to save an existing project file under a new filename, choose File Save As . Enter a name for the project file in the Save As dialog, then click Save. 使用构件 从构件库选择控件 您可以使用如下方法使用构件库: 选择模式 要使用选择模式,在 选择器 箭头上单击。指针变为箭头以表明选择模式已启用。这种模式中,使用鼠标来选择你的工程中的构件。可以使用 属性 窗口编辑构件的属性。 您也可以使用构件的右键菜单选择一个构件。在构件上右击来打开构件快捷菜单。您可以从 构件库 向您的工程添加多个指定类型的构件,方法是选择构件时按住 Control。您需要点击 选择器 箭头或 构件库 中的其它构件来返回正常模式。 构件定位模式 要使用构件定位模式,在 构件库 窗口中选择一个构件。选择多数的构件时,指针变为指针加交叉。您可以然后在容器、顶级构件等中放置构件。放置构件之后,模式返回选择模式。 顶层模式 要使用顶层模式,从 构件库 窗口中选择一个定义为顶层的控件。从 构件库 选择一个顶层模式的控件时,这个控件立即表现在您的桌面上,可以随后编辑这个控件。选择一个顶层控件之后,返回至选择模式。 在工程中组织控件 在工程中,请使用构件容器或 boxes 来布局和组织控件。在 构件库窗口中可以选择如下的控件容器: Horizontal Box Vertical Box Table Fixed Positions Horizontal Button Box Vertical Button Box Horizontal Panes Vertical Panes Notebook Frame Scrolled Window Viewport 可以通过巧妙使用 boxes 创建复杂的布局结构。当创建水平和竖直 boxes 时, Glade 询问初始创建的行数和列数,而且行和列稍候也可以容易地添加和删除。 创建了所有需要的 boxes 之后,可以向 boxes 中添加特定的控件如 labels, buttons 以及更多的复杂的控件。注意,Glade 打包控件到布局中,这减少了很多乏味的工作。使用 boxes 允许在本地化时窗口调整大小以容纳不同的语言的不同大小的标签。 放置一个控件到剪切板 To remove a widget from a parent and place the widget on the clipboard, select the widget then choose Edit Cut . 复制一个控件到剪切板 To copy a widget to the clipboard, select the widget then choose Edit Copy . The original widget remains attached to the parent. 从剪切板粘贴控件到您的工程 To paste a widget that exists on the clipboard into your project, choose Edit Paste .Glade 中,每个控件都必须有一个独特的名字。如果您剪切了一个控件,然后又将其粘贴到您的工程中,这个控件和其子控件将保持它们原来的名字。如果是复制控件,或多次粘贴同一控件到您的工程中,Glade将为复制的控件产生新名字。 删除控件 To delete a widget from the parent without moving the widget to the clipboard, select the widget then choose Edit Delete . 更改控件属性 属性编辑器是用来编辑选中控件的属性的。要更改一个控件的属性,选中一个控件然后在属性窗口的属性域中输入合适的值。 关于 Glade Glade 由 Glade 开发者和 GNOME 社区志愿者维护。要获取更多信息,请访问 Glade Web site 报告关于本程序和本手册的bug或建议,您可以使用 bugzilla 关于 Glade 的另外一个好的消息源是 Glade 用户开发者 邮件列表。除了订阅,你可能也行浏览列表归档,可以通过相同的链接访问。 This program is distributed under the terms of the GNU General Public license as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. A copy of this license can be found at this link, or in the file COPYING included with the source code of this program.
usr/share/help-langpack/zh_CN/glade/legal.xml0000644000373100047300000000720712300405316022746 0ustar langpacklangpack00000000000000 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual. 本手册是以 GFDL 协议下发布的 GNOME 手册集的一部分。如果您希望单独发布本手册,您可以通过添加一个这个许可证的一份副本到这个手册来做到,就像在第六节中所描述的这个许可证。 各个公司使用的许多用于区别它们产品和服务的名称都声明为商标。在所有的 GNOME 文档以及 GNOME 文档项目的成员中,这些名称都是以全大写字母或首字母大写显示,从而表明它们是商标。 DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. usr/share/help-langpack/zh_CN/gpl/index.docbook0000644000373100047300000004163412311475532023332 0ustar langpacklangpack00000000000000
GNU 通用公共许可证 2000 Free Software Foundation, Inc. Free Software Foundation GNOME 文档项目 2 1991-06
Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
.
允许任何人复制和发布这一许可证原始文档的副本,但绝对不允许对它进行任何修改。
1991年6月第二版 大多数软件许可证决意剥夺你共享和修改软件的自由。与此相反,GNU 通用公共许可证力图保证你的共享和修改自由软件的自由 - 保证自由软件对所有用户是自由的。
序言 大多数软件许可证决意剥夺你共享和修改软件的自由。相反,GNU 通用公共许可证力图保证你的共享和修改自由软件的自由——保证自由软件对所有用户是自由的。这份通用公共许可证适用于绝大多数自由软件基本会开发的软件和任何其他承诺使用它的程序。(自由软件基金会开发的某些其他程序受 GNU 库通用公共许可证约束。)您也可以将它用于自己的程序。 当我们谈到自由软件时,我们指的是自由而不是价格。我们的 GNU 通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用);保证你能收到源程序或者在你需要时能够得到它;保证你能修改软件或将它的一部分用于新的自由软件;而且还保证你知道你能做这些事情。 为了保护你的权利,我们需要作出规定:禁止任何人否认你的权利,或者要求你放弃这些权利。如果你修改了软件或者发布了软件的副本,这些规定就转化为你的责任。 例如,如果你发布这样一个程序的副本,不管是收费的还是免费的,你必须将你具有的一切权利给予你的接受者;你必须保证他们能收到或得到源程序;并且你必须向他们展示这些条款,使他们了解自己的权利。 We protect your rights with two steps: copyright the software, and offer you this license which gives you legal permission to copy, distribute and/or modify the software. 同样,为了保护发布者,我们需要清楚地让每个人明白,自由库软件没有担保(no warranty)。如果由于其他某个人修改了软件,并继续加以传播,我们需要它的接受者明白:他们所得到的并不是原来的版本。任何由其他人引入的任何问题,不应损害原作者的声誉。 最后,任何自由软件不断受到软件专利的威胁。我们希望避免这样的风险,自由软件的再发布者以个人名义获得专利许可证。从而在事实上将软件变为私有。为防止这一点,我们必须明确:任何专利必须以允许每个人自由使用为前提,否则就不准许有专利。 关于复制、发行和修改的精确条款与条件在下面给出。 复制、发布和修改的条款和条件 第 0 节 此许可证适用于任何包含版权所有者声明的程序和其他作品,版权所有者在声明中明确说明程序和作品可以在GPL条款的约束下发布。下面提到的程序指的是任何这样的程序或作品。而基于程序的作品指的是程序或者任何受版权法约束的衍生作品。也就是说包含程序或程序的一部分的作品。可以是原封不动的,或经过修改的和/或翻译成其他语言的程序。在下文中,翻译包含在修改的条款中。每个许可证接受人(licensee)用来称呼。 许可证条款不适用于复制,发布和修改以外的活动。这些活动超出这些条款的范围。运行程序的活动不受条款的限止。仅当程序的输出构成基于程序作品的内容时,这一条款才适用(如果只运行程序就无关)。判断是否成立取决于程序的行为。 第 1 节 只要你在每一副本上明显和恰当地出版版权声明和不承担担保的声明,保持此许可证的声明和没有担保的声明完整无损,并和程序一起给每个其他的程序接受者一份许可证的副本,你就可以用任何媒体复制和发布你收到的原始的程序的源代码。 你可以为转让副本的实际行动收取一定费用。你也有权选择提供担保以换取一定的费用。 第 2 节 You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. Exception: If the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement. 这些要求适用于修改了的作品的整体。如果能够确定作品的一部分并非程序的衍生产品,可以合理地认为这部分是独立的,是不同的作品。当你将它作为独立作品发布时,它不受此许可证和它的条款的约束。但是当你将这部分作为基于程序的作品的一部分发布时,作为整体它将受到许可证条款约束。准予其他许可证持有人的使用范围扩大到整个产品。也就是每个部分,不管它是谁写的。 因此,本条款的意图不在于索取权利;或剥夺全部由你写成的作品的权利。而是履行权利来控制基于程序的集体作品或衍生作品的发布。 此外,将与程序无关的作品和该程序或基于程序的作品一起放在存贮体或发布媒体的同一卷上,并不导致将其他作品置于此许可证的约束范围之内。 第 3 节 You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) 作品的源码指的是对作品进行修改最优先择取的形式。对可执行的作品讲,完整的源码包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的脚本。作为特殊例外,发布的源码不必包含任何常规发布的供可执行代码在上面运行的操作系统的主要组成部分(如编译程序、内核等)。除非这些组成部分和可执行作品结合在一起。 如果采用提供对指定地点的访问和复制的方式发布可执行码或目标码,那么,提供对同一地点的访问和复制源码可以算作源码的发布,即使第三方不强求与目标码一起复制源码。 第 4 节 除非你明确按许可证提出的要求去做,否则你不能复制,修改,转发许可证和发布程序。任何试图用其他方式复制,修改,转发许可证和发布程序是无效的。而且将自动结束许可证赋予你的权利。然而,对那些从你那里按许可证条款得到副本和权利的人们,只要他们继续全面履行条款,许可证赋予他们的权利仍然有效。 第 5 节 你没有在许可证上签字,因而你没有必要一定接受这一许可证。然而,没有任何其他东西赋予你修改和发布程序及其衍生作品的权利。如果你不接受许可证,这些行为是法律禁止的。因此,如果你修改或发布程序(或任何基于程序的作品),你就表明你接受这一许可证以及它的所有有关复制,发布和修改程序或基于程序的作品的条款和条件。 第 6 节 每当你重新发布程序(或任何基于程序的作品)时,接受者自动从原始许可证颁发者那里接到受这些条款和条件支配的复制,发布或修改程序的许可证。你不可以对接受者履行这里赋予他们的权利强加其他限制。你也没有强求第三方履行许可证条款的义务。 第 7 节 如果由于法院判决或违反专利的指控或任何其他原因(不限于专利问题)的结果,强加于你的条件(不管是法院判决、协议或其他)和许可证的条件有冲突。他们也不能用许可证条款为你开脱。在你不能同时满足本许可证规定的义务及其他相关的义务时,作为结果,你可以根本不发布程序。例如,如果某一专利许可证不允许所有那些直接或间接从你那里接受副本的人们在不付专利费的情况下重新发布程序,唯一能同时满足两方面要求的办法是停止发布程序。 如果本条款的任何部分在特定的环境下无效或无法实施,就使用条款的其余部分。并将条款作为整体用于其他环境。 本条款的目的不在于引诱你侵犯专利或其他财产权的要求,或争论这种要求的有效性。本条款的主要目的在于保护自由软件发布系统的完整性。它是通过通用公共许可证的应用来实现的。许多人坚持应用这一系统,已经为通过这一系统发布大量自由软件作出慷慨的供献。作者/捐献者有权决定他/她是否通过任何其他系统发布软件。许可证持有人不能强制这种选择。 本节的目的在于明确说明许可证其余部分可能产生的结果。 第 8 节 如果由于专利或者由于有版权的接口问题使程序在某些国家的发布和/或使用受到限止,将此程序置于许可证约束下的原始版权拥有者可以增加限止发布地区的条款,将这些国家明确排除在外。并在这些国家以外的地区发布程序。在这种情况下,许可证包含的限止条款和许可证正文一样有效。 第 9 节 自由软件基金会可能随时出版通用公共许可证的修改版或新版。新版和当前的版本在原则上保持一致,但在提到新问题时或有关事项时,在细节上可能出现差别。 每一版本都有不同的版本号。如果程序指定适用于它的许可证版本号以及任何更新的版本。你有权选择遵循指定的版本或自由软件基金会以后出版的新版本,如果程序未指定许可证版本,你可选择自由软件基金会已经出版的任何版本。 第 10 节 如果你愿意将程序的一部分结合到其他自由程序中,而它们的发布条件不同。写信给作者,要求准予使用。如果是自由软件基金会加以版权保护的软件,写信给自由软件基金会。我们有时会作为例外的情况处理。我们的决定受两个主要目标的指导。这两个主要目标是:我们的自由软件的衍生作品继续保持自由状态。以及从整体上促进软件的共享和重复利用。 无保证 第 11 节 由于程序准予免费使用,在适用法准许的范围内,对程序没有担保。除非另有书面说明,版权所有者和/或其他提供程序的人们一样不提供任何类型的担保。不论是明确的,还是隐含的。包括但不限于隐含的适销和适合特定用途的保证。全部的风险,如程序的质量和性能问题都由你来承担。如果程序出现缺陷,你承担所有必要的服务、修复和改正的费用。 第 12 节 除非适用法或书面协议的要求,在任何情况下,任何版权所有者或任何按许可证条款修改和发布程序的人们都不对你的损失负有任何责任。包括由于使用或不能使用程序引起的任何一般的,特殊的,偶然发生的或重大的损失(包括但不限于数据的损失,或者数据变得不精确,或者你或第三方的持续的损失,或者程序不能和其他程序协调运行等)。即使版权所有者和其他人提到这种损失的可能性也不例外。
usr/share/help-langpack/zh_CN/lgpl/index.docbook0000644000373100047300000007002012311475532023475 0ustar langpacklangpack00000000000000
GNU 宽通用公共许可证 2000 Free Software Foundation, Inc. Free Software Foundation GNOME 文档项目 2.1 1999-02
Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
.
允许任何人复制和发布这一许可证原始文档的副本,但绝对不允许对它进行任何修改。
1999年2月,版本2.1 The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software - to make sure the software is free for all its users.
序言 大多数软件许可证决意剥夺你的共享和修改软件的自由。相反,GNU 通用公共许可证力图保证你的共享和修改自由软件的自由——保证自由软件对所有用户是自由的。 当我们谈到自由软件时,我们指的是自由而不是价格。我们的 GNU 通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用);保证你能收到源程序或者在你需要时能够得到它;保证你能修改软件或将它的一部分用于新的自由软件;而且还保证你知道你能做这些事情。 此许可证,较宽松通用公共许可证,适用于自由软件基金会以及那些决定使用此许可证的作者所特殊设计的软件包——特别是库。您也可以使用此许可证,但是我们建议您先根据下面的解释仔细考查一下究竟是此许可证还是传统的通用公共许可证较适合在任何特定用途中使用。 当我们谈到自由软件时,我们指的是用途自由而不是价格。我们的 GNU 通用公共许可证决意保证你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用);保证你能收到源程序或者在你需要时能够得到它;保证你能修改软件或将它的一部分用于新的自由软件;而且还保证你知道你能做这些事情。 为了保护你的权利,我们需要作出规定:禁止任何人否认你的权利,或者要求你放弃这些权利。如果你修改了库或者发布了库的副本,这些规定就转化为你的责任。 例如,如果你发布这样一个库的副本,不管是收费的还是免费的,你必须将你具有的一切权利给予你的接受者;你必须保证他们能收到或得到源程序;如果你把该库与某个程序进行连接,你必须把完整的目标文件提供给接受者,以使他们在修改了库并重新进行了编译之后可以重新与该库进行连接。并且,你必须向他们展示这些条款,使他们了解自己的的权利。 我们采取两项措施来保护你的权利:(1) 我们保护库的版权,(2) 我们为您提供了此许可证,它给你复制、发布和修改库的法律许可。 为了保护发布者,我们需要清楚地让每个人明白,自由库没有担保。同时,如果由于其他某个人修改了库,并继续加以传播,我们需要它的接受者明白:他们所得到的并不是原来的版本。任何由其他人引入的任何问题,不应损害原作者的声誉。 最后,任何自由软件不断受到软件专利的威胁。我们想要确保公司无法通过专利持有人的限制性许可证来限制自由软件的用户。因此,我们坚持库的任何版本所获得的任何专利许可都必须与此许可证所指定的完全自由用途相吻合。 大多数 GNU 软件,包括某些库,都是由传统的 GNU 通用公共许可证所管理的。此协议,GNU 宽通用公共许可证,适用于某些特殊设计的库,因而与传统的 GNU 通用公共许可证有所不同。我们对特定的库使用这一许可是为了允许将这些库与非自由的程序链接在一起。 当程序与库链接在一起的时候,不管是静态还是共享库,此二者的组合可以被称为结合的作品,或称原始库的派生作品。传统的 GNU 通用公共许可证仅当整个组合符合其自由条件时才允许这样链接。宽通用公共许可证则在将其它代码与库链接在一起时条件更为宽松。 我们把这份许可证称为宽(Lesser)通用公共许可证,因为它在保护用户自由方面比原通用公共许可证相比要弱。对于自由软件开发者与纯非自由软件的竞争,它提供的优势也更少。这些优势是我们的许多库使用常规的通用公共许可证的原因。然而,更宽松的许可在某些特定环境中有自己的优势。 例如,在一些少见的情形下,需要鼓励尽量广泛的使用某个特定库,以使它成为一种事实标准。要实现这一目的,必须允许非自由软件使用该库。更常见的例子是,一个自由库实现了某个广泛使用的非自由库的相同功能。这时,将自由库限定于自由软件才能使用得不偿失,因此我们使用宽通用公共许可证。 在其他情形下,允许在非自由程序中使用某个特定的库使得更多的人可以广泛地使用自由软件。例如,允许在非自由程序中使用 GNU C 库允许更多的人使用整个 GNU操作系统和它的变体,GNU/Linux 操作系统。 尽管宽通用公共许可证在保护用户自由上弱一些,它仍然能保证与自由库链接的程序的用户使用该库的修改版本运行那个程序的自由和必要条件。 以下是有关复制、传播和修改的条款和条件的详细阐述。请特别留意基于库的作品使用库的作品之间的差别。前者包含从库中衍生的代码,而后者必须与该库一起才能运行。 复制、传播和修改的条款及条件 第 0 节 此许可协议适用于任何软件库或其他程序,条件是它们包含一条由版权拥有者或其他授权方置入的声明,言明它可以在此宽通用公共许可证(也称此协议 )条款约束下传播。各获授权者由指定。 一个是指一系列编译好的软件函数和/或数据的集合,可以方便地与应用程序(它使用了其中的一些函数和数据)链接来组成可执行程序。 下文所说的,是指任何在这些条款下发布的软件库或作品。一件基于库的作品是指该库或任何在版权法规定下的派生作品:即包含该库或部分库和作品,无论是原样使用还是经过修改和/或直接翻译为另一种语言。(下文中,翻译将不作限制地包含在术语修改的范围内。) 一件作品的源代码是指用来对作品作修改的优先形式。对于库,完整的源代码意味着它包含的所有模块的所有源代码,以及任何与接口定义相关的文件,还有使用和控制编译和安装库的脚本。 此许可证不影响复制、传播和修改以外的活动;这些活动超出了约束范围。执行使用了库的程序的行为不受限制,这类程序的输出也不在约束范围内,除非输出内容构成了一件基于库的作品(与在编写它的工具中使用库的情况无关)。判断是否约束取决于库所发挥的作用以及使用库的程序的行为。 第 1 节 在收到库后,你可以使用任何媒介原样复制和传播库的源代码,只要你以明确和适当的方式在每份副本中公布一个恰当的版权提示和担保声明;保持所有提及此许可证和缺少保证的提示的完整性;并与在库发布时附一份此许可的副本。 你可以为转让副本的实际行动索要费用,也可以选择通过提供担保来获取费用。 第 2 节 You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: The modified work must itself be a software library. You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 第 3 节 你可以选择向库的副本应用原 GNU 通用公共许可证而非此许可证。为此,你必须调整所有提及此许可证的声明,让它们指向原通用公共许可证第 2 版,而不是本许可证。(如果出现了原通用公共许可证比第 2 版更新的版本,你可以转而指定那个版本,取决于你的意愿。)不要对声明其他部分作任何更改。 一旦对给定副本作出修改,该副本就无法恢复,因此原 GNU 通用公共许可证将应用于该副本的所有后续副本和衍生作品。 此选项在你希望将库的部分代码复制到一个非库的程序中时有用。 第 4 节 你可以在上面第1、2节条款的约束下以目标代码或可执行文件的形式复制和传播第 2 节中的库(或其部分或衍生内容),前提是你随之附带相应的机器可读的完整源代码,代码必须在第1、2节条款约束下通过常用的软件交换媒介分发。 如果传播目标代码是通过提供从某个指定位置复制的访问权限的形式进行的,则提供从相同位置访问并复制源代码的同等权限即满足发布源代码的要求,尽管不强制第三方与目标代码一起复制源代码。 第 5 节 一个未包含该库的衍生或部分内容,但设计为通过和库一起编译和链接的方式与库一同工作的程序,称为使用库的作品。这样的作品从个体来讲,不是库的衍生作品,因此不在此许可证的约束范围内。 然而,将使用库的作品与库链接生成的可执行文件是库的衍生作品(因为它包含库的一部分),而非使用库的作品。因此该可执行文件受此许可证约束。第 6 节阐述了此类可执行文件的发布条款。 使用库的作品使用了来自组成库的头文件的内容时,该作品的目标代码可能成为库的衍生作品,尽管源代码不是。这一事实是否成立可以从该作品离开该库能否链接或它是否本身就是库很明显的判断出来。判断的标准没有精确的法律定义。 如果这样的目标文件只使用了数值参数、数据结构布局和访问接口、小的宏以及小的内嵌函数(10 行或更短),则使用该目标文件不作限制,不管它在法律上是不是衍生作品。(包含此目标代码加上部分库的可执行文件仍然符合第 6 节)的约束。 否则,如果该作品是库的衍生作品,你可以遵照第 6 节的条款发布此作品的目标代码。任何包含该作品的可执行文件也受第 6 节的约束,不管它们是否与该库直接链接。 第 6 节 As an exception to the Sections above, you may also combine or link a work that uses the Library with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable work that uses the Library, as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a , above, for a charge no more than the cost of performing this distribution. If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the work that uses the Library must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 第 7 节 You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 第 8 节 You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 第 9 节 You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 第 10 节 Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 第 11 节 If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 第 12 节 If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 第 13 节 The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and any later version, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 第 14 节 If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. 没有担保 第 15 节 BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 第 16 节 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
usr/share/help-langpack/zh_CN/fdl/index.docbook0000644000373100047300000005655712311475532023327 0ustar langpacklangpack00000000000000
GNU 自由文档许可证 版本 1.1,2000年3月 2000Free Software Foundation, Inc. Free Software Foundation GNOME 文档项目 1.1 2000-03
Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
本许可证的目的在于使手册、教科书或其它文字文档具有自由的属性:确保每个人都具有复制和重新发布它的有效自由,而不论是否作出修改,也不论其是否具有商业行为。其次,本许可证保留了作者及发布者由他们的工作而获得名誉的途径,同时也不认为他们应该对其他人所作出的修改而担负责任。
导言 本许可证的目的在于使手册、教科书或其它文字文档具有自由的属性:确保每个人都具有复制和重新发布它的有效自由,而不论是否作出修改,也不论其是否具有商业行为。其次,本许可证保留了作者及发布者由他们的工作而获得名誉的途径,同时也不认为他们应该对其他人所作出的修改而担负责任。 本许可证是一种copyleft,这表示文件的衍生作品本身必须具有相同的自由涵义。它补充了 GNU 公共通用许可证,即一种为了自由软件而设的“copyleft”许可协议。 我们设计了本许可证,目的是为了将它应用于自由软件的手册上,因为自由软件需要自由的文档:一个自由的程序应该提供与此软件具有相同自由的手册。但是本许可证并不限于软件手册的应用;它可以被用于任何文字作品,而不论其主题内容,或者它是否为一个已出版的印刷书籍。我们推荐本许可证主要应用在以使用说明或提供参考作为目的的作品上。 效力与定义 本许可证可应用于满足如下条件的任何使用手册或其它作品,只要它们包含由版权所有人所指定的声明,并在声明中说明它可以在本许可证的条款下发布。下文中的文档,可以指任何满足以上条件的手册或作品。公众中的任何成员都是被许可人,并且称作为 文档的修改版本 指的是任何包含该文档或部分文档内容的作品,不论是逐字的复制或是经过修改的复制,以及/或是翻译成其它语言。 次要章节文档的一个具名附录,或是正文前面内容的章节,该章节专门用来处理文档的发布者或作者,与文档整体主题(或其它相关内容)的关系,并且不包含任何可以直接归入那个整体主题的内容。(例如,如果文档的部分内容是作为数学教科书,那么其次要章节就可以不用来解释任何数学。)它的关系可以是与主题相关的历史连接,或是与其相关的法律、商业、哲学、伦理道德或政治立场。 不变章节是标题已指定的某些 次要章节,在声明以本许可证发布的文档 中,以此作为不变章节。 封面文字是某些被加以列出的简短文字段落,在声明以本许可证发布的文档中,以此作为前封面文字或后封面文字。 文档的透明拷贝是指机器可读的拷贝,它以一种一般公众可取得其规格说明的格式来表现,适合于直接用一般文字编辑器、一般图像程序(用于由像素构成的图像)或一些可以广泛取得的绘图程序(用于由向量绘制的图形)直接地进行查看编辑;并且适合于输入到文字格式化程式,或是可以自动地转换到适合于输入到文字格式化程序的各种格式。一份以透明以外的档案格式所构成的拷贝,其标记或缺少标记,若是被安排成用来挫折或是打消读者进行其后续的修改,则此拷贝并非透明。一个不是透明的拷贝被称为混浊。 透明拷贝适合格式的例子包括有:没有标记的纯 ASCII、Texinfo 输入格式、LaTeX 输入格式、使用可以公开取得其 DTD 的 SGML 或 XML、合乎标准的简单 HTML。混浊格式包括PostScript,PDF,只能够以私人文书处理器阅读以及编辑的私人格式,DTD 以及或处理工具不能够一般地加以取得的 SGML 或 XML,以及由某些文字处理器仅为了输出目的而做出的,由机器生成的 HTML、PostScript 或 PDF。 标题页对一本印刷书籍来说,指的是标题页本身,以及所需要用来容纳本授权必须出现在标题页的易读内容的接续页。对于并没有任何如此页面的作品的某些格式, 标题页指的是本文主体开始之前作品标题最显著位置的文字。 逐字的复制 您可以在任何媒体中复制或发布文档,而不论其是否具有商业行为,限制条件为提供本许可证、版权声明和许可声明,说明本授权效力于文件的所有重制拷贝,并且没有增加任何其它条件到本许可证的条件中。你不可以使用技术手段,来妨碍或控制你所制作发布的拷贝阅读或进一步的发布。然而,你可以接受补偿以作为拷贝的交换。如果你发布了数量足够大的拷贝,你也必须遵循第三部分的条件。 您也可以在上述的相同条件下借出拷贝,并且可以公开地陈列拷贝。 大量地复制 如果您发布文档的印刷拷贝数超过 100,而且文件许可声明要求有封面文字,那么您必须将这些拷贝附上清楚且易读的文字:前封面文字于前封面上、后封面文字于后封面上。这两种封面必须清楚易读地辨认出,您是这些拷贝的发布者。前封面文字必须展示完整的标题,而标题的文字应当同等地显著可见。您可以增加额外的内容于封面上。仅在封面作出改变的复制,只要它们保留了文件 的标题,并且满足了这些条件,可以看作为在其它方式的逐字复制。 如果对于任意一个封面,所需文字量过于庞大以至于不能符合易读的原则,您应该在实际封面列出最前面的内容(所能符合易读原则),然后将剩下的接续在相邻的页面。 If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. 您被要求,但不是必须,在重新发布任何大数量的拷贝之前,与文档的作者联系,给予他们提供给你文档更新版本的机会。 修改 在上述第二条和第三条的条件下,你可以复制和发布文档的修改版本,其条件为您要精确地在本许可证下发布修改版本,且修改版本补足了文档的角色,从而允许修改版本的发布和修改权利给任何拥有它拷贝的人。另外,您必须在修改版本中做这些事: 标题页 (或在封面上,如果有的话)使用与文档标题不同,及与先前版本标题不同的标题(应该被列在文档的历史章节不同的标题)。如果版本的原始出版者允许,你可以使用与某一个先前版本相同的标题。 修改版本的标题页上列出担负作者权的一个、多个人或实体作为作者,并且列出至少五位文档 的主要作者(如果少于五位,则列出全部的主要作者)。 标题页上陈述修改版本的发布者名称作为发布者。 保留文档的所有版权声明。 为您的修改增加适当的版权声明,并与其它版权声明相邻。 在版权声明后面,以附录所显示的形式,包含一个给予公众在本许可证条款下使用修改版本的许可声明。 在那个许可声明中保留 不变章节和文档许可声明中必要封面文字的全部列表。 包括一个未被改变的本许可证的副本。 保留标题为历史的章节和其标题,并且增加一项至少陈述如同在标题页中所给的修改版本的标题、年份、新作者和出版者。如果在文档中没有标题为历史的章节,则制作出一个陈述如同在它的标题页中所给的文件的标题、年份、作者和出版者,然后增加一项如前面句子所述描述修改版本的情形。 如果有的话,保留在文档 中为了给公众存取文件的透明拷贝,而给予的网络位置,以及同样地在文件中为了它所根据的先前版本,而给予的网络位置。这些可以置于历史章节。在文档本身之前已至少出版了四年的作品,可以省略其网络位置,或是如果它所参照的那个版本的原始出版者给予允许的情形下也可以省略它。 在任何标题为致谢献辞的章节,保留章节的标题,并且在那章节保留每一个贡献者的致谢以及/或献词的所有主旨与语调。 保留文档的所有不变章节,它们的文字与标题皆不能变更。章节号码或其等价物并不认为是章节标题的一部份。 删除任何标题为 批注的章节。这样的章节不可以被包括在修改版本中。 不要将任何现存的章节重新命名为批注,或造成与任何不变章节相冲突的标题。 如果修改版本包括新的本文之前内容的章节,或合乎作为次要章节的附录,并且没有包含复制自文档的内容,则您具有选择可以指定一些或全部这些章节为不变章节。要这样做,请将它们的标题增加到在修改版本许可声明中的不变章节列表中。这些标题必须区别于任何其它章节标题。 您可以增加一个标题为批注的章节,其条件为它仅只包含由许多团体所提供的您的修改版本的批注 -- 举例来说,同事评审的说明,或本文已经被一个机构认可为一个标准的权威定义。 您可以增加一个最多五个单词的段落,作为前封面文字,以及一个最多二十五个单词的段落,作为后封面文字,将它们置于修改版本的封面文字 列表的后面。前封面文字和后封面文字都只能有一个段落,可以经由任何一个实体(或经由其所作出的安排)加入。如果文档已经在同样的封面包括了封面文字,先前由你或由你所代表的相同实体所作出的安排而加入,则不可以增加另外一个;但是您可以在先前出版者的明确允许下替换掉旧的。 The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version . 组合文档 您可以依照上述第四条的条款中对于修改版本的定义,将文档与其它在本许可证下发行的文件组合起来,其条件是要在组合作品中,包含所有原始文档的所有不变章节,不做修改,同时在组合作品的许可声明中将它们全部列为不变章节。 组合作品只需包含本许可证的一份副本,并且重复的不变章节可以仅以单个拷贝来代替。如果名称重复但内容不同的不变章节,则将每一个这样章节的标题,以在它的后面增加的方式加以独特化,如果已知的话,在括号中指出那个章节的原始作者或发布者的名称,或是指定一个独特的号码。在此组合作品许可声明中不变章节的列表中,对其章节标题也作出相同的调整。 在组合品中,您必须组合在不同原始文档中标题为历史的任何章节,形成一个标题为历史的章节;同样组合任意标题为感谢贡献的章节。你必须删除标题为批注的所有章节。 文档的收集 您可以制作含有文档以及其它以本许可证发行文件的收集品,并且将本许可证对不同文件中的个别副本,以单一个包括在收集品的副本取代,其条件是要遵循在其它方面,给予一个文件逐字复制的允许本许可证的规则。 您可以从这样的一个收集品中抽取出一份单一的文档,并且在本许可证下将它单独地发布,其条件是要在抽取出的文件中插入本许可证的一份副本,并且在关于那份文件的逐字复制的所有其它方面,遵循本许可证。 独立作品的聚集 A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an aggregate, and this License does not apply to the other self-contained works thus compiled with the Document , on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate. 翻译 翻译被认为一种修改,因此您可以在第四条的条款下发布文档的翻译。用翻译更换不变章节需要取得版权所有者的特别允许,但是你可以包括部份或所有不变章节的翻译,使其附加到这些不变章节的原始版本之中。你可以包括本许可证的翻译,其条件为你也必须包括本许可证的原始英文版本。如果发生翻译与本许可证、声明或放弃的原始版本有不一致之处,将以原始英文版本为准。 终止 除非明白地表示是在本许可证下,否则你不可以复制、修改、添加二次许可、或发布文档,。任何其它的复制、修改、在本许可证下再设定额外条件的二次许可、或发布文档的意图都是无效的,并且将会自动地终止你在本许可证下所被保障的权利。然而,你在本许可证下收到拷贝及权利的团体,只要团体完全遵守本许可证的条件,则他们所获得的许可将不会被终止。 本许可证的未来修订版 自由软件基金会可能偶尔会发布自由文件许可证的新修订版本。这种新版本在精神上将会类似于现在的版本,但在细节上可能会有不同,以对应新的问题或相关的事。请参见 http://www.gnu.org/copyleft/ 本许可证的每个版本都被指定一个可供区别的版本号。如果文档 指定一个效力于它的特定版本号的本许可证或任何以后的版本,你就具有选择遵循指定的版本,或任何已经由自由软件基金会出版(非草稿)的后来版本的条款和条件。如果文件并没有指定一个本授权的版本号码,你就可以选择任何一个曾由自由软件基金会所出版(非草稿)的版本。 附录 要在您撰写的文档中使用本许可证,必须在文档中包括本许可证的一份复本,并在标题页之后添加如下版权与许可声明:
Copyright (c) 年份 您的姓名. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled GNU Free Documentation License.
If you have no Invariant Sections, write with no Invariant Sections instead of saying which ones are invariant. If you have no Front-Cover Texts, write no Front-Cover Texts instead of Front-Cover Texts being LIST; likewise for Back-Cover Texts. 如果您的文档中包含有重要的程序码范例,我们建议这些范例在您选择的自由软件许可证下并行发布,如以 GNU 通用公共许可证 ,从而允许它们作为自由软件而使用。
usr/share/help-langpack/zh_CN/brasero/tools-check-integrity.page0000644000373100047300000000310612253720471026611 0ustar langpacklangpack00000000000000 您可以在刻录光盘后检查其完整性。 Paulina Gonzalez pau.gonzalezbr@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

知识共享协议 相同方式共享许可 3.0

检查盘片完整性

在使用 Brasero 刻录一张 CD/DVD 后,您可以通过检查光盘完整性来确认光盘中的文件完整无损。

选择 工具检查完整性...

如果您愿意,可以选择 使用 MD5 文件检查光盘 选项。

MD5 (信息摘要算法 5) 是 一种广泛应用于数据完整性检查的密码散列函数。

如果您选择了该选项,那么需要通过点击下方的文件夹图标来找到对应的 MD5 文件。

点击 检查 继续,或点击 关闭 取消检查。

在检查完成后,您可以选择重新检查 或直接 关闭

usr/share/help-langpack/zh_CN/brasero/introduction.page0000644000373100047300000000244612253720471025111 0ustar langpacklangpack00000000000000 Brasero 光盘刻录程序介绍。 Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

介绍

Brasero 是一款用于刻录 CD 和 DVD 的应用程序,简单易用,并提供了刻录所需的所有工具。

使用 Brasero 您可以:

刻录数据到 CD 和 DVD

将数字音乐文件(如 ogg、flac 和 mp3)刻录为音乐 CD

复制 CD 和 DVD

创建视频 DVD 或 SVCD

创建镜像文件和刻录已有的镜像文件

擦除 CD-R/W 和 DVD-R/W

检查光盘和光盘镜像的完整性

<gui>Brasero</gui> 主窗口
usr/share/help-langpack/zh_CN/brasero/prob-dvd.page0000644000373100047300000000256212253720471024104 0ustar langpacklangpack00000000000000 我无法写入 DVD-R 或 DVD-RW 光盘。 Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

创建 DVD 有问题

某些类型的 DVD-R 和 DVD-RW 光盘不能和所有的刻录机兼容,请检查以下内容了解您的刻录机是否可以使用这些盘片。

检查您的 DVD 光驱是否接受 DVD+ 或者 DVD- 盘片;如果它上面标有“multi(多重)”,通常说明它可以使用这两种光盘。检查您的光盘看是否有与 DVD 光驱同样的标记。

检查您的盘片是的多层的还是单层的:有些 DVD 光驱不能对多层盘片进行写入操作。

如果您想使用 DVD-R 盘片,检查它是否已经被写过了。如果您想使用 DVD-RW 盘片,请尝试清空原有数据再进行写操作。

usr/share/help-langpack/zh_CN/brasero/create-cover.page0000644000373100047300000000432112253720471024741 0ustar langpacklangpack00000000000000 Create an inlay for a jewel case. Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

创建封面

You can use Brasero to create inlays for your jewel cases. Access the creator by clicking Tools Cover Editor.

If you are creating an audio project and finish putting together the project before creating an inlay, then when you access the Cover Editor interface from the audio project window, the tracks will automatically be listed on the back cover.

如果您关闭 封面编辑器,您的更改将丢失。

打开 封面编辑器

Choose the formatting you wish to use for the text and type the text, scrolling down to see the side and back inlay for the jewel case.

当您第一次看到 封面编辑器 对话框,您不能点击任何文本格式选项。点击您想要加工的封面才能使用它们。

点击 背景属性 工具栏图标来为当前封面添加背景,或在您要编辑的封面上右击,选择 设置背景属性。您可以选择使用纯色背景或选择一张背景图像。

如果您选择了一个居中的背景图像,则当您选点击 关闭 按钮时,Brasero有时候会崩溃。

点击 关闭 按钮来应用更改并关闭 背景属性 对话框。

使用位于对话框右上角的 打印 按钮来打印封面。

usr/share/help-langpack/zh_CN/brasero/project-data.page0000644000373100047300000000460512253720471024744 0ustar langpacklangpack00000000000000 向 CD 或 DVD 写入数据。 Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

创建一个新的数据项目

一个数据项目是用来将数据(如文件、照片、音乐)写入光盘,而不对这些文件做任何的改动。这在计算机间传输文件时非常有用。

在开始页面点击 数据项目,或选择 项目新建项目新建数据项目

通过点击工具栏上的 添加 并选择文件来向项目中添加需要的文件。您可以通过将文件拖放到项目区域或点击 编辑添加文件 的方式来添加文件。

您可以在 CD 上创建文件夹来更结构化的储存您的数据。要创建文件夹,在工具栏上点击新文件夹,或者在菜单栏中选择 编辑新文件夹。您也可以在文件夹中创建文件夹。

您可以在项目区下面的文字输入框中为光盘添加一个标题。

在下拉列表中选择空白光盘。

点击 刻录... 继续。

从下拉菜单中选择 刻录速度 和其他需要的选项。

点击 刻录 来刻录单张项目 CD,或点击刻录多份副本来将您的项目刻录为多张 CD

如果您使用是的包含数据的可读写光盘,程序会询问您是想擦除它还是插入另一张新的光盘。

如果您使用是的一张刻录不正确的可读写光盘,在重试之前您可能需要对光盘做一次完整(非快速方式的)清空。

usr/share/help-langpack/zh_CN/brasero/index.page0000644000373100047300000000134012253720471023467 0ustar langpacklangpack00000000000000 Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

<media type="image" src="figures/logo32.png"/> Brasero Help
创建一个新的项目
故障排除
其他工具
usr/share/help-langpack/zh_CN/brasero/project-save.page0000644000373100047300000000447112253720471024772 0ustar langpacklangpack00000000000000 保存项目以备后续编辑或刻录。 Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

保存项目

您可以在 Brasero 中保存音频、数据和视频项目,以便日后编辑和刻录。

创建一个项目并将您想使用的文件添加到项目中。

点击 项目保存 来保存项目。

输入您想保存项目的名称,然后点击 保存 来保存项目。

有多种途径来打开保存的 Brasero 项目:

从开始页面的 最近项目 列表中选择项目

点击 项目最近项目

点击 项目打开 并选择项目

从文件浏览器中打开项目

Only one instance of Brasero can be opened at any time. If you try to open a second instance, the currently open Brasero window will be focused.

If Brasero is already running and you try to open some files with it from Files, the files will be added to the project that you are currently working on.

如果您打开一个已保存的项目,Brasero 会把它作为一个新项目:如果您想保存更新后的项目,程序会请您为它输入一个名字,这时您可以选择覆盖老版本,或输入不同的文件名将它保存为一个新项目。

usr/share/help-langpack/zh_CN/brasero/project-audio.page0000644000373100047300000000374212253720471025135 0ustar langpacklangpack00000000000000 创建一个新音频的项目。 Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

写入一张音乐 CD

Brasero 可以将音频文件写入CD,以供您在 CD 播放器中播放等使用。最好用不可重写的 CD 刻录,因为不是所有的 CD 播放器都能播放可重写 CD。

点击开始页面中的 音频项目,或选择 项目新建项目新建音频项目

点击 工具栏中的 添加 并选择想要的文件来向项目中添加音频文件。您也可以通过将文件拖放到项目区域或者点击 编辑添加文件 来添加文件。

您可以在项目区域下方的文字输入区域为 CD 添加一个标题。

在下拉菜单中选择空 CD。

点击 刻录... 继续。

从下拉菜单中选择 刻录速度 和其他需要的选项。

点击 刻录 开始刻录单张项目光盘,或点击 刻录多份副本 来将项目刻录到多张光盘

您可以通过 分割 工具来将一个单独的轨道分割为多个轨道,并通过 暂停 按钮在每条轨道后添加一个 2 秒的间隔。

usr/share/help-langpack/zh_CN/brasero/split-track.page0000644000373100047300000000504512253720471024623 0ustar langpacklangpack00000000000000 将一个音频项目的轨道分割成多条。 Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

分割一条音轨

当您合并一个音频项目时,可以将一条音轨分割成多条。

启动音频项目,并添加您想要使用的轨道。

通过单击选择您想要分割的轨道,然后点击 编辑分割轨道… 或者在轨道上右击并从菜单中选择 分割轨道…

选择您偏好的轨道分割方法:

手动分割轨道

此选项让您手动选择该音轨的各个新片段的精确长度。

按照固定长度分割轨道

此方法可以将轨道分割成等长的多个片段。

按照固定的分割片数分割轨道

此方法让您将音轨分成指定数目的几个片段,各段长度相同。

根据每个无声部分分割轨道

选择此方法,Brasero 会自动检测录音中的无声部分,并在相应位置分割音轨。

点击 分片 进行音轨分割。

如果您想将一条音轨分割成不到 6 秒的片段,则新分割的片段会被填充到 6 秒长。

点击 确定 来确认您的分割音轨操作并应用更改。

在查看分割轨道对话框时,您可以多次分割或合并同一音轨。一旦您通过点击 确定 确认轨道分割,将不能再合并已经分出去的片段。要还原更改,请从您的项目中移除分割的轨道片段,然后重新加载该轨道。

usr/share/help-langpack/zh_CN/brasero/prob-cd.page0000644000373100047300000000241412253720471023711 0ustar langpacklangpack00000000000000 我的 MP3 文件在 DVD 或 CD 播放器中不能播放。 Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

CD 在 CD 播放器中不能播放

如果您的 CD 在 CD 播放器中不能播放,很可能是由于音乐文件没有正确的写入光盘,或者是因为您使用了数据项目来将音乐文件写入 CD,而不是用音频项目。

许多新的 CD 和 DVD 播放器可以播放数据项目创建的音乐 CD,但大多数老的播放器则不能。

老 CD 播放器可能无法播放 CD-RW 盘片。

如果您使用的是一张 CD-RW 光盘, 请先清空它。

以音频项目来重写该 CD。

usr/share/help-langpack/zh_CN/brasero/project-disc-copy.page0000644000373100047300000000301512253720471025717 0ustar langpacklangpack00000000000000 创建一个相同的光盘副本。 Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

复制光盘

点击主窗口中的 光盘复制 或选择 项目新建项目复制光盘...

选择要复制的光盘 下方的下拉菜单中选择您希望复制的光盘。如果您有不止一台光驱,那么会列出所有光驱的光盘。

选择是否希望制作光盘备份或创建镜像文件供以后使用。

点击 属性 按钮来选择刻录速度或者其他自定义选项。

点击复制 开始复制光盘。如果您想制作多个副本,点击制作多个副本

如果您只有一台光驱,则程序会在将光盘文件暂存到硬盘上以后要您将光驱的光盘更换为一张可擦写光盘。

usr/share/help-langpack/zh_CN/brasero/tools-blank.page0000644000373100047300000000245012253720471024610 0ustar langpacklangpack00000000000000 通过清空内容来擦除一张可读写 CD 或 DVD 光盘。 Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

擦除光盘

您可以准备一张等待清空的、存有数据的可擦写光盘。

选择 工具擦除...

如果您有不止一台放有可读写光盘的光驱,可以用 选择一张光盘选择对哪一张光盘进行修改。

您可以选择 快速擦除 来更快的清空 CD。

如果您在写入快速擦除后的光盘时出现问题,请尝试禁用快速擦除并重新擦除它。

点击 擦除 按钮继续。

当清空完成时光盘将会弹出。

usr/share/help-langpack/zh_CN/brasero/project-video.page0000644000373100047300000000341312253720471025135 0ustar langpacklangpack00000000000000 3 将视频写入 DVD 或 SVCD。 Ekaterina Gerasimova kittykat3756@googlemail.com

知识共享协议 相同方式共享许可 3.0

创建一个新视频的项目

Brasero 可以用来创建能在 DVD 播放器或笔记本电脑上播放的视频光盘。

点击主窗口中的 视频项目 或选择 项目新建项目新建视频项目

点击工具栏上的 添加 然后选择要添加进项目的视频文件。您也可以通过把文件拖放到项目区或点击 编辑添加文件 的方式来添加文件。

您可以在项目区下面的文字输入框中为光盘添加一个标题。

在下拉列表中选择空白光盘。

点击 刻录... 继续。

从下拉菜单中选择 刻录速度 和其他需要的选项。

点击 刻录 开始刻录单张项目光盘,或点击 刻录多份副本 来将项目刻录到多张光盘

usr/share/help-langpack/zh_CN/brasero/project-image-burn.page0000644000373100047300000000545512253720471026065 0ustar langpacklangpack00000000000000 将现有的光盘镜像写入 CD 或 DVD。 Marta Bogdanowicz majus85@gmail.com Ekaterina Gerasimova kittykat3756@gmail.com

知识共享协议 相同方式共享许可 3.0

刻录镜像

Brasero 可以将光盘镜像刻录到 CD 或 DVD 上。它支持以下光盘镜像扩展名:.iso.toc.cue

光盘镜像是包含了一张 CD 或 DVD 上所有数据的档案文件。一张 CD 同时只能容纳一个光盘镜像,但档案里的内容多少是任意的,只要光盘能容得下就行。

要将光盘镜像刻录到 CD 或 DVD,请按以下步骤操作:

Click Burn image on the start page or select ProjectNew ProjectBurn image… .

通过点击 点此选择光盘镜像 来选择要写入的光盘镜像。

请选择要写入的光盘 下方的下拉菜单中选择您要使用的光盘。如果您有不止一台光驱,那么会列出所有光驱中的光盘。

选择光盘后,Brasero 将显示刻录后光盘上剩余多少空间。

点击 属性 按钮来选择刻录速度或者其他自定义选项。

点击 刻录 开始刻录镜像。之后,您可以结束刻录或制作镜像的更多副本。

如果您使用的是一张包含数据的可读写光盘,程序会询问您是想擦除它还是插入另一张光盘。

language-pack-gnome-zh-hans-base/data/zh_CN/0000755000000000000000000000000012321561505015736 5ustar language-pack-gnome-zh-hans-base/data/zh_CN/LC_MESSAGES/0000755000000000000000000000000012321561540017522 5ustar language-pack-gnome-zh-hans-base/data/zh_CN/LC_MESSAGES/devhelp.po0000644000000000000000000003324112321561505021515 0ustar # devhelp simplified chinese translation # Copyright (C) 2002, 2004, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the devhelp package. # Zipeco , 2002. # Funda Wang , 2004 # Yang Zhang , 2007 # Deng Xiyue , 2008 # Richard Ma , 2009 # Tao Wang , 2010 # Aron Xu , 2010. # Cheng Lu , 2012. # msgid "" msgstr "" "Project-Id-Version: devhelp master\n" "Report-Msgid-Bugs-To: " "http://bugzilla.gnome.org/enter_bug.cgi?product=devhelp&keywords=I18N+L10N&co" "mponent=general\n" "POT-Creation-Date: 2014-02-17 12:43+0000\n" "PO-Revision-Date: 2014-02-18 04:01+0000\n" "Last-Translator: Cheng Lu \n" "Language-Team: Chinese (Simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2014-04-10 11:32+0000\n" "X-Generator: Launchpad (build 16976)\n" "Language: \n" #. i18n: Please don't translate "Devhelp" (it's marked as translatable #. * for transliteration only) #: ../data/devhelp.desktop.in.in.h:1 ../src/dh-app.c:162 ../src/dh-app.c:347 #: ../src/dh-window.c:655 msgid "Devhelp" msgstr "Devhelp" #: ../data/devhelp.desktop.in.in.h:2 msgid "Developer's Help program" msgstr "开发者帮助程序" #: ../data/devhelp.desktop.in.in.h:3 msgid "Documentation Browser" msgstr "文档浏览器" #: ../data/devhelp.desktop.in.in.h:4 msgid "documentation;information;manual;developer;api;" msgstr "" #: ../data/org.gnome.devhelp.gschema.xml.h:1 msgid "Main window maximized state" msgstr "主窗口最大化" #: ../data/org.gnome.devhelp.gschema.xml.h:2 msgid "Whether the main window should start maximized." msgstr "是否以最大化启动主窗口。" #: ../data/org.gnome.devhelp.gschema.xml.h:3 msgid "Width of the main window" msgstr "主窗口宽度" #: ../data/org.gnome.devhelp.gschema.xml.h:4 msgid "The width of the main window." msgstr "主窗口宽度。" #: ../data/org.gnome.devhelp.gschema.xml.h:5 msgid "Height of main window" msgstr "主窗口高度" #: ../data/org.gnome.devhelp.gschema.xml.h:6 msgid "The height of the main window." msgstr "主窗口高度。" #: ../data/org.gnome.devhelp.gschema.xml.h:7 msgid "X position of main window" msgstr "主窗口的 X 坐标" #: ../data/org.gnome.devhelp.gschema.xml.h:8 msgid "The X position of the main window." msgstr "主窗口的 X 坐标。" #: ../data/org.gnome.devhelp.gschema.xml.h:9 msgid "Y position of main window" msgstr "主窗口的 Y 坐标" #: ../data/org.gnome.devhelp.gschema.xml.h:10 msgid "The Y position of the main window." msgstr "主窗口的 Y 坐标。" #: ../data/org.gnome.devhelp.gschema.xml.h:11 msgid "Width of the index and search pane" msgstr "索引和搜索面板宽度" #: ../data/org.gnome.devhelp.gschema.xml.h:12 msgid "The width of the index and search pane." msgstr "索引和搜索面板宽度。" #: ../data/org.gnome.devhelp.gschema.xml.h:13 msgid "Selected tab: \"content\" or \"search\"" msgstr "所选的标签,是“内容”还是“搜索”" #: ../data/org.gnome.devhelp.gschema.xml.h:14 msgid "Which of the tabs is selected: \"content\" or \"search\"." msgstr "选中哪个标签,“内容”还是“搜索”?" #: ../data/org.gnome.devhelp.gschema.xml.h:15 msgid "Books disabled" msgstr "已禁用的书籍" #: ../data/org.gnome.devhelp.gschema.xml.h:16 msgid "List of books disabled by the user." msgstr "用户禁用的书籍列表。" #: ../data/org.gnome.devhelp.gschema.xml.h:17 msgid "Group by language" msgstr "按语言分组" #: ../data/org.gnome.devhelp.gschema.xml.h:18 msgid "Whether books should be grouped by language in the UI" msgstr "在界面上是否应按语言将书分组" #: ../data/org.gnome.devhelp.gschema.xml.h:19 msgid "Width of the assistant window" msgstr "辅助窗口宽度" #: ../data/org.gnome.devhelp.gschema.xml.h:20 msgid "The width of the assistant window." msgstr "辅助窗口宽度。" #: ../data/org.gnome.devhelp.gschema.xml.h:21 msgid "Height of assistant window" msgstr "辅助窗口高度" #: ../data/org.gnome.devhelp.gschema.xml.h:22 msgid "The height of the assistant window." msgstr "辅助窗口高度。" #: ../data/org.gnome.devhelp.gschema.xml.h:23 msgid "X position of assistant window" msgstr "辅助窗口的 X 坐标" #: ../data/org.gnome.devhelp.gschema.xml.h:24 msgid "The X position of the assistant window." msgstr "辅助窗口的 X 坐标。" #: ../data/org.gnome.devhelp.gschema.xml.h:25 msgid "Y position of assistant window" msgstr "辅助窗口的 Y 坐标" #: ../data/org.gnome.devhelp.gschema.xml.h:26 msgid "The Y position of the assistant window." msgstr "辅助窗口的 Y 坐标。" #: ../data/org.gnome.devhelp.gschema.xml.h:27 msgid "Use system fonts" msgstr "使用系统字体" #: ../data/org.gnome.devhelp.gschema.xml.h:28 msgid "Use the system default fonts." msgstr "使用系统默认字体。" #: ../data/org.gnome.devhelp.gschema.xml.h:29 msgid "Font for text" msgstr "普通文本字体" #: ../data/org.gnome.devhelp.gschema.xml.h:30 msgid "Font for text with variable width." msgstr "变动宽度文本使用的字体。" #: ../data/org.gnome.devhelp.gschema.xml.h:31 msgid "Font for fixed width text" msgstr "固定宽度文本字体" #: ../data/org.gnome.devhelp.gschema.xml.h:32 msgid "Font for text with fixed width, such as code examples." msgstr "固定宽度文本使用的字体,例如示例代码。" #: ../misc/gedit-plugin/devhelp.desktop.in.h:1 msgid "Devhelp support" msgstr "Devhelp 支持" #: ../misc/gedit-plugin/devhelp.desktop.in.h:2 msgid "Makes F2 bring up Devhelp for the word at the cursor" msgstr "使用 F2 为光标处单词启动 Devhelp" #: ../misc/gedit-plugin/devhelp.py:69 msgid "Show API Documentation" msgstr "显示 API 文档" #: ../misc/gedit-plugin/devhelp.py:71 msgid "Show API Documentation for the word at the cursor" msgstr "显示光标处单词的 API 文档" #: ../src/devhelp.ui.h:1 msgid "New window" msgstr "新建窗口" #: ../src/devhelp.ui.h:2 msgid "Preferences" msgstr "首选项" #: ../src/devhelp.ui.h:3 msgid "About Devhelp" msgstr "关于 Devhelp" #: ../src/devhelp.ui.h:4 msgid "Quit" msgstr "退出" #: ../src/devhelp.ui.h:5 msgid "New _Tab" msgstr "新建标签(_T)" #: ../src/devhelp.ui.h:6 msgid "_Print" msgstr "打印(_P)" #: ../src/devhelp.ui.h:7 msgid "_Find" msgstr "查找(_F)" #: ../src/devhelp.ui.h:8 msgid "_Larger text" msgstr "放大文本(_L)" #: ../src/devhelp.ui.h:9 msgid "S_maller text" msgstr "缩小文本(_M)" #: ../src/devhelp.ui.h:10 msgid "_Normal size" msgstr "正常大小(_N)" #: ../src/devhelp.ui.h:11 msgid "_Group by language" msgstr "按语言分组(_G)" #: ../src/devhelp.ui.h:12 msgid "Enabled" msgstr "已启用" #: ../src/devhelp.ui.h:13 msgid "Title" msgstr "标题" #: ../src/devhelp.ui.h:14 msgid "Book Shelf" msgstr "书架" #: ../src/devhelp.ui.h:15 msgid "_Use system fonts" msgstr "使用系统字体(_U)" #: ../src/devhelp.ui.h:16 msgid "_Variable width: " msgstr "变宽字体(_V): " #: ../src/devhelp.ui.h:17 msgid "_Fixed width:" msgstr "等宽字体(_F):" #: ../src/devhelp.ui.h:18 msgid "Fonts" msgstr "字体" #: ../src/dh-app.c:157 msgid "translator_credits" msgstr "" "Zipeco , 2002\n" "Funda Wang , 2004\n" "YangZhang , 2007\n" "Den Xiyue , 2008\n" "Richard Ma , 2009\n" "Tao Wang , 2010\n" "Aron Xu , 2010\n" "Cheng Lu , 2012\n" "\n" "Launchpad Contributions:\n" " Alex Xu https://launchpad.net/~xuhj\n" " Aron Xu https://launchpad.net/~happyaron\n" " ChenYi https://launchpad.net/~sgrchen\n" " Cheng Lu https://launchpad.net/~dawndiy\n" " Funda Wang https://launchpad.net/~fundawang\n" " Hinker Liu https://launchpad.net/~hinkerliu-gmail\n" " Liu Qishuai https://launchpad.net/~lqs\n" " Qiu Haoyu https://launchpad.net/~timothyqiu\n" " Richard Ma https://launchpad.net/~richard-ma\n" " Tao Wei https://launchpad.net/~weitao1979\n" " Wylmer Wang https://launchpad.net/~wantinghard\n" " Xhacker Liu https://launchpad.net/~xhacker\n" " Xiyue Deng https://launchpad.net/~manphiz\n" " Zhang YANG https://launchpad.net/~zyang\n" " ZhangCheng https://launchpad.net/~xxzc\n" " stone_unix https://launchpad.net/~gaoghy\n" " 甘露 (Lu Gan) https://launchpad.net/~rhythm-gan" #: ../src/dh-app.c:164 msgid "A developers' help browser for GNOME" msgstr "GNOME 开发者帮助浏览器" #: ../src/dh-app.c:172 msgid "DevHelp Website" msgstr "DevHelp 网站" #. i18n: Please don't translate "Devhelp". #: ../src/dh-assistant.c:121 msgid "Devhelp — Assistant" msgstr "Devhelp - 助手" #: ../src/dh-assistant-view.c:403 msgid "Book:" msgstr "书籍:" #: ../src/dh-book.c:255 #, c-format msgid "Language: %s" msgstr "语言:%s" #: ../src/dh-book.c:256 msgid "Language: Undefined" msgstr "语言:未定义" #. i18n: a documentation book #: ../src/dh-link.c:267 msgid "Book" msgstr "书籍" #. i18n: a "page" in a documentation book #: ../src/dh-link.c:270 msgid "Page" msgstr "页面" #. i18n: a search hit in the documentation, could be a #. * function, macro, struct, etc #: ../src/dh-link.c:274 msgid "Keyword" msgstr "关键词" #. i18n: in the programming language context, if you don't #. * have an ESTABLISHED term for it, leave it #. * untranslated. #: ../src/dh-link.c:279 msgid "Function" msgstr "函数" #. i18n: in the programming language context, if you don't #. * have an ESTABLISHED term for it, leave it #. * untranslated. #: ../src/dh-link.c:284 msgid "Struct" msgstr "结构体" #. i18n: in the programming language context, if you don't #. * have an ESTABLISHED term for it, leave it #. * untranslated. #: ../src/dh-link.c:289 msgid "Macro" msgstr "宏" #. i18n: in the programming language context, if you don't #. * have an ESTABLISHED term for it, leave it #. * untranslated. #: ../src/dh-link.c:294 msgid "Enum" msgstr "枚举" #. i18n: in the programming language context, if you don't #. * have an ESTABLISHED term for it, leave it #. * untranslated. #: ../src/dh-link.c:299 msgid "Type" msgstr "类型" #: ../src/dh-main.c:43 msgid "Opens a new Devhelp window" msgstr "打开新的 Devhelp 窗口" #: ../src/dh-main.c:48 msgid "Search for a keyword" msgstr "搜索一个关键词" #: ../src/dh-main.c:49 ../src/dh-main.c:54 msgid "KEYWORD" msgstr "关键字" #: ../src/dh-main.c:53 msgid "Search and display any hit in the assistant window" msgstr "在辅助窗口中搜索并显示任何命中内容" #: ../src/dh-main.c:58 msgid "Display the version and exit" msgstr "显示版本后退出" #: ../src/dh-main.c:63 msgid "Quit any running Devhelp" msgstr "退出正在运行的 Devhelp" #: ../src/dh-parser.c:97 ../src/dh-parser.c:199 ../src/dh-parser.c:263 #: ../src/dh-parser.c:273 #, c-format msgid "Expected '%s', got '%s' at line %d, column %d" msgstr "需要“%s”但得到“%s”(第%d行,第%d列)" #: ../src/dh-parser.c:114 #, c-format msgid "Invalid namespace '%s' at line %d, column %d" msgstr "非法命名空间“%s”(第%d行,第%d列)" #: ../src/dh-parser.c:143 #, c-format msgid "" "\"title\", \"name\" and \"link\" elements are required at line %d, column %d" msgstr "在第%d行,第%d列,需要指定元素“title”,“name”,和“link”" #: ../src/dh-parser.c:218 #, c-format msgid "" "\"name\" and \"link\" elements are required inside on line %d, column " "%d" msgstr "在内第%d行,第%d列,需要指定元素“name”和“link”" #: ../src/dh-parser.c:298 #, c-format msgid "" "\"name\" and \"link\" elements are required inside '%s' on line %d, column %d" msgstr "在“%s”内第%d行,第%d列,需要指定元素“name”和“link”" #: ../src/dh-parser.c:311 #, c-format msgid "\"type\" element is required inside on line %d, column %d" msgstr "在 内第%d行,第%d列,需要指定元素“name”和“link”" #: ../src/dh-parser.c:514 #, c-format msgid "Cannot uncompress book '%s': %s" msgstr "无法解压缩书籍“%s”:%s" #. Setup the Current/All Files selector #: ../src/dh-sidebar.c:478 msgid "Current" msgstr "" #: ../src/dh-sidebar.c:481 msgid "All Books" msgstr "" #: ../src/dh-window.c:86 msgid "50%" msgstr "50%" #: ../src/dh-window.c:87 msgid "75%" msgstr "75%" #: ../src/dh-window.c:88 msgid "100%" msgstr "100%" #: ../src/dh-window.c:89 msgid "125%" msgstr "125%" #: ../src/dh-window.c:90 msgid "150%" msgstr "150%" #: ../src/dh-window.c:91 msgid "175%" msgstr "175%" #: ../src/dh-window.c:92 msgid "200%" msgstr "200%" #: ../src/dh-window.c:93 msgid "300%" msgstr "300%" #: ../src/dh-window.c:94 msgid "400%" msgstr "400%" #: ../src/dh-window.c:688 msgid "Back" msgstr "" #: ../src/dh-window.c:695 msgid "Forward" msgstr "" #: ../src/dh-window.c:967 msgid "Error opening the requested link." msgstr "在打开需要的链接时出错。" #: ../src/dh-window.c:1317 ../src/dh-window.c:1503 msgid "Empty Page" msgstr "空白页" #: ../src/eggfindbar.c:320 msgid "Find:" msgstr "查找:" #: ../src/eggfindbar.c:329 msgid "Find Previous" msgstr "查找上一个" #: ../src/eggfindbar.c:333 ../src/eggfindbar.c:336 msgid "Find previous occurrence of the search string" msgstr "寻找搜索字符串的上一次出现" #: ../src/eggfindbar.c:342 msgid "Find Next" msgstr "查找下一个" #: ../src/eggfindbar.c:346 ../src/eggfindbar.c:349 msgid "Find next occurrence of the search string" msgstr "寻找搜索字符串的下一次出现" #: ../src/eggfindbar.c:358 msgid "C_ase Sensitive" msgstr "区分大小写(_A)" #: ../src/eggfindbar.c:362 ../src/eggfindbar.c:365 msgid "Toggle case sensitive search" msgstr "切换区分大小写搜索" language-pack-gnome-zh-hans-base/data/zh_CN/LC_MESSAGES/eog.po0000644000000000000000000013373312321561506020650 0ustar # translation of eog.po to zh_CN # Copyright (C) 2002, 2003, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # Wang Li , 2002 # Sun G11n , 2002 # Updated by He Qiangqiang , 2002 # Xiong Jiang , 2003 # Funda Wang , 2003 # YangZhang , 2008 # Deng Xiyue , 2009. # Dean Lee , 2010. # Xhacker Liu , 2010. # Aron Xu , 2010. # YunQiang Su , 2010, 2011. # Lele Long , 2011. # msgid "" msgstr "" "Project-Id-Version: eog master\n" "Report-Msgid-Bugs-To: " "http://bugzilla.gnome.org/enter_bug.cgi?product=eog&keywords=I18N+L10N&compon" "ent=general\n" "POT-Creation-Date: 2014-03-11 11:52+0000\n" "PO-Revision-Date: 2011-10-22 12:42+0000\n" "Last-Translator: Launchpad Translations Administrators \n" "Language-Team: Chinese (simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Launchpad-Export-Date: 2014-04-10 11:40+0000\n" "X-Generator: Launchpad (build 16976)\n" #. Translaters: This string is for a toggle to display a toolbar. #. * The name of the toolbar is automatically computed from the widgets #. * on the toolbar, and is placed at the %s. Note the _ before the %s #. * which is used to add mnemonics. We know that this is likely to #. * produce duplicates, but don't worry about it. If your language #. * normally has a mnemonic at the start, please use the _. If not, #. * please remove. #: ../cut-n-paste/toolbar-editor/egg-editable-toolbar.c:992 #, c-format msgid "Show “_%s”" msgstr "显示“%s”" #: ../cut-n-paste/toolbar-editor/egg-editable-toolbar.c:1485 msgid "_Move on Toolbar" msgstr "在工具栏上移动(_M)" #: ../cut-n-paste/toolbar-editor/egg-editable-toolbar.c:1486 msgid "Move the selected item on the toolbar" msgstr "将选中项在工具栏上移动" #: ../cut-n-paste/toolbar-editor/egg-editable-toolbar.c:1487 msgid "_Remove from Toolbar" msgstr "从工具栏删除(_R)" #: ../cut-n-paste/toolbar-editor/egg-editable-toolbar.c:1488 msgid "Remove the selected item from the toolbar" msgstr "从工具栏中删除选中项目" #: ../cut-n-paste/toolbar-editor/egg-editable-toolbar.c:1489 msgid "_Delete Toolbar" msgstr "删除工具栏(_D)" #: ../cut-n-paste/toolbar-editor/egg-editable-toolbar.c:1490 msgid "Remove the selected toolbar" msgstr "删除选中的工具栏" #: ../cut-n-paste/toolbar-editor/egg-toolbar-editor.c:489 msgid "Separator" msgstr "分隔符" #: ../data/eog-app-menu.xml.h:1 ../src/eog-window.c:4038 msgid "_View" msgstr "查看(_V)" #: ../data/eog-app-menu.xml.h:2 ../src/eog-window.c:4064 msgid "_Toolbar" msgstr "工具栏(_T)" #: ../data/eog-app-menu.xml.h:3 ../src/eog-window.c:4067 msgid "_Statusbar" msgstr "状态栏(_S)" #: ../data/eog-app-menu.xml.h:4 ../src/eog-window.c:4070 msgid "_Image Gallery" msgstr "图像收藏(_I)" #: ../data/eog-app-menu.xml.h:5 ../src/eog-window.c:4073 msgid "Side _Pane" msgstr "侧边栏(_P)" #: ../data/eog-app-menu.xml.h:6 ../src/eog-window.c:4052 msgid "Prefere_nces" msgstr "首选项(_N)" #: ../data/eog-app-menu.xml.h:7 ../src/eog-window.c:2565 #: ../src/eog-window.c:4041 msgid "_Help" msgstr "帮助(_H)" #: ../data/eog-app-menu.xml.h:8 #| msgid "Image Viewer" msgid "_About Image Viewer" msgstr "关于图像查看器(_A)" #: ../data/eog-app-menu.xml.h:9 msgid "_Quit" msgstr "退出(_Q)" #: ../data/eog.desktop.in.in.h:1 ../src/eog-application.c:269 #: ../src/eog-window.c:6163 msgid "Image Viewer" msgstr "图像查看器" #: ../data/eog.desktop.in.in.h:2 msgid "Browse and rotate images" msgstr "浏览及旋转图像" #. Extra keywords that can be used to search for eog in GNOME Shell and Unity #: ../data/eog.desktop.in.in.h:4 msgid "Picture;Slideshow;Graphics;" msgstr "Picture;Slideshow;Graphics;图片;幻灯片;图像;" #: ../data/eog-image-properties-dialog.ui.h:1 ../src/eog-window.c:5039 msgid "Image Properties" msgstr "图像属性" #: ../data/eog-image-properties-dialog.ui.h:2 msgid "_Previous" msgstr "上一张(_P)" #: ../data/eog-image-properties-dialog.ui.h:3 msgid "_Next" msgstr "下一张(_N)" #: ../data/eog-image-properties-dialog.ui.h:4 #: ../src/eog-metadata-sidebar.c:495 msgid "Name:" msgstr "名称:" #: ../data/eog-image-properties-dialog.ui.h:5 #: ../src/eog-metadata-sidebar.c:497 msgid "Width:" msgstr "宽度:" # SUN CHANGED MESSAGE #: ../data/eog-image-properties-dialog.ui.h:6 #: ../src/eog-metadata-sidebar.c:499 msgid "Height:" msgstr "高度:" #: ../data/eog-image-properties-dialog.ui.h:7 #: ../src/eog-metadata-sidebar.c:501 msgid "Type:" msgstr "类型:" #: ../data/eog-image-properties-dialog.ui.h:8 msgid "Bytes:" msgstr "字节数:" #: ../data/eog-image-properties-dialog.ui.h:9 #: ../src/eog-metadata-sidebar.c:505 msgid "Folder:" msgstr "文件夹:" #: ../data/eog-image-properties-dialog.ui.h:10 #: ../src/eog-metadata-sidebar.c:493 msgid "General" msgstr "常规" #: ../data/eog-image-properties-dialog.ui.h:11 #: ../src/eog-metadata-sidebar.c:530 msgid "Aperture Value:" msgstr "光圈值:" #: ../data/eog-image-properties-dialog.ui.h:12 #: ../src/eog-metadata-sidebar.c:533 msgid "Exposure Time:" msgstr "曝光时间:" #: ../data/eog-image-properties-dialog.ui.h:13 #: ../src/eog-metadata-sidebar.c:536 msgid "Focal Length:" msgstr "焦距:" #: ../data/eog-image-properties-dialog.ui.h:14 #: ../src/eog-metadata-sidebar.c:538 msgid "Flash:" msgstr "闪光灯:" #: ../data/eog-image-properties-dialog.ui.h:15 #: ../src/eog-metadata-sidebar.c:542 msgid "ISO Speed Rating:" msgstr "ISO 速度值:" #: ../data/eog-image-properties-dialog.ui.h:16 #: ../src/eog-metadata-sidebar.c:545 msgid "Metering Mode:" msgstr "测光模式:" #: ../data/eog-image-properties-dialog.ui.h:17 #: ../src/eog-metadata-sidebar.c:548 msgid "Camera Model:" msgstr "相机型号:" #: ../data/eog-image-properties-dialog.ui.h:18 #: ../src/eog-metadata-sidebar.c:550 msgid "Date/Time:" msgstr "日期/时间:" #: ../data/eog-image-properties-dialog.ui.h:19 #: ../src/eog-metadata-sidebar.c:555 msgid "Description:" msgstr "描述:" #: ../data/eog-image-properties-dialog.ui.h:20 #: ../src/eog-metadata-sidebar.c:558 msgid "Location:" msgstr "位置:" #: ../data/eog-image-properties-dialog.ui.h:21 #: ../src/eog-metadata-sidebar.c:561 msgid "Keywords:" msgstr "关键字:" #: ../data/eog-image-properties-dialog.ui.h:22 #: ../src/eog-metadata-sidebar.c:563 msgid "Author:" msgstr "作者:" # SUN CHANGED MESSAGE #: ../data/eog-image-properties-dialog.ui.h:23 #: ../src/eog-metadata-sidebar.c:566 msgid "Copyright:" msgstr "版权:" #: ../data/eog-image-properties-dialog.ui.h:24 #: ../src/eog-metadata-sidebar.c:569 msgid "Details" msgstr "细节" #: ../data/eog-image-properties-dialog.ui.h:25 #: ../src/eog-metadata-sidebar.c:526 msgid "Metadata" msgstr "元数据" #: ../data/eog-multiple-save-as-dialog.ui.h:1 msgid "Save As" msgstr "另存为" #: ../data/eog-multiple-save-as-dialog.ui.h:5 #, no-c-format msgid "%f: original filename" msgstr "%f: 原始文件名" #: ../data/eog-multiple-save-as-dialog.ui.h:7 #, no-c-format msgid "%n: counter" msgstr "%n: 计数" #: ../data/eog-multiple-save-as-dialog.ui.h:6 msgid "Filename format:" msgstr "文件名格式:" #: ../data/eog-multiple-save-as-dialog.ui.h:10 msgid "Choose a folder" msgstr "选择文件夹" #: ../data/eog-multiple-save-as-dialog.ui.h:8 msgid "Destination folder:" msgstr "目标文件夹:" #: ../data/eog-multiple-save-as-dialog.ui.h:11 msgid "File Path Specifications" msgstr "文件路径规范" #: ../data/eog-multiple-save-as-dialog.ui.h:10 msgid "Start counter at:" msgstr "开始计数:" #: ../data/eog-multiple-save-as-dialog.ui.h:11 msgid "Replace spaces with underscores" msgstr "将空格替换为下划线" #: ../data/eog-multiple-save-as-dialog.ui.h:14 msgid "Options" msgstr "选项" #: ../data/eog-multiple-save-as-dialog.ui.h:15 msgid "Rename from:" msgstr "重命名自:" #: ../data/eog-multiple-save-as-dialog.ui.h:16 msgid "To:" msgstr "到:" #: ../data/eog-multiple-save-as-dialog.ui.h:17 msgid "File Name Preview" msgstr "文件名预览" #: ../data/eog-preferences-dialog.ui.h:1 msgid "Preferences" msgstr "首选项" #: ../data/eog-preferences-dialog.ui.h:2 msgid "Image Enhancements" msgstr "图像增强" # SUN CHANGED MESSAGE #: ../data/eog-preferences-dialog.ui.h:3 msgid "Smooth images when zoomed _out" msgstr "缩小时平滑图像(_O)" #: ../data/eog-preferences-dialog.ui.h:4 msgid "Smooth images when zoomed _in" msgstr "放大时平滑图像(_I)" #: ../data/eog-preferences-dialog.ui.h:5 msgid "_Automatic orientation" msgstr "自动旋转(_A)" #: ../data/eog-preferences-dialog.ui.h:6 msgid "Background" msgstr "背景" #: ../data/eog-preferences-dialog.ui.h:7 msgid "As custom color:" msgstr "为自定义颜色:" #: ../data/eog-preferences-dialog.ui.h:8 #: ../data/org.gnome.eog.gschema.xml.in.h:3 msgid "Background Color" msgstr "背景颜色" #: ../data/eog-preferences-dialog.ui.h:9 msgid "Transparent Parts" msgstr "透明部分" #: ../data/eog-preferences-dialog.ui.h:10 msgid "As check _pattern" msgstr "为十字图案(_P)" #: ../data/eog-preferences-dialog.ui.h:11 msgid "As custom c_olor:" msgstr "为自定义颜色(_O):" #: ../data/eog-preferences-dialog.ui.h:12 msgid "Color for Transparent Areas" msgstr "透明区域的颜色" #: ../data/eog-preferences-dialog.ui.h:13 msgid "As _background" msgstr "与背景相同(_B)" #: ../data/eog-preferences-dialog.ui.h:14 msgid "Image View" msgstr "图像查看" #: ../data/eog-preferences-dialog.ui.h:15 msgid "Image Zoom" msgstr "图像缩放" #: ../data/eog-preferences-dialog.ui.h:16 msgid "E_xpand images to fit screen" msgstr "将图像扩展以适合屏幕(_X)" #: ../data/eog-preferences-dialog.ui.h:17 msgid "Sequence" msgstr "序列" #. I18N: This sentence will be displayed above a horizonzal scale to select a number of seconds in eog's preferences dialog. #: ../data/eog-preferences-dialog.ui.h:19 msgid "_Time between images:" msgstr "图像之间的时间(_T):" #: ../data/eog-preferences-dialog.ui.h:20 msgid "_Loop sequence" msgstr "循环(_L)" #: ../data/eog-preferences-dialog.ui.h:21 msgid "Slideshow" msgstr "幻灯片放映" #: ../data/eog-preferences-dialog.ui.h:22 msgid "Plugins" msgstr "插件" #: ../data/org.gnome.eog.gschema.xml.in.h:1 msgid "Automatic orientation" msgstr "自动调整方向" #: ../data/org.gnome.eog.gschema.xml.in.h:2 msgid "" "Whether the image should be rotated automatically based on EXIF orientation." msgstr "是否应该根据 EXIF 方向自动旋转图像。" #: ../data/org.gnome.eog.gschema.xml.in.h:4 msgid "" "The color that is used to fill the area behind the image. If the use-" "background-color key is not set, the color is determined by the active GTK+ " "theme instead." msgstr "用于填充图像背后区域的颜色。如果未设置 use-background-color 键,则根据所启用的 GTK+ 主题决定颜色" # SUN CHANGED MESSAGE #: ../data/org.gnome.eog.gschema.xml.in.h:5 msgid "Interpolate Image" msgstr "插补图像" #: ../data/org.gnome.eog.gschema.xml.in.h:6 msgid "" "Whether the image should be interpolated on zoom-out. This leads to better " "quality but is somewhat slower than non-interpolated images." msgstr "在缩小时是否对图像进行内插补。这会提升图像质量,不过比不插补时稍慢。" # SUN CHANGED MESSAGE #: ../data/org.gnome.eog.gschema.xml.in.h:7 msgid "Extrapolate Image" msgstr "外插补图像" #: ../data/org.gnome.eog.gschema.xml.in.h:8 msgid "" "Whether the image should be extrapolated on zoom-in. This leads to blurry " "quality and is somewhat slower than non-extrapolated images." msgstr "在放大时是否对图像进行外插补。这会使图像更平滑,不过比不插补时稍慢。" #: ../data/org.gnome.eog.gschema.xml.in.h:9 msgid "Transparency indicator" msgstr "透明区域指示" #: ../data/org.gnome.eog.gschema.xml.in.h:10 msgid "" "Determines how transparency should be indicated. Valid values are " "CHECK_PATTERN, COLOR and NONE. If COLOR is chosen, then the trans-color key " "determines the color value used." msgstr "" "决定如何指示透明区域。可用的值有 CHECK_PATTERN、COLOR 和 NONE。如果选择 COLOR,则使用的颜色值将由 trans_color " "键值决定。" #: ../data/org.gnome.eog.gschema.xml.in.h:11 msgid "Scroll wheel zoom" msgstr "使用滚轮缩放" #: ../data/org.gnome.eog.gschema.xml.in.h:12 msgid "Whether the scroll wheel should be used for zooming." msgstr "是否使用鼠标滚轮控制缩放。" #: ../data/org.gnome.eog.gschema.xml.in.h:13 msgid "Zoom multiplier" msgstr "缩放比例" # 此处翻译有歧义,感觉应该用 百分点 # re:改成了系数,应该没问题了吧 #: ../data/org.gnome.eog.gschema.xml.in.h:15 #, no-c-format msgid "" "The multiplier to be applied when using the mouse scroll wheel for zooming. " "This value defines the zooming step used for each scroll event. For example, " "0.05 results in a 5% zoom increment for each scroll event and 1.00 result in " "a 100% zoom increment." msgstr "" "使用鼠标滚轮缩放时的比例系数。该值定义了每一次滚动事件的缩放步幅。例如:0.05 会在每次缩放事件时放大 5% 而 1.00 则会放大 100%。" #: ../data/org.gnome.eog.gschema.xml.in.h:16 msgid "Transparency color" msgstr "透明区域颜色" #: ../data/org.gnome.eog.gschema.xml.in.h:17 msgid "" "If the transparency key has the value COLOR, then this key determines the " "color which is used for indicating transparency." msgstr "如果透明键值是 COLOR,这个键值则确定用来表示透明区域的颜色。" #: ../data/org.gnome.eog.gschema.xml.in.h:18 msgid "Use a custom background color" msgstr "使用自定义的背景颜色" #: ../data/org.gnome.eog.gschema.xml.in.h:19 msgid "" "If this is active, the color set by the background-color key will be used to " "fill the area behind the image. If it is not set, the current GTK+ theme " "will determine the fill color." msgstr "如果启用,将使用背景色键值所设的颜色填充图像后的区域。如果未设置它,则由当前的 GTK+ 主题决定填充颜色。" #: ../data/org.gnome.eog.gschema.xml.in.h:20 msgid "Loop through the image sequence" msgstr "图像序列循环播放" #: ../data/org.gnome.eog.gschema.xml.in.h:21 msgid "Whether the sequence of images should be shown in an endless loop." msgstr "图像序列是否要无穷循环显示。" #: ../data/org.gnome.eog.gschema.xml.in.h:23 #, no-c-format msgid "Allow zoom greater than 100% initially" msgstr "允许放大至超过原大" #: ../data/org.gnome.eog.gschema.xml.in.h:24 msgid "" "If this is set to FALSE small images will not be stretched to fit into the " "screen initially." msgstr "如果设置为 FALSE,则小图像将不会放大至适合屏幕大小。" #: ../data/org.gnome.eog.gschema.xml.in.h:25 msgid "Delay in seconds until showing the next image" msgstr "显示下张图像前延迟的秒数" #: ../data/org.gnome.eog.gschema.xml.in.h:26 msgid "" "A value greater than 0 determines the seconds an image stays on screen until " "the next one is shown automatically. Zero disables the automatic browsing." msgstr "大于 0 的值将决定自动显示下张图像之前当前图像要在屏幕上停留几秒。0 代表禁用自动浏览。" #: ../data/org.gnome.eog.gschema.xml.in.h:27 msgid "Show/Hide the window toolbar." msgstr "显示/隐藏窗口工具栏。" #: ../data/org.gnome.eog.gschema.xml.in.h:28 msgid "Show/Hide the window statusbar." msgstr "显示/隐藏窗口状态栏。" #: ../data/org.gnome.eog.gschema.xml.in.h:29 msgid "Show/Hide the image gallery pane." msgstr "显示/隐藏图像收藏面板。" #: ../data/org.gnome.eog.gschema.xml.in.h:30 msgid "" "Image gallery pane position. Set to 0 for bottom; 1 for left; 2 for top; 3 " "for right." msgstr "图像收藏面板位置。设定为 0 代表下侧,1 代表左侧,2 代表上侧,3 代表右侧。" #: ../data/org.gnome.eog.gschema.xml.in.h:31 msgid "Whether the image gallery pane should be resizable." msgstr "图像收藏面板是否可缩放。" #: ../data/org.gnome.eog.gschema.xml.in.h:32 msgid "Show/Hide the window side pane." msgstr "显示/隐藏窗口侧边栏。" # 此处的 收藏 需要斟酌 #: ../data/org.gnome.eog.gschema.xml.in.h:33 msgid "Show/Hide the image gallery pane scroll buttons." msgstr "显示/隐藏图像收藏面板滚动按钮。" #: ../data/org.gnome.eog.gschema.xml.in.h:34 msgid "Close main window without asking to save changes." msgstr "关闭主窗口而不询问是否要保存修改。" #: ../data/org.gnome.eog.gschema.xml.in.h:35 msgid "Trash images without asking" msgstr "把图像移除到回收站而不询问" #: ../data/org.gnome.eog.gschema.xml.in.h:36 msgid "" "If activated, Eye of GNOME won't ask for confirmation when moving images to " "the trash. It will still ask if any of the files cannot be moved to the " "trash and would be deleted instead." msgstr "如果启用,那么 GNOME 之眼将不会在移动图像到回收站的时候要求确认。但是如果文件不能被移动到回收站而是被删除的话,那么它仍将询问。" #: ../data/org.gnome.eog.gschema.xml.in.h:37 msgid "" "Whether the file chooser should show the user's pictures folder if no images " "are loaded." msgstr "如果没有加载图像,文件选择器是否应当显示用户的图像文件夹。" #: ../data/org.gnome.eog.gschema.xml.in.h:38 msgid "" "If activated and no image is loaded in the active window, the file chooser " "will display the user's pictures folder using the XDG special user " "directories. If deactivated or the pictures folder has not been set up, it " "will show the current working directory." msgstr "" "如果启用,并且没有在活动窗口中加载图像,文件选择器将使用 XDG " "指定的用户目录来显示用户的图像文件夹。如果禁用或没有设置图像文件夹,那么它将显示当前的工作目录。" #: ../data/org.gnome.eog.gschema.xml.in.h:39 msgid "" "Whether the metadata list in the properties dialog should have its own page." msgstr "属性对话框中的元数据列表是否有自己的页面。" #: ../data/org.gnome.eog.gschema.xml.in.h:40 msgid "" "If activated, the detailed metadata list in the properties dialog will be " "moved to its own page in the dialog. This should make the dialog more usable " "on smaller screens, e.g. as used by netbooks. If disabled, the widget will " "be embedded on the \"Metadata\" page." msgstr "" "如果启用,属性对话框中的详细的元数据列表将移动对话框到其单独的页面中。这可提高此对话框在小屏幕上的可用性,例如用于上网本。如果禁用,此控件将被嵌入到“Me" "tadata”页中。" #: ../data/org.gnome.eog.gschema.xml.in.h:41 msgid "External program to use for editing images" msgstr "使用外部程序来编辑图像" #: ../data/org.gnome.eog.gschema.xml.in.h:42 msgid "" "The desktop file name (including the \".desktop\") of the application to use " "for editing images (when the \"Edit Image\" toolbar button is clicked). Set " "to the empty string to disable this feature." msgstr "" "当您点击“编辑图像”的工具栏按钮时,会使用对应该桌面文件名(包括后缀名“.desktop”)的应用程序来编辑图片。将该项设置为空字符串可以禁用该功能。" #: ../data/org.gnome.eog.gschema.xml.in.h:43 msgid "Active plugins" msgstr "活动插件" #: ../data/org.gnome.eog.gschema.xml.in.h:44 msgid "" "List of active plugins. It doesn't contain the \"Location\" of the active " "plugins. See the .eog-plugin file for obtaining the \"Location\" of a given " "plugin." msgstr "已激活插件列表。它并不包含激活插件的位置。参见 .eog-plugin 文件以获得相应插件的位置。" #: ../plugins/fullscreen/fullscreen.plugin.desktop.in.h:1 msgid "Fullscreen with double-click" msgstr "双击切换全屏" #: ../plugins/fullscreen/fullscreen.plugin.desktop.in.h:2 msgid "Activate fullscreen mode with double-click" msgstr "双击启用全屏模式" #: ../plugins/reload/eog-reload-plugin.c:74 #: ../plugins/reload/reload.plugin.desktop.in.h:1 msgid "Reload Image" msgstr "重新载入图像" #: ../plugins/reload/eog-reload-plugin.c:76 #: ../plugins/reload/reload.plugin.desktop.in.h:2 msgid "Reload current image" msgstr "重新载入当前图像" #: ../plugins/statusbar-date/statusbar-date.plugin.desktop.in.h:1 msgid "Date in statusbar" msgstr "在状态栏中显示日期" #: ../plugins/statusbar-date/statusbar-date.plugin.desktop.in.h:2 msgid "Shows the image date in the window statusbar" msgstr "在窗口状态栏中显示图像日期" #: ../src/eog-close-confirmation-dialog.c:166 msgid "Close _without Saving" msgstr "关闭而不保存(_W)" #: ../src/eog-close-confirmation-dialog.c:212 msgid "Question" msgstr "问题" #: ../src/eog-close-confirmation-dialog.c:391 msgid "If you don't save, your changes will be lost." msgstr "如果不保存,您的更改将会丢失。" #: ../src/eog-close-confirmation-dialog.c:428 #, c-format msgid "Save changes to image \"%s\" before closing?" msgstr "在关闭之前保存更改到图像“%s”?" #: ../src/eog-close-confirmation-dialog.c:635 #, c-format msgid "There is %d image with unsaved changes. Save changes before closing?" msgid_plural "" "There are %d images with unsaved changes. Save changes before closing?" msgstr[0] "还有 %d 幅图像有没有保存的更改。在关闭之前保存更改?" #: ../src/eog-close-confirmation-dialog.c:652 msgid "S_elect the images you want to save:" msgstr "选择您想保存的图像(_E):" #. Secondary label #: ../src/eog-close-confirmation-dialog.c:671 msgid "If you don't save, all your changes will be lost." msgstr "如果不保存,您的所有更改都会丢失。" #: ../data/eog-multiple-save-as-dialog.ui.h:2 #: ../src/eog-close-confirmation-dialog.c:172 #: ../src/eog-error-message-area.c:119 ../src/eog-file-chooser.c:456 #: ../src/eog-file-chooser.c:464 ../src/eog-file-chooser.c:472 #: ../src/eog-window.c:3367 ../src/eog-window.c:3370 ../src/eog-window.c:3621 msgid "_Cancel" msgstr "取消(_C)" #: ../src/eog-error-message-area.c:124 ../src/eog-window.c:847 msgid "_Reload" msgstr "重新载入(_R)" #: ../src/eog-error-message-area.c:129 ../src/eog-window.c:4085 msgid "Save _As…" msgstr "另存为(_A)..." #: ../src/eog-error-message-area.c:171 #, c-format msgid "Could not load image '%s'." msgstr "无法载入图像“%s”。" #: ../src/eog-error-message-area.c:213 #, c-format msgid "Could not save image '%s'." msgstr "无法保存图像“%s”。" #: ../src/eog-error-message-area.c:256 #, c-format msgid "No images found in '%s'." msgstr "“%s”中无图像。" #: ../src/eog-error-message-area.c:263 msgid "The given locations contain no images." msgstr "给定的位置不包含图像。" #: ../src/eog-metadata-details.c:65 msgid "Camera" msgstr "相机" #: ../src/eog-metadata-details.c:66 msgid "Image Data" msgstr "图像数据" # SUN CHANGED MESSAGE #: ../src/eog-metadata-details.c:67 msgid "Image Taking Conditions" msgstr "图像获取条件" #: ../src/eog-metadata-details.c:68 msgid "GPS Data" msgstr "GPS 数据" #: ../src/eog-metadata-details.c:69 msgid "Maker Note" msgstr "制作者备忘" #: ../src/eog-metadata-details.c:70 msgid "Other" msgstr "其它" #: ../src/eog-metadata-details.c:72 msgid "XMP Exif" msgstr "XMP Exif" #: ../src/eog-metadata-details.c:73 msgid "XMP IPTC" msgstr "XMP IPTC" #: ../src/eog-metadata-details.c:74 msgid "XMP Rights Management" msgstr "XMP 权限管理" #: ../src/eog-metadata-details.c:75 msgid "XMP Other" msgstr "XMP 其它" #: ../src/eog-metadata-details.c:251 msgid "Tag" msgstr "标记" #: ../src/eog-metadata-details.c:258 msgid "Value" msgstr "值" #: ../src/eog-metadata-details.c:436 msgid "North" msgstr "向北" #: ../src/eog-metadata-details.c:439 msgid "East" msgstr "向东" #: ../src/eog-metadata-details.c:442 msgid "West" msgstr "向西" #: ../src/eog-metadata-details.c:445 msgid "South" msgstr "向南" #. A strftime-formatted string, to display the date the image was taken. #: ../src/eog-exif-util.c:120 ../src/eog-exif-util.c:160 msgid "%a, %d %B %Y %X" msgstr "%Y年%m月%d日 %X" #. A strftime-formatted string, to display the date the image was taken, for the case we don't have the time. #: ../src/eog-exif-util.c:154 msgid "%a, %d %B %Y" msgstr "%Y年%m月%d日%A" #. TRANSLATORS: This is the actual focal length used when #. the image was taken. #: ../src/eog-exif-util.c:251 #, c-format msgid "%.1f (lens)" msgstr "%.1f (镜头)" #. Print as float to get a similar look as above. #. TRANSLATORS: This is the equivalent focal length assuming #. a 35mm film camera. #: ../src/eog-exif-util.c:262 #, c-format msgid "%.1f (35mm film)" msgstr "%.1f (35mm 电影胶片)" #: ../src/eog-file-chooser.c:119 msgid "File format is unknown or unsupported" msgstr "文件格式未知或不支持" #: ../src/eog-file-chooser.c:124 msgid "" "Image Viewer could not determine a supported writable file format based on " "the filename." msgstr "图像查看器无法根据文件名推测出支持写入的文件格式。" #: ../src/eog-file-chooser.c:125 msgid "Please try a different file extension like .png or .jpg." msgstr "请尝试一个不同的扩展名如 .png 或 .jpg。" #. Filter name: First description then file extension, eg. "The PNG-Format (*.png)". #: ../src/eog-file-chooser.c:160 #, c-format msgid "%s (*.%s)" msgstr "%s (*.%s)" #: ../src/eog-file-chooser.c:212 msgid "All files" msgstr "全部文件" #: ../src/eog-file-chooser.c:217 msgid "Supported image files" msgstr "支持的图像文件" #. Pixel size of image: width x height in pixel #: ../src/eog-file-chooser.c:289 ../src/eog-metadata-sidebar.c:232 #: ../src/eog-metadata-sidebar.c:236 ../src/eog-properties-dialog.c:134 #: ../src/eog-properties-dialog.c:136 ../src/eog-thumb-view.c:515 msgid "pixel" msgid_plural "pixels" msgstr[0] "像素" #: ../src/eog-file-chooser.c:459 msgid "Open Image" msgstr "打开图像" #: ../src/eog-file-chooser.c:467 msgid "Save Image" msgstr "保存图像" #: ../src/eog-file-chooser.c:475 msgid "Open Folder" msgstr "打开文件夹" #: ../src/eog-image.c:613 #, c-format msgid "Transformation on unloaded image." msgstr "转换未加载的图像。" #: ../src/eog-image.c:641 #, c-format msgid "Transformation failed." msgstr "转换失败。" #: ../src/eog-image.c:1116 #, c-format msgid "EXIF not supported for this file format." msgstr "这种文件格式不支持 EXIF。" #: ../src/eog-image.c:1265 #, c-format msgid "Image loading failed." msgstr "图像载入失败。" #: ../src/eog-image.c:1846 ../src/eog-image.c:1966 #, c-format msgid "No image loaded." msgstr "没有载入图像。" #: ../src/eog-image.c:1854 ../src/eog-image.c:1975 #, c-format msgid "You do not have the permissions necessary to save the file." msgstr "您没有保存此文件必须的权限。" #: ../src/eog-image.c:1864 ../src/eog-image.c:1986 #, c-format msgid "Temporary file creation failed." msgstr "临时文件创建失败。" #: ../src/eog-image-jpeg.c:374 #, c-format msgid "Couldn't create temporary file for saving: %s" msgstr "无法创建临时文件来保存 %s" #: ../src/eog-image-jpeg.c:393 #, c-format msgid "Couldn't allocate memory for loading JPEG file" msgstr "无法分配内存载入 JPEG 文件" #: ../src/eog-metadata-sidebar.c:245 ../src/eog-properties-dialog.c:151 msgid "Unknown" msgstr "未知" #: ../src/eog-metadata-sidebar.c:503 msgid "File size:" msgstr "文件大小:" #: ../src/eog-metadata-sidebar.c:519 ../src/eog-properties-dialog.c:666 #: ../src/eog-window.c:4089 msgid "Show the folder which contains this file in the file manager" msgstr "在文件管理器中显示包含这个文件的文件夹" #: ../src/eog-preferences-dialog.c:109 #, c-format #| msgctxt "PrefDlgSlideSwitchPostfix" #| msgid "seconds" msgid "%lu second" msgid_plural "%lu seconds" msgstr[0] "%lu 秒" #: ../src/eog-print.c:371 msgid "Image Settings" msgstr "图像设置" #: ../src/eog-print-image-setup.c:902 msgid "Image" msgstr "图像" #: ../src/eog-print-image-setup.c:903 msgid "The image whose printing properties will be set up" msgstr "要设置打印属性的图像" #: ../src/eog-print-image-setup.c:909 msgid "Page Setup" msgstr "页面设置" #: ../src/eog-print-image-setup.c:910 msgid "The information for the page where the image will be printed" msgstr "即将用来打印图像的页面的信息" #: ../src/eog-print-image-setup.c:936 msgid "Position" msgstr "位置" #: ../src/eog-print-image-setup.c:940 msgid "_Left:" msgstr "左(_L):" #: ../src/eog-print-image-setup.c:942 msgid "_Right:" msgstr "右(_R):" #: ../src/eog-print-image-setup.c:943 msgid "_Top:" msgstr "上(_T):" #: ../src/eog-print-image-setup.c:944 msgid "_Bottom:" msgstr "下(_B):" #: ../src/eog-print-image-setup.c:947 msgid "C_enter:" msgstr "中(_E):" #: ../src/eog-print-image-setup.c:952 msgid "None" msgstr "无" #: ../src/eog-print-image-setup.c:954 msgid "Horizontal" msgstr "水平" #: ../src/eog-print-image-setup.c:956 msgid "Vertical" msgstr "垂直" #: ../src/eog-print-image-setup.c:958 msgid "Both" msgstr "双向" #: ../src/eog-print-image-setup.c:974 msgid "Size" msgstr "大小" #: ../src/eog-print-image-setup.c:977 msgid "_Width:" msgstr "宽度(_W):" # SUN CHANGED MESSAGE #: ../src/eog-print-image-setup.c:979 msgid "_Height:" msgstr "高度(_H):" #: ../src/eog-print-image-setup.c:982 msgid "_Scaling:" msgstr "缩放(_S):" #: ../src/eog-print-image-setup.c:993 msgid "_Unit:" msgstr "单位(_U):" #: ../src/eog-print-image-setup.c:998 msgid "Millimeters" msgstr "毫米" #: ../src/eog-print-image-setup.c:1000 msgid "Inches" msgstr "英寸" #: ../src/eog-print-image-setup.c:1029 msgid "Preview" msgstr "预览" #: ../src/eog-save-as-dialog-helper.c:162 msgid "as is" msgstr "原样" #. Translators: This string is displayed in the statusbar. #. * The first token is the image number, the second is total image #. * count. #. * #. * Translate to "%Id" if you want to use localized digits, or #. * translate to "%d" otherwise. #. * #. * Note that translating this doesn't guarantee that you get localized #. * digits. That needs support from your system and locale definition #. * too. #: ../src/eog-statusbar.c:126 #, c-format msgid "%d / %d" msgstr "第 %d 张,共 %d 张" #: ../src/eog-thumb-view.c:543 msgid "Taken on" msgstr "拍摄时间" #: ../src/eog-uri-converter.c:980 #, c-format msgid "At least two file names are equal." msgstr "至少两个文件名相同。" # SUN CHANGED MESSAGE #: ../src/eog-util.c:68 msgid "Could not display help for Image Viewer" msgstr "无法显示图像查看器的帮助" #: ../src/eog-util.c:116 msgid " (invalid Unicode)" msgstr " (无效的 Unicode)" #. Translators: This is the string displayed in the statusbar #. * The tokens are from left to right: #. * - image width #. * - image height #. * - image size in bytes #. * - zoom in percent #: ../src/eog-window.c:541 #, c-format msgid "%i × %i pixel %s %i%%" msgid_plural "%i × %i pixels %s %i%%" msgstr[0] "%i × %i 像素 %s %i%%" #: ../src/eog-window.c:849 ../src/eog-window.c:2784 msgctxt "MessageArea" msgid "Hi_de" msgstr "隐藏(_D)" #. The newline character is currently necessary due to a problem #. * with the automatic line break. #: ../src/eog-window.c:859 #, c-format msgid "" "The image \"%s\" has been modified by an external application.\n" "Would you like to reload it?" msgstr "" "图像“%s”这张图已经被外部程序修改。\n" "您想重新载入它吗?" #: ../src/eog-window.c:1023 #, c-format msgid "Use \"%s\" to open the selected image" msgstr "使用“%s”打开选中图像" #. Translators: This string is displayed in the statusbar #. * while saving images. The tokens are from left to right: #. * - the original filename #. * - the current image's position in the queue #. * - the total number of images queued for saving #: ../src/eog-window.c:1179 #, c-format msgid "Saving image \"%s\" (%u/%u)" msgstr "保存图像“%s”(第%u个,共%u个)" #: ../src/eog-window.c:1574 #, c-format msgid "Opening image \"%s\"" msgstr "正在打开图像“%s”" #. L10N: This the reason why the screensaver is inhibited. #: ../src/eog-window.c:2030 msgid "Viewing a slideshow" msgstr "正在以幻灯片方式查看" #: ../src/eog-window.c:2259 #, c-format msgid "" "Error printing file:\n" "%s" msgstr "" "打印文件出错:\n" "%s" #: ../src/eog-window.c:2558 msgid "Toolbar Editor" msgstr "工具栏编辑器" #: ../src/eog-window.c:2561 msgid "_Reset to Default" msgstr "重设为默认值(_R)" #: ../src/eog-window.c:2731 ../src/eog-window.c:2746 msgid "Error launching System Settings: " msgstr "启动系统设置时出错: " #. I18N: When setting mnemonics for these strings, watch out to not #. clash with mnemonics from eog's menubar #: ../src/eog-window.c:2782 msgid "_Open Background Preferences" msgstr "打开背景首选项(_O)" #. The newline character is currently necessary due to a problem #. * with the automatic line break. #: ../src/eog-window.c:2798 #, c-format msgid "" "The image \"%s\" has been set as Desktop Background.\n" "Would you like to modify its appearance?" msgstr "" "图像“%s”已设为桌面背景。\n" "您想修改它的外观吗?" #: ../src/eog-window.c:3265 msgid "Saving image locally…" msgstr "本地保存图像..." #: ../src/eog-window.c:3343 #, c-format msgid "" "Are you sure you want to remove\n" "\"%s\" permanently?" msgstr "" "您要删除“%s”吗?\n" "永久删除!" #: ../src/eog-window.c:3346 #, c-format msgid "" "Are you sure you want to remove\n" "the selected image permanently?" msgid_plural "" "Are you sure you want to remove\n" "the %d selected images permanently?" msgstr[0] "" "您确定要永久删除选中的\n" "这 %d 张图像吗?" #: ../src/eog-window.c:3368 ../src/eog-window.c:3632 msgid "_Delete" msgstr "删除(_D)" #: ../src/eog-window.c:3371 ../src/eog-window.c:3634 msgid "_Yes" msgstr "是(_Y)" #. add 'dont ask again' button #: ../src/eog-window.c:3375 ../src/eog-window.c:3626 msgid "Do _not ask again during this session" msgstr "在该会话期间不再询问(_N)" #: ../src/eog-window.c:3419 #, c-format msgid "Couldn't retrieve image file" msgstr "无法检索图像文件" #: ../src/eog-window.c:3435 #, c-format msgid "Couldn't retrieve image file information" msgstr "无法获取图像文件信息" #: ../src/eog-window.c:3451 ../src/eog-window.c:3693 #, c-format msgid "Couldn't delete file" msgstr "无法删除文件" #. set dialog error message #: ../src/eog-window.c:3501 ../src/eog-window.c:3789 #, c-format msgid "Error on deleting image %s" msgstr "删除图像 %s 出错" #: ../src/eog-window.c:3594 #, c-format msgid "" "Are you sure you want to move\n" "\"%s\" to the trash?" msgstr "" "您真的想要将“%s”\n" "移至回收站吗?" #: ../src/eog-window.c:3597 #, c-format msgid "" "A trash for \"%s\" couldn't be found. Do you want to remove this image " "permanently?" msgstr "无法找到可用于“%s”的回收站。您想要将此图像永久移除吗?" #: ../src/eog-window.c:3602 #, c-format msgid "" "Are you sure you want to move\n" "the selected image to the trash?" msgid_plural "" "Are you sure you want to move\n" "the %d selected images to the trash?" msgstr[0] "" "您真的想要将 %d 个\n" "选中的图像移至回收站吗?" #: ../src/eog-window.c:3607 msgid "" "Some of the selected images can't be moved to the trash and will be removed " "permanently. Are you sure you want to proceed?" msgstr "有些所选择的图像无法移动到回收站并将永久移除。您确定要这样进行吗?" #: ../src/eog-window.c:3624 ../src/eog-window.c:4115 ../src/eog-window.c:4142 msgid "Move to _Trash" msgstr "移至回收站(_T)" #: ../src/eog-window.c:3671 ../src/eog-window.c:3685 #, c-format msgid "Couldn't access trash." msgstr "无法访问回收站。" #: ../src/eog-window.c:4036 msgid "_Image" msgstr "图像(_I)" #: ../src/eog-window.c:4037 msgid "_Edit" msgstr "编辑(_E)" #: ../src/eog-window.c:4039 msgid "_Go" msgstr "转到(_G)" #: ../src/eog-window.c:4040 msgid "_Tools" msgstr "工具(_T)" #: ../src/eog-window.c:4043 msgid "_Open…" msgstr "打开(_O)..." #: ../src/eog-window.c:4044 msgid "Open a file" msgstr "打开一个文件" #: ../src/eog-window.c:2563 ../src/eog-window.c:4046 msgid "_Close" msgstr "关闭(_C)" #: ../src/eog-window.c:4047 msgid "Close window" msgstr "关闭窗口" #: ../src/eog-window.c:4049 msgid "T_oolbar" msgstr "工具栏(_O)" #: ../src/eog-window.c:4050 msgid "Edit the application toolbar" msgstr "编辑应用程序工具栏" #: ../src/eog-window.c:4053 msgid "Preferences for Image Viewer" msgstr "图像查看器的首选项" # SUN CHANGED MESSAGE #: ../src/eog-window.c:4055 msgid "_Contents" msgstr "内容(_C)" # SUN CHANGED MESSAGE #: ../src/eog-window.c:4056 msgid "Help on this application" msgstr "关于此应用程序的帮助" #: ../data/eog-app-menu.xml.h:8 ../src/eog-window.c:4058 msgid "_About" msgstr "关于(_A)" #: ../src/eog-window.c:4059 msgid "About this application" msgstr "关于此应用程序" #: ../src/eog-window.c:4065 msgid "Changes the visibility of the toolbar in the current window" msgstr "更改当前窗口工具栏的可见性" #: ../src/eog-window.c:4068 msgid "Changes the visibility of the statusbar in the current window" msgstr "更改当前窗口状态栏的可见性" #: ../src/eog-window.c:4071 msgid "" "Changes the visibility of the image gallery pane in the current window" msgstr "更改当前窗口图像收藏面板的可见性" #: ../src/eog-window.c:4074 msgid "Changes the visibility of the side pane in the current window" msgstr "更改当前窗口侧边栏的可见性" #: ../src/eog-close-confirmation-dialog.c:178 ../src/eog-file-chooser.c:465 #: ../src/eog-window.c:4079 msgid "_Save" msgstr "保存(_S)" #: ../src/eog-window.c:4080 msgid "Save changes in currently selected images" msgstr "保存更改到当前选中图像" #: ../src/eog-window.c:4082 msgid "Open _with" msgstr "打开方式(_W)" #: ../src/eog-window.c:4083 msgid "Open the selected image with a different application" msgstr "用一个不同的应用程序打开选中图像" #: ../src/eog-window.c:4086 msgid "Save the selected images with a different name" msgstr "以一个不同的名字保存选中图像" #: ../src/eog-window.c:4088 msgid "Show Containing _Folder" msgstr "显示图像所在文件夹(_F)" #: ../src/eog-window.c:4091 msgid "_Print…" msgstr "打印(_P)..." #: ../src/eog-window.c:4092 msgid "Print the selected image" msgstr "打印选中图像" #: ../src/eog-window.c:4094 msgid "Prope_rties" msgstr "属性(_R)" #: ../src/eog-window.c:4095 msgid "Show the properties and metadata of the selected image" msgstr "显示选中图像的属性和元数据" #: ../src/eog-window.c:4097 msgid "_Undo" msgstr "撤销(_U)" #: ../src/eog-window.c:4098 msgid "Undo the last change in the image" msgstr "撤销上一次对图像的修改" #: ../src/eog-window.c:4100 msgid "Flip _Horizontal" msgstr "水平翻转(_H)" #: ../src/eog-window.c:4101 msgid "Mirror the image horizontally" msgstr "水平翻转图像" #: ../src/eog-window.c:4103 msgid "Flip _Vertical" msgstr "垂直翻转(_V)" #: ../src/eog-window.c:4104 msgid "Mirror the image vertically" msgstr "垂直翻转图像" #: ../src/eog-window.c:4106 msgid "_Rotate Clockwise" msgstr "顺时针旋转(_R)" #: ../src/eog-window.c:4107 msgid "Rotate the image 90 degrees to the right" msgstr "将图片顺时针旋转 90 度" #: ../src/eog-window.c:4109 msgid "Rotate Counterc_lockwise" msgstr "逆时针旋转(_L)" #: ../src/eog-window.c:4110 msgid "Rotate the image 90 degrees to the left" msgstr "将图片逆时针旋转 90 度" #: ../src/eog-window.c:4112 msgid "Set as Wa_llpaper" msgstr "设为桌面壁纸(_L)" #: ../src/eog-window.c:4113 msgid "Set the selected image as the wallpaper" msgstr "将选中图像设为桌面壁纸" #: ../src/eog-window.c:4116 msgid "Move the selected image to the trash folder" msgstr "将选中图像移至回收站文件夹" #: ../src/eog-window.c:4118 msgid "_Delete Image" msgstr "删除图像(_D)" #: ../src/eog-window.c:4119 msgid "Delete the selected image" msgstr "删除选中图像" #: ../src/eog-window.c:4121 msgid "_Copy" msgstr "复制(_C)" #: ../src/eog-window.c:4122 msgid "Copy the selected image to the clipboard" msgstr "复制选中图像到剪贴板" #: ../src/eog-window.c:4124 ../src/eog-window.c:4133 ../src/eog-window.c:4136 msgid "_Zoom In" msgstr "放大(_Z)" #: ../src/eog-window.c:4125 ../src/eog-window.c:4134 msgid "Enlarge the image" msgstr "放大图片" #: ../src/eog-window.c:4127 ../src/eog-window.c:4139 msgid "Zoom _Out" msgstr "缩小(_O)" #: ../src/eog-window.c:4128 ../src/eog-window.c:4137 ../src/eog-window.c:4140 msgid "Shrink the image" msgstr "缩小图像" #: ../src/eog-window.c:4130 msgid "_Normal Size" msgstr "正常大小(_N)" #: ../src/eog-window.c:4131 msgid "Show the image at its normal size" msgstr "以正常大小显示图像" #: ../src/eog-window.c:4148 msgid "_Fullscreen" msgstr "全屏(_F)" #: ../src/eog-window.c:4149 msgid "Show the current image in fullscreen mode" msgstr "在全屏模式中显示当前图像" #: ../src/eog-window.c:4151 msgid "Pause Slideshow" msgstr "暂停放映" #: ../src/eog-window.c:4152 msgid "Pause or resume the slideshow" msgstr "暂停或继续幻灯片放映" #: ../src/eog-window.c:4154 msgid "_Best Fit" msgstr "最佳匹配(_B)" #: ../src/eog-window.c:4155 msgid "Fit the image to the window" msgstr "使图像适合窗口" #: ../src/eog-window.c:4160 ../src/eog-window.c:4175 msgid "_Previous Image" msgstr "上一个图像(_P)" #: ../src/eog-window.c:4161 msgid "Go to the previous image of the gallery" msgstr "转到收藏中上一个图像" #: ../src/eog-window.c:4163 msgid "_Next Image" msgstr "下一个图像(_N)" #: ../src/eog-window.c:4164 msgid "Go to the next image of the gallery" msgstr "转到收藏中下一个图像" #: ../src/eog-window.c:4166 ../src/eog-window.c:4178 msgid "_First Image" msgstr "第一个图像(_F)" #: ../src/eog-window.c:4167 msgid "Go to the first image of the gallery" msgstr "转到收藏中第一个图像" #: ../src/eog-window.c:4169 ../src/eog-window.c:4181 msgid "_Last Image" msgstr "最后一个图像(_L)" #: ../src/eog-window.c:4170 msgid "Go to the last image of the gallery" msgstr "转到收藏中最后一张图像" #: ../src/eog-window.c:4172 msgid "_Random Image" msgstr "随机图像(_R)" #: ../src/eog-window.c:4173 msgid "Go to a random image of the gallery" msgstr "转到收藏中任意一个图像" #: ../src/eog-window.c:4331 msgid "S_lideshow" msgstr "幻灯片放映(_L)" #: ../src/eog-window.c:4332 msgid "Start a slideshow view of the images" msgstr "以幻灯片方式查看图像" #: ../src/eog-window.c:4404 msgid "Previous" msgstr "上一张" #: ../src/eog-window.c:4409 msgid "Next" msgstr "下一张" # SUN CHANGED MESSAGE #: ../src/eog-window.c:4416 msgid "Right" msgstr "顺时针" #: ../src/eog-window.c:4419 msgid "Left" msgstr "逆时针" #: ../src/eog-window.c:4422 msgid "Show Folder" msgstr "显示文件夹" #: ../src/eog-window.c:4425 msgid "In" msgstr "放大" #: ../src/eog-window.c:4428 msgid "Out" msgstr "缩小" #: ../src/eog-window.c:4431 msgid "Normal" msgstr "正常" #: ../src/eog-window.c:4434 msgid "Fit" msgstr "适合" #: ../src/eog-window.c:4437 msgid "Gallery" msgstr "收藏" #: ../src/eog-window.c:4454 msgctxt "action (to trash)" msgid "Trash" msgstr "移入回收站" #: ../src/eog-window.c:4820 #, c-format msgid "Edit the current image using %s" msgstr "使用%s来编辑当前图像" #: ../src/eog-window.c:4822 msgid "Edit Image" msgstr "编辑图像" #: ../src/eog-window.c:6166 msgid "The GNOME image viewer." msgstr "GNOME 图像查看器。" #: ../src/eog-window.c:6169 msgid "translator-credits" msgstr "" "开源软件国际化之简体中文组\n" "YangZhang , 2008\n" "Xiyue Deng , 2009\n" "YunQiang Su , 2010\n" "朱涛 , 2010\n" "Aron Xu , 2010\n" "李炜 , 2011\n" "Julius Wong, 2011\n" "tuhaihe <1132321739qq@gmail.com>, 2013\n" "\n" "Launchpad Contributions:\n" " Aron Xu https://launchpad.net/~happyaron\n" " Dean Lee https://launchpad.net/~xslidian-lidian\n" " EL8LatSPQ https://launchpad.net/~el8latspq\n" " Eric Shan https://launchpad.net/~ericalways\n" " Feng Chao https://launchpad.net/~chaofeng\n" " Funda Wang https://launchpad.net/~fundawang\n" " Funda Wang https://launchpad.net/~fundawang-gmail\n" " Heling Yao https://launchpad.net/~hyao\n" " Kyle WANG https://launchpad.net/~osfans-deactivatedaccount-" "deactivatedaccount\n" " Lele Long https://launchpad.net/~schemacs\n" " Qiu Haoyu https://launchpad.net/~timothyqiu\n" " SunMozilla https://launchpad.net/~sunmozilla\n" " Tao Wei https://launchpad.net/~weitao1979\n" " Wang Dianjin https://launchpad.net/~tuhaihe\n" " Wylmer Wang https://launchpad.net/~wantinghard\n" " Xiyue Deng https://launchpad.net/~manphiz\n" " YunQiang Su https://launchpad.net/~wzssyqa\n" " hjhee https://launchpad.net/~hjhee7\n" " tonghuix https://launchpad.net/~tonghuix\n" " 晚点末班车 https://launchpad.net/~kkjoy2617\n" " 朱涛 https://launchpad.net/~bill-zt" #: ../src/main.c:56 msgid "GNOME Image Viewer" msgstr "GNOME 图像查看器" #: ../src/main.c:63 msgid "Open in fullscreen mode" msgstr "在全屏模式中打开" #: ../src/main.c:64 msgid "Disable image gallery" msgstr "禁用图像收藏" #: ../src/main.c:65 msgid "Open in slideshow mode" msgstr "在幻灯片放映模式中打开" #: ../src/main.c:66 msgid "Start a new instance instead of reusing an existing one" msgstr "启动新例程,而不是重用现有例程" #: ../src/main.c:67 msgid "" "Open in a single window, if multiple windows are open the first one is used" msgstr "在单个窗口中打开,如果已经打开了多个窗口那么会在第一个窗口中打开" #: ../src/main.c:69 msgid "Show the application's version" msgstr "显示应用程序版本" #: ../src/main.c:99 msgid "[FILE…]" msgstr "[文件...]" #. I18N: The '%s' is replaced with eog's command name. #: ../src/main.c:112 #, c-format msgid "Run '%s --help' to see a full list of available command line options." msgstr "运行“%s --help”来查看可用命令行选项的完整列表。" language-pack-gnome-zh-hans-base/data/zh_CN/LC_MESSAGES/evolution-3.10.po0000644000000000000000000231161712321561507022503 0ustar # Chinese (China) translation of evolution. # Evolution 的简体中文翻译 # Copyright (C) 2003 Ximian Inc. # Copyright (C) 2009, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the evolution package. # Wang Li , 2002, 2003. # Partly comes from Sun_l10n group, 2003 # Funda Wang , 2003, 2004, 2005, 2006. # Tao Wei , 2009. # Andrew Zheng , 2009. # Funda Wang , 2010. # Aron Xu , 2010. # du baodao , 2010. # Tao Wang , 2010. # 李炜 , 2011. # Wylmer Wang , 2011. # msgid "" msgstr "" "Project-Id-Version: evolution master\n" "Report-Msgid-Bugs-To: " "http://bugzilla.gnome.org/enter_bug.cgi?product=evolution&keywords=I18N+L10N" "\n" "POT-Creation-Date: 2014-03-06 17:25+0000\n" "PO-Revision-Date: 2014-03-26 03:39+0000\n" "Last-Translator: Carlos Gong \n" "Language-Team: Chinese (simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Launchpad-Export-Date: 2014-04-10 11:46+0000\n" "X-Generator: Launchpad (build 16976)\n" "Language: zh_CN\n" #: ../addressbook/addressbook.error.xml.h:1 msgid "This address book could not be opened." msgstr "无法打开此地址簿。" #: ../addressbook/addressbook.error.xml.h:2 msgid "" "This address book server might be unreachable or the server name may be " "misspelled or your network connection could be down." msgstr "此地址簿服务器不可达,或者服务器名称拼错,又或者您的网络连接已断。" #: ../addressbook/addressbook.error.xml.h:3 msgid "Failed to authenticate with LDAP server." msgstr "认证到 IMAP 服务器失败。" #: ../addressbook/addressbook.error.xml.h:4 msgid "" "Check to make sure your password is spelled correctly and that you are using " "a supported login method. Remember that many passwords are case sensitive; " "your caps lock might be on." msgstr "选中此处以确保您的密码拼写正确,并确保您使用了支持的登录方式。请注意,很多密码都是区分大小写的;您的 Caps Lock 键可能为开。" #: ../addressbook/addressbook.error.xml.h:5 msgid "This address book server does not have any suggested search bases." msgstr "此地址簿服务器不支持任何建议的搜索基础。" #: ../addressbook/addressbook.error.xml.h:6 msgid "" "This LDAP server may use an older version of LDAP, which does not support " "this functionality or it may be misconfigured. Ask your administrator for " "supported search bases." msgstr "此 LDAP 服务器可能使用较早版本的 LDAP,所以无法支持此功能,或者是配置错误。请询问您的管理员有关支持的搜索基础一事。" #: ../addressbook/addressbook.error.xml.h:7 msgid "This server does not support LDAPv3 schema information." msgstr "此服务器不支持 LDAPv3 大纲信息。" #: ../addressbook/addressbook.error.xml.h:8 msgid "Could not get schema information for LDAP server." msgstr "无法从 LDAP 服务器获取大纲信息。" #: ../addressbook/addressbook.error.xml.h:9 msgid "LDAP server did not respond with valid schema information." msgstr "LDAP 服务器无法响应有效的大纲信息。" #: ../addressbook/addressbook.error.xml.h:10 msgid "Could not remove address book." msgstr "无法删除地址簿。" #: ../addressbook/addressbook.error.xml.h:11 msgid "Delete address book '{0}'?" msgstr "删除地址簿“{0}”吗?" #: ../addressbook/addressbook.error.xml.h:12 msgid "This address book will be removed permanently." msgstr "此地址簿即将被永久删除。" #: ../addressbook/addressbook.error.xml.h:13 #: ../calendar/calendar.error.xml.h:7 ../mail/mail.error.xml.h:66 msgid "Do _Not Delete" msgstr "不删除(_N)" #: ../addressbook/addressbook.error.xml.h:14 msgid "Delete remote address book "{0}"?" msgstr "是否删除远程地址簿 "{0}" ?" #: ../addressbook/addressbook.error.xml.h:15 msgid "" "This will permanently remove the address book "{0}" from the " "server. Are you sure you want to proceed?" msgstr "将从服务器端永久删除地址簿 "{0}" ,是否确定继续?" #: ../addressbook/addressbook.error.xml.h:16 #: ../calendar/calendar.error.xml.h:61 msgid "_Delete From Server" msgstr "从服务器删除 (_D)" #: ../addressbook/addressbook.error.xml.h:17 msgid "Category editor not available." msgstr "类别编辑器不可用。" #: ../addressbook/addressbook.error.xml.h:18 msgid "Unable to open address book" msgstr "无法打开地址簿" #: ../addressbook/addressbook.error.xml.h:19 msgid "Unable to perform search." msgstr "无法执行搜索。" #: ../addressbook/addressbook.error.xml.h:20 msgid "Would you like to save your changes?" msgstr "您希望保存更改吗?" #: ../addressbook/addressbook.error.xml.h:21 msgid "" "You have made modifications to this contact. Do you want to save these " "changes?" msgstr "您已对此联系人作出了修改。您想要保存这些更改吗?" #: ../addressbook/addressbook.error.xml.h:22 msgid "_Discard" msgstr "丢弃(_D)" #: ../addressbook/addressbook.error.xml.h:23 msgid "Cannot move contact." msgstr "无法移动联系人。" #: ../addressbook/addressbook.error.xml.h:24 msgid "" "You are attempting to move a contact from one address book to another but it " "cannot be removed from the source. Do you want to save a copy instead?" msgstr "您即将把联系人从一个地址簿移至另外一个地址簿,但是无法从源地址簿删除该联系人。您想要换作复制联系人吗?" #: ../addressbook/addressbook.error.xml.h:25 msgid "" "The image you have selected is large. Do you want to resize and store it?" msgstr "您所选择的图像太大。您是否想要缩放并存储?" #: ../addressbook/addressbook.error.xml.h:26 msgid "_Resize" msgstr "缩放(_R)" #: ../addressbook/addressbook.error.xml.h:27 msgid "_Use as it is" msgstr "原样使用(_U)" #: ../addressbook/addressbook.error.xml.h:28 msgid "_Do not save" msgstr "不保存(_D)" #: ../addressbook/addressbook.error.xml.h:29 msgid "Unable to save {0}." msgstr "无法保存 {0}。" #: ../addressbook/addressbook.error.xml.h:30 msgid "Error saving {0} to {1}: {2}" msgstr "将{0}保存到 {1} 出错:{2}" #: ../addressbook/addressbook.error.xml.h:31 msgid "Address '{0}' already exists." msgstr "地址“{0}”已经存在。" #: ../addressbook/addressbook.error.xml.h:32 msgid "" "A contact already exists with this address. Would you like to add a new card " "with the same address anyway?" msgstr "已经存在此地址的联系人了。您仍然想要以相同地址添加新名片吗?" #: ../addressbook/addressbook.error.xml.h:33 #: ../e-util/e-name-selector-dialog.c:997 ../mail/em-vfolder-editor-rule.c:397 msgid "_Add" msgstr "添加(_A)" #: ../addressbook/addressbook.error.xml.h:34 msgid "Some addresses already exist in this contact list." msgstr "有些地址已经在此联系人列表中。" #: ../addressbook/addressbook.error.xml.h:35 msgid "" "You are trying to add addresses that are part of this list already. Would " "you like to add them anyway?" msgstr "您正在试图添加已经属于此列表的地址。您仍要添加它们吗?" #: ../addressbook/addressbook.error.xml.h:36 msgid "Skip duplicates" msgstr "跳过重复" #: ../addressbook/addressbook.error.xml.h:37 msgid "Add with duplicates" msgstr "重复添加" #: ../addressbook/addressbook.error.xml.h:38 msgid "List '{0}' is already in this contact list." msgstr "列表“{0}”已在联系人列表中。" #: ../addressbook/addressbook.error.xml.h:39 msgid "" "A contact list named '{0}' is already in this contact list. Would you like " "to add it anyway?" msgstr "一条名为“{0}”的联系人记录已经在此联系人列表中了。您仍要添加它吗?" #: ../addressbook/addressbook.error.xml.h:40 #: ../addressbook/gui/widgets/e-addressbook-view.c:1251 msgid "Failed to delete contact" msgstr "删除联系人失败" #: ../addressbook/addressbook.error.xml.h:41 msgid "You do not have permission to delete contacts in this address book." msgstr "您没有足够的权限从地址簿中删除联系人。" #: ../addressbook/addressbook.error.xml.h:42 msgid "Cannot add new contact" msgstr "无法添加新联系人" #. For Translators: {0} is the name of the address book source #: ../addressbook/addressbook.error.xml.h:44 msgid "" "'{0}' is a read-only address book and cannot be modified. Please select a " "different address book from the side bar in the Contacts view." msgstr "“{0}”是只读的地址簿,无法修改。请从联系人视图的侧边栏中选择另外一个地址簿。" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:1 #: ../addressbook/gui/contact-editor/e-contact-editor.c:650 #: ../addressbook/gui/contact-editor/e-contact-editor.c:672 #: ../addressbook/gui/contact-editor/e-contact-editor.c:2958 msgid "Contact Editor" msgstr "联系人编辑器" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:2 msgid "Image" msgstr "图像" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:3 msgid "Nic_kname:" msgstr "昵称(_K):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:4 msgid "_File under:" msgstr "存档为(_F):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:5 #: ../addressbook/gui/contact-list-editor/contact-list-editor.ui.h:3 msgid "_Where:" msgstr "何处(_W):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:6 #: ../calendar/gui/dialogs/event-page.ui.h:16 #: ../calendar/gui/dialogs/memo-page.ui.h:1 #: ../calendar/gui/dialogs/task-page.ui.h:27 msgid "Ca_tegories..." msgstr "类别(_T)..." #: ../addressbook/gui/contact-editor/contact-editor.ui.h:7 msgid "Full _Name..." msgstr "全名(_N)..." #: ../addressbook/gui/contact-editor/contact-editor.ui.h:8 msgid "_Wants to receive HTML mail" msgstr "愿意接收 HTML 邮件(_W)" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:9 #: ../addressbook/gui/merging/eab-contact-merging.c:409 #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:6 #: ../addressbook/gui/widgets/eab-contact-formatter.c:590 #: ../addressbook/gui/widgets/eab-contact-formatter.c:966 #: ../smime/lib/e-asn1-object.c:395 msgid "Email" msgstr "电子邮件" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:10 msgid "Telephone" msgstr "电话" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:11 msgid "Instant Messaging" msgstr "即时通讯" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:12 #: ../addressbook/importers/evolution-vcard-importer.c:1003 msgid "Contact" msgstr "联系人" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:13 msgid "_Home Page:" msgstr "主页(_H):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:14 #: ../calendar/gui/dialogs/event-page.c:709 #: ../calendar/gui/dialogs/event-page.ui.h:22 #: ../modules/itip-formatter/itip-view.c:1889 msgid "_Calendar:" msgstr "日历(_C):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:15 msgid "_Free/Busy:" msgstr "忙/闲(_F):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:16 msgid "_Video Chat:" msgstr "视频聊天(_V):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:17 msgid "Home Page:" msgstr "主页:" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:18 #: ../modules/cal-config-google/evolution-cal-config-google.c:97 msgid "Calendar:" msgstr "日历:" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:19 msgid "Free/Busy:" msgstr "闲/忙:" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:20 msgid "Video Chat:" msgstr "视频聊天:" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:21 msgid "_Blog:" msgstr "博客(_N):" #. Translators: an accessibility name #: ../addressbook/gui/contact-editor/contact-editor.ui.h:23 msgid "Blog:" msgstr "博客:" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:24 msgid "Web Addresses" msgstr "网络地址" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:25 msgid "Web addresses" msgstr "网络地址" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:26 msgid "_Profession:" msgstr "职业(_P):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:27 msgctxt "Job" msgid "_Title:" msgstr "职位 (_T):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:28 msgid "_Company:" msgstr "公司(_C):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:29 msgid "_Department:" msgstr "部门(_D):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:30 msgid "_Manager:" msgstr "经理(_M):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:31 msgid "_Assistant:" msgstr "助手(_A):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:32 msgid "Job" msgstr "工作" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:33 msgid "_Office:" msgstr "办公室(_O):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:34 msgid "_Spouse:" msgstr "配偶(_S):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:35 msgid "_Birthday:" msgstr "生日(_B):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:36 msgid "_Anniversary:" msgstr "周年(_A):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:37 #: ../addressbook/gui/widgets/eab-contact-formatter.c:685 #: ../calendar/gui/e-calendar-view.c:2278 msgid "Anniversary" msgstr "纪念日" #. XXX Allow the category icons to be referenced as named #. * icons, since GtkAction does not support GdkPixbufs. #. Get the icon file for some default category. Doesn't matter #. * which, so long as it has an icon. We're just interested in #. * the directory components. #: ../addressbook/gui/contact-editor/contact-editor.ui.h:38 #: ../addressbook/gui/widgets/eab-contact-formatter.c:684 #: ../calendar/gui/e-calendar-view.c:2277 ../shell/main.c:128 msgid "Birthday" msgstr "生日" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:39 msgid "Miscellaneous" msgstr "杂项" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:40 msgid "Personal Information" msgstr "个人信息" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:41 msgid "_City:" msgstr "城市(_C):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:42 msgid "_Zip/Postal Code:" msgstr "邮政编码(_Z):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:43 msgid "_State/Province:" msgstr "州/省(_S):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:44 msgid "_Country:" msgstr "国家/地区(_C):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:45 msgid "_PO Box:" msgstr "邮政邮箱(_P):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:46 msgid "_Address:" msgstr "地址(_A):" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:47 #: ../addressbook/gui/contact-editor/e-contact-editor.c:191 #: ../addressbook/gui/widgets/e-contact-map.c:372 #: ../addressbook/gui/widgets/eab-contact-display.c:357 #: ../addressbook/gui/widgets/eab-contact-formatter.c:81 msgid "Home" msgstr "家庭" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:48 #: ../addressbook/gui/contact-editor/e-contact-editor.c:190 #: ../addressbook/gui/widgets/e-contact-map.c:385 #: ../addressbook/gui/widgets/eab-contact-display.c:354 #: ../addressbook/gui/widgets/eab-contact-formatter.c:80 #: ../addressbook/gui/widgets/eab-contact-formatter.c:666 msgid "Work" msgstr "工作" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:49 #: ../addressbook/gui/contact-editor/e-contact-editor.c:192 #: ../addressbook/gui/widgets/eab-contact-formatter.c:82 #: ../addressbook/gui/widgets/eab-contact-formatter.c:368 #: ../addressbook/gui/widgets/eab-contact-formatter.c:719 #: ../calendar/gui/e-cal-model.c:3963 msgid "Other" msgstr "其它" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:50 msgid "Mailing Address" msgstr "邮寄地址" #: ../addressbook/gui/contact-editor/contact-editor.ui.h:51 msgid "Notes" msgstr "笔记" #: ../addressbook/gui/contact-editor/e-contact-editor.c:170 #: ../addressbook/gui/widgets/eab-contact-formatter.c:593 msgid "AIM" msgstr "AIM" #: ../addressbook/gui/contact-editor/e-contact-editor.c:171 #: ../addressbook/gui/widgets/eab-contact-formatter.c:596 msgid "Jabber" msgstr "Jabber" #: ../addressbook/gui/contact-editor/e-contact-editor.c:172 #: ../addressbook/gui/widgets/eab-contact-formatter.c:598 msgid "Yahoo" msgstr "雅虎" #: ../addressbook/gui/contact-editor/e-contact-editor.c:173 #: ../addressbook/gui/widgets/eab-contact-formatter.c:599 msgid "Gadu-Gadu" msgstr "Gadu-Gadu" #: ../addressbook/gui/contact-editor/e-contact-editor.c:174 #: ../addressbook/gui/widgets/eab-contact-formatter.c:597 msgid "MSN" msgstr "MSN" #: ../addressbook/gui/contact-editor/e-contact-editor.c:175 #: ../addressbook/gui/widgets/eab-contact-formatter.c:595 msgid "ICQ" msgstr "ICQ" #: ../addressbook/gui/contact-editor/e-contact-editor.c:176 #: ../addressbook/gui/widgets/eab-contact-formatter.c:594 msgid "GroupWise" msgstr "GroupWise" #: ../addressbook/gui/contact-editor/e-contact-editor.c:177 #: ../addressbook/gui/widgets/eab-contact-formatter.c:600 msgid "Skype" msgstr "Skype" #: ../addressbook/gui/contact-editor/e-contact-editor.c:178 #: ../addressbook/gui/widgets/eab-contact-formatter.c:601 msgid "Twitter" msgstr "Twitter" #: ../addressbook/gui/contact-editor/e-contact-editor.c:230 #: ../addressbook/gui/widgets/eab-gui-util.c:503 msgid "Error adding contact" msgstr "添加联系人出错" #: ../addressbook/gui/contact-editor/e-contact-editor.c:250 msgid "Error modifying contact" msgstr "修改联系人出错" #: ../addressbook/gui/contact-editor/e-contact-editor.c:270 msgid "Error removing contact" msgstr "删除联系人出错" #: ../addressbook/gui/contact-editor/e-contact-editor.c:666 #: ../addressbook/gui/contact-editor/e-contact-editor.c:2952 #, c-format msgid "Contact Editor - %s" msgstr "联系人编辑器 - %s" #: ../addressbook/gui/contact-editor/e-contact-editor.c:3485 msgid "Please select an image for this contact" msgstr "请选择此联系人的图像" #: ../addressbook/gui/contact-editor/e-contact-editor.c:3486 msgid "_No image" msgstr "无图像(_N)" #: ../addressbook/gui/contact-editor/e-contact-editor.c:3827 msgid "" "The contact data is invalid:\n" "\n" msgstr "" "联系人数据无效:\n" "\n" #: ../addressbook/gui/contact-editor/e-contact-editor.c:3833 #, c-format msgid "'%s' has an invalid format" msgstr "“%s”的格式无效" #: ../addressbook/gui/contact-editor/e-contact-editor.c:3841 #, c-format msgid "'%s' cannot be a future date" msgstr "'%s' 不能是未来的日期" #: ../addressbook/gui/contact-editor/e-contact-editor.c:3849 #, c-format msgid "%s'%s' has an invalid format" msgstr "%s“%s”的格式无效" #: ../addressbook/gui/contact-editor/e-contact-editor.c:3862 #: ../addressbook/gui/contact-editor/e-contact-editor.c:3876 #, c-format msgid "%s'%s' is empty" msgstr "%s“%s”为空" #: ../addressbook/gui/contact-editor/e-contact-editor.c:3891 msgid "Invalid contact." msgstr "无效的联系人。" #: ../addressbook/gui/contact-editor/e-contact-quick-add.c:452 msgid "Contact Quick-Add" msgstr "快速添加联系人" #: ../addressbook/gui/contact-editor/e-contact-quick-add.c:455 msgid "_Edit Full" msgstr "编辑全名(_E)" #: ../addressbook/gui/contact-editor/e-contact-quick-add.c:508 msgid "_Full name" msgstr "全名(_F)" #: ../addressbook/gui/contact-editor/e-contact-quick-add.c:521 msgid "E_mail" msgstr "电子邮件(_M)" #: ../addressbook/gui/contact-editor/e-contact-quick-add.c:534 msgid "_Select Address Book" msgstr "选择地址簿(_S)" #: ../addressbook/gui/contact-editor/fullname.ui.h:1 msgid "Mr." msgstr "先生" #: ../addressbook/gui/contact-editor/fullname.ui.h:2 msgid "Mrs." msgstr "夫人" #: ../addressbook/gui/contact-editor/fullname.ui.h:3 msgid "Ms." msgstr "女士" #: ../addressbook/gui/contact-editor/fullname.ui.h:4 msgid "Miss" msgstr "小姐" #: ../addressbook/gui/contact-editor/fullname.ui.h:5 msgid "Dr." msgstr "博士" #: ../addressbook/gui/contact-editor/fullname.ui.h:6 msgid "Sr." msgstr "长辈" #: ../addressbook/gui/contact-editor/fullname.ui.h:7 msgid "Jr." msgstr "晚辈" #: ../addressbook/gui/contact-editor/fullname.ui.h:8 msgid "I" msgstr "I" #: ../addressbook/gui/contact-editor/fullname.ui.h:9 msgid "II" msgstr "II" #: ../addressbook/gui/contact-editor/fullname.ui.h:10 msgid "III" msgstr "III" #: ../addressbook/gui/contact-editor/fullname.ui.h:11 msgid "Esq." msgstr "先生" #: ../addressbook/gui/contact-editor/fullname.ui.h:12 #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:2 msgid "Full Name" msgstr "全名" #: ../addressbook/gui/contact-editor/fullname.ui.h:13 msgid "_First:" msgstr "姓(_F):" #: ../addressbook/gui/contact-editor/fullname.ui.h:14 msgctxt "FullName" msgid "_Title:" msgstr "头衔 (_T):" #: ../addressbook/gui/contact-editor/fullname.ui.h:15 msgid "_Middle:" msgstr "中间名(_M):" #: ../addressbook/gui/contact-editor/fullname.ui.h:16 msgid "_Last:" msgstr "名(_L):" #: ../addressbook/gui/contact-editor/fullname.ui.h:17 msgid "_Suffix:" msgstr "后缀(_S):" #: ../addressbook/gui/contact-list-editor/contact-list-editor.ui.h:1 #: ../addressbook/gui/contact-list-editor/e-contact-list-editor.c:818 msgid "Contact List Editor" msgstr "联系人列表编辑器" #: ../addressbook/gui/contact-list-editor/contact-list-editor.ui.h:2 msgid "_List name:" msgstr "列表名称(_L):" #: ../addressbook/gui/contact-list-editor/contact-list-editor.ui.h:4 msgid "Members" msgstr "成员" #: ../addressbook/gui/contact-list-editor/contact-list-editor.ui.h:5 msgid "_Type an email address or drag a contact into the list below:" msgstr "输入电子邮件地址或者把联系人拖放到下面的列表(_T):" #: ../addressbook/gui/contact-list-editor/contact-list-editor.ui.h:6 msgid "_Hide addresses when sending mail to this list" msgstr "在往该列表发送邮件时隐藏地址(_H)" #: ../addressbook/gui/contact-list-editor/contact-list-editor.ui.h:7 msgid "Add an email to the List" msgstr "在列表中添加一封邮件" #: ../addressbook/gui/contact-list-editor/contact-list-editor.ui.h:8 msgid "Remove an email address from the List" msgstr "从列表中删除一个邮件地址" #: ../addressbook/gui/contact-list-editor/contact-list-editor.ui.h:9 msgid "Insert email addresses from Address Book" msgstr "从地址簿中插入邮件地址" #: ../addressbook/gui/contact-list-editor/contact-list-editor.ui.h:10 msgid "_Select..." msgstr "选择(_S)..." #: ../addressbook/gui/contact-list-editor/e-contact-list-editor.c:941 msgid "Contact List Members" msgstr "联系人列表成员" #: ../addressbook/gui/contact-list-editor/e-contact-list-editor.c:1475 msgid "_Members" msgstr "成员(_M)" #: ../addressbook/gui/contact-list-editor/e-contact-list-editor.c:1597 msgid "Error adding list" msgstr "添加列表出错" #: ../addressbook/gui/contact-list-editor/e-contact-list-editor.c:1617 msgid "Error modifying list" msgstr "修改列表出错" #: ../addressbook/gui/contact-list-editor/e-contact-list-editor.c:1637 msgid "Error removing list" msgstr "删除列表出错" #: ../addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui.h:1 #: ../addressbook/gui/merging/eab-contact-duplicate-detected.ui.h:1 msgid "Duplicate Contact Detected" msgstr "复制检测到的联系人" #: ../addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui.h:2 msgid "" "The name or email of this contact already exists in this folder. Would you " "like to save the changes anyway?" msgstr "此联系人的姓名或邮箱地址已经在本文件夹中了。您仍要保存更改吗?" #. Translators: Heading of the contact which has same name or email address in this folder already. #: ../addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui.h:4 msgid "Conflicting Contact:" msgstr "冲突的联系人:" #: ../addressbook/gui/merging/eab-contact-commit-duplicate-detected.ui.h:5 msgid "Changed Contact:" msgstr "更改了的联系人:" #: ../addressbook/gui/merging/eab-contact-duplicate-detected.ui.h:2 #: ../addressbook/gui/merging/eab-contact-merging.c:364 msgid "_Merge" msgstr "合并(_M)" #: ../addressbook/gui/merging/eab-contact-duplicate-detected.ui.h:3 msgid "" "The name or email address of this contact already exists\n" "in this folder. Would you like to add it anyway?" msgstr "" "此联系人的姓名或地址已经在本文件夹中存在了。\n" "您一定要添加吗?" #: ../addressbook/gui/merging/eab-contact-duplicate-detected.ui.h:5 msgid "Original Contact:" msgstr "原联系人:" #: ../addressbook/gui/merging/eab-contact-duplicate-detected.ui.h:6 msgid "New Contact:" msgstr "新联系人:" #: ../addressbook/gui/merging/eab-contact-merging.c:244 #: ../calendar/gui/tasktypes.xml.h:14 msgid "Cancelled" msgstr "已取消" #: ../addressbook/gui/merging/eab-contact-merging.c:346 msgid "Merge Contact" msgstr "合并联系人" #: ../addressbook/gui/widgets/addresstypes.xml.h:1 #: ../modules/addressbook/e-book-shell-view-actions.c:1151 msgid "Name contains" msgstr "姓名含有" #: ../addressbook/gui/widgets/addresstypes.xml.h:2 #: ../modules/addressbook/e-book-shell-view-actions.c:1144 msgid "Email begins with" msgstr "邮件以此开头" #: ../addressbook/gui/widgets/addresstypes.xml.h:3 #: ../calendar/gui/caltypes.xml.h:26 ../calendar/gui/memotypes.xml.h:19 #: ../calendar/gui/tasktypes.xml.h:30 #: ../modules/addressbook/e-book-shell-view-actions.c:1137 #: ../modules/calendar/e-cal-shell-view-actions.c:1771 #: ../modules/calendar/e-memo-shell-view-actions.c:791 #: ../modules/calendar/e-task-shell-view-actions.c:990 msgid "Any field contains" msgstr "任何域含有" #: ../addressbook/gui/widgets/e-addressbook-model.c:163 msgid "No contacts" msgstr "无联系人" #: ../addressbook/gui/widgets/e-addressbook-model.c:167 #, c-format msgid "%d contact" msgid_plural "%d contacts" msgstr[0] "%d 个联系人" #: ../addressbook/gui/widgets/e-addressbook-model.c:373 msgid "Error getting book view" msgstr "获取名簿视图出错" #: ../addressbook/gui/widgets/e-addressbook-model.c:820 msgid "Search Interrupted" msgstr "搜索中断了" #: ../addressbook/gui/widgets/e-addressbook-table-adapter.c:204 msgid "Error modifying card" msgstr "修改名片错误" #: ../addressbook/gui/widgets/e-addressbook-view.c:649 msgid "Cut selected contacts to the clipboard" msgstr "将选联系人剪切到剪贴板" #: ../addressbook/gui/widgets/e-addressbook-view.c:655 msgid "Copy selected contacts to the clipboard" msgstr "将选中联系人复制到剪贴板" #: ../addressbook/gui/widgets/e-addressbook-view.c:661 msgid "Paste contacts from the clipboard" msgstr "从剪贴板中粘贴联系人" #: ../addressbook/gui/widgets/e-addressbook-view.c:667 #: ../modules/addressbook/e-book-shell-view-actions.c:951 msgid "Delete selected contacts" msgstr "删除选中的联系人" #: ../addressbook/gui/widgets/e-addressbook-view.c:673 msgid "Select all visible contacts" msgstr "选中全部可见联系人" #: ../addressbook/gui/widgets/e-addressbook-view.c:1299 msgid "Are you sure you want to delete these contact lists?" msgstr "您确定要删除这些联系人列表吗?" #: ../addressbook/gui/widgets/e-addressbook-view.c:1303 msgid "Are you sure you want to delete this contact list?" msgstr "您确定要删除这些联系人列表吗?" #: ../addressbook/gui/widgets/e-addressbook-view.c:1307 #, c-format msgid "Are you sure you want to delete this contact list (%s)?" msgstr "您确定要删除联系人列表(%s)吗?" #: ../addressbook/gui/widgets/e-addressbook-view.c:1313 msgid "Are you sure you want to delete these contacts?" msgstr "您确定要删除这些联系人吗?" #: ../addressbook/gui/widgets/e-addressbook-view.c:1317 msgid "Are you sure you want to delete this contact?" msgstr "您确定要删除这些联系人吗?" #: ../addressbook/gui/widgets/e-addressbook-view.c:1321 #, c-format msgid "Are you sure you want to delete this contact (%s)?" msgstr "您确定要删除联系人(%s)吗?" #. Translators: This is shown for > 5 contacts. #: ../addressbook/gui/widgets/e-addressbook-view.c:1477 #, c-format msgid "" "Opening %d contacts will open %d new windows as well.\n" "Do you really want to display all of these contacts?" msgid_plural "" "Opening %d contacts will open %d new windows as well.\n" "Do you really want to display all of these contacts?" msgstr[0] "" "打开 %d 个联系人将同时打开 %d 个新窗口。\n" "您真的想要显示所有联系人吗?" #: ../addressbook/gui/widgets/e-addressbook-view.c:1485 msgid "_Don't Display" msgstr "不显示(_D)" #: ../addressbook/gui/widgets/e-addressbook-view.c:1486 msgid "Display _All Contacts" msgstr "显示全部联系人(_A)" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:1 msgid "File As" msgstr "存档为" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:3 msgid "Given Name" msgstr "名" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:4 msgid "Family Name" msgstr "姓" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:5 #: ../addressbook/gui/widgets/eab-contact-formatter.c:592 msgid "Nickname" msgstr "昵称" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:7 msgid "Email 2" msgstr "电子邮件 2" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:8 msgid "Email 3" msgstr "电子邮件 3" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:9 msgid "Assistant Phone" msgstr "助手电话" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:10 msgid "Business Phone" msgstr "商务电话" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:11 msgid "Business Phone 2" msgstr "商务电话 2" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:12 msgid "Business Fax" msgstr "商务传真" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:13 msgid "Callback Phone" msgstr "回拨电话" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:14 msgid "Car Phone" msgstr "车载电话" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:15 msgid "Company Phone" msgstr "公司电话" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:16 msgid "Home Phone" msgstr "家庭电话" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:17 msgid "Home Phone 2" msgstr "家庭电话 2" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:18 msgid "Home Fax" msgstr "家庭传真" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:19 msgid "ISDN Phone" msgstr "ISDN 电话" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:20 #: ../addressbook/gui/widgets/eab-contact-formatter.c:682 msgid "Mobile Phone" msgstr "移动电话" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:21 msgid "Other Phone" msgstr "其它电话" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:22 msgid "Other Fax" msgstr "其它传真" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:23 msgid "Pager" msgstr "寻呼机" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:24 msgid "Primary Phone" msgstr "主要电话" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:25 msgid "Radio" msgstr "收音机" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:26 msgid "Telex" msgstr "电传" #. Translators: This is a vcard standard and stands for the type of #. phone used by the hearing impaired. TTY stands for "teletype" #. (familiar from Unix device names), and TDD is "Telecommunications #. Device for Deaf". However, you probably want to leave this #. abbreviation unchanged unless you know that there is actually a #. different and established translation for this in your language. #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:33 msgid "TTYTDD" msgstr "TTYTDD" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:34 #: ../addressbook/gui/widgets/eab-contact-formatter.c:645 msgid "Company" msgstr "公司" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:35 msgid "Unit" msgstr "单位" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:36 msgid "Office" msgstr "办公室" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:37 msgid "Title" msgstr "头衔" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:38 #: ../calendar/gui/e-meeting-list-view.c:666 #: ../calendar/gui/e-meeting-time-sel.etspec.h:5 msgid "Role" msgstr "角色" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:39 #: ../addressbook/gui/widgets/eab-contact-formatter.c:649 msgid "Manager" msgstr "经理" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:40 #: ../addressbook/gui/widgets/eab-contact-formatter.c:650 msgid "Assistant" msgstr "助手" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:41 msgid "Web Site" msgstr "网站" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:42 msgid "Journal" msgstr "日记" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:43 #: ../calendar/gui/dialogs/event-page.ui.h:20 #: ../calendar/gui/e-calendar-table.etspec.h:12 #: ../calendar/gui/e-cal-list-view.etspec.h:6 #: ../calendar/gui/e-memo-table.etspec.h:4 ../e-util/e-categories-dialog.c:89 msgid "Categories" msgstr "类别" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:44 #: ../addressbook/gui/widgets/eab-contact-formatter.c:686 msgid "Spouse" msgstr "配偶" #: ../addressbook/gui/widgets/e-addressbook-view.etspec.h:45 #: ../addressbook/gui/widgets/eab-contact-formatter.c:741 msgid "Note" msgstr "注释" #: ../addressbook/gui/widgets/e-contact-map-window.c:374 msgid "Contacts Map" msgstr "联系人地图" #: ../addressbook/gui/widgets/e-minicard-view.c:191 msgid "" "\n" "\n" "Searching for the Contacts..." msgstr "" "\n" "\n" "正在搜索联系人..." #: ../addressbook/gui/widgets/e-minicard-view.c:194 msgid "" "\n" "\n" "Search for the Contact\n" "\n" "or double-click here to create a new Contact." msgstr "" "\n" "\n" "搜索联系人\n" "\n" "或在此双击以创建新联系人。" #: ../addressbook/gui/widgets/e-minicard-view.c:197 msgid "" "\n" "\n" "There are no items to show in this view.\n" "\n" "Double-click here to create a new Contact." msgstr "" "\n" "\n" "本视图中没有可显示的项。\n" "\n" "请在此双击以创建新联系人。" #: ../addressbook/gui/widgets/e-minicard-view.c:201 msgid "" "\n" "\n" "Search for the Contact." msgstr "" "\n" "\n" "搜索联系人。" #: ../addressbook/gui/widgets/e-minicard-view.c:203 msgid "" "\n" "\n" "There are no items to show in this view." msgstr "" "\n" "\n" "本视图中没有可显示的项。" #: ../addressbook/gui/widgets/e-minicard.c:93 msgid "Work Email" msgstr "工作电子邮件" #: ../addressbook/gui/widgets/e-minicard.c:94 msgid "Home Email" msgstr "家庭电子邮件" #: ../addressbook/gui/widgets/e-minicard.c:95 #: ../addressbook/gui/widgets/e-minicard.c:828 msgid "Other Email" msgstr "其它电子邮件" #: ../addressbook/gui/widgets/ea-addressbook-view.c:95 #: ../addressbook/gui/widgets/ea-addressbook-view.c:104 #: ../addressbook/gui/widgets/ea-minicard-view.c:194 msgid "evolution address book" msgstr "evolution 地址簿" #: ../addressbook/gui/widgets/ea-minicard-view.c:36 msgid "New Contact" msgstr "新建联系人" #: ../addressbook/gui/widgets/ea-minicard-view.c:37 msgid "New Contact List" msgstr "新建联系人列表" #: ../addressbook/gui/widgets/ea-minicard-view.c:177 #, c-format msgid "current address book folder %s has %d card" msgid_plural "current address book folder %s has %d cards" msgstr[0] "当前地址簿文件夹 %s 有 %d 张名片" #: ../addressbook/gui/widgets/ea-minicard.c:34 msgid "Open" msgstr "打开" #: ../addressbook/gui/widgets/ea-minicard.c:160 msgid "Contact List: " msgstr "联系人列表: " #: ../addressbook/gui/widgets/ea-minicard.c:161 msgid "Contact: " msgstr "联系人: " #: ../addressbook/gui/widgets/ea-minicard.c:188 msgid "evolution minicard" msgstr "evolution 袖珍卡" #: ../addressbook/gui/widgets/eab-contact-display.c:150 msgid "Copy _Email Address" msgstr "复制电子邮件地址(_E)" #: ../addressbook/gui/widgets/eab-contact-display.c:152 #: ../e-util/e-web-view-gtkhtml.c:428 ../e-util/e-web-view.c:307 msgid "Copy the email address to the clipboard" msgstr "复制电子邮件地址到剪贴板" #: ../addressbook/gui/widgets/eab-contact-display.c:157 #: ../e-util/e-web-view-gtkhtml.c:433 ../e-util/e-web-view.c:312 msgid "_Send New Message To..." msgstr "把新信息发送到(_S)..." #: ../addressbook/gui/widgets/eab-contact-display.c:159 #: ../e-util/e-web-view-gtkhtml.c:435 ../e-util/e-web-view.c:314 msgid "Send a mail message to this address" msgstr "发送一个邮件信息到这个地址" #: ../addressbook/gui/widgets/eab-contact-display.c:291 #: ../e-util/e-web-view-gtkhtml.c:970 ../e-util/e-web-view.c:990 #, c-format msgid "Click to mail %s" msgstr "单击以给 %s 发送邮件" #: ../addressbook/gui/widgets/eab-contact-formatter.c:137 msgid "Open map" msgstr "打开地图" #: ../addressbook/gui/widgets/eab-contact-formatter.c:529 msgid "List Members:" msgstr "列出成员:" #: ../addressbook/gui/widgets/eab-contact-formatter.c:646 msgid "Department" msgstr "部门" #: ../addressbook/gui/widgets/eab-contact-formatter.c:647 msgid "Profession" msgstr "职业" #: ../addressbook/gui/widgets/eab-contact-formatter.c:648 msgid "Position" msgstr "位置" #: ../addressbook/gui/widgets/eab-contact-formatter.c:651 msgid "Video Chat" msgstr "视频聊天" #: ../addressbook/gui/widgets/eab-contact-formatter.c:652 #: ../data/evolution.desktop.in.in.h:8 ../e-util/e-send-options.c:546 #: ../modules/calendar/e-cal-shell-view-actions.c:216 #: ../modules/calendar/e-cal-shell-view-actions.c:245 #: ../modules/calendar/e-cal-shell-view.c:591 #: ../plugins/publish-calendar/publish-calendar.ui.h:21 msgid "Calendar" msgstr "日历" #: ../addressbook/gui/widgets/eab-contact-formatter.c:653 #: ../calendar/gui/dialogs/event-editor.c:116 #: ../calendar/gui/dialogs/event-editor.c:343 #: ../plugins/publish-calendar/publish-calendar.ui.h:2 msgid "Free/Busy" msgstr "忙/闲" #: ../addressbook/gui/widgets/eab-contact-formatter.c:654 #: ../addressbook/gui/widgets/eab-contact-formatter.c:681 msgid "Phone" msgstr "电话" #: ../addressbook/gui/widgets/eab-contact-formatter.c:655 msgid "Fax" msgstr "传真" #: ../addressbook/gui/widgets/eab-contact-formatter.c:656 #: ../addressbook/gui/widgets/eab-contact-formatter.c:683 #: ../addressbook/gui/widgets/eab-contact-formatter.c:709 msgid "Address" msgstr "地址" #: ../addressbook/gui/widgets/eab-contact-formatter.c:679 msgid "Home Page" msgstr "主页" #: ../addressbook/gui/widgets/eab-contact-formatter.c:680 msgid "Web Log" msgstr "Web 日志" #: ../addressbook/gui/widgets/eab-contact-formatter.c:696 msgid "Personal" msgstr "个人" #: ../addressbook/gui/widgets/eab-contact-formatter.c:930 msgid "List Members" msgstr "列出成员" #: ../addressbook/gui/widgets/eab-contact-formatter.c:951 msgid "Job Title" msgstr "职称" #: ../addressbook/gui/widgets/eab-contact-formatter.c:992 msgid "Home page" msgstr "主页" #: ../addressbook/gui/widgets/eab-contact-formatter.c:1002 msgid "Blog" msgstr "Blog" #: ../addressbook/gui/widgets/eab-gui-util.c:123 msgid "" "This address book cannot be opened. This either means this book is not " "marked for offline usage or not yet downloaded for offline usage. Please " "load the address book once in online mode to download its contents." msgstr "无法打开此地址簿。这可能意味着此地址簿没有标为可离线使用,或者尚未下载完成以供离线使用。请在在线模式中载入此地址簿以便下载其内容。" #: ../addressbook/gui/widgets/eab-gui-util.c:142 #, c-format msgid "" "This address book cannot be opened. Please check that the path %s exists " "and that permissions are set to access it." msgstr "无法打开此地址簿。请检查路径 %s 是否存在以及您是否有足够的权限访问它。" #: ../addressbook/gui/widgets/eab-gui-util.c:155 msgid "" "This version of Evolution does not have LDAP support compiled in to it. To " "use LDAP in Evolution an LDAP-enabled Evolution package must be installed." msgstr "" "本版本的 Evolution 并没有把 LDAP 支持编译进去。如果您希望在 Evolution 中使用 LDAP,就必须安装启用了 LDAP 的 " "Evolution 包。" #: ../addressbook/gui/widgets/eab-gui-util.c:164 msgid "" "This address book cannot be opened. This either means that an incorrect URI " "was entered, or the server is unreachable." msgstr "无法打开此地址簿。这可能是由于您输入了错误的 URI,也可能是因为服务器已经关闭。" #: ../addressbook/gui/widgets/eab-gui-util.c:174 msgid "Detailed error message:" msgstr "详细错误信息:" #: ../addressbook/gui/widgets/eab-gui-util.c:211 msgid "" "More cards matched this query than either the server is \n" "configured to return or Evolution is configured to display.\n" "Please make your search more specific or raise the result limit in\n" "the directory server preferences for this address book." msgstr "" "匹配此查询的名片数超过了服务器配置的返回数目,或者超过了\n" "Evolution 配置要显示的数目。请在搜索的时候指定更加严格的\n" "搜索条件,或者在此地址簿的目录服务器参数中将结果限制调高。" #: ../addressbook/gui/widgets/eab-gui-util.c:218 msgid "" "The time to execute this query exceeded the server limit or the limit\n" "configured for this address book. Please make your search\n" "more specific or raise the time limit in the directory server\n" "preferences for this address book." msgstr "" "执行此查询的时间超过了服务器限制,或者超过了为此地址簿配置的限制。\n" "请在搜索的时候指定更加严格的搜索条件,或者在此地址簿的目录服务器参数\n" "中将时间限制调高。" #. Translators: %s is replaced with a detailed error message, or an empty string, if not provided #: ../addressbook/gui/widgets/eab-gui-util.c:226 #, c-format msgid "The backend for this address book was unable to parse this query. %s" msgstr "此地址簿的后端无法解析此查询。%s" #. Translators: %s is replaced with a detailed error message, or an empty string, if not provided #: ../addressbook/gui/widgets/eab-gui-util.c:231 #, c-format msgid "The backend for this address book refused to perform this query. %s" msgstr "此地址簿的后端拒绝执行此查询。%s" #. Translators: %s is replaced with a detailed error message, or an empty string, if not provided #: ../addressbook/gui/widgets/eab-gui-util.c:237 #: ../addressbook/gui/widgets/eab-gui-util.c:243 #, c-format msgid "This query did not complete successfully. %s" msgstr "此查询未成功完成。%s" #. This is a filename. Translators take note. #: ../addressbook/gui/widgets/eab-gui-util.c:265 msgid "card.vcf" msgstr "card.vcf" #: ../addressbook/gui/widgets/eab-gui-util.c:316 msgid "Select Address Book" msgstr "选择地址簿" #: ../addressbook/gui/widgets/eab-gui-util.c:398 msgid "list" msgstr "列表" #: ../addressbook/gui/widgets/eab-gui-util.c:587 msgid "Move contact to" msgstr "将联系人移至" #: ../addressbook/gui/widgets/eab-gui-util.c:589 msgid "Copy contact to" msgstr "将联系人复制到" #: ../addressbook/gui/widgets/eab-gui-util.c:592 msgid "Move contacts to" msgstr "将联系人移至" #: ../addressbook/gui/widgets/eab-gui-util.c:594 msgid "Copy contacts to" msgstr "将联系人复制到" #: ../addressbook/importers/evolution-csv-importer.c:747 #: ../addressbook/importers/evolution-ldif-importer.c:549 #: ../addressbook/importers/evolution-vcard-importer.c:281 #: ../calendar/importers/icalendar-importer.c:440 #: ../calendar/importers/icalendar-importer.c:935 #: ../calendar/importers/icalendar-importer.c:974 ../shell/shell.error.xml.h:1 msgid "Importing..." msgstr "正在导入..." #: ../addressbook/importers/evolution-csv-importer.c:1082 msgid "Outlook Contacts CSV or Tab (.csv, .tab)" msgstr "CSV 或 Tab 格式的 Outlook 联系人文件 (.csv, .tab)" #: ../addressbook/importers/evolution-csv-importer.c:1083 msgid "Outlook Contacts CSV and Tab Importer" msgstr "CSV 或 Tab 格式 Outlook 联系人文件导入工具" #: ../addressbook/importers/evolution-csv-importer.c:1091 msgid "Mozilla Contacts CSV or Tab (.csv, .tab)" msgstr "CSV 或 Tab 格式的 Mozilla 联系人文件 (.csv, .tab)" #: ../addressbook/importers/evolution-csv-importer.c:1092 msgid "Mozilla Contacts CSV and Tab Importer" msgstr "CSV 或 Tab 格式的 Mozilla 联系人文件导入工具 (.csv, .tab)" #: ../addressbook/importers/evolution-csv-importer.c:1100 msgid "Evolution Contacts CSV or Tab (.csv, .tab)" msgstr "CSV 或 Tab 格式的 Evolution 联系人文件 (.csv, .tab)" #: ../addressbook/importers/evolution-csv-importer.c:1101 msgid "Evolution Contacts CSV and Tab Importer" msgstr "CSV 或 Tab 格式的 Evolution 联系人文件导入工具" #: ../addressbook/importers/evolution-ldif-importer.c:807 msgid "LDAP Data Interchange Format (.ldif)" msgstr "LDAP 数据交换格式(.ldif)" #: ../addressbook/importers/evolution-ldif-importer.c:808 msgid "Evolution LDIF importer" msgstr "Evolution LDIF 导入器" #: ../addressbook/importers/evolution-vcard-importer.c:666 msgid "vCard (.vcf, .gcrd)" msgstr "vCard (.vfg, .gcrd)" #: ../addressbook/importers/evolution-vcard-importer.c:667 msgid "Evolution vCard Importer" msgstr "Evolution vCard 导入器" #. Uncomment next if it is successful to get total number if pages in list view #. * g_object_get (operation, "n-pages", &n_pages, NULL) #: ../addressbook/printing/e-contact-print.c:764 #, c-format msgid "Page %d" msgstr "第 %d 页" #: ../addressbook/tools/evolution-addressbook-export.c:59 msgid "Specify the output file instead of standard output" msgstr "指定用来取代标准输出的输出文件" #: ../addressbook/tools/evolution-addressbook-export.c:60 msgid "OUTPUTFILE" msgstr "输出文件" #: ../addressbook/tools/evolution-addressbook-export.c:63 msgid "List local address book folders" msgstr "列出本地地址簿文件夹" #: ../addressbook/tools/evolution-addressbook-export.c:66 msgid "Show cards as vcard or csv file" msgstr "将名片显示为 vcard 还是 csv 文件" #: ../addressbook/tools/evolution-addressbook-export.c:67 msgid "[vcard|csv]" msgstr "[vcard|csv]" #: ../addressbook/tools/evolution-addressbook-export.c:136 msgid "" "Command line arguments error, please use --help option to see the usage." msgstr "命令行参数错误,请使用 --help 选项查看用法。" #: ../addressbook/tools/evolution-addressbook-export.c:150 msgid "Only support csv or vcard format." msgstr "仅支持 csv 或 vcard 格式。" #: ../addressbook/tools/evolution-addressbook-export.c:181 msgid "Unhandled error" msgstr "未处理的错误" #: ../addressbook/tools/evolution-addressbook-export-list-cards.c:625 #: ../addressbook/tools/evolution-addressbook-export-list-folders.c:46 msgid "Can not open file" msgstr "无法打开文件" #: ../addressbook/tools/evolution-addressbook-export-list-folders.c:76 #, c-format msgid "Failed to open client '%s': %s" msgstr "打开客户端“%s”失败:%s" #: ../calendar/alarm-notify/alarm-notify-dialog.c:106 msgid "minute" msgid_plural "minutes" msgstr[0] "分钟" #: ../calendar/alarm-notify/alarm-notify-dialog.c:119 msgid "hour" msgid_plural "hours" msgstr[0] "小时" #. For Translator : 'day' is part of the sentence of the form 'appointment recurs/Every [x] month(s) on the [first] [day] [forever]' #. * (dropdown menu options are in[square brackets]). This means that after 'first', either the string 'day' or #. * the name of a week day (like 'Monday' or 'Friday') always follow. #: ../calendar/alarm-notify/alarm-notify-dialog.c:132 #: ../calendar/gui/dialogs/recurrence-page.c:1248 msgid "day" msgid_plural "days" msgstr[0] "天" #: ../calendar/alarm-notify/alarm-notify-dialog.c:329 msgid "Start time" msgstr "开始时间" #: ../calendar/alarm-notify/alarm-notify.ui.h:1 msgid "Appointments" msgstr "约会" #: ../calendar/alarm-notify/alarm-notify.ui.h:2 msgid "Dismiss _All" msgstr "全部错过(_A)" #: ../calendar/alarm-notify/alarm-notify.ui.h:3 msgid "_Snooze" msgstr "午睡(_S)" #: ../calendar/alarm-notify/alarm-notify.ui.h:4 ../e-util/e-alert-dialog.c:166 msgid "_Dismiss" msgstr "错过(_D)" #: ../calendar/alarm-notify/alarm-notify.ui.h:5 #: ../calendar/alarm-notify/alarm-queue.c:1835 #: ../calendar/alarm-notify/alarm-queue.c:1845 #: ../modules/cal-config-weather/evolution-cal-config-weather.c:209 #: ../modules/itip-formatter/itip-view.c:1501 #: ../modules/itip-formatter/itip-view.c:1612 msgid "Location:" msgstr "位置:" #: ../calendar/alarm-notify/alarm-notify.ui.h:6 msgid "location of appointment" msgstr "约会位置" #: ../calendar/alarm-notify/alarm-notify.ui.h:7 msgid "Snooze _time:" msgstr "午睡时间(_T):" #. Translators: This is the last part of the sentence: #. * "Purge events older than <> days" #: ../calendar/alarm-notify/alarm-notify.ui.h:8 #: ../calendar/gui/dialogs/alarm-dialog.ui.h:6 ../e-util/filter.ui.h:8 #: ../e-util/e-interval-chooser.c:143 #: ../modules/calendar/e-cal-shell-view-actions.c:352 #: ../plugins/publish-calendar/publish-calendar.ui.h:6 msgid "days" msgstr "天" #: ../calendar/alarm-notify/alarm-notify.ui.h:9 #: ../calendar/gui/dialogs/alarm-dialog.ui.h:5 #: ../calendar/gui/dialogs/event-page.ui.h:18 ../e-util/filter.ui.h:7 #: ../e-util/e-interval-chooser.c:141 msgid "hours" msgstr "小时" #: ../calendar/alarm-notify/alarm-notify.ui.h:10 #: ../calendar/gui/dialogs/alarm-dialog.ui.h:4 #: ../calendar/gui/dialogs/event-page.ui.h:19 ../e-util/filter.ui.h:6 #: ../e-util/e-interval-chooser.c:139 #: ../mail/e-mail-config-provider-page.c:527 msgid "minutes" msgstr "分钟" #: ../calendar/alarm-notify/alarm-queue.c:1679 #: ../calendar/alarm-notify/alarm-queue.c:1815 msgid "No summary available." msgstr "没有可用的摘要。" #: ../calendar/alarm-notify/alarm-queue.c:1688 #: ../calendar/alarm-notify/alarm-queue.c:1690 msgid "No description available." msgstr "没有描述。" #: ../calendar/alarm-notify/alarm-queue.c:1698 msgid "No location information available." msgstr "没有可用的位置信息。" #: ../calendar/alarm-notify/alarm-queue.c:1703 #: ../calendar/alarm-notify/alarm-queue.c:1806 #: ../calendar/alarm-notify/alarm-queue.c:2145 msgid "Evolution Reminders" msgstr "Evolution 提醒" #: ../calendar/alarm-notify/alarm-queue.c:1747 #, c-format msgid "You have %d reminder" msgid_plural "You have %d reminders" msgstr[0] "您有 %d 条提醒" #: ../calendar/alarm-notify/alarm-queue.c:1965 msgid "Warning" msgstr "警告" #: ../calendar/alarm-notify/alarm-queue.c:1971 #, c-format msgid "" "An Evolution Calendar reminder is about to trigger. This reminder is " "configured to run the following program:\n" "\n" " %s\n" "\n" "Are you sure you want to run this program?" msgstr "" "Evolution 日历提醒将要触发。该提醒被配置为运行以下程序:\n" "\n" " %s\n" "\n" "您确信您要运行该程序吗?" #: ../calendar/alarm-notify/alarm-queue.c:1986 msgid "Do not ask me about this program again." msgstr "不要再次询问此问题。" #: ../calendar/alarm-notify/util.c:44 msgid "invalid time" msgstr "无效时间" #. Translator: Entire string is like "Pop up an alert %d hours before start of appointment" #: ../calendar/alarm-notify/util.c:70 ../calendar/gui/e-alarm-list.c:370 #: ../calendar/gui/misc.c:96 #, c-format msgid "%d hour" msgid_plural "%d hours" msgstr[0] "%d 小时" #. Translator: Entire string is like "Pop up an alert %d minutes before start of appointment" #: ../calendar/alarm-notify/util.c:76 ../calendar/gui/e-alarm-list.c:376 #: ../calendar/gui/misc.c:102 #, c-format msgid "%d minute" msgid_plural "%d minutes" msgstr[0] "%d 分钟" #. TRANSLATORS: here, "second" is the time division (like "minute"), not the ordinal number (like "third") #. Translator: Entire string is like "Pop up an alert %d seconds before start of appointment" #. TRANSLATORS: here, "second" is the time division (like "minute"), not the ordinal number (like "third") #: ../calendar/alarm-notify/util.c:80 ../calendar/gui/e-alarm-list.c:382 #: ../calendar/gui/misc.c:106 #, c-format msgid "%d second" msgid_plural "%d seconds" msgstr[0] "%d 秒" #: ../calendar/calendar.error.xml.h:1 msgid "Would you like to send all the participants a cancelation notice?" msgstr "您是否想要给全部出席者发送取消通知?" #: ../calendar/calendar.error.xml.h:2 msgid "" "If you do not send a cancelation notice, the other participants may not know " "the meeting is canceled." msgstr "如果您不发送取消通知,其他出席者也许不知道会议已经取消。" #: ../calendar/calendar.error.xml.h:3 msgid "Do _not Send" msgstr "不发送(_N)" #: ../calendar/calendar.error.xml.h:4 msgid "_Send Notice" msgstr "发送通知(_S)" #: ../calendar/calendar.error.xml.h:5 #: ../calendar/gui/dialogs/delete-comp.c:193 #, c-format msgid "Are you sure you want to delete this meeting?" msgstr "您确信您要删除该会议吗?" #: ../calendar/calendar.error.xml.h:6 msgid "" "All information on this meeting will be deleted and can not be restored." msgstr "此会议的全部信息将被删除,且无法恢复。" #: ../calendar/calendar.error.xml.h:8 msgid "" "If you do not send a cancelation notice, the other participants may not know " "the task has been deleted." msgstr "如果您不发送取消通知,其他出席者可能不知道任务已经删除。" #: ../calendar/calendar.error.xml.h:9 #: ../calendar/gui/dialogs/delete-comp.c:196 #, c-format msgid "Are you sure you want to delete this task?" msgstr "您确定要删除此任务吗?" #: ../calendar/calendar.error.xml.h:10 msgid "All information on this task will be deleted and can not be restored." msgstr "此任务的全部信息将被删除,且无法恢复。" #: ../calendar/calendar.error.xml.h:11 msgid "Would you like to send a cancelation notice for this memo?" msgstr "您是否想要为此备忘发送取消通知?" #: ../calendar/calendar.error.xml.h:12 msgid "" "If you do not send a cancelation notice, the other participants may not know " "the memo has been deleted." msgstr "如果您不发送取消通知,其他出席者可能不知道备忘已经删除。" #: ../calendar/calendar.error.xml.h:13 #: ../calendar/gui/dialogs/delete-comp.c:199 #, c-format msgid "Are you sure you want to delete this memo?" msgstr "您确信您要删除该备忘吗?" #: ../calendar/calendar.error.xml.h:14 msgid "All information on this memo will be deleted and can not be restored." msgstr "此备忘的全部信息将被删除,且无法恢复。" #: ../calendar/calendar.error.xml.h:15 msgid "Are you sure you want to delete the meeting titled '{0}'?" msgstr "您确信您要删除标题为“{0}”的会议吗?" #: ../calendar/calendar.error.xml.h:16 msgid "Are you sure you want to delete the appointment titled '{0}'?" msgstr "您确信您要删除标题为“{0}”的约会吗?" #: ../calendar/calendar.error.xml.h:17 msgid "" "All information on this appointment will be deleted and can not be restored." msgstr "此约会的全部信息将被删除,且无法恢复。" #: ../calendar/calendar.error.xml.h:18 msgid "Are you sure you want to delete this appointment?" msgstr "您确信您要删除该约会吗?" #: ../calendar/calendar.error.xml.h:19 msgid "Are you sure you want to delete the '{0}' task?" msgstr "您确定要删除“{0}”任务吗?" #: ../calendar/calendar.error.xml.h:20 msgid "Are you sure you want to delete the memo '{0}'?" msgstr "您确定要删除“{0}”备忘吗?" #: ../calendar/calendar.error.xml.h:21 msgid "All information in this memo will be deleted and can not be restored." msgstr "此备忘的全部信息将被删除,且无法恢复。" #: ../calendar/calendar.error.xml.h:22 msgid "Are you sure you want to delete these {0} appointments?" msgstr "您确定要删除这 {0} 个约会吗?" #: ../calendar/calendar.error.xml.h:23 msgid "" "All information on these appointments will be deleted and can not be " "restored." msgstr "这些约会的全部信息将被删除,且无法恢复。" #: ../calendar/calendar.error.xml.h:24 msgid "Are you sure you want to delete these {0} tasks?" msgstr "您确定要删除这 {0} 个任务吗?" #: ../calendar/calendar.error.xml.h:25 msgid "" "All information on these tasks will be deleted and can not be restored." msgstr "这些任务的全部信息将被删除,且无法恢复。" #: ../calendar/calendar.error.xml.h:26 msgid "Are you sure you want to delete these {0} memos?" msgstr "您确定要删除这 {0} 个备忘吗?" #: ../calendar/calendar.error.xml.h:27 msgid "" "All information in these memos will be deleted and can not be restored." msgstr "这些备忘的全部信息将被删除,且无法恢复。" #: ../calendar/calendar.error.xml.h:28 msgid "Would you like to save your changes to this meeting?" msgstr "您想要保存对此会议的更改吗?" #: ../calendar/calendar.error.xml.h:29 msgid "You have changed this meeting, but not yet saved it." msgstr "您已经对此会议做出了更改,但尚未保存。" #: ../calendar/calendar.error.xml.h:30 msgid "_Save Changes" msgstr "保存更改(_S)" #: ../calendar/calendar.error.xml.h:31 #: ../composer/mail-composer.error.xml.h:16 msgid "_Discard Changes" msgstr "丢弃更改(_D)" #: ../calendar/calendar.error.xml.h:32 msgid "Would you like to save your changes to this appointment?" msgstr "您想要保存对约会的更改吗?" #: ../calendar/calendar.error.xml.h:33 msgid "You have changed this appointment, but not yet saved it." msgstr "您已经更改了此约会,但尚未保存。" #: ../calendar/calendar.error.xml.h:34 msgid "Would you like to save your changes to this task?" msgstr "您想要保存对此任务的更改吗?" #: ../calendar/calendar.error.xml.h:35 msgid "You have changed this task, but not yet saved it." msgstr "您已经对此任务做出了更改,但尚未保存。" #: ../calendar/calendar.error.xml.h:36 msgid "Would you like to save your changes to this memo?" msgstr "您想要保存对此备忘的更改吗?" #: ../calendar/calendar.error.xml.h:37 msgid "You have made changes to this memo, but not yet saved them." msgstr "您已经对此备忘做出了更改,但尚未保存。" #: ../calendar/calendar.error.xml.h:38 msgid "Would you like to send meeting invitations to participants?" msgstr "您是否想要给出席者发送会议邀请?" #: ../calendar/calendar.error.xml.h:39 msgid "" "Email invitations will be sent to all participants and allow them to reply." msgstr "将会向全部出席者发送电子邮件邀请,并允许他们答复。" #: ../calendar/calendar.error.xml.h:40 #: ../composer/mail-composer.error.xml.h:13 ../mail/mail.error.xml.h:8 #: ../plugins/attachment-reminder/org-gnome-attachment-reminder.error.xml.h:5 msgid "_Send" msgstr "发送(_S)" #: ../calendar/calendar.error.xml.h:41 msgid "Would you like to send updated meeting information to participants?" msgstr "您是否想要给出席者发送更新的会议信息?" #: ../calendar/calendar.error.xml.h:42 msgid "" "Sending updated information allows other participants to keep their " "calendars up to date." msgstr "发送更新的信息将允许其他出席者使他们的日历保持最新。" #: ../calendar/calendar.error.xml.h:43 msgid "Would you like to send this task to participants?" msgstr "您是否想要将此任务发送给出席者?" #: ../calendar/calendar.error.xml.h:44 msgid "" "Email invitations will be sent to all participants and allow them to accept " "this task." msgstr "将会向全部出席者发送电子邮件邀请,并允许他们接受此任务。" #: ../calendar/calendar.error.xml.h:45 msgid "Download in progress. Do you want to save the task?" msgstr "下载进行中。您想要保存任务吗?" #: ../calendar/calendar.error.xml.h:46 msgid "" "Some attachments are being downloaded. Saving the task would result in the " "loss of these attachments." msgstr "附件正在下载中。保存任务将使得任务保存时无法包含后续的附件。" #: ../calendar/calendar.error.xml.h:47 ../composer/e-composer-actions.c:297 msgid "_Save" msgstr "保存(_S)" #: ../calendar/calendar.error.xml.h:48 msgid "Download in progress. Do you want to save the appointment?" msgstr "下载进行中。您想要保存约会吗?" #: ../calendar/calendar.error.xml.h:49 msgid "" "Some attachments are being downloaded. Saving the appointment would result " "in the loss of these attachments." msgstr "附件正在下载中。保存约会将使得约会保存时无法包含后续的附件。" #: ../calendar/calendar.error.xml.h:50 msgid "Would you like to send updated task information to participants?" msgstr "您是否想要给出席者发送更新的任务信息?" #: ../calendar/calendar.error.xml.h:51 msgid "" "Sending updated information allows other participants to keep their task " "lists up to date." msgstr "发送更新的信息允许其他出席者使他们的任务列表保持最新。" #: ../calendar/calendar.error.xml.h:52 msgid "Editor could not be loaded." msgstr "无法载入编辑器。" #: ../calendar/calendar.error.xml.h:53 msgid "Delete calendar '{0}'?" msgstr "删除日历“{0}”吗?" #: ../calendar/calendar.error.xml.h:54 msgid "This calendar will be removed permanently." msgstr "此日历将被永久删除。" #: ../calendar/calendar.error.xml.h:55 msgid "Delete task list '{0}'?" msgstr "删除任务列表“{0}”吗?" #: ../calendar/calendar.error.xml.h:56 msgid "This task list will be removed permanently." msgstr "此任务列表将被永久删除。" #: ../calendar/calendar.error.xml.h:57 msgid "Delete memo list '{0}'?" msgstr "删除备忘列表“{0}”吗?" #: ../calendar/calendar.error.xml.h:58 msgid "This memo list will be removed permanently." msgstr "此备忘列表将被永久删除。" #: ../calendar/calendar.error.xml.h:59 msgid "Delete remote calendar '{0}'?" msgstr "删除远程日程表 '{0}' ?" #: ../calendar/calendar.error.xml.h:60 msgid "" "This will permanently remove the calendar '{0}' from the server. Are you " "sure you want to proceed?" msgstr "此操作将从服务器上永久性删除日程表 '{0}' ,是否确定要继续?" #: ../calendar/calendar.error.xml.h:62 msgid "Delete remote task list '{0}'?" msgstr "删除远程任务列表 '{0}' ?" #: ../calendar/calendar.error.xml.h:63 msgid "" "This will permanently remove the task list '{0}' from the server. Are you " "sure you want to proceed?" msgstr "此操作将从服务器上永久性删除任务列表 '{0}' ,是否确定要继续?" #: ../calendar/calendar.error.xml.h:64 msgid "Delete remote memo list '{0}'?" msgstr "删除远程备忘列表 '{0}' ?" #: ../calendar/calendar.error.xml.h:65 msgid "" "This will permanently remove the memo list '{0}' from the server. Are you " "sure you want to proceed?" msgstr "此操作将从服务器上永久性删除备忘列表 '{0}' ,是否确定要继续?" #: ../calendar/calendar.error.xml.h:66 msgid "Are you sure you want to save the appointment without a summary?" msgstr "您确定想要发送没有摘要的约会吗?" #: ../calendar/calendar.error.xml.h:67 msgid "" "Adding a meaningful summary to your appointment will give you an idea of " "what your appointment is about." msgstr "在您的约会中添加有意义的摘要可以让您的收件人更容易明白您约会的内容。" #: ../calendar/calendar.error.xml.h:68 msgid "Are you sure you want to save the task without a summary?" msgstr "您确定想要发送没有摘要的任务吗?" #: ../calendar/calendar.error.xml.h:69 msgid "" "Adding a meaningful summary to your task will give you an idea of what your " "task is about." msgstr "在您的任务中添加有意义的摘要可以让您的收件人更容易明白您任务的内容。" #: ../calendar/calendar.error.xml.h:70 msgid "Are you sure you want to save the memo without a summary?" msgstr "您确定想要保存没有摘要的备忘吗?" #. Translators: {0} is the name of the calendar. #: ../calendar/calendar.error.xml.h:72 msgid "Error loading calendar '{0}'" msgstr "加载日程表 '{0}' 时发生错误" #: ../calendar/calendar.error.xml.h:73 msgid "The calendar is not marked for offline usage." msgstr "日历未标为离线使用。" #: ../calendar/calendar.error.xml.h:74 msgid "Cannot save event" msgstr "无法保存事件" #. Translators: {0} is the name of the calendar source #: ../calendar/calendar.error.xml.h:76 msgid "" "'{0}' is a read-only calendar and cannot be modified. Please select a " "different calendar that can accept appointments." msgstr "“{0}”是只读日历,无法修改。请另选一个可接受约会的日历。" #: ../calendar/calendar.error.xml.h:77 msgid "Cannot save task" msgstr "无法保存任务" #. Translators: {0} is the name of the calendar source #: ../calendar/calendar.error.xml.h:79 msgid "" "'{0}' does not support assigned tasks, please select a different task list." msgstr "'{0}' 不支持添加该任务,请选择其它任务列表。" #. Translators: {0} is the name of the task list. #: ../calendar/calendar.error.xml.h:81 msgid "Error loading task list '{0}'" msgstr "加载任务列表 '{0}' 时发生错误" #: ../calendar/calendar.error.xml.h:82 msgid "The task list is not marked for offline usage." msgstr "任务列表未标为离线使用。" #. Translators: {0} is the name of the memo list. #: ../calendar/calendar.error.xml.h:84 msgid "Error loading memo list '{0}'" msgstr "加载备忘列表 '{0}' 时发生错误" #: ../calendar/calendar.error.xml.h:85 msgid "The memo list is not marked for offline usage." msgstr "备忘列表未标为离线使用。" #. Translators: {0} is the name of the calendar. #: ../calendar/calendar.error.xml.h:87 msgid "Failed to copy an event into the calendar '{0}'" msgstr "无法将事件复制到日程表 '{0}'" #. Translators: {0} is the name of the task list. #: ../calendar/calendar.error.xml.h:89 msgid "Failed to copy a task into the task list '{0}'" msgstr "无法将任务复制到任务列表 '{0}'" #. Translators: {0} is the name of the memo list. #: ../calendar/calendar.error.xml.h:91 msgid "Failed to copy a memo into the memo list '{0}'" msgstr "无法将备忘录复制到备忘列表 '{0}'" #. Translators: {0} is the name of the calendar. #: ../calendar/calendar.error.xml.h:93 msgid "Failed to move an event into the calendar '{0}'" msgstr "无法将事件移动到日程表 '{0}'" #. Translators: {0} is the name of the task list. #: ../calendar/calendar.error.xml.h:95 msgid "Failed to move a task into the task list '{0}'" msgstr "无法将任务移动到任务列表 '{0}'" #. Translators: {0} is the name of the memo list. #: ../calendar/calendar.error.xml.h:97 msgid "Failed to move a memo into the memo list '{0}'" msgstr "无法将备忘录移动到备忘列表 '{0}'" #. Translators: {0} is the name of the calendar. #: ../calendar/calendar.error.xml.h:99 msgid "Copying an event into the calendar '{0}'" msgstr "将事件复制到日程表 '{0}'" #. Translators: {0} is the name of the task list. #: ../calendar/calendar.error.xml.h:101 msgid "Copying a task into the task list '{0}'" msgstr "将任务复制到任务列表 '{0}'" #. Translators: {0} is the name of the memo list. #: ../calendar/calendar.error.xml.h:103 msgid "Copying a memo into the memo list '{0}'" msgstr "将备忘录复制到备忘列表 '{0}'" #. Translators: {0} is the name of the calendar. #: ../calendar/calendar.error.xml.h:105 msgid "Moving an event into the calendar '{0}'" msgstr "将事件移动到日程表 '{0}'" #. Translators: {0} is the name of the task list. #: ../calendar/calendar.error.xml.h:107 msgid "Moving a task into the task list '{0}'" msgstr "将任务移动到任务列表 '{0}'" #. Translators: {0} is the name of the memo list. #: ../calendar/calendar.error.xml.h:109 msgid "Moving a memo into the memo list '{0}'" msgstr "将备忘录移动到备忘列表 '{0}'" #: ../calendar/gui/caltypes.xml.h:1 #: ../calendar/gui/e-calendar-table.etspec.h:4 #: ../calendar/gui/e-cal-list-view.etspec.h:3 #: ../calendar/gui/e-memo-table.etspec.h:2 ../calendar/gui/memotypes.xml.h:1 #: ../calendar/gui/tasktypes.xml.h:1 ../plugins/save-calendar/csv-format.c:376 msgid "Summary" msgstr "概要" #: ../calendar/gui/caltypes.xml.h:2 ../calendar/gui/memotypes.xml.h:2 #: ../calendar/gui/tasktypes.xml.h:2 ../mail/em-filter-i18n.h:11 msgid "contains" msgstr "含有" #: ../calendar/gui/caltypes.xml.h:3 ../calendar/gui/memotypes.xml.h:3 #: ../calendar/gui/tasktypes.xml.h:3 ../mail/em-filter-i18n.h:17 msgid "does not contain" msgstr "不含有" #: ../calendar/gui/caltypes.xml.h:4 ../calendar/gui/e-cal-list-view.etspec.h:4 #: ../calendar/gui/memotypes.xml.h:4 ../calendar/gui/tasktypes.xml.h:4 #: ../e-util/e-table-config.ui.h:4 ../e-util/e-attachment-tree-view.c:528 #: ../modules/plugin-manager/evolution-plugin-manager.c:69 msgid "Description" msgstr "描述" #: ../calendar/gui/caltypes.xml.h:5 ../calendar/gui/memotypes.xml.h:5 #: ../calendar/gui/tasktypes.xml.h:7 msgid "Any Field" msgstr "任何域" #: ../calendar/gui/caltypes.xml.h:6 ../calendar/gui/memotypes.xml.h:7 msgid "Classification" msgstr "分类" #: ../calendar/gui/caltypes.xml.h:7 ../calendar/gui/memotypes.xml.h:8 #: ../calendar/gui/tasktypes.xml.h:9 ../mail/em-filter-i18n.h:34 msgid "is" msgstr "是" #: ../calendar/gui/caltypes.xml.h:8 ../calendar/gui/memotypes.xml.h:9 #: ../calendar/gui/tasktypes.xml.h:10 ../mail/em-filter-i18n.h:40 msgid "is not" msgstr "不是" #. To Translators: This is task classification #: ../calendar/gui/caltypes.xml.h:9 ../calendar/gui/dialogs/task-page.ui.h:2 #: ../calendar/gui/e-cal-list-view.c:250 ../calendar/gui/e-cal-model.c:454 #: ../calendar/gui/e-cal-model.c:461 ../calendar/gui/e-task-table.c:547 #: ../calendar/gui/memotypes.xml.h:10 msgid "Public" msgstr "公开" #. To Translators: This is task classification #: ../calendar/gui/caltypes.xml.h:10 ../calendar/gui/dialogs/task-page.ui.h:4 #: ../calendar/gui/e-cal-list-view.c:251 ../calendar/gui/e-cal-model.c:463 #: ../calendar/gui/e-task-table.c:548 ../calendar/gui/memotypes.xml.h:11 msgid "Private" msgstr "保密" #. To Translators: This is task classification #: ../calendar/gui/caltypes.xml.h:11 ../calendar/gui/dialogs/task-page.ui.h:6 #: ../calendar/gui/e-cal-list-view.c:252 ../calendar/gui/e-cal-model.c:465 #: ../calendar/gui/e-task-table.c:549 ../calendar/gui/memotypes.xml.h:12 #: ../e-util/e-send-options.ui.h:7 msgid "Confidential" msgstr "机密" #: ../calendar/gui/caltypes.xml.h:12 ../calendar/gui/memotypes.xml.h:6 #: ../calendar/gui/tasktypes.xml.h:5 msgid "Organizer" msgstr "组织者" #: ../calendar/gui/caltypes.xml.h:13 #: ../calendar/gui/e-meeting-time-sel.etspec.h:2 #: ../calendar/gui/tasktypes.xml.h:6 msgid "Attendee" msgstr "出席者" #: ../calendar/gui/caltypes.xml.h:14 #: ../calendar/gui/e-cal-list-view.etspec.h:5 ../mail/message-list.etspec.h:14 #: ../plugins/publish-calendar/publish-calendar.c:897 #: ../plugins/publish-calendar/publish-calendar.ui.h:22 #: ../plugins/save-calendar/csv-format.c:390 msgid "Location" msgstr "位置" #: ../calendar/gui/caltypes.xml.h:15 ../calendar/gui/memotypes.xml.h:13 #: ../calendar/gui/tasktypes.xml.h:23 ../e-util/e-categories-selector.c:328 msgid "Category" msgstr "类别" #: ../calendar/gui/caltypes.xml.h:16 ../calendar/gui/memotypes.xml.h:14 #: ../calendar/gui/tasktypes.xml.h:15 ../em-format/e-mail-formatter-print.c:54 #: ../em-format/e-mail-formatter-print-headers.c:204 #: ../mail/em-filter-i18n.h:6 msgid "Attachments" msgstr "附件" #: ../calendar/gui/caltypes.xml.h:17 ../calendar/gui/memotypes.xml.h:15 #: ../calendar/gui/tasktypes.xml.h:16 ../mail/em-filter-i18n.h:27 msgid "Exist" msgstr "存在" #: ../calendar/gui/caltypes.xml.h:18 ../calendar/gui/memotypes.xml.h:16 #: ../calendar/gui/tasktypes.xml.h:17 ../mail/em-filter-i18n.h:24 msgid "Do Not Exist" msgstr "不存在" #: ../calendar/gui/caltypes.xml.h:19 #: ../calendar/gui/dialogs/event-editor.c:310 #: ../calendar/gui/dialogs/event-editor.c:331 #: ../calendar/gui/dialogs/recurrence-page.ui.h:15 msgid "Recurrence" msgstr "再现" #: ../calendar/gui/caltypes.xml.h:20 msgid "Occurs" msgstr "发生" #: ../calendar/gui/caltypes.xml.h:21 msgid "Less Than" msgstr "少于" #: ../calendar/gui/caltypes.xml.h:22 msgid "Exactly" msgstr "准点" #: ../calendar/gui/caltypes.xml.h:23 msgid "More Than" msgstr "大于" #: ../calendar/gui/caltypes.xml.h:24 ../calendar/gui/memotypes.xml.h:17 #: ../calendar/gui/tasktypes.xml.h:28 msgid "Summary Contains" msgstr "概要含有" #: ../calendar/gui/caltypes.xml.h:25 ../calendar/gui/memotypes.xml.h:18 #: ../calendar/gui/tasktypes.xml.h:29 msgid "Description Contains" msgstr "描述含有" #: ../calendar/gui/dialogs/alarm-dialog.c:669 msgid "Edit Reminder" msgstr "编辑提醒" #: ../calendar/gui/dialogs/alarm-dialog.c:897 #: ../calendar/gui/e-alarm-list.c:412 msgid "Pop up an alert" msgstr "弹出警告" #: ../calendar/gui/dialogs/alarm-dialog.c:898 #: ../calendar/gui/e-alarm-list.c:408 msgid "Play a sound" msgstr "播放声音" #: ../calendar/gui/dialogs/alarm-dialog.c:899 #: ../calendar/gui/e-alarm-list.c:420 msgid "Run a program" msgstr "运行程序" #: ../calendar/gui/dialogs/alarm-dialog.c:900 #: ../calendar/gui/e-alarm-list.c:416 msgid "Send an email" msgstr "发送电子邮件" #: ../calendar/gui/dialogs/alarm-dialog.c:909 msgid "before" msgstr "之前" #: ../calendar/gui/dialogs/alarm-dialog.c:910 msgid "after" msgstr "之后" #: ../calendar/gui/dialogs/alarm-dialog.c:919 msgid "start of appointment" msgstr "约会开始" #: ../calendar/gui/dialogs/alarm-dialog.c:920 msgid "end of appointment" msgstr "约会结束" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:1 msgid "minute(s)" msgstr "分钟" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:2 msgid "hour(s)" msgstr "小时" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:3 msgid "day(s)" msgstr "天" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:7 msgid "Add Reminder" msgstr "添加提醒" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:8 #: ../calendar/gui/dialogs/event-editor.c:353 msgid "Reminder" msgstr "提醒" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:9 msgid "Repeat" msgstr "重复" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:10 msgid "_Repeat the reminder" msgstr "重复提醒(_R)" #. This is part of the sentence: 'Repeat the reminder %d extra times every %d minutes'. Where %d are numbers. #: ../calendar/gui/dialogs/alarm-dialog.ui.h:12 msgid "extra times every" msgstr "每个额外时间" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:13 ../mail/mail-config.ui.h:30 msgid "Options" msgstr "选项" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:14 msgid "Custom _message" msgstr "自定义信息(_M)" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:15 msgid "Mes_sage:" msgstr "信息(_S):" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:16 msgid "Custom reminder sound" msgstr "自定义提醒声音" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:17 msgid "_Sound:" msgstr "声音(_S):" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:18 msgid "Select A File" msgstr "选择一个文件" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:19 msgid "_Program:" msgstr "程序(_P):" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:20 msgid "_Arguments:" msgstr "参数(_A):" #: ../calendar/gui/dialogs/alarm-dialog.ui.h:21 msgid "Send To:" msgstr "发送至:" #: ../calendar/gui/dialogs/alarm-list-dialog.c:240 msgid "Action/Trigger" msgstr "动作/触发器" #: ../calendar/gui/dialogs/alarm-list-dialog.ui.h:1 #: ../calendar/gui/dialogs/event-page.ui.h:25 #: ../modules/calendar/e-calendar-preferences.ui.h:62 msgid "Reminders" msgstr "提醒" #: ../calendar/gui/dialogs/alarm-list-dialog.ui.h:2 msgid "A_dd" msgstr "添加(_D)" #: ../calendar/gui/dialogs/changed-comp.c:60 msgid "This event has been deleted." msgstr "此事件已经被删除。" #: ../calendar/gui/dialogs/changed-comp.c:64 msgid "This task has been deleted." msgstr "此任务已经被删除。" #: ../calendar/gui/dialogs/changed-comp.c:68 msgid "This memo has been deleted." msgstr "此备注已经被删除。" #: ../calendar/gui/dialogs/changed-comp.c:78 #, c-format msgid "%s You have made changes. Forget those changes and close the editor?" msgstr "%s 您已经做了修改。放弃这些修改并关闭编辑器吗?" #: ../calendar/gui/dialogs/changed-comp.c:80 #, c-format msgid "%s You have made no changes, close the editor?" msgstr "%s 您还没有进行修改,关闭编辑器吗?" #: ../calendar/gui/dialogs/changed-comp.c:85 msgid "This event has been changed." msgstr "此事件已经被更改。" #: ../calendar/gui/dialogs/changed-comp.c:89 msgid "This task has been changed." msgstr "此任务已经被更改。" #: ../calendar/gui/dialogs/changed-comp.c:93 msgid "This memo has been changed." msgstr "此备注已经被更改。" #: ../calendar/gui/dialogs/changed-comp.c:103 #, c-format msgid "" "%s You have made changes. Forget those changes and update the editor?" msgstr "%s 您已经做出了修改。放弃这些修改并更新编辑器吗?" #: ../calendar/gui/dialogs/changed-comp.c:105 #, c-format msgid "%s You have made no changes, update the editor?" msgstr "%s 您还没有进行修改,更新编辑器吗?" #: ../calendar/gui/dialogs/comp-editor.c:266 msgid "Could not save attachments" msgstr "不能保存附件" #: ../calendar/gui/dialogs/comp-editor.c:620 msgid "Could not update object" msgstr "无法更新对象" #: ../calendar/gui/dialogs/comp-editor.c:754 msgid "Edit Appointment" msgstr "编辑约会" #: ../calendar/gui/dialogs/comp-editor.c:761 #, c-format msgid "Meeting - %s" msgstr "会议 - %s" #: ../calendar/gui/dialogs/comp-editor.c:763 #, c-format msgid "Appointment - %s" msgstr "约会 - %s" #: ../calendar/gui/dialogs/comp-editor.c:769 #, c-format msgid "Assigned Task - %s" msgstr "分配的任务 - %s" #: ../calendar/gui/dialogs/comp-editor.c:771 #, c-format msgid "Task - %s" msgstr "任务 - %s" #: ../calendar/gui/dialogs/comp-editor.c:776 #, c-format msgid "Memo - %s" msgstr "备忘 - %s" #: ../calendar/gui/dialogs/comp-editor.c:792 msgid "No Summary" msgstr "没有概要" #: ../calendar/gui/dialogs/comp-editor.c:913 msgid "Keep original item?" msgstr "保留原始条目?" #: ../calendar/gui/dialogs/comp-editor.c:1080 #: ../calendar/gui/dialogs/comp-editor.c:1108 msgid "Unable to synchronize with the server" msgstr "无法与服务器进行同步" #: ../calendar/gui/dialogs/comp-editor.c:1222 msgid "Close the current window" msgstr "关闭当前窗口" #: ../calendar/gui/dialogs/comp-editor.c:1229 ../e-util/e-focus-tracker.c:121 #: ../e-util/e-focus-tracker.c:558 ../e-util/e-web-view-gtkhtml.c:455 #: ../e-util/e-web-view-gtkhtml.c:1296 ../e-util/e-web-view.c:341 #: ../e-util/e-web-view.c:1305 ../mail/e-mail-browser.c:136 #: ../shell/e-shell-window-actions.c:888 msgid "Copy the selection" msgstr "复制选中内容" #: ../calendar/gui/dialogs/comp-editor.c:1236 ../e-util/e-focus-tracker.c:114 #: ../e-util/e-focus-tracker.c:553 ../e-util/e-web-view-gtkhtml.c:1290 #: ../e-util/e-web-view.c:1299 ../mail/e-mail-browser.c:143 #: ../shell/e-shell-window-actions.c:895 msgid "Cut the selection" msgstr "剪切选中内容" #: ../calendar/gui/dialogs/comp-editor.c:1243 ../e-util/e-focus-tracker.c:135 #: ../e-util/e-focus-tracker.c:568 ../shell/e-shell-window-actions.c:902 msgid "Delete the selection" msgstr "删除选中内容" #: ../calendar/gui/dialogs/comp-editor.c:1250 msgid "View help" msgstr "查看帮助" #: ../calendar/gui/dialogs/comp-editor.c:1257 ../e-util/e-focus-tracker.c:128 #: ../e-util/e-focus-tracker.c:563 ../e-util/e-web-view-gtkhtml.c:1302 #: ../e-util/e-web-view.c:1311 ../mail/e-mail-browser.c:150 #: ../shell/e-shell-window-actions.c:923 msgid "Paste the clipboard" msgstr "粘贴剪贴板" #: ../calendar/gui/dialogs/comp-editor.c:1278 msgid "Save current changes" msgstr "保存当前更改" #: ../calendar/gui/dialogs/comp-editor.c:1283 #: ../e-util/e-mail-signature-editor.c:317 msgid "Save and Close" msgstr "保存并关闭" #: ../calendar/gui/dialogs/comp-editor.c:1285 msgid "Save current changes and close editor" msgstr "保存当前修改并关闭编辑器" #: ../calendar/gui/dialogs/comp-editor.c:1292 ../e-util/e-focus-tracker.c:142 #: ../e-util/e-focus-tracker.c:573 ../mail/e-mail-browser.c:157 #: ../shell/e-shell-window-actions.c:1000 msgid "Select all text" msgstr "选中所有文字" #: ../calendar/gui/dialogs/comp-editor.c:1299 msgid "_Classification" msgstr "分类(_C)" #: ../calendar/gui/dialogs/comp-editor.c:1306 #: ../calendar/gui/dialogs/recurrence-page.ui.h:19 ../e-util/filter.ui.h:16 #: ../mail/e-mail-browser.c:171 #: ../plugins/publish-calendar/publish-calendar.ui.h:32 #: ../shell/e-shell-window-actions.c:1028 msgid "_Edit" msgstr "编辑(_E)" #: ../calendar/gui/dialogs/comp-editor.c:1313 #: ../e-util/e-mail-signature-editor.c:322 ../mail/e-mail-browser.c:164 #: ../shell/e-shell-window-actions.c:1035 msgid "_File" msgstr "文件(_F)" #: ../calendar/gui/dialogs/comp-editor.c:1320 #: ../shell/e-shell-window-actions.c:1042 msgid "_Help" msgstr "帮助(_H)" #: ../calendar/gui/dialogs/comp-editor.c:1327 msgid "_Insert" msgstr "插入(_I)" #: ../calendar/gui/dialogs/comp-editor.c:1334 #: ../composer/e-composer-actions.c:320 msgid "_Options" msgstr "选项(_O)" #: ../calendar/gui/dialogs/comp-editor.c:1341 ../mail/e-mail-browser.c:178 #: ../shell/e-shell-window-actions.c:1077 ../smime/gui/smime-ui.ui.h:5 msgid "_View" msgstr "查看(_V)" #: ../calendar/gui/dialogs/comp-editor.c:1351 #: ../composer/e-composer-actions.c:269 msgid "_Attachment..." msgstr "附件(_A)..." #: ../calendar/gui/dialogs/comp-editor.c:1353 #: ../composer/e-composer-actions.c:271 ../e-util/e-attachment-view.c:413 msgid "Attach a file" msgstr "添加附件" #: ../calendar/gui/dialogs/comp-editor.c:1361 msgid "_Categories" msgstr "类别(_C)" #: ../calendar/gui/dialogs/comp-editor.c:1363 msgid "Toggles whether to display categories" msgstr "切换是否显示类别" #: ../calendar/gui/dialogs/comp-editor.c:1369 msgid "Time _Zone" msgstr "时区(_Z)" #: ../calendar/gui/dialogs/comp-editor.c:1371 msgid "Toggles whether the time zone is displayed" msgstr "切换是否显示时区" #: ../calendar/gui/dialogs/comp-editor.c:1380 msgid "Pu_blic" msgstr "公开(_B)" #: ../calendar/gui/dialogs/comp-editor.c:1382 msgid "Classify as public" msgstr "分类为公开" #: ../calendar/gui/dialogs/comp-editor.c:1387 msgid "_Private" msgstr "私人(_P)" #: ../calendar/gui/dialogs/comp-editor.c:1389 msgid "Classify as private" msgstr "分类为私人" #: ../calendar/gui/dialogs/comp-editor.c:1394 msgid "_Confidential" msgstr "机密(_C)" #: ../calendar/gui/dialogs/comp-editor.c:1396 msgid "Classify as confidential" msgstr "分类为机密" #: ../calendar/gui/dialogs/comp-editor.c:1404 msgid "R_ole Field" msgstr "角色域(_O)" #: ../calendar/gui/dialogs/comp-editor.c:1406 msgid "Toggles whether the Role field is displayed" msgstr "切换是否显示角色域" #: ../calendar/gui/dialogs/comp-editor.c:1412 msgid "_RSVP" msgstr "请回复(_R)" #: ../calendar/gui/dialogs/comp-editor.c:1414 msgid "Toggles whether the RSVP field is displayed" msgstr "切换是否显示请回复域" #: ../calendar/gui/dialogs/comp-editor.c:1420 msgid "_Status Field" msgstr "状态域(_S)" #: ../calendar/gui/dialogs/comp-editor.c:1422 msgid "Toggles whether the Status field is displayed" msgstr "切换是否显示状态域" #: ../calendar/gui/dialogs/comp-editor.c:1428 msgid "_Type Field" msgstr "类型域(_T)" #: ../calendar/gui/dialogs/comp-editor.c:1430 msgid "Toggles whether the Attendee Type is displayed" msgstr "切换是否显示出席者类型域" #: ../calendar/gui/dialogs/comp-editor.c:2211 #: ../composer/e-composer-actions.c:488 msgid "Attach" msgstr "附件" #: ../calendar/gui/dialogs/comp-editor.c:2541 #: ../calendar/gui/dialogs/comp-editor.c:2751 #: ../calendar/gui/dialogs/comp-editor.c:3764 msgid "Changes made to this item may be discarded if an update arrives" msgstr "如果更新到达的话,对此项目的更改将被丢弃" #: ../calendar/gui/dialogs/comp-editor.c:3726 #: ../modules/prefer-plain/e-mail-parser-prefer-plain.c:121 msgid "attachment" msgstr "附件" #: ../calendar/gui/dialogs/comp-editor.c:3796 msgid "Unable to use current version!" msgstr "无法使用当前版本!" #: ../calendar/gui/dialogs/comp-editor-page.c:441 #, c-format msgid "Validation error: %s" msgstr "校验错误:%s" #: ../calendar/gui/dialogs/copy-source-dialog.c:121 msgid "Could not open destination" msgstr "无法打开目的" #: ../calendar/gui/dialogs/copy-source-dialog.c:131 msgid "Destination is read only" msgstr "目的只读" #: ../calendar/gui/dialogs/copy-source-dialog.c:173 msgid "Cannot create object" msgstr "无法创建对象" #: ../calendar/gui/dialogs/copy-source-dialog.c:204 msgid "Could not open source" msgstr "无法打开源" #: ../calendar/gui/dialogs/delete-comp.c:216 msgid "_Delete this item from all other recipient's mailboxes?" msgstr "从全部其它收件人的邮箱中删除此项吗?(_D)" #: ../calendar/gui/dialogs/delete-comp.c:219 msgid "_Retract comment" msgstr "撤销评论(_R):" #. Translators: The '%s' is replaced with a detailed error message #: ../calendar/gui/dialogs/delete-error.c:55 #, c-format msgid "The event could not be deleted due to a dbus error: %s" msgstr "由于 dbus 错误 %s,无法删除该事件。" #. Translators: The '%s' is replaced with a detailed error message #: ../calendar/gui/dialogs/delete-error.c:59 #, c-format msgid "The task could not be deleted due to a dbus error: %s" msgstr "由于 dbus 错误 %s,无法该删除任务。" #. Translators: The '%s' is replaced with a detailed error message #: ../calendar/gui/dialogs/delete-error.c:63 #, c-format msgid "The memo could not be deleted due to a dbus error: %s" msgstr "由于 dbus 错误 %s,无法该删除备忘。" #. Translators: The '%s' is replaced with a detailed error message #: ../calendar/gui/dialogs/delete-error.c:67 #, c-format msgid "The item could not be deleted due to a dbus error: %s" msgstr "由于 dbus 错误 %s,无法删除该项目。" #: ../calendar/gui/dialogs/delete-error.c:74 msgid "The event could not be deleted because permission was denied" msgstr "无法删除事件,原因是权限被禁止" #: ../calendar/gui/dialogs/delete-error.c:77 msgid "The task could not be deleted because permission was denied" msgstr "无法删除任务,原因是权限被禁止" #: ../calendar/gui/dialogs/delete-error.c:80 msgid "The memo could not be deleted because permission was denied" msgstr "无法删除备忘,原因是权限被禁止" #: ../calendar/gui/dialogs/delete-error.c:83 msgid "The item could not be deleted because permission was denied" msgstr "无法删除项目,原因是权限被禁止" #. Translators: The '%s' is replaced with a detailed error message #: ../calendar/gui/dialogs/delete-error.c:91 #, c-format msgid "The event could not be deleted due to an error: %s" msgstr "由于错误,无法删除事件:%s" #. Translators: The '%s' is replaced with a detailed error message #: ../calendar/gui/dialogs/delete-error.c:95 #, c-format msgid "The task could not be deleted due to an error: %s" msgstr "由于错误,无法删除任务:%s" #. Translators: The '%s' is replaced with a detailed error message #: ../calendar/gui/dialogs/delete-error.c:99 #, c-format msgid "The memo could not be deleted due to an error: %s" msgstr "由于错误,无法删除备忘:%s" #. Translators: The '%s' is replaced with a detailed error message #: ../calendar/gui/dialogs/delete-error.c:103 #, c-format msgid "The item could not be deleted due to an error: %s" msgstr "由于错误,无法删除项目:%s" #: ../calendar/gui/dialogs/e-delegate-dialog.ui.h:1 msgid "Enter Delegate" msgstr "输入代表" #: ../calendar/gui/dialogs/e-delegate-dialog.ui.h:2 msgid "Delegate To:" msgstr "授权给:" #: ../calendar/gui/dialogs/e-delegate-dialog.ui.h:3 msgid "Contacts..." msgstr "联系人..." #: ../calendar/gui/dialogs/event-editor.c:205 msgid "_Reminders" msgstr "提醒(_R)" #: ../calendar/gui/dialogs/event-editor.c:207 msgid "Set or unset reminders for this event" msgstr "设置或取消此事件的提醒" #: ../calendar/gui/dialogs/event-editor.c:215 msgid "Show Time as _Busy" msgstr "将时间显示为忙(_B)" #: ../calendar/gui/dialogs/event-editor.c:217 msgid "Toggles whether to show time as busy" msgstr "切换是否将时间显示为忙" #: ../calendar/gui/dialogs/event-editor.c:226 msgid "_Recurrence" msgstr "再现(_R)" #: ../calendar/gui/dialogs/event-editor.c:228 msgid "Make this a recurring event" msgstr "将此事件标为重复发生" #: ../calendar/gui/dialogs/event-editor.c:233 ../e-util/e-send-options.ui.h:14 msgid "Send Options" msgstr "发送选项" #: ../calendar/gui/dialogs/event-editor.c:235 #: ../calendar/gui/dialogs/task-editor.c:96 msgid "Insert advanced send options" msgstr "插入高级发送选项" #: ../calendar/gui/dialogs/event-editor.c:243 msgid "All _Day Event" msgstr "全天事件(_D)" #: ../calendar/gui/dialogs/event-editor.c:245 msgid "Toggles whether to have All Day Event" msgstr "切换是否有全天事件" #: ../calendar/gui/dialogs/event-editor.c:254 msgid "_Free/Busy" msgstr "忙/闲(_F)" #: ../calendar/gui/dialogs/event-editor.c:256 msgid "Query free / busy information for the attendees" msgstr "查询出席者的忙闲信息" #: ../calendar/gui/dialogs/event-editor.c:307 ../calendar/gui/print.c:3505 msgid "Appointment" msgstr "约会" #: ../calendar/gui/dialogs/event-editor.c:377 #: ../calendar/gui/dialogs/event-page.ui.h:24 #: ../calendar/gui/e-meeting-list-view.c:165 msgid "Attendees" msgstr "出席者" #: ../calendar/gui/dialogs/event-editor.c:574 msgid "Print this event" msgstr "打印此事件" #: ../calendar/gui/dialogs/event-page.c:557 msgid "Event's start time is in the past" msgstr "事件开始时间在过去" #: ../calendar/gui/dialogs/event-page.c:634 msgid "Event cannot be edited, because the selected calendar is read only" msgstr "因所选的日程为只读,您无法编辑该事件。" #: ../calendar/gui/dialogs/event-page.c:638 msgid "Event cannot be fully edited, because you are not the organizer" msgstr "您并非组织者,因此无法编辑全部事件。" #: ../calendar/gui/dialogs/event-page.c:650 #: ../calendar/gui/dialogs/event-page.c:3165 msgid "This event has reminders" msgstr "此事件有提醒" #: ../calendar/gui/dialogs/event-page.c:717 #: ../calendar/gui/dialogs/event-page.ui.h:13 msgid "Or_ganizer:" msgstr "组织者(_G):" #: ../calendar/gui/dialogs/event-page.c:1300 msgid "Event with no start date" msgstr "没有开始日期的事件" #: ../calendar/gui/dialogs/event-page.c:1303 msgid "Event with no end date" msgstr "没有结束日期的事件" #: ../calendar/gui/dialogs/event-page.c:1476 #: ../calendar/gui/dialogs/memo-page.c:726 #: ../calendar/gui/dialogs/task-page.c:1025 msgid "Start date is wrong" msgstr "开始日期有错" #: ../calendar/gui/dialogs/event-page.c:1487 msgid "End date is wrong" msgstr "结束日期有错" #: ../calendar/gui/dialogs/event-page.c:1511 msgid "Start time is wrong" msgstr "开始时间有错" #: ../calendar/gui/dialogs/event-page.c:1519 msgid "End time is wrong" msgstr "结束时间有错" #: ../calendar/gui/dialogs/event-page.c:1683 #: ../calendar/gui/dialogs/memo-page.c:765 #: ../calendar/gui/dialogs/task-page.c:1079 msgid "An organizer is required." msgstr "需要一名组织者。" #: ../calendar/gui/dialogs/event-page.c:1718 #: ../calendar/gui/dialogs/task-page.c:1114 msgid "At least one attendee is required." msgstr "需要至少一个出席者。" #: ../calendar/gui/dialogs/event-page.c:1924 msgid "_Delegatees" msgstr "代理人(_D)" #: ../calendar/gui/dialogs/event-page.c:1926 msgid "Atte_ndees" msgstr "出席者(_N)" #: ../calendar/gui/dialogs/event-page.c:3445 #, c-format msgid "%d day before appointment" msgid_plural "%d days before appointment" msgstr[0] "约会的 %d 天前" #: ../calendar/gui/dialogs/event-page.c:3451 #, c-format msgid "%d hour before appointment" msgid_plural "%d hours before appointment" msgstr[0] "约会的 %d 小时前" #: ../calendar/gui/dialogs/event-page.c:3457 #, c-format msgid "%d minute before appointment" msgid_plural "%d minutes before appointment" msgstr[0] "约会的 %d 分钟前" #: ../calendar/gui/dialogs/event-page.c:3478 msgid "Customize" msgstr "自定义" #. Translators: "None" for "No reminder set" #: ../calendar/gui/dialogs/event-page.c:3485 msgctxt "cal-reminders" msgid "None" msgstr "无" #. TRANSLATORS: 'for' in a sense of 'duration'; example string: Time: [date] [time] for [ H ] hours [ M ] minutes #: ../calendar/gui/dialogs/event-page.ui.h:2 msgctxt "eventpage" msgid "for" msgstr "持续时间" #. TRANSLATORS: 'until' in a sense of 'duration'; example string: Time: [date] [time] until [ date ] [ time ] #: ../calendar/gui/dialogs/event-page.ui.h:4 msgctxt "eventpage" msgid "until" msgstr "直到" #. TRANSLATORS: Predefined reminder's description #: ../calendar/gui/dialogs/event-page.ui.h:6 msgctxt "eventpage" msgid "15 minutes before appointment" msgstr "约会前 15 分钟" #. TRANSLATORS: Predefined reminder's description #: ../calendar/gui/dialogs/event-page.ui.h:8 msgctxt "eventpage" msgid "1 hour before appointment" msgstr "约会前 1 小时" #. TRANSLATORS: Predefined reminder's description #: ../calendar/gui/dialogs/event-page.ui.h:10 msgctxt "eventpage" msgid "1 day before appointment" msgstr "约会前 1 天" #: ../calendar/gui/dialogs/event-page.ui.h:11 msgid "_Location:" msgstr "位置(_L):" #: ../calendar/gui/dialogs/event-page.ui.h:12 #: ../calendar/gui/dialogs/memo-page.ui.h:2 #: ../calendar/gui/dialogs/task-page.ui.h:29 #: ../e-util/e-attachment-dialog.c:357 msgid "_Description:" msgstr "描述(_D):" #: ../calendar/gui/dialogs/event-page.ui.h:14 msgid "_Time:" msgstr "时间(_T):" #: ../calendar/gui/dialogs/event-page.ui.h:15 #: ../modules/calendar/e-calendar-preferences.ui.h:13 msgid "Time _zone:" msgstr "时区(_Z):" #: ../calendar/gui/dialogs/event-page.ui.h:17 msgid "_Summary:" msgstr "概要(_S):" #: ../calendar/gui/dialogs/event-page.ui.h:21 msgid "Event Description" msgstr "事件描述" #: ../calendar/gui/dialogs/event-page.ui.h:23 #: ../calendar/gui/dialogs/task-page.ui.h:30 #: ../calendar/gui/e-meeting-time-sel.c:547 msgid "Atte_ndees..." msgstr "出席者(_N)..." #: ../calendar/gui/dialogs/event-page.ui.h:26 msgid "_Reminder" msgstr "提醒(_R)" #: ../calendar/gui/dialogs/event-page.ui.h:27 msgid "Custom Reminder:" msgstr "自定义提醒:" #: ../calendar/gui/dialogs/goto-dialog.ui.h:1 msgid "January" msgstr "一月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:2 msgid "February" msgstr "二月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:3 msgid "March" msgstr "三月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:4 msgid "April" msgstr "四月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:5 msgid "May" msgstr "五月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:6 msgid "June" msgstr "六月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:7 msgid "July" msgstr "七月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:8 msgid "August" msgstr "八月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:9 msgid "September" msgstr "九月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:10 msgid "October" msgstr "十月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:11 msgid "November" msgstr "十一月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:12 msgid "December" msgstr "十二月" #: ../calendar/gui/dialogs/goto-dialog.ui.h:13 msgid "Select Date" msgstr "选择日期" #: ../calendar/gui/dialogs/goto-dialog.ui.h:14 #: ../modules/calendar/e-cal-shell-view-actions.c:1379 msgid "Select _Today" msgstr "选择今天(_T)" #: ../calendar/gui/dialogs/memo-editor.c:106 ../calendar/gui/print.c:3509 msgid "Memo" msgstr "备忘" #: ../calendar/gui/dialogs/memo-editor.c:156 msgid "Print this memo" msgstr "打印此备忘录" #: ../calendar/gui/dialogs/memo-page.c:421 msgid "Memo's start date is in the past" msgstr "备忘录开始时间在过去" #: ../calendar/gui/dialogs/memo-page.c:457 msgid "Memo cannot be edited, because the selected memo list is read only" msgstr "因所选的备忘列表为只读,您无法编辑该备忘。" #: ../calendar/gui/dialogs/memo-page.c:461 msgid "Memo cannot be fully edited, because you are not the organizer" msgstr "您并非组织者,因此无法编辑全部备忘。" #: ../calendar/gui/dialogs/memo-page.c:1160 #: ../em-format/e-mail-formatter-utils.c:203 #: ../em-format/e-mail-formatter-utils.c:220 #: ../em-format/e-mail-part-headers.c:49 ../mail/em-filter-i18n.h:78 #: ../mail/message-list.etspec.h:9 ../modules/mail/em-mailer-prefs.c:66 msgid "To" msgstr "收件人" #: ../calendar/gui/dialogs/memo-page.ui.h:3 #: ../calendar/gui/dialogs/task-page.c:426 #: ../calendar/gui/dialogs/task-page.ui.h:31 msgid "_List:" msgstr "列表(_L):" #: ../calendar/gui/dialogs/memo-page.ui.h:4 #: ../calendar/gui/dialogs/task-page.c:434 #: ../calendar/gui/dialogs/task-page.ui.h:24 msgid "Organi_zer:" msgstr "组织者(_Z):" #: ../calendar/gui/dialogs/memo-page.ui.h:5 msgid "T_o:" msgstr "到(_O):" #: ../calendar/gui/dialogs/memo-page.ui.h:6 #: ../calendar/gui/dialogs/task-page.ui.h:26 msgid "Sta_rt date:" msgstr "开始日期(_R):" #: ../calendar/gui/dialogs/memo-page.ui.h:7 #: ../calendar/gui/dialogs/task-page.ui.h:23 msgid "Su_mmary:" msgstr "概要(_M):" #: ../calendar/gui/dialogs/recur-comp.c:53 #, c-format msgid "You are modifying a recurring event. What would you like to modify?" msgstr "您即将修改重复事件。您想要修改何内容?" #: ../calendar/gui/dialogs/recur-comp.c:55 #, c-format msgid "" "You are delegating a recurring event. What would you like to delegate?" msgstr "您即将代理重复事件。您想要代理何内容?" #: ../calendar/gui/dialogs/recur-comp.c:59 #, c-format msgid "You are modifying a recurring task. What would you like to modify?" msgstr "您即将修改重复任务。您想要修改何内容?" #: ../calendar/gui/dialogs/recur-comp.c:63 #, c-format msgid "You are modifying a recurring memo. What would you like to modify?" msgstr "您即将修改重复备忘。您想要修改何内容?" #: ../calendar/gui/dialogs/recur-comp.c:89 msgid "This Instance Only" msgstr "只是本次" #: ../calendar/gui/dialogs/recur-comp.c:93 msgid "This and Prior Instances" msgstr "本次和以前各次" #: ../calendar/gui/dialogs/recur-comp.c:99 msgid "This and Future Instances" msgstr "本次和以后各次" #: ../calendar/gui/dialogs/recur-comp.c:104 msgid "All Instances" msgstr "所有各次" #: ../calendar/gui/dialogs/recurrence-page.c:575 msgid "This appointment contains recurrences that Evolution cannot edit." msgstr "此约会含有 Evolution 无法编辑的再现。" #: ../calendar/gui/dialogs/recurrence-page.c:1000 msgid "Recurrence date is invalid" msgstr "再现日期无效" #: ../calendar/gui/dialogs/recurrence-page.c:1044 msgid "End time of the recurrence was before event's start" msgstr "重复事件条目的结束时间小于开始时间" #. TRANSLATORS: Entire string is for example: This appointment recurs/Every [x] week(s) on [Wednesday] [forever]' #. * (dropdown menu options are in [square brackets]). This means that after the 'on', name of a week day always follows. #: ../calendar/gui/dialogs/recurrence-page.c:1073 msgid "on" msgstr "在" #. TRANSLATORS: Entire string is for example: This appointment recurs/Every [x] month(s) on the [first] [Monday] [forever]' #. * (dropdown menu options are in [square brackets]). This means that after 'first', either the string 'day' or #. * the name of a week day (like 'Monday' or 'Friday') always follow. #. #: ../calendar/gui/dialogs/recurrence-page.c:1154 msgid "first" msgstr "第一个" #. TRANSLATORS: here, "second" is the ordinal number (like "third"), not the time division (like "minute") #. * Entire string is for example: This appointment recurs/Every [x] month(s) on the [second] [Monday] [forever]' #. * (dropdown menu options are in [square brackets]). This means that after 'second', either the string 'day' or #. * the name of a week day (like 'Monday' or 'Friday') always follow. #. #: ../calendar/gui/dialogs/recurrence-page.c:1160 msgid "second" msgstr "第二" #. TRANSLATORS: Entire string is for example: This appointment recurs/Every [x] month(s) on the [third] [Monday] [forever]' #. * (dropdown menu options are in [square brackets]). This means that after 'third', either the string 'day' or #. * the name of a week day (like 'Monday' or 'Friday') always follow. #. #: ../calendar/gui/dialogs/recurrence-page.c:1165 msgid "third" msgstr "第三个" #. TRANSLATORS: Entire string is for example: This appointment recurs/Every [x] month(s) on the [fourth] [Monday] [forever]' #. * (dropdown menu options are in [square brackets]). This means that after 'fourth', either the string 'day' or #. * the name of a week day (like 'Monday' or 'Friday') always follow. #. #: ../calendar/gui/dialogs/recurrence-page.c:1170 msgid "fourth" msgstr "第四个" #. TRANSLATORS: Entire string is for example: This appointment recurs/Every [x] month(s) on the [fifth] [Monday] [forever]' #. * (dropdown menu options are in [square brackets]). This means that after 'fifth', either the string 'day' or #. * the name of a week day (like 'Monday' or 'Friday') always follow. #. #: ../calendar/gui/dialogs/recurrence-page.c:1175 msgid "fifth" msgstr "第五个" #. TRANSLATORS: Entire string is for example: This appointment recurs/Every [x] month(s) on the [last] [Monday] [forever]' #. * (dropdown menu options are in [square brackets]). This means that after 'last', either the string 'day' or #. * the name of a week day (like 'Monday' or 'Friday') always follow. #. #: ../calendar/gui/dialogs/recurrence-page.c:1180 msgid "last" msgstr "最后一个" #. TRANSLATORS: Entire string is for example: This appointment recurs/Every [x] month(s) on the [Other date] [11th to 20th] [17th] [forever]' #. * (dropdown menu options are in [square brackets]). #: ../calendar/gui/dialogs/recurrence-page.c:1204 msgid "Other Date" msgstr "其它日期" #. TRANSLATORS: This is a submenu option string to split the date range into three submenus to choose the exact day of #. * the month to setup an appointment recurrence. The entire string is for example: This appointment recurs/Every [x] month(s) #. * on the [Other date] [1st to 10th] [7th] [forever]' (dropdown menu options are in [square brackets]). #. #: ../calendar/gui/dialogs/recurrence-page.c:1210 msgid "1st to 10th" msgstr "上旬" #. TRANSLATORS: This is a submenu option string to split the date range into three submenus to choose the exact day of #. * the month to setup an appointment recurrence. The entire string is for example: This appointment recurs/Every [x] month(s) #. * on the [Other date] [11th to 20th] [17th] [forever]' (dropdown menu options are in [square brackets]). #. #: ../calendar/gui/dialogs/recurrence-page.c:1216 msgid "11th to 20th" msgstr "中旬" #. TRANSLATORS: This is a submenu option string to split the date range into three submenus to choose the exact day of #. * the month to setup an appointment recurrence. The entire string is for example: This appointment recurs/Every [x] month(s) #. * on the [Other date] [21th to 31th] [27th] [forever]' (dropdown menu options are in [square brackets]). #. #: ../calendar/gui/dialogs/recurrence-page.c:1222 msgid "21st to 31st" msgstr "下旬" #: ../calendar/gui/dialogs/recurrence-page.c:1249 #: ../modules/calendar/e-calendar-preferences.ui.h:25 msgid "Monday" msgstr "星期一" #: ../calendar/gui/dialogs/recurrence-page.c:1250 #: ../modules/calendar/e-calendar-preferences.ui.h:28 msgid "Tuesday" msgstr "星期二" #: ../calendar/gui/dialogs/recurrence-page.c:1251 #: ../modules/calendar/e-calendar-preferences.ui.h:31 msgid "Wednesday" msgstr "星期三" #: ../calendar/gui/dialogs/recurrence-page.c:1252 #: ../modules/calendar/e-calendar-preferences.ui.h:34 msgid "Thursday" msgstr "星期四" #: ../calendar/gui/dialogs/recurrence-page.c:1253 #: ../modules/calendar/e-calendar-preferences.ui.h:37 msgid "Friday" msgstr "星期五" #: ../calendar/gui/dialogs/recurrence-page.c:1254 #: ../modules/calendar/e-calendar-preferences.ui.h:40 msgid "Saturday" msgstr "星期六" #: ../calendar/gui/dialogs/recurrence-page.c:1255 #: ../modules/calendar/e-calendar-preferences.ui.h:43 msgid "Sunday" msgstr "星期日" #. TRANSLATORS: Entire string is for example: 'This appointment recurs/Every [x] month(s) on the [second] [Tuesday] [forever]' #. * (dropdown menu options are in [square brackets])." #. #: ../calendar/gui/dialogs/recurrence-page.c:1386 msgid "on the" msgstr "在" #: ../calendar/gui/dialogs/recurrence-page.c:1571 msgid "occurrences" msgstr "循环" #: ../calendar/gui/dialogs/recurrence-page.c:2341 msgid "Add exception" msgstr "添加例外" #: ../calendar/gui/dialogs/recurrence-page.c:2383 msgid "Could not get a selection to modify." msgstr "无法获得要修改的选中项。" #: ../calendar/gui/dialogs/recurrence-page.c:2389 msgid "Modify exception" msgstr "修改例外" #: ../calendar/gui/dialogs/recurrence-page.c:2435 msgid "Could not get a selection to delete." msgstr "无法获得要删除的选中项。" #: ../calendar/gui/dialogs/recurrence-page.c:2576 msgid "Date/Time" msgstr "日期/时间" #. TRANSLATORS: Entire string is for example: 'This appointment recurs/Every[x][day(s)][for][1]occurrences' (combobox options are in [square brackets]) #: ../calendar/gui/dialogs/recurrence-page.ui.h:2 msgctxt "recurrpage" msgid "day(s)" msgstr "天" #. TRANSLATORS: Entire string is for example: 'This appointment recurs/Every[x][day(s)][for][1]occurrences' (combobox options are in [square brackets]) #: ../calendar/gui/dialogs/recurrence-page.ui.h:4 msgctxt "recurrpage" msgid "week(s)" msgstr "周" #. TRANSLATORS: Entire string is for example: 'This appointment recurs/Every[x][day(s)][for][1]occurrences' (combobox options are in [square brackets]) #: ../calendar/gui/dialogs/recurrence-page.ui.h:6 msgctxt "recurrpage" msgid "month(s)" msgstr "月" #. TRANSLATORS: Entire string is for example: 'This appointment recurs/Every[x][day(s)][for][1]occurrences' (combobox options are in [square brackets]) #: ../calendar/gui/dialogs/recurrence-page.ui.h:8 msgctxt "recurrpage" msgid "year(s)" msgstr "年" #. TRANSLATORS: Entire string is for example: 'This appointment recurs/Every[x][day(s)][for][1]occurrences' (combobox options are in [square brackets]) #: ../calendar/gui/dialogs/recurrence-page.ui.h:10 msgctxt "recurrpage" msgid "for" msgstr "持续时间" #. TRANSLATORS: Entire string is for example: 'This appointment recurs/Every[x][day(s)][for][1]occurrences' (combobox options are in [square brackets]) #: ../calendar/gui/dialogs/recurrence-page.ui.h:12 msgctxt "recurrpage" msgid "until" msgstr "直到" #. TRANSLATORS: Entire string is for example: 'This appointment recurs/Every[x][day(s)][for][1]occurrences' (combobox options are in [square brackets]) #: ../calendar/gui/dialogs/recurrence-page.ui.h:14 msgctxt "recurrpage" msgid "forever" msgstr "永远" #: ../calendar/gui/dialogs/recurrence-page.ui.h:16 msgid "This appointment rec_urs" msgstr "此约会重现(_U)" #: ../calendar/gui/dialogs/recurrence-page.ui.h:17 msgid "Every" msgstr "每" #: ../calendar/gui/dialogs/recurrence-page.ui.h:18 msgid "Exceptions" msgstr "例外" #: ../calendar/gui/dialogs/recurrence-page.ui.h:20 msgid "Preview" msgstr "预览" #: ../calendar/gui/dialogs/send-comp.c:173 #: ../calendar/gui/dialogs/send-comp.c:255 msgid "Send my reminders with this event" msgstr "发送我有关此事件的提醒" ###### #: ../calendar/gui/dialogs/send-comp.c:175 #: ../calendar/gui/dialogs/send-comp.c:257 msgid "Notify new attendees _only" msgstr "只通知新的出席者(_O)" #: ../calendar/gui/dialogs/task-editor.c:94 msgid "_Send Options" msgstr "发送选项(_S)" #: ../calendar/gui/dialogs/task-editor.c:149 ../calendar/gui/print.c:3507 #: ../e-util/e-send-options.c:553 msgid "Task" msgstr "任务" #: ../calendar/gui/dialogs/task-editor.c:286 msgid "Print this task" msgstr "打印此任务" #: ../calendar/gui/dialogs/task-page.c:330 msgid "Task's start date is in the past" msgstr "任务的开始日期是在过去" #: ../calendar/gui/dialogs/task-page.c:331 msgid "Task's due date is in the past" msgstr "任务的到期时间是在过去" #: ../calendar/gui/dialogs/task-page.c:364 msgid "Task cannot be edited, because the selected task list is read only" msgstr "任务不能被编辑,因为选择的任务列表是只读的" #: ../calendar/gui/dialogs/task-page.c:368 msgid "Task cannot be fully edited, because you are not the organizer" msgstr "无法完全编辑任务,因为您不是组织者" #: ../calendar/gui/dialogs/task-page.c:372 msgid "" "Task cannot be edited, because the selected task list does not support " "assigned tasks" msgstr "任务列表无法编辑,因为当前选定的任务列表不支持需要添加的任务" #: ../calendar/gui/dialogs/task-page.c:1006 msgid "Due date is wrong" msgstr "到期日期错误" #: ../calendar/gui/dialogs/task-page.c:1174 #: ../calendar/gui/dialogs/task-page.c:1199 msgid "Completed date is wrong" msgstr "完成日期有错" #. To Translators: This is task priority #: ../calendar/gui/dialogs/task-page.ui.h:8 #: ../calendar/gui/e-cal-component-preview.c:337 #: ../calendar/gui/e-task-table.c:573 ../calendar/gui/tasktypes.xml.h:19 #: ../e-util/e-send-options.ui.h:2 ../mail/message-list.c:320 msgid "High" msgstr "高" #. To Translators: This is task priority #: ../calendar/gui/dialogs/task-page.ui.h:10 #: ../calendar/gui/e-cal-component-preview.c:339 #: ../calendar/gui/e-cal-model.c:1666 ../calendar/gui/e-task-table.c:574 #: ../calendar/gui/tasktypes.xml.h:20 ../e-util/e-send-options.ui.h:5 #: ../mail/message-list.c:319 msgid "Normal" msgstr "中" #. To Translators: This is task priority #: ../calendar/gui/dialogs/task-page.ui.h:12 #: ../calendar/gui/e-cal-component-preview.c:341 #: ../calendar/gui/e-task-table.c:575 ../calendar/gui/tasktypes.xml.h:21 #: ../e-util/e-send-options.ui.h:4 ../mail/message-list.c:318 msgid "Low" msgstr "低" #. To Translators: This is task priority #: ../calendar/gui/dialogs/task-page.ui.h:14 #: ../calendar/gui/e-task-table.c:576 ../calendar/gui/tasktypes.xml.h:22 #: ../e-util/e-send-options.ui.h:1 msgid "Undefined" msgstr "未定义" #. To Translators: This is task status #: ../calendar/gui/dialogs/task-page.ui.h:16 #: ../calendar/gui/e-cal-component-preview.c:322 #: ../calendar/gui/e-cal-model-tasks.c:311 #: ../calendar/gui/e-cal-model-tasks.c:553 ../calendar/gui/e-task-table.c:214 #: ../calendar/gui/e-task-table.c:229 ../calendar/gui/e-task-table.c:656 #: ../calendar/gui/print.c:3591 ../calendar/gui/tasktypes.xml.h:11 msgid "Not Started" msgstr "尚未开始" #. To Translators: This is task status #: ../calendar/gui/dialogs/task-page.ui.h:18 #: ../calendar/gui/e-cal-component-preview.c:312 #: ../calendar/gui/e-cal-model-tasks.c:313 #: ../calendar/gui/e-cal-model-tasks.c:555 #: ../calendar/gui/e-cal-model-tasks.c:633 ../calendar/gui/e-task-table.c:216 #: ../calendar/gui/e-task-table.c:231 ../calendar/gui/e-task-table.c:657 #: ../calendar/gui/print.c:3594 msgid "In Progress" msgstr "进行中" #. To Translators: This is task status #: ../calendar/gui/dialogs/task-page.ui.h:20 #: ../calendar/gui/e-cal-component-preview.c:315 #: ../calendar/gui/e-cal-model-tasks.c:315 #: ../calendar/gui/e-cal-model-tasks.c:557 #: ../calendar/gui/e-meeting-store.c:205 ../calendar/gui/e-meeting-store.c:228 #: ../calendar/gui/e-task-table.c:218 ../calendar/gui/e-task-table.c:233 #: ../calendar/gui/e-task-table.c:658 ../calendar/gui/print.c:3597 #: ../calendar/gui/tasktypes.xml.h:13 #: ../plugins/save-calendar/csv-format.c:380 msgid "Completed" msgstr "已完成" #. To Translators: This is task status #: ../calendar/gui/dialogs/task-page.ui.h:22 #: ../calendar/gui/e-cal-component-preview.c:318 #: ../calendar/gui/e-cal-model-tasks.c:317 #: ../calendar/gui/e-cal-model-tasks.c:559 ../calendar/gui/e-task-table.c:220 #: ../calendar/gui/e-task-table.c:235 ../calendar/gui/e-task-table.c:659 #: ../calendar/gui/print.c:3600 ../mail/mail-send-recv.c:878 msgid "Canceled" msgstr "已取消" #: ../calendar/gui/dialogs/task-page.ui.h:25 msgid "D_ue date:" msgstr "到期日期(_U):" #: ../calendar/gui/dialogs/task-page.ui.h:28 msgid "Time zone:" msgstr "时区:" #: ../calendar/gui/dialogs/task-page.ui.h:32 msgid "_Status:" msgstr "状态 (_S):" #: ../calendar/gui/dialogs/task-page.ui.h:33 msgid "Date _completed:" msgstr "完成日期 (_C):" #: ../calendar/gui/dialogs/task-page.ui.h:34 msgid "_Percent complete:" msgstr "完成百分比 (_P):" #: ../calendar/gui/dialogs/task-page.ui.h:35 msgid "Priorit_y:" msgstr "优先级 (_Y):" #: ../calendar/gui/dialogs/task-page.ui.h:36 msgid "C_lassification:" msgstr "分类 (L):" #: ../calendar/gui/dialogs/task-page.ui.h:37 msgid "_Web Page:" msgstr "网页(_W):" #: ../calendar/gui/ea-cal-view.c:324 msgid "New Appointment" msgstr "新建约会" #: ../calendar/gui/ea-cal-view.c:325 msgid "New All Day Event" msgstr "新建全天事件" #: ../calendar/gui/ea-cal-view.c:326 msgid "New Meeting" msgstr "新会议" #: ../calendar/gui/ea-cal-view.c:327 msgid "Go to Today" msgstr "转到今天" #: ../calendar/gui/ea-cal-view.c:328 msgid "Go to Date" msgstr "转到日期" #: ../calendar/gui/ea-cal-view-event.c:298 msgid "It has reminders." msgstr "有提醒。" #: ../calendar/gui/ea-cal-view-event.c:301 msgid "It has recurrences." msgstr "有再现。" #: ../calendar/gui/ea-cal-view-event.c:304 msgid "It is a meeting." msgstr "为会议。" #: ../calendar/gui/ea-cal-view-event.c:311 #, c-format msgid "Calendar Event: Summary is %s." msgstr "日历事件:摘要为 %s。" #: ../calendar/gui/ea-cal-view-event.c:314 msgid "Calendar Event: It has no summary." msgstr "日历事件:无摘要。" #: ../calendar/gui/ea-cal-view-event.c:337 msgid "calendar view event" msgstr "日历视图事件" #: ../calendar/gui/ea-cal-view-event.c:569 msgid "Grab Focus" msgstr "获得焦点" #: ../calendar/gui/ea-day-view.c:154 ../calendar/gui/ea-week-view.c:154 #, c-format msgid "It has %d event." msgid_plural "It has %d events." msgstr[0] "有 %d 个事件。" #. To translators: Here, "It" is either like "Work Week View: July #. 10th - July 14th, 2006." or "Day View: Thursday July 13th, 2006." #: ../calendar/gui/ea-day-view.c:161 ../calendar/gui/ea-week-view.c:157 msgid "It has no events." msgstr "无事件。" #: ../calendar/gui/ea-day-view.c:169 #, c-format msgid "Work Week View: %s. %s" msgstr "工作日视图:%s。%s" #: ../calendar/gui/ea-day-view.c:176 #, c-format msgid "Day View: %s. %s" msgstr "日视图:%s。%s" #: ../calendar/gui/ea-day-view.c:210 msgid "calendar view for a work week" msgstr "工作日的日历视图" #: ../calendar/gui/ea-day-view.c:212 msgid "calendar view for one or more days" msgstr "一天或多天的日历视图" #: ../calendar/gui/ea-day-view-main-item.c:327 #: ../calendar/gui/ea-week-view-main-item.c:354 msgid "a table to view and select the current time range" msgstr "可查看并选择当前时间范围的表" #: ../calendar/gui/ea-gnome-calendar.c:48 #: ../calendar/gui/ea-gnome-calendar.c:56 #: ../calendar/importers/icalendar-importer.c:1114 msgid "Gnome Calendar" msgstr "Gnome 日历" #: ../calendar/gui/ea-gnome-calendar.c:204 #: ../modules/calendar/e-cal-shell-view-private.c:1191 msgid "%A %d %b %Y" msgstr "%Y年%-m月%-d日%A" #. strftime format %a = abbreviated weekday name, %d = day of month, #. * %b = abbreviated month name. Don't use any other specifiers. #. strftime format %a = abbreviated weekday name, #. * %d = day of month, %b = abbreviated month name. #. * You can change the order but don't change the #. * specifiers or add anything. #: ../calendar/gui/ea-gnome-calendar.c:208 ../calendar/gui/e-day-view.c:2793 #: ../calendar/gui/e-day-view-top-item.c:859 #: ../calendar/gui/e-week-view-main-item.c:219 #: ../modules/calendar/e-cal-shell-view-private.c:1195 msgid "%a %d %b" msgstr "%-m月%-d日%A" #: ../calendar/gui/ea-gnome-calendar.c:211 #: ../calendar/gui/ea-gnome-calendar.c:217 #: ../calendar/gui/ea-gnome-calendar.c:220 #: ../modules/calendar/e-cal-shell-view-private.c:1198 #: ../modules/calendar/e-cal-shell-view-private.c:1204 #: ../modules/calendar/e-cal-shell-view-private.c:1207 msgid "%a %d %b %Y" msgstr "%Y年%-m月%-d日%A" #: ../calendar/gui/ea-gnome-calendar.c:239 #: ../calendar/gui/ea-gnome-calendar.c:247 #: ../calendar/gui/ea-gnome-calendar.c:254 #: ../calendar/gui/ea-gnome-calendar.c:257 #: ../modules/calendar/e-cal-shell-view-private.c:1224 #: ../modules/calendar/e-cal-shell-view-private.c:1235 #: ../modules/calendar/e-cal-shell-view-private.c:1242 #: ../modules/calendar/e-cal-shell-view-private.c:1245 msgid "%d %b %Y" msgstr "%Y年%-m月%-d日" #. strftime format %d = day of month, %b = abbreviated month name. #. * Don't use any other specifiers. #. strftime format %d = day of month, %b = abbreviated #. * month name. You can change the order but don't #. * change the specifiers or add anything. #: ../calendar/gui/ea-gnome-calendar.c:244 ../calendar/gui/e-day-view.c:2809 #: ../calendar/gui/e-day-view-top-item.c:863 #: ../calendar/gui/e-week-view-main-item.c:233 #: ../modules/calendar/e-cal-shell-view-private.c:1231 msgid "%d %b" msgstr "%B%-d日" #: ../calendar/gui/ea-jump-button.c:151 msgid "Jump button" msgstr "跳转按钮" #: ../calendar/gui/ea-jump-button.c:160 msgid "Click here, you can find more events." msgstr "单击此处可查找更多事件。" #. Translator: Entire string is like "Pop up an alert %d days before start of appointment" #: ../calendar/gui/e-alarm-list.c:358 #, c-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d 天" #. Translator: Entire string is like "Pop up an alert %d weeks before start of appointment" #: ../calendar/gui/e-alarm-list.c:364 #, c-format msgid "%d week" msgid_plural "%d weeks" msgstr[0] "%d 周" #: ../calendar/gui/e-alarm-list.c:426 msgid "Unknown action to be performed" msgstr "执行未知的动作" #: ../calendar/gui/e-alarm-list.c:441 #, c-format msgid "%s %s before the start of the appointment" msgstr "在约会开始之前 %s %s" #: ../calendar/gui/e-alarm-list.c:447 #, c-format msgid "%s %s after the start of the appointment" msgstr "在约会开始之后 %s %s" #. Translator: The %s refers to the base, which would be actions like #. * "Play a sound" #: ../calendar/gui/e-alarm-list.c:454 #, c-format msgid "%s at the start of the appointment" msgstr "在约会开始时 %s" #: ../calendar/gui/e-alarm-list.c:466 #, c-format msgid "%s %s before the end of the appointment" msgstr "在约会结束之前 %s %s" #: ../calendar/gui/e-alarm-list.c:472 #, c-format msgid "%s %s after the end of the appointment" msgstr "在约会结束之后 %s %s" #. Translator: The %s refers to the base, which would be actions like #. * "Play a sound" #: ../calendar/gui/e-alarm-list.c:479 #, c-format msgid "%s at the end of the appointment" msgstr "在约会结束时 %s" #. Translator: The first %s refers to the base, which would be actions like #. * "Play a Sound". Second %s is an absolute time, e.g. "10:00AM" #: ../calendar/gui/e-alarm-list.c:503 #, c-format msgid "%s at %s" msgstr "在 %2$s 时 %1$s" #. Translator: The %s refers to the base, which would be actions like #. * "Play a sound". "Trigger types" are absolute or relative dates #: ../calendar/gui/e-alarm-list.c:511 #, c-format msgid "%s for an unknown trigger type" msgstr "%s 为未知触发类型" #: ../calendar/gui/ea-week-view.c:163 #, c-format msgid "Month View: %s. %s" msgstr "月视图:%s。%s" #: ../calendar/gui/ea-week-view.c:168 #, c-format msgid "Week View: %s. %s" msgstr "周视图:%s。%s" #: ../calendar/gui/ea-week-view.c:202 msgid "calendar view for a month" msgstr "月日历视图" #: ../calendar/gui/ea-week-view.c:204 msgid "calendar view for one or more weeks" msgstr "一周或多周的日历视图" #: ../calendar/gui/e-cal-component-preview.c:223 ../e-util/e-filter-rule.c:750 #: ../mail/e-mail-config-page.c:126 msgid "Untitled" msgstr "无标题" #: ../calendar/gui/e-cal-component-preview.c:231 msgid "Categories:" msgstr "类别:" #: ../calendar/gui/e-cal-component-preview.c:263 msgid "Summary:" msgstr "概要:" #: ../calendar/gui/e-cal-component-preview.c:272 msgid "Start Date:" msgstr "开始日期:" #: ../calendar/gui/e-cal-component-preview.c:284 msgid "End Date:" msgstr "结束日期:" #: ../calendar/gui/e-cal-component-preview.c:296 msgid "Due Date:" msgstr "到期日期:" #: ../calendar/gui/e-cal-component-preview.c:308 #: ../modules/itip-formatter/itip-view.c:1504 #: ../modules/itip-formatter/itip-view.c:1621 msgid "Status:" msgstr "状态:" #: ../calendar/gui/e-cal-component-preview.c:335 msgid "Priority:" msgstr "优先级:" #: ../calendar/gui/e-cal-component-preview.c:360 #: ../mail/e-mail-config-service-page.c:672 msgid "Description:" msgstr "描述:" #: ../calendar/gui/e-cal-component-preview.c:391 msgid "Web Page:" msgstr "网页:" #: ../calendar/gui/e-calendar-selector.c:358 #: ../modules/calendar/e-cal-shell-view-private.c:1097 #, c-format msgid "Copying an event into the calendar %s" msgstr "将事件复制到日程表 %s" #: ../calendar/gui/e-calendar-selector.c:359 #: ../modules/calendar/e-cal-shell-view-private.c:1096 #, c-format msgid "Moving an event into the calendar %s" msgstr "将事件移动到日程表 %s" #: ../calendar/gui/e-calendar-table.etspec.h:1 msgid "Click to add a task" msgstr "单击以添加任务" #: ../calendar/gui/e-calendar-table.etspec.h:2 msgid "Start date" msgstr "开始日期" #: ../calendar/gui/e-calendar-table.etspec.h:3 #: ../calendar/gui/e-meeting-list-view.c:652 #: ../calendar/gui/e-meeting-time-sel.etspec.h:4 #: ../calendar/gui/e-memo-table.etspec.h:3 #: ../e-util/e-attachment-tree-view.c:586 #: ../mail/e-mail-account-tree-view.c:159 msgid "Type" msgstr "类型" #: ../calendar/gui/e-calendar-table.etspec.h:5 msgid "Completion date" msgstr "完成日期" #: ../calendar/gui/e-calendar-table.etspec.h:6 ../mail/mail-send-recv.c:880 msgid "Complete" msgstr "完成" #: ../calendar/gui/e-calendar-table.etspec.h:7 msgid "Due date" msgstr "到期日期" #: ../calendar/gui/e-calendar-table.etspec.h:9 #, no-c-format msgid "% Complete" msgstr "% 完成" #: ../calendar/gui/e-calendar-table.etspec.h:10 #: ../calendar/gui/tasktypes.xml.h:18 #: ../plugins/save-calendar/csv-format.c:387 msgid "Priority" msgstr "优先级" #. To Translators: 'Status' here means the state of the attendees, the resulting string will be in a form: #. * Status: Accepted: X Declined: Y ... #: ../calendar/gui/e-calendar-table.etspec.h:11 #: ../calendar/gui/e-cal-model.c:4017 #: ../calendar/gui/e-meeting-list-view.c:695 #: ../calendar/gui/e-meeting-time-sel.etspec.h:9 #: ../calendar/gui/tasktypes.xml.h:8 ../mail/em-filter-i18n.h:75 #: ../mail/message-list.etspec.h:1 msgid "Status" msgstr "状态" #: ../calendar/gui/e-calendar-table.etspec.h:13 #: ../calendar/gui/e-cal-list-view.etspec.h:7 #: ../calendar/gui/e-memo-table.etspec.h:6 #: ../plugins/save-calendar/csv-format.c:381 msgid "Created" msgstr "创建时间" #: ../calendar/gui/e-calendar-table.etspec.h:14 #: ../calendar/gui/e-cal-list-view.etspec.h:8 #: ../calendar/gui/e-memo-table.etspec.h:7 msgid "Last modified" msgstr "上次修改" #: ../calendar/gui/e-calendar-view.c:446 msgid "Cut selected events to the clipboard" msgstr "将选中事件剪切到剪贴板" #: ../calendar/gui/e-calendar-view.c:452 msgid "Copy selected events to the clipboard" msgstr "将选中事件复制到剪贴板" #: ../calendar/gui/e-calendar-view.c:458 msgid "Paste events from the clipboard" msgstr "从剪贴板中粘贴事件" #: ../calendar/gui/e-calendar-view.c:464 msgid "Delete selected events" msgstr "删除选中的事件" #: ../calendar/gui/e-calendar-view.c:484 ../calendar/gui/e-memo-table.c:183 #: ../calendar/gui/e-task-table.c:270 msgid "Deleting selected objects" msgstr "删除选中的对象" #: ../calendar/gui/e-calendar-view.c:646 ../calendar/gui/e-memo-table.c:878 #: ../calendar/gui/e-task-table.c:1176 msgid "Updating objects" msgstr "更新对象" #. To Translators: It will display "Organiser: NameOfTheUser " #. To Translators: It will display #. * "Organizer: NameOfTheUser " #: ../calendar/gui/e-calendar-view.c:2084 ../calendar/gui/e-memo-table.c:553 #: ../calendar/gui/e-task-table.c:840 #, c-format msgid "Organizer: %s <%s>" msgstr "组织者:%s <%s>" #. With SunOne accouts, there may be no ':' in organiser.value #. With SunOne accounts, there may be no ':' in #. * organizer.value. #: ../calendar/gui/e-calendar-view.c:2088 ../calendar/gui/e-memo-table.c:558 #: ../calendar/gui/e-task-table.c:844 #, c-format msgid "Organizer: %s" msgstr "组织者:%s" #. To Translators: It will display "Location: PlaceOfTheMeeting" #: ../calendar/gui/e-calendar-view.c:2104 #: ../calendar/gui/e-meeting-time-sel.c:2664 ../calendar/gui/print.c:3545 #, c-format msgid "Location: %s" msgstr "位置:%s" #. To Translators: It will display "Time: ActualStartDateAndTime (DurationOfTheMeeting)" #: ../calendar/gui/e-calendar-view.c:2135 #, c-format msgid "Time: %s %s" msgstr "时间:%s %s" #: ../calendar/gui/e-cal-list-view.etspec.h:1 #: ../calendar/gui/e-memo-table.etspec.h:5 msgid "Start Date" msgstr "开始日期" #: ../calendar/gui/e-cal-list-view.etspec.h:2 msgid "End Date" msgstr "结束日期" #: ../calendar/gui/e-cal-model.c:467 ../calendar/gui/e-meeting-list-view.c:185 #: ../calendar/gui/e-meeting-list-view.c:199 #: ../calendar/gui/e-meeting-store.c:135 ../calendar/gui/e-meeting-store.c:170 #: ../calendar/gui/e-meeting-store.c:233 ../calendar/gui/print.c:1251 #: ../calendar/gui/print.c:1268 ../e-util/e-charset.c:52 #: ../modules/itip-formatter/itip-view.c:3508 #: ../modules/itip-formatter/itip-view.c:6092 #: ../modules/plugin-manager/evolution-plugin-manager.c:100 msgid "Unknown" msgstr "未知" #: ../calendar/gui/e-cal-model.c:1668 msgid "Recurring" msgstr "重复" #: ../calendar/gui/e-cal-model.c:1670 msgid "Assigned" msgstr "已分配" #: ../calendar/gui/e-cal-model.c:1672 ../calendar/gui/e-cal-model-tasks.c:1163 #: ../calendar/gui/e-meeting-list-view.c:209 #: ../calendar/gui/e-meeting-store.c:177 ../calendar/gui/e-meeting-store.c:187 #: ../calendar/gui/e-meeting-store.c:1024 msgid "Yes" msgstr "是" #: ../calendar/gui/e-cal-model.c:1672 ../calendar/gui/e-cal-model-tasks.c:1163 #: ../calendar/gui/e-meeting-list-view.c:210 #: ../calendar/gui/e-meeting-store.c:189 msgid "No" msgstr "否" #: ../calendar/gui/e-cal-model.c:3958 #: ../calendar/gui/e-meeting-list-view.c:221 #: ../calendar/gui/e-meeting-store.c:197 ../calendar/gui/e-meeting-store.c:220 #: ../modules/itip-formatter/itip-view.c:6080 msgid "Accepted" msgstr "接受" #: ../calendar/gui/e-cal-model.c:3959 #: ../calendar/gui/e-meeting-list-view.c:222 #: ../calendar/gui/e-meeting-store.c:199 ../calendar/gui/e-meeting-store.c:222 #: ../modules/itip-formatter/itip-view.c:6086 msgid "Declined" msgstr "拒绝" #: ../calendar/gui/e-cal-model.c:3960 #: ../calendar/gui/e-meeting-list-view.c:223 #: ../calendar/gui/e-meeting-store.c:201 ../calendar/gui/e-meeting-store.c:224 #: ../calendar/gui/e-meeting-time-sel.c:526 msgid "Tentative" msgstr "暂时的" #: ../calendar/gui/e-cal-model.c:3961 #: ../calendar/gui/e-meeting-list-view.c:224 #: ../calendar/gui/e-meeting-store.c:203 ../calendar/gui/e-meeting-store.c:226 #: ../modules/itip-formatter/itip-view.c:6089 msgid "Delegated" msgstr "被委任的" #: ../calendar/gui/e-cal-model.c:3962 msgid "Needs action" msgstr "需要动作" #: ../calendar/gui/e-cal-model-calendar.c:125 #: ../calendar/gui/e-task-table.c:631 msgid "Free" msgstr "空闲" #: ../calendar/gui/e-cal-model-calendar.c:128 #: ../calendar/gui/e-meeting-time-sel.c:527 ../calendar/gui/e-task-table.c:632 msgid "Busy" msgstr "繁忙" #: ../calendar/gui/e-cal-model-tasks.c:499 msgid "" "The geographical position must be entered in the format: \n" "\n" "45.436845,125.862501" msgstr "" "地理位置必须以此格式输入:\n" "\n" "45.436845,125.862501" #. Translators: "None" for task's status #: ../calendar/gui/e-cal-model-tasks.c:551 msgctxt "cal-task-status" msgid "None" msgstr "无" #. strftime format of a weekday, a date and a time, 24-hour. #: ../calendar/gui/e-cell-date-edit-text.c:159 msgid "%a %m/%d/%Y %H:%M:%S" msgstr "%Y年%m月%d日%A%H:%M:%S" #. strftime format of a weekday, a date and a time, 12-hour. #: ../calendar/gui/e-cell-date-edit-text.c:162 msgid "%a %m/%d/%Y %I:%M:%S %p" msgstr "%Y-%m-%d %A %p%I:%M:%S" #: ../calendar/gui/e-cell-date-edit-text.c:170 #, c-format msgid "" "The date must be entered in the format: \n" "%s" msgstr "" "日期必须按照以下格式输入:\n" "%s" #. String to use in 12-hour time format for times in the morning. #: ../calendar/gui/e-day-view.c:1983 ../calendar/gui/e-week-view.c:1554 #: ../calendar/gui/print.c:1074 ../calendar/gui/print.c:1093 #: ../calendar/gui/print.c:2637 ../calendar/gui/print.c:2657 msgid "am" msgstr "上午" #. String to use in 12-hour time format for times in the afternoon. #: ../calendar/gui/e-day-view.c:1986 ../calendar/gui/e-week-view.c:1557 #: ../calendar/gui/print.c:1079 ../calendar/gui/print.c:1095 #: ../calendar/gui/print.c:2642 ../calendar/gui/print.c:2659 msgid "pm" msgstr "下午" #. strftime format %A = full weekday name, %d = day of month, #. * %B = full month name. Don't use any other specifiers. #. strftime format %A = full weekday name, %d = day of #. * month, %B = full month name. You can change the #. * order but don't change the specifiers or add #. * anything. #: ../calendar/gui/e-day-view.c:2776 ../calendar/gui/e-day-view-top-item.c:855 #: ../calendar/gui/e-week-view-main-item.c:210 ../calendar/gui/print.c:2093 msgid "%A %d %B" msgstr "%B%d日%A" #. To Translators: the %d stands for a week number, it's value between 1 and 52/53 #: ../calendar/gui/e-day-view.c:3438 #, c-format msgid "Week %d" msgstr "第%d周" #. Translators: %02i is the number of minutes; #. * this is a context menu entry to change the #. * length of the time division in the calendar #. * day view, e.g. a day is displayed in #. * 24 "60 minute divisions" or #. * 48 "30 minute divisions". #: ../calendar/gui/e-day-view-time-item.c:801 #, c-format msgid "%02i minute divisions" msgstr "%02i 分钟分割" #: ../calendar/gui/e-day-view-time-item.c:826 msgid "Show the second time zone" msgstr "显示第二时区" #. Translators: "None" indicates no second time zone set for a day view #: ../calendar/gui/e-day-view-time-item.c:843 #: ../modules/calendar/e-calendar-preferences.c:306 #: ../modules/calendar/e-calendar-preferences.c:358 #: ../modules/calendar/e-calendar-preferences.ui.h:11 msgctxt "cal-second-zone" msgid "None" msgstr "无" #: ../calendar/gui/e-day-view-time-item.c:877 #: ../calendar/gui/e-timezone-entry.c:324 #: ../modules/calendar/e-calendar-preferences.c:389 msgid "Select..." msgstr "选择..." #: ../calendar/gui/e-meeting-list-view.c:64 msgid "Chair Persons" msgstr "主席人员" #: ../calendar/gui/e-meeting-list-view.c:65 msgid "Required Participants" msgstr "必需的出席者" #: ../calendar/gui/e-meeting-list-view.c:66 msgid "Optional Participants" msgstr "可选的出席者" #: ../calendar/gui/e-meeting-list-view.c:67 msgid "Resources" msgstr "资源" #: ../calendar/gui/e-meeting-list-view.c:181 #: ../calendar/gui/e-meeting-store.c:110 ../calendar/gui/e-meeting-store.c:127 #: ../calendar/gui/e-meeting-store.c:1018 ../calendar/gui/print.c:1247 msgid "Individual" msgstr "个人" #: ../calendar/gui/e-meeting-list-view.c:182 #: ../calendar/gui/e-meeting-store.c:112 ../calendar/gui/e-meeting-store.c:129 #: ../calendar/gui/print.c:1248 ../e-util/e-table-config.ui.h:5 msgid "Group" msgstr "组" #: ../calendar/gui/e-meeting-list-view.c:183 #: ../calendar/gui/e-meeting-store.c:114 ../calendar/gui/e-meeting-store.c:131 #: ../calendar/gui/print.c:1249 msgid "Resource" msgstr "资源" #: ../calendar/gui/e-meeting-list-view.c:184 #: ../calendar/gui/e-meeting-store.c:116 ../calendar/gui/e-meeting-store.c:133 #: ../calendar/gui/print.c:1250 msgid "Room" msgstr "房间" #: ../calendar/gui/e-meeting-list-view.c:195 #: ../calendar/gui/e-meeting-store.c:145 ../calendar/gui/e-meeting-store.c:162 #: ../calendar/gui/print.c:1264 msgid "Chair" msgstr "主席" #: ../calendar/gui/e-meeting-list-view.c:196 #: ../calendar/gui/e-meeting-store.c:147 ../calendar/gui/e-meeting-store.c:164 #: ../calendar/gui/e-meeting-store.c:1021 ../calendar/gui/print.c:1265 msgid "Required Participant" msgstr "必需的出席者" #: ../calendar/gui/e-meeting-list-view.c:197 #: ../calendar/gui/e-meeting-store.c:149 ../calendar/gui/e-meeting-store.c:166 #: ../calendar/gui/print.c:1266 msgid "Optional Participant" msgstr "可选的出席者" #: ../calendar/gui/e-meeting-list-view.c:198 #: ../calendar/gui/e-meeting-store.c:151 ../calendar/gui/e-meeting-store.c:168 #: ../calendar/gui/print.c:1267 msgid "Non-Participant" msgstr "不参加" #: ../calendar/gui/e-meeting-list-view.c:220 #: ../calendar/gui/e-meeting-store.c:195 ../calendar/gui/e-meeting-store.c:218 #: ../calendar/gui/e-meeting-store.c:1031 msgid "Needs Action" msgstr "需要动作" #: ../calendar/gui/e-meeting-list-view.c:626 msgid "Attendee " msgstr "出席者 " #: ../calendar/gui/e-meeting-list-view.c:681 #: ../calendar/gui/e-meeting-time-sel.etspec.h:6 msgid "RSVP" msgstr "请回复" #: ../calendar/gui/e-meeting-store.c:207 ../calendar/gui/e-meeting-store.c:230 msgid "In Process" msgstr "处理中" #: ../calendar/gui/e-meeting-store.c:1910 #, c-format msgid "" "Enter password to access free/busy information on server %s as user %s" msgstr "输入密码来作为用户 %2$s 访问服务器 %1$s 上的忙/闲信息" #: ../calendar/gui/e-meeting-store.c:1920 #, c-format msgid "Failure reason: %s" msgstr "失败原因:%s" #: ../calendar/gui/e-meeting-store.c:1925 #: ../plugins/publish-calendar/publish-calendar.c:351 #: ../smime/gui/component.c:64 msgid "Enter password" msgstr "输入密码" #: ../calendar/gui/e-meeting-time-sel.c:528 msgid "Out of Office" msgstr "办公室以外" #: ../calendar/gui/e-meeting-time-sel.c:530 msgid "No Information" msgstr "没有信息" #: ../calendar/gui/e-meeting-time-sel.c:570 msgid "O_ptions" msgstr "选项(_P)" #: ../calendar/gui/e-meeting-time-sel.c:590 msgid "Show _only working hours" msgstr "只显示工作小时(_O)" #: ../calendar/gui/e-meeting-time-sel.c:603 msgid "Show _zoomed out" msgstr "显示缩放的输出(_Z)" #: ../calendar/gui/e-meeting-time-sel.c:621 msgid "_Update free/busy" msgstr "更新忙闲(_U)" #: ../calendar/gui/e-meeting-time-sel.c:638 msgid "_<<" msgstr "_<<" #: ../calendar/gui/e-meeting-time-sel.c:658 msgid "_Autopick" msgstr "自动获取(_A)" #: ../calendar/gui/e-meeting-time-sel.c:675 msgid ">_>" msgstr ">_>" #: ../calendar/gui/e-meeting-time-sel.c:696 msgid "_All people and resources" msgstr "全部人和资源(_A)" #: ../calendar/gui/e-meeting-time-sel.c:707 msgid "All _people and one resource" msgstr "全部人和一个资源(_P)" #: ../calendar/gui/e-meeting-time-sel.c:718 msgid "_Required people" msgstr "必需的人(_R)" #: ../calendar/gui/e-meeting-time-sel.c:728 msgid "Required people and _one resource" msgstr "必需的人和一个资源(_O)" #: ../calendar/gui/e-meeting-time-sel.c:767 msgid "_Start time:" msgstr "开始时间(_S):" #: ../calendar/gui/e-meeting-time-sel.c:796 msgid "_End time:" msgstr "结束时间(_E):" #: ../calendar/gui/e-meeting-time-sel.c:2660 #, c-format msgid "" "Summary: %s\n" "Location: %s" msgstr "" "总结: %s\n" "地点: %s" #: ../calendar/gui/e-meeting-time-sel.c:2662 ../calendar/gui/print.c:3534 #, c-format msgid "Summary: %s" msgstr "概要:%s" #: ../calendar/gui/e-meeting-time-sel.etspec.h:1 msgid "Click here to add an attendee" msgstr "单击此处添加出席者" #: ../calendar/gui/e-meeting-time-sel.etspec.h:3 msgid "Member" msgstr "成员" #: ../calendar/gui/e-meeting-time-sel.etspec.h:7 msgid "Delegated To" msgstr "授权于" #: ../calendar/gui/e-meeting-time-sel.etspec.h:8 msgid "Delegated From" msgstr "来自...的代表" #: ../calendar/gui/e-meeting-time-sel.etspec.h:10 msgid "Common Name" msgstr "通用名" #: ../calendar/gui/e-meeting-time-sel.etspec.h:11 msgid "Language" msgstr "语言" #: ../calendar/gui/e-memo-table.c:434 #: ../modules/calendar/e-cal-shell-content.c:482 #: ../modules/calendar/e-memo-shell-view-actions.c:212 #: ../modules/calendar/e-memo-shell-view-actions.c:227 #: ../modules/calendar/e-memo-shell-view.c:307 msgid "Memos" msgstr "备忘" #: ../calendar/gui/e-memo-table.c:515 ../calendar/gui/e-task-table.c:803 msgid "* No Summary *" msgstr "* 没有概要 *" #. Translators: This is followed by an event's start date/time #: ../calendar/gui/e-memo-table.c:602 ../calendar/gui/e-task-table.c:887 msgid "Start: " msgstr "开始: " #. Translators: This is followed by an event's due date/time #: ../calendar/gui/e-memo-table.c:621 ../calendar/gui/e-task-table.c:905 msgid "Due: " msgstr "到期: " #: ../calendar/gui/e-memo-table.c:742 msgid "Cut selected memos to the clipboard" msgstr "将选中备忘剪切到剪贴板" #: ../calendar/gui/e-memo-table.c:748 msgid "Copy selected memos to the clipboard" msgstr "将选中备忘复制到剪贴板" #: ../calendar/gui/e-memo-table.c:754 msgid "Paste memos from the clipboard" msgstr "从剪贴板中粘贴备忘" #: ../calendar/gui/e-memo-table.c:760 #: ../modules/calendar/e-memo-shell-view-actions.c:589 msgid "Delete selected memos" msgstr "删除选中的备忘" #: ../calendar/gui/e-memo-table.c:766 msgid "Select all visible memos" msgstr "选中所有可见的备忘" #: ../calendar/gui/e-memo-table.etspec.h:1 msgid "Click to add a memo" msgstr "单击以添加备忘" #. Translators: "%d%%" is the percentage of a task done. #. * %d is the actual value, %% is replaced with a percent sign. #. * Result values will be 0%, 10%, 20%, ... 100% #. #: ../calendar/gui/e-task-table.c:604 #, c-format msgid "%d%%" msgstr "%d%%" #: ../calendar/gui/e-task-table.c:721 ../calendar/gui/print.c:2418 #: ../calendar/importers/icalendar-importer.c:79 #: ../calendar/importers/icalendar-importer.c:1078 #: ../modules/calendar/e-calendar-preferences.ui.h:61 #: ../modules/calendar/e-cal-shell-content.c:439 #: ../modules/calendar/e-task-shell-view-actions.c:235 #: ../modules/calendar/e-task-shell-view-actions.c:250 #: ../modules/calendar/e-task-shell-view.c:462 msgid "Tasks" msgstr "任务" #: ../calendar/gui/e-task-table.c:1040 msgid "Cut selected tasks to the clipboard" msgstr "将选中任务剪切到剪贴板" #: ../calendar/gui/e-task-table.c:1046 msgid "Copy selected tasks to the clipboard" msgstr "将选中任务复制到剪贴板" #: ../calendar/gui/e-task-table.c:1052 msgid "Paste tasks from the clipboard" msgstr "从剪贴板中粘贴任务" #: ../calendar/gui/e-task-table.c:1058 #: ../modules/calendar/e-task-shell-view-actions.c:713 msgid "Delete selected tasks" msgstr "删除选中的任务" #: ../calendar/gui/e-task-table.c:1064 msgid "Select all visible tasks" msgstr "选中所有可见的任务" #: ../calendar/gui/e-timezone-entry.c:335 msgid "Select Timezone" msgstr "选择时区" #. strftime format %d = day of month, %B = full #. * month name. You can change the order but don't #. * change the specifiers or add anything. #: ../calendar/gui/e-week-view-main-item.c:227 ../calendar/gui/print.c:2072 msgid "%d %B" msgstr "%-m月%-d日" #: ../calendar/gui/gnome-cal.c:2369 msgid "Purging" msgstr "销毁" #: ../calendar/gui/itip-utils.c:648 ../calendar/gui/itip-utils.c:706 #: ../calendar/gui/itip-utils.c:840 msgid "An organizer must be set." msgstr "必须设定组织者。" #: ../calendar/gui/itip-utils.c:697 msgid "At least one attendee is necessary" msgstr "至少需要一个参加者" #: ../calendar/gui/itip-utils.c:928 ../calendar/gui/itip-utils.c:1089 msgid "Event information" msgstr "事件信息" #: ../calendar/gui/itip-utils.c:931 ../calendar/gui/itip-utils.c:1092 msgid "Task information" msgstr "任务信息" #: ../calendar/gui/itip-utils.c:934 ../calendar/gui/itip-utils.c:1095 msgid "Memo information" msgstr "备忘信息" #: ../calendar/gui/itip-utils.c:937 ../calendar/gui/itip-utils.c:1113 msgid "Free/Busy information" msgstr "忙闲信息" #: ../calendar/gui/itip-utils.c:940 msgid "Calendar information" msgstr "日历信息" #. Translators: This is part of the subject #. * line of a meeting request or update email. #. * The full subject line would be: #. * "Accepted: Meeting Name". #: ../calendar/gui/itip-utils.c:977 msgctxt "Meeting" msgid "Accepted" msgstr "接受" #. Translators: This is part of the subject #. * line of a meeting request or update email. #. * The full subject line would be: #. * "Tentatively Accepted: Meeting Name". #: ../calendar/gui/itip-utils.c:984 msgctxt "Meeting" msgid "Tentatively Accepted" msgstr "暂时接受" #. Translators: This is part of the subject #. * line of a meeting request or update email. #. * The full subject line would be: #. * "Declined: Meeting Name". #. Translators: This is part of the subject line of a #. * meeting request or update email. The full subject #. * line would be: "Declined: Meeting Name". #: ../calendar/gui/itip-utils.c:991 ../calendar/gui/itip-utils.c:1039 msgctxt "Meeting" msgid "Declined" msgstr "拒绝" #. Translators: This is part of the subject #. * line of a meeting request or update email. #. * The full subject line would be: #. * "Delegated: Meeting Name". #: ../calendar/gui/itip-utils.c:998 msgctxt "Meeting" msgid "Delegated" msgstr "被委任的" #. Translators: This is part of the subject line of a #. * meeting request or update email. The full subject #. * line would be: "Updated: Meeting Name". #: ../calendar/gui/itip-utils.c:1011 msgctxt "Meeting" msgid "Updated" msgstr "更新" #. Translators: This is part of the subject line of a #. * meeting request or update email. The full subject #. * line would be: "Cancel: Meeting Name". #: ../calendar/gui/itip-utils.c:1018 msgctxt "Meeting" msgid "Cancel" msgstr "取消" #. Translators: This is part of the subject line of a #. * meeting request or update email. The full subject #. * line would be: "Refresh: Meeting Name". #: ../calendar/gui/itip-utils.c:1025 msgctxt "Meeting" msgid "Refresh" msgstr "刷新" #. Translators: This is part of the subject line of a #. * meeting request or update email. The full subject #. * line would be: "Counter-proposal: Meeting Name". #: ../calendar/gui/itip-utils.c:1032 msgctxt "Meeting" msgid "Counter-proposal" msgstr "投票表决" #: ../calendar/gui/itip-utils.c:1110 #, c-format msgid "Free/Busy information (%s to %s)" msgstr "忙闲信息 (%s 到 %s)" #: ../calendar/gui/itip-utils.c:1118 msgid "iCalendar information" msgstr "iCalendar 信息" #: ../calendar/gui/itip-utils.c:1146 msgid "Unable to book a resource, the new event collides with some other." msgstr "无法预约资源,新事件与其它事件冲突。" #: ../calendar/gui/itip-utils.c:1154 #, c-format msgid "Unable to book a resource, error: %s" msgstr "无法预订资源,错误 %s" #: ../calendar/gui/itip-utils.c:1326 msgid "You must be an attendee of the event." msgstr "您必须是事件的出席者。" #: ../calendar/gui/print.c:661 msgid "1st" msgstr "1日" #: ../calendar/gui/print.c:661 msgid "2nd" msgstr "2日" #: ../calendar/gui/print.c:661 msgid "3rd" msgstr "3日" #: ../calendar/gui/print.c:661 msgid "4th" msgstr "4日" #: ../calendar/gui/print.c:661 msgid "5th" msgstr "5日" #: ../calendar/gui/print.c:662 msgid "6th" msgstr "6日" #: ../calendar/gui/print.c:662 msgid "7th" msgstr "7日" #: ../calendar/gui/print.c:662 msgid "8th" msgstr "8日" #: ../calendar/gui/print.c:662 msgid "9th" msgstr "9日" #: ../calendar/gui/print.c:662 msgid "10th" msgstr "10日" #: ../calendar/gui/print.c:663 msgid "11th" msgstr "11日" #: ../calendar/gui/print.c:663 msgid "12th" msgstr "12日" #: ../calendar/gui/print.c:663 msgid "13th" msgstr "13日" #: ../calendar/gui/print.c:663 msgid "14th" msgstr "14日" #: ../calendar/gui/print.c:663 msgid "15th" msgstr "15日" #: ../calendar/gui/print.c:664 msgid "16th" msgstr "16日" #: ../calendar/gui/print.c:664 msgid "17th" msgstr "17日" #: ../calendar/gui/print.c:664 msgid "18th" msgstr "18日" #: ../calendar/gui/print.c:664 msgid "19th" msgstr "19日" #: ../calendar/gui/print.c:664 msgid "20th" msgstr "20日" #: ../calendar/gui/print.c:665 msgid "21st" msgstr "21日" #: ../calendar/gui/print.c:665 msgid "22nd" msgstr "22日" #: ../calendar/gui/print.c:665 msgid "23rd" msgstr "23日" #: ../calendar/gui/print.c:665 msgid "24th" msgstr "24日" #: ../calendar/gui/print.c:665 msgid "25th" msgstr "25日" #: ../calendar/gui/print.c:666 msgid "26th" msgstr "26日" #: ../calendar/gui/print.c:666 msgid "27th" msgstr "27日" #: ../calendar/gui/print.c:666 msgid "28th" msgstr "28日" #: ../calendar/gui/print.c:666 msgid "29th" msgstr "29日" #: ../calendar/gui/print.c:666 msgid "30th" msgstr "30日" #: ../calendar/gui/print.c:667 msgid "31st" msgstr "31日" #. Translators: These are workday abbreviations, #. * e.g. Su=Sunday and Th=thursday #. G_DATE_BAD_WEEKDAY #. G_DATE_MONDAY #: ../calendar/gui/print.c:727 msgid "Mo" msgstr "一" #. G_DATE_TUESDAY #: ../calendar/gui/print.c:728 msgid "Tu" msgstr "二" #. G_DATE_WEDNESDAY #: ../calendar/gui/print.c:729 msgid "We" msgstr "三" #. G_DATE_THURSDAY #: ../calendar/gui/print.c:730 msgid "Th" msgstr "四" #. G_DATE_FRIDAY #: ../calendar/gui/print.c:731 msgid "Fr" msgstr "五" #. G_DATE_SATURDAY #: ../calendar/gui/print.c:732 msgid "Sa" msgstr "六" #. G_DATE_SUNDAY #: ../calendar/gui/print.c:733 msgid "Su" msgstr "日" #. Translators: This is part of "START to END" text, #. * where START and END are date/times. #: ../calendar/gui/print.c:3328 msgid " to " msgstr " 到 " #. Translators: This is part of "START to END #. * (Completed COMPLETED)", where COMPLETED is a #. * completed date/time. #: ../calendar/gui/print.c:3338 msgid " (Completed " msgstr " (完成 " #. Translators: This is part of "Completed COMPLETED", #. * where COMPLETED is a completed date/time. #: ../calendar/gui/print.c:3344 msgid "Completed " msgstr "已完成 " #. Translators: This is part of "START (Due DUE)", #. * where START and DUE are dates/times. #: ../calendar/gui/print.c:3354 msgid " (Due " msgstr " (预定 " #. Translators: This is part of "Due DUE", #. * where DUE is a date/time due the event #. * should be finished. #: ../calendar/gui/print.c:3361 msgid "Due " msgstr "预定 " #: ../calendar/gui/print.c:3564 msgid "Attendees: " msgstr "出席者: " #: ../calendar/gui/print.c:3608 #, c-format msgid "Status: %s" msgstr "状态:%s" #: ../calendar/gui/print.c:3624 #, c-format msgid "Priority: %s" msgstr "优先级:%s" #: ../calendar/gui/print.c:3642 #, c-format msgid "Percent Complete: %i" msgstr "完成率:%i" #: ../calendar/gui/print.c:3656 #, c-format msgid "URL: %s" msgstr "URL:%s" #: ../calendar/gui/print.c:3670 #, c-format msgid "Categories: %s" msgstr "类别:%s" #: ../calendar/gui/print.c:3681 msgid "Contacts: " msgstr "联系人: " #: ../calendar/gui/tasktypes.xml.h:12 msgid "In progress" msgstr "进行中" #: ../calendar/gui/tasktypes.xml.h:25 #, no-c-format msgid "% Completed" msgstr "% 完成" #: ../calendar/gui/tasktypes.xml.h:26 ../mail/em-filter-i18n.h:38 msgid "is greater than" msgstr "大于" #: ../calendar/gui/tasktypes.xml.h:27 ../mail/em-filter-i18n.h:39 msgid "is less than" msgstr "小于" #: ../calendar/importers/icalendar-importer.c:78 msgid "Appointments and Meetings" msgstr "约会和会议" #: ../calendar/importers/icalendar-importer.c:462 #: ../calendar/importers/icalendar-importer.c:901 msgid "Opening calendar" msgstr "打开日历" #: ../calendar/importers/icalendar-importer.c:610 msgid "iCalendar files (.ics)" msgstr "iCalendar 文件(.ics)" #: ../calendar/importers/icalendar-importer.c:611 msgid "Evolution iCalendar importer" msgstr "Evolution iCalendar 导入器" #: ../calendar/importers/icalendar-importer.c:703 msgid "Reminder!" msgstr "提醒!!" #: ../calendar/importers/icalendar-importer.c:787 msgid "vCalendar files (.vcs)" msgstr "vCalendar 文件(.vcs)" #: ../calendar/importers/icalendar-importer.c:788 msgid "Evolution vCalendar importer" msgstr "Evolution vCalendar 导入器" #: ../calendar/importers/icalendar-importer.c:1071 msgid "Calendar Events" msgstr "日历事件" #: ../calendar/importers/icalendar-importer.c:1115 msgid "Evolution Calendar intelligent importer" msgstr "Evolution 日历智能导入器" #: ../calendar/importers/icalendar-importer.c:1186 #: ../calendar/importers/icalendar-importer.c:1500 msgctxt "iCalImp" msgid "Meeting" msgstr "会议" #: ../calendar/importers/icalendar-importer.c:1186 #: ../calendar/importers/icalendar-importer.c:1500 msgctxt "iCalImp" msgid "Event" msgstr "事件" #: ../calendar/importers/icalendar-importer.c:1189 #: ../calendar/importers/icalendar-importer.c:1501 msgctxt "iCalImp" msgid "Task" msgstr "任务" #: ../calendar/importers/icalendar-importer.c:1192 #: ../calendar/importers/icalendar-importer.c:1502 msgctxt "iCalImp" msgid "Memo" msgstr "备忘" #: ../calendar/importers/icalendar-importer.c:1201 msgctxt "iCalImp" msgid "has recurrences" msgstr "有再现" #: ../calendar/importers/icalendar-importer.c:1206 msgctxt "iCalImp" msgid "is an instance" msgstr "本次和以前各次" #: ../calendar/importers/icalendar-importer.c:1211 msgctxt "iCalImp" msgid "has reminders" msgstr "有提醒" #: ../calendar/importers/icalendar-importer.c:1216 msgctxt "iCalImp" msgid "has attachments" msgstr "有附件" #. Translators: Appointment's classification #: ../calendar/importers/icalendar-importer.c:1229 msgctxt "iCalImp" msgid "Public" msgstr "公开" #. Translators: Appointment's classification #: ../calendar/importers/icalendar-importer.c:1232 msgctxt "iCalImp" msgid "Private" msgstr "保密" #. Translators: Appointment's classification #: ../calendar/importers/icalendar-importer.c:1235 msgctxt "iCalImp" msgid "Confidential" msgstr "机密" #. Translators: Appointment's classification section name #: ../calendar/importers/icalendar-importer.c:1239 msgctxt "iCalImp" msgid "Classification" msgstr "分类" #. Translators: Appointment's summary #: ../calendar/importers/icalendar-importer.c:1244 #: ../calendar/importers/icalendar-importer.c:1544 msgctxt "iCalImp" msgid "Summary" msgstr "概要" #. Translators: Appointment's location #: ../calendar/importers/icalendar-importer.c:1250 msgctxt "iCalImp" msgid "Location" msgstr "位置" #. Translators: Appointment's start time #: ../calendar/importers/icalendar-importer.c:1258 #: ../calendar/importers/icalendar-importer.c:1539 msgctxt "iCalImp" msgid "Start" msgstr "开始" #. Translators: 'Due' like the time due a task should be finished #: ../calendar/importers/icalendar-importer.c:1269 msgctxt "iCalImp" msgid "Due" msgstr "到期" #. Translators: Appointment's end time #: ../calendar/importers/icalendar-importer.c:1281 msgctxt "iCalImp" msgid "End" msgstr "结束" #. Translators: Appointment's categories #: ../calendar/importers/icalendar-importer.c:1291 msgctxt "iCalImp" msgid "Categories" msgstr "类别" #. Translators: Appointment's complete value (either percentage, or a date/time of a completion) #: ../calendar/importers/icalendar-importer.c:1315 msgctxt "iCalImp" msgid "Completed" msgstr "已完成" #. Translators: Appointment's URL #: ../calendar/importers/icalendar-importer.c:1323 msgctxt "iCalImp" msgid "URL" msgstr "URL" #. Translators: Appointment's organizer #: ../calendar/importers/icalendar-importer.c:1334 #: ../calendar/importers/icalendar-importer.c:1337 msgctxt "iCalImp" msgid "Organizer" msgstr "组织者" #. Translators: Appointment's attendees #: ../calendar/importers/icalendar-importer.c:1357 #: ../calendar/importers/icalendar-importer.c:1360 msgctxt "iCalImp" msgid "Attendees" msgstr "出席者" #: ../calendar/importers/icalendar-importer.c:1374 msgctxt "iCalImp" msgid "Description" msgstr "描述" #: ../calendar/importers/icalendar-importer.c:1534 msgctxt "iCalImp" msgid "Type" msgstr "类型" #. #. * #. * This program is free software; you can redistribute it and/or #. * modify it under the terms of the GNU Lesser General Public #. * License as published by the Free Software Foundation; either #. * version 2 of the License, or (at your option) version 3. #. * #. * This program is distributed in the hope that it will be useful, #. * but WITHOUT ANY WARRANTY; without even the implied warranty of #. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU #. * Lesser General Public License for more details. #. * #. * You should have received a copy of the GNU Lesser General Public #. * License along with the program; if not, see #. * #. * #. * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) #. * #. #. #. * These are the timezone names from the Olson timezone data. #. * We only place them here so gettext picks them up for translation. #. * Don't include in any C files. #. #: ../calendar/zones.h:26 msgid "Africa/Abidjan" msgstr "非洲/阿比让" #: ../calendar/zones.h:27 msgid "Africa/Accra" msgstr "非洲/阿克拉" #: ../calendar/zones.h:28 msgid "Africa/Addis_Ababa" msgstr "非洲/亚的斯亚贝巴" #: ../calendar/zones.h:29 msgid "Africa/Algiers" msgstr "非洲/阿尔及尔" #: ../calendar/zones.h:30 msgid "Africa/Asmera" msgstr "非洲/阿斯马拉" #: ../calendar/zones.h:31 msgid "Africa/Bamako" msgstr "非洲/巴马科" #: ../calendar/zones.h:32 msgid "Africa/Bangui" msgstr "非洲/班吉" #: ../calendar/zones.h:33 msgid "Africa/Banjul" msgstr "非洲/班珠尔" #: ../calendar/zones.h:34 msgid "Africa/Bissau" msgstr "非洲/比绍" #: ../calendar/zones.h:35 msgid "Africa/Blantyre" msgstr "非洲/布兰太尔" #: ../calendar/zones.h:36 msgid "Africa/Brazzaville" msgstr "非洲/布拉柴维尔" #: ../calendar/zones.h:37 msgid "Africa/Bujumbura" msgstr "非洲/布琼布拉" #: ../calendar/zones.h:38 msgid "Africa/Cairo" msgstr "非洲/开罗" #: ../calendar/zones.h:39 msgid "Africa/Casablanca" msgstr "非洲/卡萨布兰卡" #: ../calendar/zones.h:40 msgid "Africa/Ceuta" msgstr "非洲/休塔" #: ../calendar/zones.h:41 msgid "Africa/Conakry" msgstr "非洲/科纳克里" #: ../calendar/zones.h:42 msgid "Africa/Dakar" msgstr "非洲/达喀尔" #: ../calendar/zones.h:43 msgid "Africa/Dar_es_Salaam" msgstr "非洲/达累斯萨拉姆" #: ../calendar/zones.h:44 msgid "Africa/Djibouti" msgstr "非洲/吉布提" #: ../calendar/zones.h:45 msgid "Africa/Douala" msgstr "非洲/杜阿拉" #: ../calendar/zones.h:46 msgid "Africa/El_Aaiun" msgstr "非洲/El_Aaiun" #: ../calendar/zones.h:47 msgid "Africa/Freetown" msgstr "非洲/弗里敦" #: ../calendar/zones.h:48 msgid "Africa/Gaborone" msgstr "非洲/哈博罗内" #: ../calendar/zones.h:49 msgid "Africa/Harare" msgstr "非洲/哈拉雷" #: ../calendar/zones.h:50 msgid "Africa/Johannesburg" msgstr "非洲/约翰内斯堡" #: ../calendar/zones.h:51 msgid "Africa/Kampala" msgstr "非洲/坎帕拉" #: ../calendar/zones.h:52 msgid "Africa/Khartoum" msgstr "非洲/喀土穆" #: ../calendar/zones.h:53 msgid "Africa/Kigali" msgstr "非洲/基加利" #: ../calendar/zones.h:54 msgid "Africa/Kinshasa" msgstr "非洲/金沙萨" #: ../calendar/zones.h:55 msgid "Africa/Lagos" msgstr "非洲/拉各斯" #: ../calendar/zones.h:56 msgid "Africa/Libreville" msgstr "非洲/利伯维尔" #: ../calendar/zones.h:57 msgid "Africa/Lome" msgstr "非洲/洛美" #: ../calendar/zones.h:58 msgid "Africa/Luanda" msgstr "非洲/罗安达" #: ../calendar/zones.h:59 msgid "Africa/Lubumbashi" msgstr "非洲/卢本巴希" #: ../calendar/zones.h:60 msgid "Africa/Lusaka" msgstr "非洲/卢萨卡" #: ../calendar/zones.h:61 msgid "Africa/Malabo" msgstr "非洲/马拉博" #: ../calendar/zones.h:62 msgid "Africa/Maputo" msgstr "非洲/马普托" #: ../calendar/zones.h:63 msgid "Africa/Maseru" msgstr "非洲/马塞卢" #: ../calendar/zones.h:64 msgid "Africa/Mbabane" msgstr "非洲/姆巴巴纳" #: ../calendar/zones.h:65 msgid "Africa/Mogadishu" msgstr "非洲/摩加迪沙" #: ../calendar/zones.h:66 msgid "Africa/Monrovia" msgstr "非洲/蒙罗维亚" #: ../calendar/zones.h:67 msgid "Africa/Nairobi" msgstr "非洲/内罗毕" #: ../calendar/zones.h:68 msgid "Africa/Ndjamena" msgstr "非洲/恩贾梅纳" #: ../calendar/zones.h:69 msgid "Africa/Niamey" msgstr "非洲/尼亚美" #: ../calendar/zones.h:70 msgid "Africa/Nouakchott" msgstr "非洲/努瓦克肖特" #: ../calendar/zones.h:71 msgid "Africa/Ouagadougou" msgstr "非洲/瓦加杜古" #: ../calendar/zones.h:72 msgid "Africa/Porto-Novo" msgstr "非洲/波多诺伏" #: ../calendar/zones.h:73 msgid "Africa/Sao_Tome" msgstr "非洲/圣多美" #: ../calendar/zones.h:74 msgid "Africa/Timbuktu" msgstr "非洲/Timbuktu" #: ../calendar/zones.h:75 msgid "Africa/Tripoli" msgstr "非洲/的黎波里" #: ../calendar/zones.h:76 msgid "Africa/Tunis" msgstr "非洲/突尼斯" #: ../calendar/zones.h:77 msgid "Africa/Windhoek" msgstr "非洲/温得和克" #: ../calendar/zones.h:78 msgid "America/Adak" msgstr "美洲/Adak" #: ../calendar/zones.h:79 msgid "America/Anchorage" msgstr "美洲/安克雷奇" #: ../calendar/zones.h:80 msgid "America/Anguilla" msgstr "美洲/安圭拉" #: ../calendar/zones.h:81 msgid "America/Antigua" msgstr "美洲/安提瓜" #: ../calendar/zones.h:82 msgid "America/Araguaina" msgstr "美洲/Araguaina" #: ../calendar/zones.h:83 msgid "America/Aruba" msgstr "美洲/阿鲁巴" #: ../calendar/zones.h:84 msgid "America/Asuncion" msgstr "美洲/亚松森" #: ../calendar/zones.h:85 msgid "America/Barbados" msgstr "美洲/巴巴多斯" #: ../calendar/zones.h:86 msgid "America/Belem" msgstr "美洲/Belem" #: ../calendar/zones.h:87 msgid "America/Belize" msgstr "美洲/伯利兹" #: ../calendar/zones.h:88 msgid "America/Boa_Vista" msgstr "美洲/Boa_Vista" #: ../calendar/zones.h:89 msgid "America/Bogota" msgstr "美洲/波哥大" #: ../calendar/zones.h:90 msgid "America/Boise" msgstr "美洲/博伊西" #: ../calendar/zones.h:91 msgid "America/Buenos_Aires" msgstr "美洲/布宜诺斯艾利斯" #: ../calendar/zones.h:92 msgid "America/Cambridge_Bay" msgstr "美洲/剑桥湾" #: ../calendar/zones.h:93 msgid "America/Cancun" msgstr "美洲/Cancun" #: ../calendar/zones.h:94 msgid "America/Caracas" msgstr "美洲/加拉加斯" #: ../calendar/zones.h:95 msgid "America/Catamarca" msgstr "美洲/Catamarca" #: ../calendar/zones.h:96 msgid "America/Cayenne" msgstr "美洲/卡宴" #: ../calendar/zones.h:97 msgid "America/Cayman" msgstr "美洲/开曼" #: ../calendar/zones.h:98 msgid "America/Chicago" msgstr "美洲/芝加哥" #: ../calendar/zones.h:99 msgid "America/Chihuahua" msgstr "美洲/奇瓦瓦" #: ../calendar/zones.h:100 msgid "America/Cordoba" msgstr "美洲/科尔多瓦" #: ../calendar/zones.h:101 msgid "America/Costa_Rica" msgstr "美洲/哥斯达黎加" #: ../calendar/zones.h:102 msgid "America/Cuiaba" msgstr "美洲/Cuiaba" #: ../calendar/zones.h:103 msgid "America/Curacao" msgstr "美洲/Curacao" #: ../calendar/zones.h:104 msgid "America/Danmarkshavn" msgstr "美洲/Danmarkshavn" #: ../calendar/zones.h:105 msgid "America/Dawson" msgstr "美洲/道森" #: ../calendar/zones.h:106 msgid "America/Dawson_Creek" msgstr "美洲/道森克里克" #: ../calendar/zones.h:107 msgid "America/Denver" msgstr "美洲/丹佛" #: ../calendar/zones.h:108 msgid "America/Detroit" msgstr "美洲/底特律" #: ../calendar/zones.h:109 msgid "America/Dominica" msgstr "美洲/多米尼加" #: ../calendar/zones.h:110 msgid "America/Edmonton" msgstr "美洲/埃德蒙顿(爱民顿)" #: ../calendar/zones.h:111 msgid "America/Eirunepe" msgstr "美洲/Eirunepe" #: ../calendar/zones.h:112 msgid "America/El_Salvador" msgstr "美洲/萨尔瓦多" #: ../calendar/zones.h:113 msgid "America/Fortaleza" msgstr "美国/福塔雷萨" #: ../calendar/zones.h:114 msgid "America/Glace_Bay" msgstr "美洲/Glace_Bay" #: ../calendar/zones.h:115 msgid "America/Godthab" msgstr "美洲/戈德霍普" #: ../calendar/zones.h:116 msgid "America/Goose_Bay" msgstr "美洲/Goose_Bay" #: ../calendar/zones.h:117 msgid "America/Grand_Turk" msgstr "美洲/Grand_Turk" #: ../calendar/zones.h:118 msgid "America/Grenada" msgstr "美洲/格林纳达" #: ../calendar/zones.h:119 msgid "America/Guadeloupe" msgstr "美洲/瓜德罗普岛" #: ../calendar/zones.h:120 msgid "America/Guatemala" msgstr "美洲/危地马拉" #: ../calendar/zones.h:121 msgid "America/Guayaquil" msgstr "美洲/瓜亚基尔" #: ../calendar/zones.h:122 msgid "America/Guyana" msgstr "美洲/圭亚那" #: ../calendar/zones.h:123 msgid "America/Halifax" msgstr "美洲/哈利法克斯" #: ../calendar/zones.h:124 msgid "America/Havana" msgstr "美洲/哈瓦那" #: ../calendar/zones.h:125 msgid "America/Hermosillo" msgstr "美洲/厄木波利斯" #: ../calendar/zones.h:126 msgid "America/Indiana/Indianapolis" msgstr "美洲/印地安那/印地安纳波利斯" #: ../calendar/zones.h:127 msgid "America/Indiana/Knox" msgstr "美洲/印地安那/诺克斯" #: ../calendar/zones.h:128 msgid "America/Indiana/Marengo" msgstr "美洲/印地安那/马伦戈" #: ../calendar/zones.h:129 msgid "America/Indiana/Vevay" msgstr "美洲/印地安那/Vevay" #: ../calendar/zones.h:130 msgid "America/Indianapolis" msgstr "美洲/印地安纳波利斯" #: ../calendar/zones.h:131 msgid "America/Inuvik" msgstr "美洲/Inuvik" #: ../calendar/zones.h:132 msgid "America/Iqaluit" msgstr "美洲/Iqaluit" #: ../calendar/zones.h:133 msgid "America/Jamaica" msgstr "美洲/牙买加" #: ../calendar/zones.h:134 msgid "America/Jujuy" msgstr "美洲/Jujuy" #: ../calendar/zones.h:135 msgid "America/Juneau" msgstr "美洲/朱诺" #: ../calendar/zones.h:136 msgid "America/Kentucky/Louisville" msgstr "美洲/肯塔基/路易斯维尔" #: ../calendar/zones.h:137 msgid "America/Kentucky/Monticello" msgstr "美洲/肯塔基/Monticello" #: ../calendar/zones.h:138 msgid "America/La_Paz" msgstr "美洲/拉巴斯" #: ../calendar/zones.h:139 msgid "America/Lima" msgstr "美洲/利马" #: ../calendar/zones.h:140 msgid "America/Los_Angeles" msgstr "美洲/洛杉矶" #: ../calendar/zones.h:141 msgid "America/Louisville" msgstr "美洲/路易斯维尔" #: ../calendar/zones.h:142 msgid "America/Maceio" msgstr "美洲/Maceio" #: ../calendar/zones.h:143 msgid "America/Managua" msgstr "美洲/马那瓜" #: ../calendar/zones.h:144 msgid "America/Manaus" msgstr "美洲/马瑙斯" #: ../calendar/zones.h:145 msgid "America/Martinique" msgstr "美洲/马提尼克岛" #: ../calendar/zones.h:146 msgid "America/Mazatlan" msgstr "美洲/Mazatlan" #: ../calendar/zones.h:147 msgid "America/Mendoza" msgstr "美洲/Mendoza" #: ../calendar/zones.h:148 msgid "America/Menominee" msgstr "美洲/Menominee" #: ../calendar/zones.h:149 msgid "America/Merida" msgstr "美洲/Merida" #: ../calendar/zones.h:150 msgid "America/Mexico_City" msgstr "美洲/墨西哥城" #: ../calendar/zones.h:151 msgid "America/Miquelon" msgstr "美洲/密克隆岛" #: ../calendar/zones.h:152 msgid "America/Monterrey" msgstr "美洲/蒙特雷" #: ../calendar/zones.h:153 msgid "America/Montevideo" msgstr "美洲/蒙得维的亚" #: ../calendar/zones.h:154 msgid "America/Montreal" msgstr "美洲/蒙特利尔" #: ../calendar/zones.h:155 msgid "America/Montserrat" msgstr "美洲/蒙特塞拉特" #: ../calendar/zones.h:156 msgid "America/Nassau" msgstr "美洲/拿骚" #: ../calendar/zones.h:157 msgid "America/New_York" msgstr "美洲/纽约" #: ../calendar/zones.h:158 msgid "America/Nipigon" msgstr "美洲/Nipigon" #: ../calendar/zones.h:159 msgid "America/Nome" msgstr "美洲/诺姆" #: ../calendar/zones.h:160 msgid "America/Noronha" msgstr "美洲/Noronha" #: ../calendar/zones.h:161 msgid "America/North_Dakota/Center" msgstr "美洲/北达科它/中心" #: ../calendar/zones.h:162 msgid "America/Panama" msgstr "美洲/巴拿马" #: ../calendar/zones.h:163 msgid "America/Pangnirtung" msgstr "美洲/Pangnirtung" #: ../calendar/zones.h:164 msgid "America/Paramaribo" msgstr "美洲/帕拉马里博" #: ../calendar/zones.h:165 msgid "America/Phoenix" msgstr "美洲/凤凰城" #: ../calendar/zones.h:166 msgid "America/Port-au-Prince" msgstr "美洲/太子港" #: ../calendar/zones.h:167 msgid "America/Port_of_Spain" msgstr "美洲/西班牙港" #: ../calendar/zones.h:168 msgid "America/Porto_Velho" msgstr "美洲/Porto_Velho" #: ../calendar/zones.h:169 msgid "America/Puerto_Rico" msgstr "美洲/波多黎各" #: ../calendar/zones.h:170 msgid "America/Rainy_River" msgstr "美洲/Rainy_River" #: ../calendar/zones.h:171 msgid "America/Rankin_Inlet" msgstr "美洲/Rankin_Inlet" #: ../calendar/zones.h:172 msgid "America/Recife" msgstr "美洲/累西腓" #: ../calendar/zones.h:173 msgid "America/Regina" msgstr "美洲/Regina" #: ../calendar/zones.h:174 msgid "America/Rio_Branco" msgstr "美洲/Rio_Branco" #: ../calendar/zones.h:175 msgid "America/Rosario" msgstr "美洲/Rosario" #: ../calendar/zones.h:176 msgid "America/Santiago" msgstr "美洲/圣地亚哥" #: ../calendar/zones.h:177 msgid "America/Santo_Domingo" msgstr "美洲/圣多明哥" #: ../calendar/zones.h:178 msgid "America/Sao_Paulo" msgstr "美洲/圣保罗" #: ../calendar/zones.h:179 msgid "America/Scoresbysund" msgstr "美洲/Scoresbysund" #: ../calendar/zones.h:180 msgid "America/Shiprock" msgstr "美洲/Shiprock" #: ../calendar/zones.h:181 msgid "America/St_Johns" msgstr "美洲/圣约翰斯" #: ../calendar/zones.h:182 msgid "America/St_Kitts" msgstr "美洲/St_Kitts" #: ../calendar/zones.h:183 msgid "America/St_Lucia" msgstr "美洲/圣露西娅" #: ../calendar/zones.h:184 msgid "America/St_Thomas" msgstr "美洲/圣托马斯" #: ../calendar/zones.h:185 msgid "America/St_Vincent" msgstr "美洲/圣文森特" #: ../calendar/zones.h:186 msgid "America/Swift_Current" msgstr "美洲/Swift_Current" #: ../calendar/zones.h:187 msgid "America/Tegucigalpa" msgstr "美洲/特古西加尔巴" #: ../calendar/zones.h:188 msgid "America/Thule" msgstr "美洲/Thule" #: ../calendar/zones.h:189 msgid "America/Thunder_Bay" msgstr "美洲/Thunder_Bay" #: ../calendar/zones.h:190 msgid "America/Tijuana" msgstr "美洲/提华纳" #: ../calendar/zones.h:191 msgid "America/Tortola" msgstr "美洲/托托拉岛" #: ../calendar/zones.h:192 msgid "America/Vancouver" msgstr "美洲/温哥华" #: ../calendar/zones.h:193 msgid "America/Whitehorse" msgstr "美洲/怀特霍斯" #: ../calendar/zones.h:194 msgid "America/Winnipeg" msgstr "美洲/温尼伯" #: ../calendar/zones.h:195 msgid "America/Yakutat" msgstr "美洲/Yakutat" #: ../calendar/zones.h:196 msgid "America/Yellowknife" msgstr "美洲/耶洛奈夫" #: ../calendar/zones.h:197 msgid "Antarctica/Casey" msgstr "南极洲/凯西" #: ../calendar/zones.h:198 msgid "Antarctica/Davis" msgstr "南极洲/戴维斯" #: ../calendar/zones.h:199 msgid "Antarctica/DumontDUrville" msgstr "南极洲/DumontDUrville" #: ../calendar/zones.h:200 msgid "Antarctica/Mawson" msgstr "南极洲/莫森" #: ../calendar/zones.h:201 msgid "Antarctica/McMurdo" msgstr "南极洲/麦克默多" #: ../calendar/zones.h:202 msgid "Antarctica/Palmer" msgstr "南极洲/帕默" #: ../calendar/zones.h:203 msgid "Antarctica/South_Pole" msgstr "南极洲/南极点" #: ../calendar/zones.h:204 msgid "Antarctica/Syowa" msgstr "南极洲/Syowa" #: ../calendar/zones.h:205 msgid "Antarctica/Vostok" msgstr "南极洲/东方站" #: ../calendar/zones.h:206 msgid "Arctic/Longyearbyen" msgstr "北极地区/郎伊尔城" #: ../calendar/zones.h:207 msgid "Asia/Aden" msgstr "亚洲/亚丁" #: ../calendar/zones.h:208 msgid "Asia/Almaty" msgstr "亚洲/Almaty" #: ../calendar/zones.h:209 msgid "Asia/Amman" msgstr "亚洲/安曼" #: ../calendar/zones.h:210 msgid "Asia/Anadyr" msgstr "亚洲/阿纳德尔" #: ../calendar/zones.h:211 msgid "Asia/Aqtau" msgstr "亚洲/Aqtau" #: ../calendar/zones.h:212 msgid "Asia/Aqtobe" msgstr "亚洲/Aqtobe" #: ../calendar/zones.h:213 msgid "Asia/Ashgabat" msgstr "亚洲/Ashgabat" #: ../calendar/zones.h:214 msgid "Asia/Baghdad" msgstr "亚洲/巴格达" #: ../calendar/zones.h:215 msgid "Asia/Bahrain" msgstr "亚洲/巴林岛" #: ../calendar/zones.h:216 msgid "Asia/Baku" msgstr "亚洲/巴库" #: ../calendar/zones.h:217 msgid "Asia/Bangkok" msgstr "亚洲/曼谷" #: ../calendar/zones.h:218 msgid "Asia/Beirut" msgstr "亚洲/贝鲁特" #: ../calendar/zones.h:219 msgid "Asia/Bishkek" msgstr "亚洲/比什凯克" #: ../calendar/zones.h:220 msgid "Asia/Brunei" msgstr "亚洲/文莱" #: ../calendar/zones.h:221 msgid "Asia/Calcutta" msgstr "亚洲/加尔各答" #: ../calendar/zones.h:222 msgid "Asia/Choibalsan" msgstr "亚洲/Choibalsan" #: ../calendar/zones.h:223 msgid "Asia/Chongqing" msgstr "亚洲/重庆" #: ../calendar/zones.h:224 msgid "Asia/Colombo" msgstr "亚洲/科伦坡" #: ../calendar/zones.h:225 msgid "Asia/Damascus" msgstr "亚洲/大马士革" #: ../calendar/zones.h:226 msgid "Asia/Dhaka" msgstr "亚洲/达卡" #: ../calendar/zones.h:227 msgid "Asia/Dili" msgstr "亚洲/帝力" #: ../calendar/zones.h:228 msgid "Asia/Dubai" msgstr "亚洲/迪拜" #: ../calendar/zones.h:229 msgid "Asia/Dushanbe" msgstr "亚洲/杜尚别" #: ../calendar/zones.h:230 msgid "Asia/Gaza" msgstr "亚洲/加沙" #: ../calendar/zones.h:231 msgid "Asia/Harbin" msgstr "亚洲/哈尔滨" #: ../calendar/zones.h:232 msgid "Asia/Hong_Kong" msgstr "亚洲/香港" #: ../calendar/zones.h:233 msgid "Asia/Hovd" msgstr "亚洲/Hovd" #: ../calendar/zones.h:234 msgid "Asia/Irkutsk" msgstr "亚洲/伊尔库次克" #: ../calendar/zones.h:235 msgid "Asia/Istanbul" msgstr "亚洲/伊斯坦布尔" #: ../calendar/zones.h:236 msgid "Asia/Jakarta" msgstr "亚洲/雅加达" #: ../calendar/zones.h:237 msgid "Asia/Jayapura" msgstr "亚洲/Jayapura" #: ../calendar/zones.h:238 msgid "Asia/Jerusalem" msgstr "亚洲/耶路撒冷" #: ../calendar/zones.h:239 msgid "Asia/Kabul" msgstr "亚洲/喀布尔" #: ../calendar/zones.h:240 msgid "Asia/Kamchatka" msgstr "亚洲/堪察加半岛" #: ../calendar/zones.h:241 msgid "Asia/Karachi" msgstr "亚洲/卡拉奇" #: ../calendar/zones.h:242 msgid "Asia/Kashgar" msgstr "亚洲/喀什葛尔" #: ../calendar/zones.h:243 msgid "Asia/Katmandu" msgstr "亚洲/加德满都" #: ../calendar/zones.h:244 msgid "Asia/Krasnoyarsk" msgstr "亚洲/克拉斯诺伏斯克" #: ../calendar/zones.h:245 msgid "Asia/Kuala_Lumpur" msgstr "亚洲/吉隆坡" #: ../calendar/zones.h:246 msgid "Asia/Kuching" msgstr "亚洲/古晋" #: ../calendar/zones.h:247 msgid "Asia/Kuwait" msgstr "亚洲/科威特" #: ../calendar/zones.h:248 msgid "Asia/Macao" msgstr "亚洲/澳门" #: ../calendar/zones.h:249 msgid "Asia/Macau" msgstr "亚洲/澳门" #: ../calendar/zones.h:250 msgid "Asia/Magadan" msgstr "亚洲/Magadan" #: ../calendar/zones.h:251 msgid "Asia/Makassar" msgstr "亚洲/Makassar" #: ../calendar/zones.h:252 msgid "Asia/Manila" msgstr "亚洲/马尼拉" #: ../calendar/zones.h:253 msgid "Asia/Muscat" msgstr "亚洲/马斯喀特" #: ../calendar/zones.h:254 msgid "Asia/Nicosia" msgstr "亚洲/尼科西亚" #: ../calendar/zones.h:255 msgid "Asia/Novosibirsk" msgstr "亚洲/新西伯利亚" #: ../calendar/zones.h:256 msgid "Asia/Omsk" msgstr "亚洲/鄂木斯克" #: ../calendar/zones.h:257 msgid "Asia/Oral" msgstr "亚洲/Oral" #: ../calendar/zones.h:258 msgid "Asia/Phnom_Penh" msgstr "亚洲/金边" #: ../calendar/zones.h:259 msgid "Asia/Pontianak" msgstr "亚洲/坤甸" #: ../calendar/zones.h:260 msgid "Asia/Pyongyang" msgstr "亚洲/平壤" #: ../calendar/zones.h:261 msgid "Asia/Qatar" msgstr "亚洲/卡塔尔" #: ../calendar/zones.h:262 msgid "Asia/Qyzylorda" msgstr "亚洲/Qyzylorda" #: ../calendar/zones.h:263 msgid "Asia/Rangoon" msgstr "亚洲/仰光" #: ../calendar/zones.h:264 msgid "Asia/Riyadh" msgstr "亚洲/利雅得" #: ../calendar/zones.h:265 msgid "Asia/Saigon" msgstr "亚洲/西贡" #: ../calendar/zones.h:266 msgid "Asia/Sakhalin" msgstr "亚洲/库页岛" #: ../calendar/zones.h:267 msgid "Asia/Samarkand" msgstr "亚洲/撒马尔罕" #: ../calendar/zones.h:268 msgid "Asia/Seoul" msgstr "亚洲/汉城" #: ../calendar/zones.h:269 msgid "Asia/Shanghai" msgstr "亚洲/上海" #: ../calendar/zones.h:270 msgid "Asia/Singapore" msgstr "亚洲/新加坡" #: ../calendar/zones.h:271 msgid "Asia/Taipei" msgstr "亚洲/台北" #: ../calendar/zones.h:272 msgid "Asia/Tashkent" msgstr "亚洲/塔什干" #: ../calendar/zones.h:273 msgid "Asia/Tbilisi" msgstr "亚洲/第比利斯" #: ../calendar/zones.h:274 msgid "Asia/Tehran" msgstr "亚洲/德黑兰" #: ../calendar/zones.h:275 msgid "Asia/Thimphu" msgstr "亚洲/廷布" #: ../calendar/zones.h:276 msgid "Asia/Tokyo" msgstr "亚洲/东京" #: ../calendar/zones.h:277 msgid "Asia/Ujung_Pandang" msgstr "亚洲/Ujung_Pandang" #: ../calendar/zones.h:278 msgid "Asia/Ulaanbaatar" msgstr "亚洲/乌兰巴托" #: ../calendar/zones.h:279 msgid "Asia/Urumqi" msgstr "亚洲/乌鲁木齐" #: ../calendar/zones.h:280 msgid "Asia/Vientiane" msgstr "亚洲/万象" #: ../calendar/zones.h:281 msgid "Asia/Vladivostok" msgstr "亚洲/符拉迪沃斯托克" #: ../calendar/zones.h:282 msgid "Asia/Yakutsk" msgstr "亚洲/雅库茨克" #: ../calendar/zones.h:283 msgid "Asia/Yekaterinburg" msgstr "亚洲/Yekaterinburg" #: ../calendar/zones.h:284 msgid "Asia/Yerevan" msgstr "亚洲/耶列万" #: ../calendar/zones.h:285 msgid "Atlantic/Azores" msgstr "大西洋/亚述尔群岛" #: ../calendar/zones.h:286 msgid "Atlantic/Bermuda" msgstr "大西洋/百慕大" #: ../calendar/zones.h:287 msgid "Atlantic/Canary" msgstr "大西洋/卡内里" #: ../calendar/zones.h:288 msgid "Atlantic/Cape_Verde" msgstr "大西洋/佛得角" #: ../calendar/zones.h:289 msgid "Atlantic/Faeroe" msgstr "大西洋/法罗" #: ../calendar/zones.h:290 msgid "Atlantic/Jan_Mayen" msgstr "大西洋/Jan_Mayen" #: ../calendar/zones.h:291 msgid "Atlantic/Madeira" msgstr "大西洋/马德拉群岛" #: ../calendar/zones.h:292 msgid "Atlantic/Reykjavik" msgstr "大西洋/雷克雅未克" #: ../calendar/zones.h:293 msgid "Atlantic/South_Georgia" msgstr "大西洋/南乔治亚" #: ../calendar/zones.h:294 msgid "Atlantic/St_Helena" msgstr "大西洋/圣海伦娜" #: ../calendar/zones.h:295 msgid "Atlantic/Stanley" msgstr "大西洋/斯坦利" #: ../calendar/zones.h:296 msgid "Australia/Adelaide" msgstr "澳大利亚/阿德莱德" #: ../calendar/zones.h:297 msgid "Australia/Brisbane" msgstr "澳大利亚/布里斯班" #: ../calendar/zones.h:298 msgid "Australia/Broken_Hill" msgstr "澳大利亚/Broken_Hill" #: ../calendar/zones.h:299 msgid "Australia/Darwin" msgstr "澳大利亚/达尔文" #: ../calendar/zones.h:300 msgid "Australia/Hobart" msgstr "澳大利亚/霍巴特" #: ../calendar/zones.h:301 msgid "Australia/Lindeman" msgstr "澳大利亚/林德曼" #: ../calendar/zones.h:302 msgid "Australia/Lord_Howe" msgstr "澳大利亚/Lord_Howe" #: ../calendar/zones.h:303 msgid "Australia/Melbourne" msgstr "澳洲/墨尔本" #: ../calendar/zones.h:304 msgid "Australia/Perth" msgstr "澳大利亚/珀斯" #: ../calendar/zones.h:305 msgid "Australia/Sydney" msgstr "澳洲/悉尼" #: ../calendar/zones.h:306 msgid "Europe/Amsterdam" msgstr "欧洲/阿姆斯特丹" #: ../calendar/zones.h:307 msgid "Europe/Andorra" msgstr "欧洲/安道尔" #: ../calendar/zones.h:308 msgid "Europe/Athens" msgstr "欧洲/雅典" #: ../calendar/zones.h:309 msgid "Europe/Belfast" msgstr "欧洲/贝尔法斯特" #: ../calendar/zones.h:310 msgid "Europe/Belgrade" msgstr "欧洲/贝尔格莱德" #: ../calendar/zones.h:311 msgid "Europe/Berlin" msgstr "欧洲/柏林" #: ../calendar/zones.h:312 msgid "Europe/Bratislava" msgstr "欧洲/布拉迪斯拉发" #: ../calendar/zones.h:313 msgid "Europe/Brussels" msgstr "欧洲/布鲁塞尔" #: ../calendar/zones.h:314 msgid "Europe/Bucharest" msgstr "欧洲/布加勒斯特" #: ../calendar/zones.h:315 msgid "Europe/Budapest" msgstr "欧洲/布达佩斯" #: ../calendar/zones.h:316 msgid "Europe/Chisinau" msgstr "欧洲/尼科西亚" #: ../calendar/zones.h:317 msgid "Europe/Copenhagen" msgstr "欧洲/哥本哈根" #: ../calendar/zones.h:318 msgid "Europe/Dublin" msgstr "欧洲/都柏林" #: ../calendar/zones.h:319 msgid "Europe/Gibraltar" msgstr "欧洲/直布罗陀" #: ../calendar/zones.h:320 msgid "Europe/Helsinki" msgstr "欧洲/赫尔辛基" #: ../calendar/zones.h:321 msgid "Europe/Istanbul" msgstr "欧洲/伊斯坦布尔" #: ../calendar/zones.h:322 msgid "Europe/Kaliningrad" msgstr "欧洲/加里宁格勒" #: ../calendar/zones.h:323 msgid "Europe/Kiev" msgstr "欧洲/基辅" #: ../calendar/zones.h:324 msgid "Europe/Lisbon" msgstr "欧洲/里斯本" #: ../calendar/zones.h:325 msgid "Europe/Ljubljana" msgstr "欧洲/卢布尔雅纳" #: ../calendar/zones.h:326 msgid "Europe/London" msgstr "欧洲/伦敦" #: ../calendar/zones.h:327 msgid "Europe/Luxembourg" msgstr "欧洲/卢森堡" #: ../calendar/zones.h:328 msgid "Europe/Madrid" msgstr "欧洲/马德里" #: ../calendar/zones.h:329 msgid "Europe/Malta" msgstr "欧洲/马耳他" #: ../calendar/zones.h:330 msgid "Europe/Minsk" msgstr "欧洲/明斯克" #: ../calendar/zones.h:331 msgid "Europe/Monaco" msgstr "欧洲/摩纳哥" #: ../calendar/zones.h:332 msgid "Europe/Moscow" msgstr "欧洲/莫斯科" #: ../calendar/zones.h:333 msgid "Europe/Nicosia" msgstr "欧洲/尼科西亚" #: ../calendar/zones.h:334 msgid "Europe/Oslo" msgstr "欧洲/奥斯路" #: ../calendar/zones.h:335 msgid "Europe/Paris" msgstr "欧洲/巴黎" #: ../calendar/zones.h:336 msgid "Europe/Prague" msgstr "欧洲/布拉格" #: ../calendar/zones.h:337 msgid "Europe/Riga" msgstr "欧洲/里加" #: ../calendar/zones.h:338 msgid "Europe/Rome" msgstr "欧洲/罗马" #: ../calendar/zones.h:339 msgid "Europe/Samara" msgstr "欧洲/Samara" #: ../calendar/zones.h:340 msgid "Europe/San_Marino" msgstr "欧洲/圣马力诺" #: ../calendar/zones.h:341 msgid "Europe/Sarajevo" msgstr "欧洲/萨拉热窝" #: ../calendar/zones.h:342 msgid "Europe/Simferopol" msgstr "欧洲/辛菲罗波尔" #: ../calendar/zones.h:343 msgid "Europe/Skopje" msgstr "欧洲/斯科普里" #: ../calendar/zones.h:344 msgid "Europe/Sofia" msgstr "欧洲/索非亚" #: ../calendar/zones.h:345 msgid "Europe/Stockholm" msgstr "欧洲/斯德哥尔摩" #: ../calendar/zones.h:346 msgid "Europe/Tallinn" msgstr "欧洲/塔林" #: ../calendar/zones.h:347 msgid "Europe/Tirane" msgstr "欧洲/地拉那" #: ../calendar/zones.h:348 msgid "Europe/Uzhgorod" msgstr "欧洲/Uzhgorod" #: ../calendar/zones.h:349 msgid "Europe/Vaduz" msgstr "欧洲/瓦杜兹" #: ../calendar/zones.h:350 msgid "Europe/Vatican" msgstr "欧洲/梵蒂冈" #: ../calendar/zones.h:351 msgid "Europe/Vienna" msgstr "欧洲/维也纳" #: ../calendar/zones.h:352 msgid "Europe/Vilnius" msgstr "欧洲/维尔纽斯" #: ../calendar/zones.h:353 msgid "Europe/Warsaw" msgstr "欧洲/华沙" #: ../calendar/zones.h:354 msgid "Europe/Zagreb" msgstr "欧洲/萨格勒布" #: ../calendar/zones.h:355 msgid "Europe/Zaporozhye" msgstr "欧洲/Zaporozhye" #: ../calendar/zones.h:356 msgid "Europe/Zurich" msgstr "欧洲/苏黎世" #: ../calendar/zones.h:357 msgid "Indian/Antananarivo" msgstr "印度洋/Antananarivo" #: ../calendar/zones.h:358 msgid "Indian/Chagos" msgstr "印度洋/查戈斯群岛" #: ../calendar/zones.h:359 msgid "Indian/Christmas" msgstr "印度洋/圣诞岛" #: ../calendar/zones.h:360 msgid "Indian/Cocos" msgstr "印度洋/科科斯" #: ../calendar/zones.h:361 msgid "Indian/Comoro" msgstr "印度洋/科摩罗" #: ../calendar/zones.h:362 msgid "Indian/Kerguelen" msgstr "印度洋/Kerguelen" #: ../calendar/zones.h:363 msgid "Indian/Mahe" msgstr "印度洋/Mahe" #: ../calendar/zones.h:364 msgid "Indian/Maldives" msgstr "印度洋/马尔代夫" #: ../calendar/zones.h:365 msgid "Indian/Mauritius" msgstr "印度洋/毛里求斯" #: ../calendar/zones.h:366 msgid "Indian/Mayotte" msgstr "印度洋/马约特岛" #: ../calendar/zones.h:367 msgid "Indian/Reunion" msgstr "印度洋/留尼汪" #: ../calendar/zones.h:368 msgid "Pacific/Apia" msgstr "太平洋/阿皮亚" #: ../calendar/zones.h:369 msgid "Pacific/Auckland" msgstr "太平洋/奥克兰" #: ../calendar/zones.h:370 msgid "Pacific/Chatham" msgstr "太平洋/查塔姆群岛" #: ../calendar/zones.h:371 msgid "Pacific/Easter" msgstr "太平洋/复活节岛" #: ../calendar/zones.h:372 msgid "Pacific/Efate" msgstr "太平洋/埃法特岛" #: ../calendar/zones.h:373 msgid "Pacific/Enderbury" msgstr "太平洋/Enderbury" #: ../calendar/zones.h:374 msgid "Pacific/Fakaofo" msgstr "太平洋/Fakaofo" #: ../calendar/zones.h:375 msgid "Pacific/Fiji" msgstr "太平洋/斐济" #: ../calendar/zones.h:376 msgid "Pacific/Funafuti" msgstr "太平洋/富纳富提" #: ../calendar/zones.h:377 msgid "Pacific/Galapagos" msgstr "太平洋/加拉帕哥斯群岛" #: ../calendar/zones.h:378 msgid "Pacific/Gambier" msgstr "太平洋/Gambier" #: ../calendar/zones.h:379 msgid "Pacific/Guadalcanal" msgstr "太平洋/瓜达卡纳尔岛" #: ../calendar/zones.h:380 msgid "Pacific/Guam" msgstr "太平洋/关岛" #: ../calendar/zones.h:381 msgid "Pacific/Honolulu" msgstr "太平洋/火奴鲁鲁" #: ../calendar/zones.h:382 msgid "Pacific/Johnston" msgstr "太平洋/约翰斯顿" #: ../calendar/zones.h:383 msgid "Pacific/Kiritimati" msgstr "太平洋/Kiritimati" #: ../calendar/zones.h:384 msgid "Pacific/Kosrae" msgstr "太平洋/Kosrae" #: ../calendar/zones.h:385 msgid "Pacific/Kwajalein" msgstr "太平洋/夸贾林环礁" #: ../calendar/zones.h:386 msgid "Pacific/Majuro" msgstr "太平洋/Majuro" #: ../calendar/zones.h:387 msgid "Pacific/Marquesas" msgstr "太平洋/马克萨斯群岛" #: ../calendar/zones.h:388 msgid "Pacific/Midway" msgstr "太平洋/中途岛" #: ../calendar/zones.h:389 msgid "Pacific/Nauru" msgstr "太平洋/瑙鲁" #: ../calendar/zones.h:390 msgid "Pacific/Niue" msgstr "太平洋/纽埃岛" #: ../calendar/zones.h:391 msgid "Pacific/Norfolk" msgstr "太平洋/诺福克" #: ../calendar/zones.h:392 msgid "Pacific/Noumea" msgstr "太平洋/努美阿" #: ../calendar/zones.h:393 msgid "Pacific/Pago_Pago" msgstr "太平洋/帕果_帕果" #: ../calendar/zones.h:394 msgid "Pacific/Palau" msgstr "太平洋/帕劳" #: ../calendar/zones.h:395 msgid "Pacific/Pitcairn" msgstr "太平洋/皮特克恩岛" #: ../calendar/zones.h:396 msgid "Pacific/Ponape" msgstr "太平洋/Ponape" #: ../calendar/zones.h:397 msgid "Pacific/Port_Moresby" msgstr "太平洋/莫尔斯比港" #: ../calendar/zones.h:398 msgid "Pacific/Rarotonga" msgstr "太平洋/拉罗汤加岛" #: ../calendar/zones.h:399 msgid "Pacific/Saipan" msgstr "太平洋/塞班岛" #: ../calendar/zones.h:400 msgid "Pacific/Tahiti" msgstr "太平洋/塔希提" #: ../calendar/zones.h:401 msgid "Pacific/Tarawa" msgstr "太平洋/塔拉瓦岛" #: ../calendar/zones.h:402 msgid "Pacific/Tongatapu" msgstr "太平洋/Tongatapu" #: ../calendar/zones.h:403 msgid "Pacific/Truk" msgstr "太平洋/特鲁克" #: ../calendar/zones.h:404 msgid "Pacific/Wake" msgstr "太平洋/威克岛" #: ../calendar/zones.h:405 msgid "Pacific/Wallis" msgstr "太平洋/沃利斯" #: ../calendar/zones.h:406 msgid "Pacific/Yap" msgstr "太平洋/雅浦" #: ../composer/e-composer-actions.c:203 msgid "Save as..." msgstr "另存为..." #: ../composer/e-composer-actions.c:276 #: ../e-util/e-mail-signature-editor.c:308 msgid "_Close" msgstr "关闭(_C)" #: ../composer/e-composer-actions.c:278 msgid "Close the current file" msgstr "关闭当前文件" #: ../composer/e-composer-actions.c:283 msgid "New _Message" msgstr "新建信息(_M)" #: ../composer/e-composer-actions.c:285 msgid "Open New Message window" msgstr "打开新建信息窗口" #: ../composer/e-composer-actions.c:292 ../shell/e-shell-window-actions.c:937 msgid "Configure Evolution" msgstr "配置 Evolution" #: ../composer/e-composer-actions.c:299 msgid "Save the current file" msgstr "保存当前文件" #: ../composer/e-composer-actions.c:304 msgid "Save _As..." msgstr "另存为(_A)..." #: ../composer/e-composer-actions.c:306 msgid "Save the current file with a different name" msgstr "用不同的文件名保存当前文件" #: ../composer/e-composer-actions.c:313 msgid "Character _Encoding" msgstr "字符编码(_E)" #: ../composer/e-composer-actions.c:330 msgid "_Print..." msgstr "打印(_P)..." #: ../composer/e-composer-actions.c:337 msgid "Print Pre_view" msgstr "打印预览(_V)" #: ../composer/e-composer-actions.c:344 msgid "Save as _Draft" msgstr "另存为草稿(_D)" #: ../composer/e-composer-actions.c:346 msgid "Save as draft" msgstr "另存为草稿" #: ../composer/e-composer-actions.c:351 msgid "S_end" msgstr "发送(_E)" #: ../composer/e-composer-actions.c:353 msgid "Send this message" msgstr "发送这条信息" #: ../composer/e-composer-actions.c:361 msgid "PGP _Encrypt" msgstr "PGP 加密(_E)" #: ../composer/e-composer-actions.c:363 msgid "Encrypt this message with PGP" msgstr "用 PGP 加密该信息" #: ../composer/e-composer-actions.c:369 msgid "PGP _Sign" msgstr "PGP 签名(_S)" #: ../composer/e-composer-actions.c:371 msgid "Sign this message with your PGP key" msgstr "用您的 PGP 密钥签名该信息" #: ../composer/e-composer-actions.c:377 msgid "_Picture Gallery" msgstr "图片画廊(_P)" #: ../composer/e-composer-actions.c:379 msgid "Show a collection of pictures that you can drag to your message" msgstr "显示一组图片,您可以将它们拖放到您的信息中" #: ../composer/e-composer-actions.c:385 msgid "_Prioritize Message" msgstr "标为优先(_P)" #: ../composer/e-composer-actions.c:387 msgid "Set the message priority to high" msgstr "将信息设定为高优先级" #: ../composer/e-composer-actions.c:393 msgid "Re_quest Read Receipt" msgstr "请求已读回执(_Q)" #: ../composer/e-composer-actions.c:395 msgid "Get delivery notification when your message is read" msgstr "当您的信息被阅读时得到投递通知" #: ../composer/e-composer-actions.c:401 msgid "S/MIME En_crypt" msgstr "S/MIME 加密(_C)" #: ../composer/e-composer-actions.c:403 msgid "Encrypt this message with your S/MIME Encryption Certificate" msgstr "用您的 S/MIME 加密证书加密该信息" #: ../composer/e-composer-actions.c:409 msgid "S/MIME Sig_n" msgstr "S/MIME 签名(_N)" #: ../composer/e-composer-actions.c:411 msgid "Sign this message with your S/MIME Signature Certificate" msgstr "用您的 S/MIME 签名认证签名该信息" #: ../composer/e-composer-actions.c:417 msgid "_Bcc Field" msgstr "密件抄送域(_B)" #: ../composer/e-composer-actions.c:419 msgid "Toggles whether the BCC field is displayed" msgstr "是否显示密件抄送域" #: ../composer/e-composer-actions.c:425 msgid "_Cc Field" msgstr "抄送域(_C)" #: ../composer/e-composer-actions.c:427 msgid "Toggles whether the CC field is displayed" msgstr "是否显示抄送域" #: ../composer/e-composer-actions.c:433 msgid "_Reply-To Field" msgstr "回复至域(_R)" #: ../composer/e-composer-actions.c:435 msgid "Toggles whether the Reply-To field is displayed" msgstr "是否显示回复域" #: ../composer/e-composer-actions.c:494 msgid "Save Draft" msgstr "保存草稿" #: ../composer/e-composer-header-table.c:39 msgid "Enter the recipients of the message" msgstr "输入信息的收件人" #: ../composer/e-composer-header-table.c:41 msgid "Enter the addresses that will receive a carbon copy of the message" msgstr "输入将接收该信息副本的收件人地址" #: ../composer/e-composer-header-table.c:44 msgid "" "Enter the addresses that will receive a carbon copy of the message without " "appearing in the recipient list of the message" msgstr "输入将接收该信息副本,但不出现在收件人列表中的收件人地址" #: ../composer/e-composer-header-table.c:772 msgid "Fr_om:" msgstr "发件人(_O):" #: ../composer/e-composer-header-table.c:779 msgid "_Reply-To:" msgstr "回复到(_R):" #: ../composer/e-composer-header-table.c:784 msgid "_To:" msgstr "收件人(_T):" #: ../composer/e-composer-header-table.c:790 msgid "_Cc:" msgstr "抄送(_C):" #: ../composer/e-composer-header-table.c:796 msgid "_Bcc:" msgstr "密件抄送(_B):" #: ../composer/e-composer-header-table.c:801 msgid "_Post To:" msgstr "投递到(_P):" #: ../composer/e-composer-header-table.c:805 msgid "S_ubject:" msgstr "主题(_U):" #: ../composer/e-composer-header-table.c:813 #: ../mail/e-mail-config-identity-page.c:489 msgid "Si_gnature:" msgstr "签名(_G):" #: ../composer/e-composer-name-header.c:235 msgid "Click here for the address book" msgstr "单击此处以使用地址簿" #: ../composer/e-composer-post-header.c:184 msgid "Click here to select folders to post to" msgstr "单击此处以选择要投递到的文件夹" #: ../composer/e-msg-composer.c:879 #, c-format msgid "" "Cannot sign outgoing message: No signing certificate set for this account" msgstr "无法对寄出的信息签名:未对此帐号设置签名证书" #: ../composer/e-msg-composer.c:888 #, c-format msgid "" "Cannot encrypt outgoing message: No encryption certificate set for this " "account" msgstr "无法对寄出的信息加密:未对此帐号设置加密证书" #: ../composer/e-msg-composer.c:1569 ../composer/e-msg-composer.c:1981 msgid "Compose Message" msgstr "新建消息" #: ../composer/e-msg-composer.c:4249 msgid "" "The composer contains a non-text message body, which cannot be edited." msgstr "编写器含有不可编辑的非文本信体。" #: ../composer/e-msg-composer.c:4949 msgid "Untitled Message" msgstr "无标题信息" #: ../composer/mail-composer.error.xml.h:1 msgid "You cannot attach the file "{0}" to this message." msgstr "您无法将文件“{0}”作为这条信息的附件。" #: ../composer/mail-composer.error.xml.h:2 msgid "The file '{0}' is not a regular file and cannot be sent in a message." msgstr "文件“{0}”不是普通文件,无法在信息中发送。" #: ../composer/mail-composer.error.xml.h:3 msgid "Could not retrieve messages to attach from {0}." msgstr "无法从 {0} 获取要附加的信息。" #: ../composer/mail-composer.error.xml.h:4 msgid "Because "{1}"." msgstr "原因是“{1}”。" #: ../composer/mail-composer.error.xml.h:5 msgid "Do you want to recover unfinished messages?" msgstr "您是否想要恢复未完成的信息?" #: ../composer/mail-composer.error.xml.h:6 msgid "" "Evolution quit unexpectedly while you were composing a new message. " "Recovering the message will allow you to continue where you left off." msgstr "在您上次编写新信息时 Evolution 意外退出。恢复邮件将允许您继续完成。" #: ../composer/mail-composer.error.xml.h:7 msgid "_Do not Recover" msgstr "不恢复(_D)" #: ../composer/mail-composer.error.xml.h:8 msgid "_Recover" msgstr "恢复(_R)" #: ../composer/mail-composer.error.xml.h:9 msgid "Could not save to autosave file "{0}"." msgstr "无法保存到自动保存文件“{0}”。" #: ../composer/mail-composer.error.xml.h:10 msgid "Error saving to autosave because "{1}"." msgstr "保存到自动保存出错,原因是“{1}”。" #: ../composer/mail-composer.error.xml.h:11 msgid "Download in progress. Do you want to send the mail?" msgstr "下载进行中。您想要发送邮件吗?" #: ../composer/mail-composer.error.xml.h:12 msgid "" " There are few attachments getting downloaded. Sending the mail will cause " "the mail to be sent without those pending attachments " msgstr " 附件正在下载中。发送邮件将使得邮件发送时无法包含后续的附件 " #: ../composer/mail-composer.error.xml.h:14 msgid "" "Are you sure you want to discard the message, titled '{0}', you are " "composing?" msgstr "您确定想要丢弃您正在编写的标题为“{0}”的信息吗?" #: ../composer/mail-composer.error.xml.h:15 msgid "" "Closing this composer window will discard the message permanently, unless " "you choose to save the message in your Drafts folder. This will allow you to " "continue the message at a later date." msgstr "关闭此编写窗口将会永久丢弃信息,除非您选择在草稿文件夹中保存这条信息。这允许您在稍后继续编写信息。" #. Response codes were chosen somewhat arbitrarily. #: ../composer/mail-composer.error.xml.h:18 msgid "_Continue Editing" msgstr "继续编辑(_C)" #: ../composer/mail-composer.error.xml.h:19 msgid "_Save Draft" msgstr "保存草稿(_S)" #: ../composer/mail-composer.error.xml.h:20 msgid "Could not create message." msgstr "无法创建信息。" #: ../composer/mail-composer.error.xml.h:21 msgid "" "Because "{0}", you may need to select different mail options." msgstr "由于“{0}”,您可能要选择不同的邮件选项。" #: ../composer/mail-composer.error.xml.h:22 msgid "Could not read signature file "{0}"." msgstr "无法读取签名文件“{0}”。" #: ../composer/mail-composer.error.xml.h:23 msgid "All accounts have been removed." msgstr "已经删除了全部帐号。" #: ../composer/mail-composer.error.xml.h:24 msgid "You need to configure an account before you can compose mail." msgstr "在您可以撰写邮件之前您需要配置一个帐号。" #: ../composer/mail-composer.error.xml.h:25 msgid "An error occurred while saving to your Outbox folder." msgstr "在保存到您的发件箱文件夹时出现了一个错误。" #: ../composer/mail-composer.error.xml.h:26 msgid "" "The reported error was "{0}". The message has not been sent." msgstr "报告的错误为“{0}”。信息很可能没有发送。" #: ../composer/mail-composer.error.xml.h:27 msgid "An error occurred while saving to your Drafts folder." msgstr "在保存到您的草稿文件夹时出现了一个错误。" #: ../composer/mail-composer.error.xml.h:28 msgid "" "The reported error was "{0}". The message has most likely not been " "saved." msgstr "报告的错误为“{0}”。信息很可能没有保存。" #: ../composer/mail-composer.error.xml.h:29 msgid "An error occurred while sending. How do you want to proceed?" msgstr "在发送时出错了错误。您想继续吗?" #: ../composer/mail-composer.error.xml.h:30 ../mail/mail.error.xml.h:156 msgid "The reported error was "{0}"." msgstr "报告的错误为“{0}”。" #: ../composer/mail-composer.error.xml.h:31 msgid "_Save to Outbox" msgstr "保存到发件箱(_S)" #: ../composer/mail-composer.error.xml.h:32 msgid "_Try Again" msgstr "重试(_T)" #: ../composer/mail-composer.error.xml.h:33 msgid "Your message was sent, but an error occurred during post-processing." msgstr "您的消息已发送,但在处理时出现了一个错误。" #: ../composer/mail-composer.error.xml.h:34 msgid "Saving message to Outbox." msgstr "把信息保存到发件箱中。" #: ../composer/mail-composer.error.xml.h:35 msgid "" "The message will be saved to your local Outbox folder, because the " "destination service is currently unavailable. You can send the message by " "clicking the Send/Receive button in Evolution's toolbar." msgstr "暂时无法接通对方服务器,信息将保存到“发件箱”文件夹中。稍后您可以点击 Evolution 工具栏中的“发送/接收”按钮再次发送。" #: ../data/evolution-alarm-notify.desktop.in.in.h:1 msgid "Evolution Alarm Notify" msgstr "Evolution 提醒通知" #: ../data/evolution-alarm-notify.desktop.in.in.h:2 msgid "Calendar event notifications" msgstr "日历事件信息" #: ../data/evolution.desktop.in.in.h:1 ../mail/e-mail-browser.c:1033 #: ../modules/mailto-handler/evolution-mailto-handler.c:212 #: ../shell/e-shell-window-private.c:243 msgid "Evolution" msgstr "Evolution" #: ../data/evolution.desktop.in.in.h:2 ../shell/e-shell-window-actions.c:83 msgid "Groupware Suite" msgstr "Groupwise 套件" #: ../data/evolution.desktop.in.in.h:3 msgid "Evolution Mail and Calendar" msgstr "Evolution 邮件及日历" #: ../data/evolution.desktop.in.in.h:4 msgid "Manage your email, contacts and schedule" msgstr "配置您的电子邮件,联系人和日程表" #: ../data/evolution.desktop.in.in.h:5 msgid "mail;calendar;contact;addressbook;task;" msgstr "mail;calendar;contact;addressbook;task;邮件;邮箱;日历;日程表;联系人;地址簿;任务列表;" #: ../data/evolution.desktop.in.in.h:6 msgid "Compose New Message" msgstr "撰写新消息" #: ../data/evolution.desktop.in.in.h:7 ../e-util/e-name-selector-dialog.c:453 #: ../modules/addressbook/e-book-shell-backend.c:304 #: ../modules/addressbook/e-book-shell-view.c:372 msgid "Contacts" msgstr "联系人" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:1 msgid "Enable address formatting" msgstr "启用地址格式" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:2 msgid "" "Whether addresses should be formatted according to standard in their " "destination country" msgstr "是否根据所在国家标准对地址进行格式化" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:3 msgid "Autocomplete length" msgstr "自动补全长度" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:4 msgid "" "The number of characters that must be typed before Evolution will attempt to " "autocomplete." msgstr "在 Evolution 试图进行自动补全之前应该输入多少个字符。" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:5 msgid "Show autocompleted name with an address" msgstr "显示自动完成的名称和地址" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:6 msgid "" "Whether force showing the mail address with the name of the autocompleted " "contact in the entry." msgstr "在条目里是否强制显示自动完成的联系人的邮件地址和自动完成的名称" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:7 msgid "URI for the folder last used in the select names dialog" msgstr "选择名称对话框中上次使用的文件夹 URI" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:8 msgid "URI for the folder last used in the select names dialog." msgstr "选择名称对话框中上次使用的文件夹 URI。" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:9 msgid "Contact layout style" msgstr "联系人布局风格" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:10 msgid "" "The layout style determines where to place the preview pane in relation to " "the contact list. \"0\" (Classic View) places the preview pane below the " "contact list. \"1\" (Vertical View) places the preview pane next to the " "contact list." msgstr "" "布局样式决定了在哪里放置联系人列表的预览面板。“0”(经典视图)会把预览面板放置在联系人列表下面。“1”(竖直视图)会把预览面板放置在联系人列表旁边。" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:11 msgid "Contact preview pane position (horizontal)" msgstr "联系人预览面板位置(水平)" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:12 msgid "Position of the contact preview pane when oriented horizontally." msgstr "设为水平时联系人预览窗口的位置" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:13 msgid "Contact preview pane position (vertical)" msgstr "联系人预览面板位置(竖直)" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:14 msgid "Position of the contact preview pane when oriented vertically." msgstr "设为竖直时联系人预览窗口的位置" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:15 msgid "Show maps" msgstr "显示地图" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:16 msgid "Whether to show maps in preview pane" msgstr "是否在预览面板中显示地图" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:17 msgid "Primary address book" msgstr "主地址薄" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:18 msgid "" "The UID of the selected (or \"primary\") address book in the sidebar of the " "\"Contacts\" view" msgstr "侧栏“联系人”视图中所选定的地址簿的 UID" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:19 msgid "Show preview pane" msgstr "显示预览面板" #: ../data/org.gnome.evolution.addressbook.gschema.xml.in.h:20 msgid "Whether to show the preview pane." msgstr "是否显示预览面板。" #: ../data/org.gnome.evolution.bogofilter.gschema.xml.in.h:1 msgid "Convert mail messages to Unicode" msgstr "将邮件信息转换为 Unicode" #: ../data/org.gnome.evolution.bogofilter.gschema.xml.in.h:2 msgid "" "Convert message text to Unicode UTF-8 to unify spam/ham tokens coming from " "different character sets." msgstr "将信息文本转换到 Unicode UTF-8 以一致化来自于不同字符集的垃圾信息特征。" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:1 msgid "Save directory for reminder audio" msgstr "保存提醒音频的目录" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:2 msgid "Directory for saving reminder audio files" msgstr "保存提醒音频文件的目录" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:3 msgid "Birthday and anniversary reminder value" msgstr "生日和纪念日提醒值" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:4 msgid "Number of units for determining a birthday or anniversary reminder" msgstr "生日与纪念日提醒所使用的时间单位" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:5 msgid "Birthday and anniversary reminder units" msgstr "生日和纪念日提醒单位" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:6 msgid "" "Units for a birthday or anniversary reminder, \"minutes\", \"hours\" or " "\"days\"" msgstr "生日与纪念日提醒所使用的时间单位,如“分钟”“小时”或“天”" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:7 msgid "Compress weekends in month view" msgstr "在月视图中压缩周末" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:8 msgid "" "Whether to compress weekends in the month view, which puts Saturday and " "Sunday in the space of one weekday" msgstr "是否在月视图中压缩周末空间,即是否将周六和周日压缩成一个工作日的大小" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:9 msgid "Ask for confirmation when deleting items" msgstr "删除项时要求确认" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:10 msgid "Whether to ask for confirmation when deleting an appointment or task" msgstr "删除日程或任务时是否要求确认" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:11 msgid "Confirm expunge" msgstr "确认销毁" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:12 msgid "Whether to ask for confirmation when expunging appointments and tasks" msgstr "擦除日程或任务时是否要求确认" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:13 msgid "Month view vertical pane position" msgstr "月视图中竖直面板的位置" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:14 msgid "" "Position of the vertical pane, between the calendar lists and the date " "navigator calendar" msgstr "纵向面板的位置,位于日程列表和日程详情区域之间" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:15 msgid "Workday end hour" msgstr "工作日结束小时" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:16 msgid "Hour the workday ends on, in twenty four hour format, 0 to 23" msgstr "工作日日程结束时间,24小时格式,0到23" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:17 msgid "Workday end minute" msgstr "工作日结束分钟" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:18 msgid "Minute the workday ends on, 0 to 59." msgstr "工作日结束的分钟,0 到 59。" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:19 msgid "Workday start hour" msgstr "工作日开始小时" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:20 msgid "Hour the workday starts on, in twenty four hour format, 0 to 23." msgstr "工作日开始的小时,以 24 小时格式表示,0 到 23。" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:21 msgid "Workday start minute" msgstr "工作日开始分钟" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:22 msgid "Minute the workday starts on, 0 to 59." msgstr "工作日开始的分钟,0 到 59。" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:23 msgid "The second timezone for a Day View" msgstr "日视图的第二时区" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:24 msgid "" "Shows the second time zone in a Day View, if set. Value is similar to one " "used in a 'timezone' key" msgstr "在单日视图中展示第二时区。与“时区”键的值类似。" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:25 msgid "Recently used second time zones in a Day View" msgstr "日视图中最近是用过的第二时区" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:26 msgid "List of recently used second time zones in a Day View" msgstr "目前正在日视图中使用的第二时区列表。" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:27 msgid "Maximum number of recently used timezones to remember" msgstr "记忆最近使用时区数量的最大值" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:28 msgid "" "Maximum number of recently used timezones to remember in a 'day-second-" "zones' list" msgstr "记录在日视图第二时区列表中的时区数量最大值" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:29 msgid "Default reminder value" msgstr "默认提醒值" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:30 msgid "Number of units for determining a default reminder" msgstr "默认提醒所使用的时间单位" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:31 msgid "Default reminder units" msgstr "默认提醒单位" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:32 msgid "Units for a default reminder, \"minutes\", \"hours\" or \"days\"" msgstr "生日与纪念日提醒所使用的时间单位,如“分钟”“小时”或“天”" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:33 msgid "Show categories field in the event/meeting/task editor" msgstr "在事件/会议/任务编辑器中显示分类域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:34 msgid "Whether to show categories field in the event/meeting editor" msgstr "是否在事件/会议编辑器中显示分类域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:35 msgid "Show Role field in the event/task/meeting editor" msgstr "在事件/任务/会议编辑器中显示角色域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:36 msgid "Whether to show role field in the event/task/meeting editor" msgstr "是否在事件/任务/会议中显示角色域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:37 msgid "Show RSVP field in the event/task/meeting editor" msgstr "在事件/任务/会议编辑器中显示请回复域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:38 msgid "Whether to show RSVP field in the event/task/meeting editor" msgstr "是否在事件/任务/会议编辑器中显示请回复域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:39 msgid "Show status field in the event/task/meeting editor" msgstr "在事件/任务/会议编辑器中显示状态域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:40 msgid "Whether to show status field in the event/task/meeting editor" msgstr "是否在事件/任务/会议编辑器中显示状态域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:41 msgid "Show timezone field in the event/meeting editor" msgstr "在事件/会议编辑器中显示时区域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:42 msgid "Whether to show timezone field in the event/meeting editor" msgstr "是否在事件/会议编辑器中显示时区域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:43 msgid "Show type field in the event/task/meeting editor" msgstr "在事件/任务/会议编辑器中显示类型域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:44 msgid "Whether to show type field in the event/task/meeting editor" msgstr "是否在事件/任务/会议编辑器中显示类型域" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:45 msgid "Hide completed tasks" msgstr "隐藏已完成的任务" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:46 msgid "Whether to hide completed tasks in the tasks view" msgstr "是否在任务视图中隐藏已完成任务" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:47 msgid "Hide task units" msgstr "隐藏任务单位" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:48 msgid "" "Units for determining when to hide tasks, \"minutes\", \"hours\" or \"days\"" msgstr "隐藏任务事项时所使用的时间单位,如“分钟”“小时”或“天”" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:49 msgid "Hide task value" msgstr "隐藏任务值" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:50 msgid "Number of units for determining when to hide tasks" msgstr "隐藏任务事项时所使用的时间单位" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:51 msgid "Horizontal pane position" msgstr "水平面板位置" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:52 msgid "" "Position of the horizontal pane, between the date navigator calendar and the " "task list when not in the month view, in pixels" msgstr "纵向面板位置信息,单位为像素。该面板在非月份视图时位于日期选择器和任务列表之间" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:53 msgid "Last reminder time" msgstr "上次提醒时间" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:54 msgid "Time the last reminder ran, in time_t" msgstr "最近提醒的运行时间 time_t" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:55 msgid "Marcus Bains Line Color - Day View" msgstr "Marcus Bains 线颜色 - 日视图" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:56 msgid "Color to draw the Marcus Bains line in the Day View" msgstr "日视图中当前时间指示线的颜色" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:57 msgid "Marcus Bains Line Color - Time bar" msgstr "Marcus Bains 线颜色 - 日期栏" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:58 msgid "" "Color to draw the Marcus Bains Line in the Time bar (empty for default)" msgstr "时间条中当前时间指示线的颜色(留空表示采用默认值)" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:59 msgid "Marcus Bains Line" msgstr "Marcus Bains 线" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:60 msgid "" "Whether to draw the Marcus Bains Line (line at current time) in the calendar" msgstr "是否在日程表中绘出当前时间指示线" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:61 msgid "Memo preview pane position (horizontal)" msgstr "备忘预览面板的水平位置" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:62 msgid "Position of the task preview pane when oriented horizontally" msgstr "纵向显示时任务预览面板所处的位置" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:63 msgid "Memo layout style" msgstr "备忘外观风格" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:64 msgid "" "The layout style determines where to place the preview pane in relation to " "the memo list. \"0\" (Classic View) places the preview pane below the memo " "list. \"1\" (Vertical View) places the preview pane next to the memo list" msgstr "" "此布局风格选项决定了预览面板与备忘列表的位置关系。\"0\" 为经典视图,预览面板位于备忘列表下方。\"1\" 为纵向视图,预览面板与备忘列表并列" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:65 msgid "Memo preview pane position (vertical)" msgstr "备忘预览面板的竖直位置" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:66 msgid "Position of the memo preview pane when oriented vertically" msgstr "纵向显示时备忘录预览列表的位置" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:67 msgid "Month view horizontal pane position" msgstr "月视图水平面板的位置" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:68 msgid "" "Position of the horizontal pane, between the view and the date navigator " "calendar and task list in the month view, in pixels" msgstr "纵向面板位置信息,单位为像素。该面板在月份视图下位于日期选择器和任务列表之间" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:69 msgid "Scroll Month View by a week, not by a month" msgstr "以周为单位滚动月视图,而非以月为单位" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:70 msgid "Whether to scroll a Month View by a week, not by a month" msgstr "是否以周为单位滚动月试图,而非以月为单位" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:71 msgid "Reminder programs" msgstr "提醒程序" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:72 msgid "Programs that are allowed to be run by reminders" msgstr "允许提醒机制调用的程序" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:73 msgid "Show display reminders in notification tray" msgstr "在通知托盘中显示提醒" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:74 msgid "Whether or not to use the notification tray for display reminders" msgstr "是否使用系统通知托盘来显示提醒" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:75 msgid "Preferred New button item" msgstr "“新建”按钮偏好" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:76 msgid "Name of the preferred New toolbar button item" msgstr "工具栏“新建”按钮名称" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:77 msgid "Primary calendar" msgstr "首选日历" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:78 msgid "" "The UID of the selected (or \"primary\") calendar in the sidebar of the " "\"Calendar\" view" msgstr "“日历”视图下,应显示在侧栏中的日历 UID" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:79 msgid "Primary memo list" msgstr "首选备忘列表" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:80 msgid "" "The UID of the selected (or \"primary\") memo list in the sidebar of the " "\"Memos\" view" msgstr "“备忘”视图下,应显示在侧栏中的备忘列表 UID" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:81 msgid "Primary task list" msgstr "首选任务列表" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:82 msgid "" "The UID of the selected (or \"primary\") task list in the sidebar of the " "\"Tasks\" view" msgstr "“任务”视图下,应显示在侧栏中的任务列表 UID" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:83 msgid "Free/busy template URL" msgstr "忙/闲模板 URL" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:85 #, no-c-format msgid "" "The URL template to use as a free/busy data fallback, %u is replaced by the " "user part of the mail address and %d is replaced by the domain" msgstr "默认的繁忙/空闲情况信息 URL 模板,%u 为邮件地址中的用户名部分,%d 为域名" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:86 msgid "Recurrent Events in Italic" msgstr "以斜体显示重复事件" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:87 msgid "" "Show days with recurrent events in italic font in bottom left calendar" msgstr "在日程表左下方用斜体显示有重复事件的日期" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:88 msgid "Search range for time-based searching in years" msgstr "按照时间进行搜索时的年代范围" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:89 msgid "" "How many years can the time-based search go forward or backward from " "currently selected day when searching for another occurrence; default is ten " "years" msgstr "在按照时间进行搜索时,以当前日期为基准向前或向后查找的时间范围;默认值为十年" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:90 msgid "Show appointment end times in week and month views" msgstr "在周视图和月视图中显示约会结束时间" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:91 msgid "Whether to display the end time of events in the week and month views" msgstr "是否在周视图和月视图中显示日程事件的结束时间" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:92 msgid "Show the memo preview pane" msgstr "显示“备忘预览”面板" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:93 msgid "If \"true\", show the memo preview pane in the main window" msgstr "如果为 \"true\",将在主窗口中显示备忘面板" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:94 msgid "Show the task preview pane" msgstr "显示“任务预览”面板" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:95 msgid "If \"true\", show the task preview pane in the main window" msgstr "如果为 \"true\",将在主窗口中显示任务面板" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:96 msgid "Show week numbers in Day View, Work Week View, and Date Navigator" msgstr "在日视图、工作日视图和日期导航中显示周数" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:97 msgid "Whether to show week numbers in various places in the Calendar" msgstr "是否在日程表中显示周序号" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:98 msgid "Vertical position for the tag pane" msgstr "标签面板的纵向位置" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:99 msgid "Highlight tasks due today" msgstr "高亮显示将于今日结束的任务项目" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:100 msgid "" "Whether highlight tasks due today with a special color (task-due-today-color)" msgstr "是否以特定颜色 (task-due-today-color) 高亮显示将于今天结束的任务项目" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:101 msgid "Tasks due today color" msgstr "今天到期的任务颜色" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:102 msgid "" "Background color of tasks that are due today, in \"#rrggbb\" format. Used " "together with task-due-today-highlight" msgstr "今日结束的任务背景色,以 \"#rrggbb\" 格式表示。与 task-due-today-highlight 共同使用" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:103 msgid "Task preview pane position (horizontal)" msgstr "任务预览面板的水平位置" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:104 msgid "Task layout style" msgstr "任务外观风格" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:105 msgid "" "The layout style determines where to place the preview pane in relation to " "the task list. \"0\" (Classic View) places the preview pane below the task " "list. \"1\" (Vertical View) places the preview pane next to the task list" msgstr "" "此布局风格选项决定了预览面板与任务列表的位置关系。\"0\" 为经典视图,预览面板位于任务列表下方。\"1\" 为纵向视图,预览面板与任务列表并列" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:106 msgid "Task preview pane position (vertical)" msgstr "任务预览面板的竖直位置" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:107 msgid "Position of the task preview pane when oriented vertically" msgstr "纵向显示时任务预览面板的位置信息" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:108 msgid "Highlight overdue tasks" msgstr "高亮已超时任务" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:109 msgid "" "Whether highlight overdue tasks with a special color (task-overdue-color)" msgstr "是否以特定颜色 (task-overdue-color) 高亮显示已超时任务" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:110 msgid "Overdue tasks color" msgstr "延期任务的颜色" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:111 msgid "" "Background color of tasks that are overdue, in \"#rrggbb\" format. Used " "together with task-overdue-highlight." msgstr "用于显示已超时任务的背景色,以 \"#rrggbb\" 格式表示。将与 task-overdue-highlight 共同使用。" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:112 msgid "Time divisions" msgstr "时间分割" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:113 msgid "Intervals shown in Day and Work Week views, in minutes" msgstr "日期和工作周视图中的分段时间间隔,以分钟为单位" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:114 msgid "Timezone" msgstr "时区" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:115 msgid "" "The default timezone to use for dates and times in the calendar, as an " "untranslated Olson timezone database location like \"America/New York\"" msgstr "用于显示日期和时间信息的默认时区,请使用 Olson 时区信息库中的标准信息格式,如 \"China/Beijing\"" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:116 msgid "Twenty four hour time format" msgstr "二十四小时时间格式" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:117 msgid "" "Whether to show times in twenty four hour format instead of using am/pm" msgstr "是否以二十四小时格式显示时间,而不是使用“上午/下午”" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:118 msgid "Birthday and anniversary reminder" msgstr "生日和纪念日提醒" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:119 msgid "Whether to set a reminder for birthdays and anniversaries" msgstr "是否为生日和纪念日建立提醒" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:120 msgid "Default appointment reminder" msgstr "默认约会提醒" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:121 msgid "Whether to set a default reminder for appointments" msgstr "是否为日程信息建立默认提醒" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:122 msgid "Use system timezone" msgstr "使用系统时区" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:123 msgid "Use the system timezone instead of the timezone selected in Evolution" msgstr "使用系统时区信息而非在 Evolution 中选定的时区信息" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:124 msgid "First day of the week" msgstr "一周的第一天" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:125 msgid "Monday is a work day" msgstr "周一为工作日" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:126 msgid "Tuesday is a work day" msgstr "周二为工作日" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:127 msgid "Wednesday is a work day" msgstr "周三为工作日" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:128 msgid "Thursday is a work day" msgstr "周四为工作日" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:129 msgid "Friday is a work day" msgstr "周五为工作日" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:130 msgid "Saturday is a work day" msgstr "周六为工作日" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:131 msgid "Sunday is a work day" msgstr "周日为工作日" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:132 msgid "(Deprecated) First day of the week, from Sunday (0) to Saturday (6)" msgstr "(已弃用)一周的第一天,从周日(0)到周六(6)" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:133 msgid "" "This key was deprecated in version 3.10 and should no longer be used. Use " "\"week-start-day-name\" instead." msgstr "此键值在 3.10 版中已经弃用。请使用 \"week-start-day-name\" 作为替代。" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:134 msgid "(Deprecated) Work days" msgstr "(已弃用)工作日" #: ../data/org.gnome.evolution.calendar.gschema.xml.in.h:135 msgid "" "Days on which the start and end of work hours should be indicated. (This key " "was deprecated in version 3.10 and should no longer be used. Use the \"work-" "day-monday\", \"work-day-tuesday\", etc. keys instead.)" msgstr "" "需要应用工作开始和结束时间信息的日期。(此键值在 3.10 版中已经弃用,请使用 \"work-day-monday\" 和 \"work-day-" "tuesday\" 等键值作为替代)" #: ../data/org.gnome.evolution.gschema.xml.in.h:1 msgid "Previous Evolution version" msgstr "旧版本 Evolution" #: ../data/org.gnome.evolution.gschema.xml.in.h:2 msgid "" "The most recently used version of Evolution, expressed as " "\"major.minor.micro\". This is used for data and settings migration from " "older to newer versions." msgstr "" "最近使用过的旧版 Evolution 版本号,以 \"major.minor.micro\" 格式标注。用于从旧版向新版迁移日程和设置信息。" #: ../data/org.gnome.evolution.gschema.xml.in.h:3 msgid "List of disabled plugins" msgstr "已禁用的插件列表" #: ../data/org.gnome.evolution.gschema.xml.in.h:4 msgid "The list of disabled plugins in Evolution" msgstr "已禁用的 Evolution 插件列表" #: ../data/org.gnome.evolution.gschema.xml.in.h:5 msgid "The window's X coordinate" msgstr "窗口的 X 坐标" #: ../data/org.gnome.evolution.gschema.xml.in.h:6 msgid "The window's Y coordinate" msgstr "窗口的 Y 坐标" #: ../data/org.gnome.evolution.gschema.xml.in.h:7 msgid "The window's width in pixels" msgstr "以像素为单位的窗口宽度" #: ../data/org.gnome.evolution.gschema.xml.in.h:8 msgid "The window's height in pixels" msgstr "以像素为单位的窗口高度" #: ../data/org.gnome.evolution.gschema.xml.in.h:9 msgid "Whether the window is maximized" msgstr "是否最大化窗口" #: ../data/org.gnome.evolution.importer.gschema.xml.in.h:1 msgid "Gnome Calendar's calendar import done" msgstr "已完成导入 Gnome Calendar 中的日程信息" #: ../data/org.gnome.evolution.importer.gschema.xml.in.h:2 msgid "Whether calendar from Gnome Calendar has been imported or not" msgstr "是否已从 Gnome Calendar 中导入日程信息" #: ../data/org.gnome.evolution.importer.gschema.xml.in.h:3 msgid "Gnome Calendar's tasks import done" msgstr "已完成导入 Gnome Calendar 中的任务信息" #: ../data/org.gnome.evolution.importer.gschema.xml.in.h:4 msgid "Whether tasks from Gnome Calendar have been imported or not" msgstr "是否已从 Gnome Calendar 中导入任务信息" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:1 msgid "Check whether Evolution is the default mailer" msgstr "检查 Evolution 是否是默认邮件程序" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:2 msgid "" "Every time Evolution starts, check whether or not it is the default mailer." msgstr "每次启动 Evolution 的时候,检查它是否是默认邮件程序。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:3 msgid "Default charset in which to compose messages" msgstr "编写信息的默认字符集" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:4 msgid "Default charset in which to compose messages." msgstr "编写信息的默认字符集。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:5 msgid "Path where picture gallery should search for its content" msgstr "图像库搜索内容的路径" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:6 msgid "" "This value can be an empty string, which means it'll use the system Picture " "folder, usually set to ~/Pictures. This folder will be also used when the " "set path is not pointing to the existent folder" msgstr "" "当这个值为空时 Evolution 将使用系统默认图片文件夹,通常路径为“~/图片”。如果路径信息中指定的文件夹不存在,则也会使用系统默认图片文件夹。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:7 msgid "Spell check inline" msgstr "内嵌拼写检查" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:8 msgid "Draw spelling error indicators on words as you type." msgstr "在您打字的时候就显示拼写错误标识。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:9 msgid "Automatic link recognition" msgstr "自动识别链接" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:10 msgid "Recognize links in text and replace them." msgstr "识别文本中的链接并进行替换。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:11 msgid "Automatic emoticon recognition" msgstr "自动识别表情图标" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:12 msgid "Recognize emoticons in text and replace them with images." msgstr "识别文本中的表情,并将其替换为图像。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:13 msgid "Attribute message" msgstr "归属消息" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:14 msgid "" "The text that is inserted when replying to a message, attributing the " "message to the original author" msgstr "需在回复消息时插入的文字,表示下方内容为原始消息作者所写" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:15 msgid "Forward message" msgstr "转发消息" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:16 msgid "" "The text that is inserted when forwarding a message, saying that the " "forwarded message follows" msgstr "需在转发消息时插入的文字,表示下方内容为转发" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:17 msgid "Original message" msgstr "原始消息" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:18 msgid "" "The text that is inserted when replying to a message (top posting), saying " "that the original message follows" msgstr "需在回复消息时插入的文字(顶部回复),表示下方内容为原始消息" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:19 msgid "Group Reply replies to list" msgstr "“组回复”是回复到邮件列表" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:20 msgid "" "Instead of the normal \"Reply to All\" behaviour, this option will make the " "'Group Reply' toolbar button try to reply only to the mailing list through " "which you happened to receive the copy of the message to which you're " "replying." msgstr "与普通的“回复全部”行为不同,这个选项使“组回复”工具按钮通过您正在回复的刚收到的信息只回复给邮件列表。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:21 msgid "Put the cursor at the bottom of replies" msgstr "将光标置于回复底部" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:22 msgid "" "Users get all up in arms over where the cursor should go when replying to a " "message. This determines whether the cursor is placed at the top of the " "message or the bottom." msgstr "用户常为回复信息时光标位置不定而恼火。这个选项决定了回复时光标位于消息顶部还是底部。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:23 msgid "Always request read receipt" msgstr "总是请求阅读收条" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:24 msgid "" "Whether a read receipt request gets added to every message by default." msgstr "是否默认对所有信息添加阅读收条请求。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:25 msgid "Send HTML mail by default" msgstr "默认以 HTML 发送邮件" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:26 msgid "Send HTML mail by default." msgstr "默认以 HTML 发送邮件。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:27 msgid "Spell checking color" msgstr "拼写检查颜色" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:28 msgid "Underline color for misspelled words when using inline spelling." msgstr "当使用行内拼写检查时,错误拼写单词的下划线的颜色。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:29 msgid "Spell checking languages" msgstr "拼写检查语言" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:30 msgid "List of dictionary language codes used for spell checking." msgstr "列出用来拼写检查的字典语言编码" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:31 msgid "Show \"Bcc\" field when sending a mail message" msgstr "在发送邮件信息时显示密件抄送域" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:32 msgid "" "Show the \"Bcc\" field when sending a mail message. This is controlled from " "the View menu when a mail account is chosen." msgstr "在发送邮件信息时显示密件抄送域。在选定了一个邮件帐号时可以在查看菜单中控制此功能。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:33 msgid "Show \"Cc\" field when sending a mail message" msgstr "在发送邮件信息时显示抄送域" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:34 msgid "" "Show the \"Cc\" field when sending a mail message. This is controlled from " "the View menu when a mail account is chosen." msgstr "在发送邮件信息时显示抄送域。在选定了一个邮件帐号时可以在查看菜单中控制此功能。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:35 msgid "Show \"Reply To\" field when sending a mail message" msgstr "发送邮件时显示“Reply To”(回复至)域" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:36 msgid "" "Show the \"Reply To\" field when sending a mail message. This is controlled " "from the View menu when a mail account is chosen." msgstr "在发送邮件信息时显示“Reply To”域。在选定了一个邮件帐号时可以在查看菜单中控制此功能。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:37 msgid "Show \"From\" field when posting to a newsgroup" msgstr "在发送内容到新闻组时显示发件人域" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:38 msgid "" "Show the \"From\" field when posting to a newsgroup. This is controlled from " "the View menu when a news account is chosen." msgstr "在发送内容到新闻组时显示发件人域。在选定了一个新闻组帐号时可以在查看菜单中控制此功能。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:39 msgid "Show \"Reply To\" field when posting to a newsgroup" msgstr "在发送内容到新闻组时显示“Reply To”(回复至)域" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:40 msgid "" "Show the \"Reply To\" field when posting to a newsgroup. This is controlled " "from the View menu when a news account is chosen." msgstr "在发送内容到新闻组时显示“Reply To”域。在选定了一个新闻组帐号时可以在查看菜单中控制此功能。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:41 msgid "Digitally sign replies when the original message is signed" msgstr "如果原始信息经过签名,则在回复信息时自动进行签名" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:42 msgid "" "Automatically enable PGP or S/MIME signatures when replying to a message " "which is also PGP or S/MIME signed." msgstr "如果原始信息经过 PGP 或 S/MIME 签名,则在回复信息时自动进行 PGP 或 S/MIME 签名" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:43 msgid "Encode filenames in an Outlook/GMail way" msgstr "以 Outlook/GMail 方式对文件名进行编码" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:44 msgid "" "Encode filenames in the mail headers same as Outlook or GMail do, to let " "them display correctly filenames with UTF-8 letters sent by Evolution, " "because they do not follow the RFC 2231, but use the incorrect RFC 2047 " "standard." msgstr "" "在邮件头中以 Outlook 或 GMail 的方式编码文件名,以便让这些邮件服务以 UTF-8 字符正确显示从 Evolution " "发出的文件名。Outlook 和 GMail 仍然采用 RFC 2047 标准,并未遵循 RFC 2231 标准。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:45 msgid "Put personalized signatures at the top of replies" msgstr "在回复的顶部添加个性签名" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:46 msgid "" "Users get all up in arms over where their signature should go when replying " "to a message. This determines whether the signature is placed at the top of " "the message or the bottom." msgstr "用户常为回复信息时签名位置不定而恼火。这个选项决定了回复时签名位于消息顶部还是底部。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:47 msgid "Do not add signature delimiter" msgstr "不添加签名分隔符" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:48 msgid "" "Set to TRUE in case you do not want to add signature delimiter before your " "signature when composing a mail." msgstr "如果您不想在您写邮件时签名以前添加签名分隔符,那么设置为真" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:49 msgid "Ignore list Reply-To:" msgstr "忽略邮件列表“回复至”域:" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:50 msgid "" "Some mailing lists set a Reply-To: header to trick users into sending " "replies to the list, even when they ask Evolution to make a private reply. " "Setting this option to TRUE will attempt to ignore such Reply-To: headers, " "so that Evolution will do as you ask it. If you use the private reply " "action, it will reply privately, while if you use the 'Reply to List' action " "it will do that. It works by comparing the Reply-To: header with a List-" "Post: header, if there is one." msgstr "" "一些邮件列表设置了 Reply-To 头来使用户发送的回复直接到邮件列表,即使用户希望 Evolution 来发送一个私人的回复。设置这个选项为 " "TRUE 将会试图忽略 Reply-To: 头,这样 Evolution " "将会像您要求的那样发送私人的回复。如果您使用私人的回复动作,它会进行私人的回复;而如果您使用“回复到列表”行为,它就会回复到列表。如果存在的话,它会比较 " "Reply-To: 和 List-Post: 来完成该目的。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:51 msgid "List of localized 'Re'" msgstr "回复指示前缀“Re”的本地化译名列表" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:52 msgid "" "Comma-separated list of localized 'Re' abbreviations to skip in a subject " "text when replying to a message, as an addition to the standard \"Re\" " "prefix. An example is 'SV,AV'." msgstr "" "回复邮件时,一般会在标题中加入缩写前缀“Re”,以下是需要进行自动识别的各种“Re”前缀本地化版本,以半角逗号进行分割,如“SV,AV”。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:53 msgid "Save file format for drag-and-drop operation" msgstr "通过拖放操作进行保存时所使用的文件格式" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:54 msgid "Can be either 'mbox' or 'pdf'." msgstr "可以是“mbox”或“pdf”。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:55 msgid "Show image animations" msgstr "显示图像动画" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:56 msgid "" "Enable animated images in HTML mail. Many users find animated images " "annoying and prefer to see a static image instead." msgstr "在 HTML 邮件中启用动画图像。很多用户感觉动画图像很烦人并且喜欢看静态图像而不是动态的。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:57 msgid "Ellipsize mode for folder names in side bar" msgstr "侧栏文件夹名的折叠省略模式" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:58 msgid "Enable or disable type ahead search feature" msgstr "启用或禁用自动前进功能" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:59 msgid "" "Enable the side bar search feature to allow interactive searching of folder " "names." msgstr "启用侧边栏搜索功能来实现文件夹名称的互动搜索" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:60 msgid "Enable or disable magic space bar" msgstr "启用或禁用魔术空格键" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:61 msgid "" "Enable this to use Space bar key to scroll in message preview, message list " "and folders." msgstr "启用以在信息预览、信息列表和文件夹中使用空格键。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:62 msgid "Enable to use a similar message list view settings for all folders" msgstr "启用以在所有文件夹中使用相似的信息列表视图设置" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:63 msgid "Enable to use a similar message list view settings for all folders." msgstr "启用以在所有文件夹中使用相似的信息列表视图设置。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:64 msgid "Mark citations in the message \"Preview\"" msgstr "在信息“预览”中标出引用" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:65 msgid "Mark citations in the message \"Preview\"." msgstr "在信息“预览”中标出引用。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:66 msgid "Citation highlight color" msgstr "引用突出颜色" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:67 msgid "Citation highlight color." msgstr "引用突出颜色。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:68 msgid "Enable/disable caret mode" msgstr "启用/禁用光标模式" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:69 msgid "Enable caret mode, so that you can see a cursor when reading mail." msgstr "启用光标模式,这样您在读取邮件时就能看到光标了。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:70 msgid "Default charset in which to display messages" msgstr "显示信息的默认字符集" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:71 msgid "Default charset in which to display messages." msgstr "显示信息的默认字符集。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:72 msgid "Automatically load images for HTML messages over HTTP" msgstr "自动从 HTTP 加载 HTML 消息中的图片" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:73 msgid "Show Animations" msgstr "显示动画" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:74 msgid "Show animated images as animations." msgstr "将动画图像显示为动画。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:75 msgid "Show all message headers" msgstr "显示全部信头" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:76 msgid "Show all the headers when viewing a messages." msgstr "查看信息时显示全部信头。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:77 msgid "List of headers to show when viewing a message." msgstr "查看消息时显示的邮件头信息列表" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:78 msgid "" "Each header is represented as a pair: the header name, and a boolean " "indicating whether the header is enabled. Disabled headers are not shown " "when viewing a message, but are still listed in Preferences." msgstr "" "每个邮件头信息都由一对数值表示:邮件头信息名称,和一个表示是否开启的布尔值。被禁用的邮件头信息不会在查看邮件时显示,但仍然会显示在“首选项”中。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:79 msgid "Show photo of the sender" msgstr "显示发件人照片" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:80 msgid "Show the photo of the sender in the message reading pane." msgstr "在信息阅读面板中显示发件人照片。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:81 msgid "Mark as Seen after specified timeout" msgstr "在指定超时过后标为已看" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:82 msgid "Mark as Seen after specified timeout." msgstr "在指定超时过后标为已看。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:83 msgid "Timeout for marking messages as seen" msgstr "自动将消息标记为已读的时间" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:84 msgid "Timeout in milliseconds for marking messages as seen." msgstr "在显示超过一定时间后自动将消息标记为已读,单位为毫秒。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:85 msgid "Sender email-address column in the message list" msgstr "在信息列表中显示 email 地址列" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:86 msgid "" "Show the email-address of the sender in a separate column in the message " "list." msgstr "在信息列表的以另外的列显示电子邮件的发送者。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:87 msgid "" "Determines whether to use the same fonts for both \"From\" and \"Subject\" " "lines in the \"Messages\" column in vertical view" msgstr "纵向视图下,是否在“消息”列中为“发件人”和“主题”使用同样的字体" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:88 msgid "" "Determines whether to use the same fonts for both \"From\" and \"Subject\" " "lines in the \"Messages\" column in vertical view." msgstr "决定是否在竖直视图中对“信息”列的“发件人”和“主题”行使用相同的字体。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:89 msgid "Show deleted messages in the message-list" msgstr "在信息列表中显示删除了的信息" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:90 msgid "Show deleted messages (with a strike-through) in the message-list." msgstr "在信息列表中显示删除了的信息(带有删除线)。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:91 msgid "Enable Unmatched search folder" msgstr "开启“未匹配”搜索文件夹" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:92 msgid "" "Enable Unmatched search folder within Search Folders. It does nothing if " "Search Folders are disabled." msgstr "在“搜索”文件夹中开启“未匹配”搜索文件夹。如果“搜索”文件夹已被禁用则本选项亦无效。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:93 msgid "Hides the per-folder preview and removes the selection" msgstr "隐藏单文件夹预览并移除选择" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:94 msgid "" "This key is read only once and reset to \"false\" after read. This unselects " "the mail in the list and removes the preview for that folder." msgstr "此键只被读取一次并在读取后被重设为 false。它取消选中列表中的邮件并移除相应文件夹的预览。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:95 msgid "Height of the message-list pane" msgstr "信息列表面板的高度" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:96 msgid "Height of the message-list pane." msgstr "信息列表面板的高度。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:97 msgid "Whether message headers are collapsed in the user interface" msgstr "是否在用户界面上折叠邮件头信息" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:98 msgid "Width of the message-list pane" msgstr "信息列表面板的高度" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:99 msgid "Width of the message-list pane." msgstr "信息列表面板的高度。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:100 msgid "Layout style" msgstr "布局样式" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:101 msgid "" "The layout style determines where to place the preview pane in relation to " "the message list. \"0\" (Classic View) places the preview pane below the " "message list. \"1\" (Vertical View) places the preview pane next to the " "message list." msgstr "" "布局样式决定了在哪里放置信息列表的预览面板。“0”(经典视图)会把预览面板放置在消息列表下面。“1”(竖直视图)会把预览面板放置在信息列表旁边。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:102 msgid "Variable width font" msgstr "变宽字体" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:103 msgid "The variable width font for mail display." msgstr "用于显示邮件的变宽字体。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:104 msgid "Terminal font" msgstr "终端字体" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:105 msgid "The terminal font for mail display." msgstr "邮件显示用的终端字体。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:106 msgid "Use custom fonts" msgstr "使用自定义字体" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:107 msgid "Use custom fonts for displaying mail." msgstr "使用自定义字体显示邮件。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:108 msgid "Compress display of addresses in TO/CC/BCC" msgstr "压缩 TO/CC/BCC 中地址的显示" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:109 msgid "" "Compress display of addresses in TO/CC/BCC to the number specified in " "address_count." msgstr "将 TO/CC/BCC 的显示地址数压缩到 address_count 所指定的数量。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:110 msgid "Number of addresses to display in TO/CC/BCC" msgstr "要在 TO/CC/BCC 中显示的地址数" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:111 msgid "" "This sets the number of addresses to show in default message list view, " "beyond which a '...' is shown." msgstr "设定默认信息视图中要显示的地址数,超过的部分显示为“...”。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:112 msgid "Thread the message-list based on Subject" msgstr "基于主题按线索编排信息列表" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:113 msgid "" "Whether or not to fall back on threading by subjects when the messages do " "not contain In-Reply-To or References headers." msgstr "是否在信息不包含 In-Reply-To 或 References 头时强制按主题编排线索。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:114 msgid "Default value for thread expand state" msgstr "话题的默认展开状态" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:115 msgid "" "This setting specifies whether the threads should be in expanded or " "collapsed state by default. Evolution requires a restart." msgstr "此设置指定了默认情况下线索是被展开还是被折叠。需要重启 Evolution。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:116 msgid "Whether sort threads based on latest message in that thread" msgstr "是否以线索中的最新信息来排序线索" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:117 msgid "" "This setting specifies whether the threads should be sorted based on latest " "message in each thread, rather than by message's date. Evolution requires a " "restart." msgstr "此设置指定了默认情况下是否将线索按线索中的最新信息而不是信息日期排序。需要重启 Evolution。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:118 msgid "Sort accounts alphabetically in a folder tree" msgstr "在文件夹列表中以首字母顺序排列帐号" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:119 msgid "" "Tells how to sort accounts in a folder tree used in a Mail view. When set to " "true accounts are sorted alphabetically, with an exception of On This " "Computer and Search folders, otherwise accounts are sorted based on an order " "given by a user" msgstr "" "设定邮件视图和文件夹列表中的帐户排列方式。当值为“true”时将以首字母顺序排列除“在此计算机中”和“搜索”文件夹之外的帐号,否则帐号将由用户自定义排列顺" "序。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:120 msgid "Log filter actions" msgstr "记录过滤动作" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:121 msgid "Log filter actions to the specified log file." msgstr "将过滤动作记录到指定日志文件。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:122 msgid "Logfile to log filter actions" msgstr "记录过滤动作的日志文件" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:123 msgid "Logfile to log filter actions." msgstr "记录过滤动作的日志文件。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:124 msgid "Flush Outbox after filtering" msgstr "在过滤之后清空输出窗口" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:125 msgid "" "Whether to flush Outbox after filtering is done. Outbox flush will happen " "only when there was used any 'Forward to' filter action and approximately " "one minute after the last action invocation." msgstr "在过滤结束后是否刷新发件箱。仅在使用过任何“转发给”过滤器行为并且在上次调用大约一分钟后进行发件箱刷新。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:126 msgid "Default forward style" msgstr "默认转发方式" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:127 msgid "Default reply style" msgstr "默认回复样式" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:128 msgid "Prompt on empty subject" msgstr "空主题时提示" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:129 msgid "" "Prompt the user when he or she tries to send a message without a Subject." msgstr "用户视图发送没有主题的信息时提示。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:130 msgid "Prompt when emptying the trash" msgstr "清空回收站时弹出警告" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:131 msgid "Prompt the user when he or she tries to empty the trash." msgstr "在用户试图清空回收站时弹出警告。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:132 msgid "Prompt when user expunges" msgstr "用户销毁时提示" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:133 msgid "Prompt the user when he or she tries to expunge a folder." msgstr "用户试图销毁文件夹时提示。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:134 msgid "Prompt before sending to recipients not entered as mail addresses" msgstr "下列接收者不能被识别为有效的电子邮件地址" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:135 msgid "" "It disables/enables the repeated prompts to warn that you are trying to send " "a message to recipients not entered as mail addresses" msgstr "禁用/启用以在您将信息的私人回复发送至邮件列表时发出警告。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:136 msgid "Prompt when user only fills Bcc" msgstr "用户只填入密件抄送时提示" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:137 msgid "Prompt when user tries to send a message with no To or Cc recipients." msgstr "当用户试图发送没有收件人或抄送的信息时提示。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:138 msgid "Prompt when user tries to send unwanted HTML" msgstr "当用户是否发送意外的 HTML 时提示" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:139 msgid "" "Prompt when user tries to send HTML mail to recipients that may not want to " "receive HTML mail." msgstr "当用户试图给不想接收 HTML 的联系人发送 HTML 邮件时提示。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:140 msgid "Prompt when user tries to open 10 or more messages at once" msgstr "当用户试图一次打开超过十封信时提示" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:141 msgid "" "If a user tries to open 10 or more messages at one time, ask the user if " "they really want to do it." msgstr "如果用户试图一次打开的信息大于等于十封,将会询问用户是否真的要这么做。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:142 msgid "Prompt while marking multiple messages" msgstr "标记多封信息时提示" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:143 msgid "Enable or disable the prompt whilst marking multiple messages." msgstr "禁用/启用对多条信息标记时的提示。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:144 msgid "Prompt when deleting messages in search folder" msgstr "删除搜索文件夹中的信息时提示" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:145 msgid "" "It disables/enables the repeated prompts to warn that deleting messages from " "a search folder permanently deletes the message, not simply removing it from " "the search results." msgstr "禁用/启用永久删除(而非简单地从结果中移除)搜索文件夹中的信息时不断弹出的提示。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:146 msgid "Asks whether to copy a folder by drag & drop in the folder tree" msgstr "询问是否以拖放方式在文件夹列表中复制文件夹" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:147 msgid "" "Possible values are: 'never' - do not allow copy with drag & drop of " "folders in folder tree, 'always' - allow copy with drag & drop of " "folders in folder tree without asking, or 'ask' - (or any other value) will " "ask user." msgstr "" "可用的值为:“从不”:不允许在文件夹列表中进行拖放复制操作,“总是允许”:允许在文件夹列表中不经询问进行拖放复制操作,“询问”或其它值:在进行拖放操作时询" "问用户。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:148 msgid "Asks whether to move a folder by drag & drop in the folder tree" msgstr "询问是否以拖放方式在文件夹列表中移动文件夹" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:149 msgid "" "Possible values are: 'never' - do not allow move with drag & drop of " "folders in folder tree, 'always' - allow move with drag & drop of " "folders in folder tree without asking, or 'ask' - (or any other value) will " "ask user." msgstr "" "可用的值为:“从不”:不允许在文件夹列表中进行拖放移动操作,“总是允许”:允许在文件夹列表中不经询问进行拖放移动操作,“询问”或其它值:在进行拖放操作时询" "问用户。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:150 msgid "Prompt when replying privately to list messages" msgstr "当对邮件列表作私人回复时提示" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:151 msgid "" "It disables/enables the repeated prompts to warn that you are sending a " "private reply to a message which arrived via a mailing list." msgstr "禁用/启用以在您将信息的私人回复发送至邮件列表时发出警告。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:152 msgid "Prompt when mailing list hijacks private replies" msgstr "当邮件列表劫持私人回复时提示" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:153 msgid "" "It disables/enables the repeated prompts to warn that you are trying sending " "a private reply to a message which arrived via a mailing list, but the list " "sets a Reply-To: header which redirects your reply back to the list" msgstr "当您正要发送一个通过邮件列表收到的信息的私人回复,而邮件头的 Reply-To: 重定向到了列表时,禁用或启用反复的警告提示。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:154 msgid "Prompt when replying to many recipients" msgstr "当向多个收件人回复时提示" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:155 msgid "" "It disables/enables the repeated prompts to warn that you are sending a " "reply to many people." msgstr "禁用或启用当您发送回复给许多人的时候的反复的警告提示。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:156 msgid "" "Policy for automatically closing the message browser window when forwarding " "or replying to the displayed message." msgstr "是否在转发或回复消息时自动关闭消息浏览窗口。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:157 msgid "Empty Trash folders on exit" msgstr "退出时清空废件箱" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:158 msgid "Empty all Trash folders when exiting Evolution." msgstr "退出 Evolution 时清空废件箱。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:159 msgid "Minimum days between emptying the trash on exit" msgstr "退出时清空废件箱的最少天数" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:160 msgid "Minimum time between emptying the trash on exit, in days." msgstr "退出时清空废件箱的最少天数。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:161 msgid "Last time Empty Trash was run" msgstr "上次清空废件箱的时间为:" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:162 msgid "" "The last time Empty Trash was run, in days since January 1st, 1970 (Epoch)." msgstr "上次清空废件箱的时间,以新纪元后的天数显示。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:163 msgid "" "Amount of time in seconds the error should be shown on the status bar." msgstr "在状态栏中显示错误的时间秒数。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:164 msgid "Level beyond which the message should be logged." msgstr "大于此级别的信息会被记录。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:165 msgid "" "This can have three possible values. \"0\" for errors. \"1\" for warnings. " "\"2\" for debug messages." msgstr "此选项有三种可能值:0-错误,1-警告,2-调试信息。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:166 msgid "Show original \"Date\" header value." msgstr "显示原始的邮件头日期值。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:167 msgid "" "Show the original \"Date\" header (with a local time only if the time zone " "differs). Otherwise always show \"Date\" header value in a user preferred " "format and local time zone." msgstr "显示原始的邮件头“Date” 值(如果时区不同附上本地时间)。否则总是按照用户偏好的格式和本地时区显示邮件头“Date” 值。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:168 msgid "List of Labels and their associated colors" msgstr "标签及其对应颜色的列表" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:169 msgid "" "List of labels known to the mail component of Evolution. The list contains " "strings containing name:color where color uses the HTML hex encoding." msgstr "列出了 Evolution 邮件组件已知的标签。列表中的字符串格式形如“名称:颜色”,其中颜色使用了 HTML 十六进制编码方式。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:170 msgid "Check incoming mail being junk" msgstr "检查收到的邮件是否是垃圾信息" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:171 msgid "Run junk test on incoming mail." msgstr "对收到的邮件运行垃圾信息测试。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:172 msgid "Empty Junk folders on exit" msgstr "退出时清空垃圾信息文件夹" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:173 msgid "Empty all Junk folders when exiting Evolution." msgstr "退出 Evolution 时清空垃圾信息。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:174 msgid "Minimum days between emptying the junk on exit" msgstr "退出时清空垃圾信息的最少天数" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:175 msgid "Minimum time between emptying the junk on exit, in days." msgstr "退出时清空垃圾信息的最少时间,以天计。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:176 msgid "Last time Empty Junk was run" msgstr "上次清空垃圾信息的时间为:" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:177 msgid "" "The last time Empty Junk was run, in days since January 1st, 1970 (Epoch)." msgstr "上次清空垃圾信息的时间,以自新纪元后的天数显示。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:178 msgid "The default plugin for Junk hook" msgstr "默认的垃圾信息钩子插件" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:179 msgid "" "This is the default junk plugin, even though there are multiple plugins " "enabled. If the default listed plugin is disabled, then it won't fall back " "to the other available plugins." msgstr "这是默认的垃圾信息插件,即使启用了多个插件。如果默认列出的插件被禁用,它不会缺省到其它可用的插件。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:180 msgid "Determines whether to lookup in address book for sender email" msgstr "决定是否在地址簿中查找发件人电子邮件" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:181 msgid "" "Determines whether to lookup the sender email in address book. If found, it " "shouldn't be a spam. It looks up in the books marked for autocompletion. It " "can be slow, if remote address books (like LDAP) are marked for " "autocompletion." msgstr "" "决定是否在地址簿中查找发件人电子邮件。如果找到,则不应是垃圾信息。这将在标记为自动补全的地址簿中查找,如果远程地址簿(如 " "LDAP)被标记为自动补全的话,可能会比较慢。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:182 msgid "" "Determines whether to look up addresses for junk filtering in local address " "book only" msgstr "决定是否仅在本地地址簿中查找地址进行垃圾信息过滤" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:183 msgid "" "This option is related to the key lookup_addressbook and is used to " "determine whether to look up addresses in local address book only to exclude " "mail sent by known contacts from junk filtering." msgstr "" "此选项与 lookup_addressbook 键值相关,用于决定是否查询本地地址簿以避免您认识的人给您发邮件而被垃圾邮件过滤器给过滤掉。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:184 msgid "Determines whether to use custom headers to check for junk" msgstr "决定是否使用自定义信头检测垃圾信息" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:185 msgid "" "Determines whether to use custom headers to check for junk. If this option " "is enabled and the headers are mentioned, it will be improve the junk " "checking speed." msgstr "决定是否使用自定义信头检测垃圾信息。如果此选项被启用且信头被设置的话,将提高垃圾信息检测速度。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:186 msgid "Custom headers to use while checking for junk." msgstr "自定义用以检查垃圾信息的信头。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:187 msgid "" "Custom headers to use while checking for junk. The list elements are string " "in the format \"headername=value\"." msgstr "自定义用以检查垃圾信息的信头。列表元素的字符串格式为“信头名=值”。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:188 msgid "UID string of the default account." msgstr "默认帐号的 UID 字符串。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:189 msgid "Save directory" msgstr "保存目录" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:190 msgid "Directory for saving mail component files." msgstr "保存邮件组件文件的目录。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:191 msgid "Composer load/attach directory" msgstr "编辑器加载/附件目录" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:192 msgid "Directory for loading/attaching files to composer." msgstr "邮件写作器用来加载/附加文件的目录" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:193 msgid "Check for new messages on start" msgstr "启动时检查新信息" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:194 msgid "" "Whether to check for new messages when Evolution is started. This includes " "also sending messages from Outbox." msgstr "是否在 Evolution 启动时检查新消息。滞留在“发件箱”中的消息也包括在内。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:195 msgid "Check for new messages in all active accounts" msgstr "检查所有活动账户的新信息" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:196 msgid "" "Whether to check for new messages in all active accounts regardless of the " "account \"Check for new messages every X minutes\" option when Evolution is " "started. This option is used only together with 'send_recv_on_start' option." msgstr "是否在启动时自动检查所有活跃帐号中的新消息。此选项只与“send_recv_on_start”选项共同使用。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:197 msgid "Server synchronization interval" msgstr "服务器同步间隔" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:198 msgid "" "Controls how frequently local changes are synchronized with the remote mail " "server. The interval must be at least 30 seconds." msgstr "控制与远程邮件服务器同步本地更改的频率。间隔必须至少为 30 秒。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:199 msgid "(Deprecated) Default forward style" msgstr "(已弃用)默认转发格式" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:200 msgid "" "This key was deprecated in version 3.10 and should no longer be used. Use " "\"forward-style-name\" instead." msgstr "此键值已在 3.10 版本中弃用。请使用 \"forward-style-name\" 作为替代。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:201 msgid "(Deprecated) Default reply style" msgstr "(已弃用)默认回复格式" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:202 msgid "" "This key was deprecated in version 3.10 and should no longer be used. Use " "\"reply-style-name\" instead." msgstr "此键值已在 3.10 版本中弃用。请使用 \"reply-style-name\" 作为替代。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:203 msgid "(Deprecated) List of custom headers and whether they are enabled." msgstr "(已弃用)自定义邮件头和启用状态列表。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:204 msgid "" "This key was deprecated in version 3.10 and should no longer be used. Use " "\"show-headers\" instead." msgstr "此键值已在 3.10 版本中弃用。请使用 \"show-headers\" 作为替代。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:205 msgid "(Deprecated) Load images for HTML messages over HTTP" msgstr "(已弃用)从 HTTP 加载 HTML 消息中的图片" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:206 msgid "" "This key was deprecated in version 3.10 and should no longer be used. Use " "\"image-loading-policy\" instead." msgstr "此键值已在 3.10 版本中弃用。请使用 \"image-loading-policy\" 作为替代。" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:207 msgid "" "(Deprecated) Asks whether to close the message window when the user forwards " "or replies to the message shown in the window" msgstr "(已弃用)当用户对当前窗口中消息进行转发或回复时,询问用户是否关闭窗口" #: ../data/org.gnome.evolution.mail.gschema.xml.in.h:208 msgid "" "This key was deprecated in version 3.10 and should no longer be used. Use " "\"browser-close-on-reply-policy\" instead." msgstr "此键值已在 3.10 版本中弃用。请使用 \"browser-close-on-reply-policy\" 作为替代。" #. Translators: This is the a list of words for the attach reminder plugin to look #. for in a message body. Please use any number of words here in your language that might #. indicate that an attachment should have been attached to the message. #: ../data/org.gnome.evolution.plugin.attachment-reminder.gschema.xml.in.h:4 msgid "['attachment','attaching','attached','enclosed']" msgstr "['attachment','attaching','attached','enclosed','附件','查收']" #: ../data/org.gnome.evolution.plugin.attachment-reminder.gschema.xml.in.h:5 msgid "" "List of clues for the attachment reminder plugin to look for in a message " "body" msgstr "信息主体中的用于附件提醒插件的线索列表" #: ../data/org.gnome.evolution.plugin.attachment-reminder.gschema.xml.in.h:6 msgid "" "List of clues for the attachment reminder plugin to look for in a message " "body." msgstr "信息主体中的用于附件提醒插件的线索列表。" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:1 msgid "Address book source" msgstr "地址簿来源" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:2 msgid "Address book to use for storing automatically synced contacts." msgstr "用于存放自动同步联系人的地址簿" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:3 msgid "Auto sync Pidgin contacts" msgstr "自动同步 Pidgin 联系人" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:4 msgid "Whether Pidgin contacts should be automatically synced." msgstr "是否自动同步 Pidgin 联系人" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:5 msgid "Enable autocontacts" msgstr "开启自动添加联系人" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:6 msgid "" "Whether contacts should be automatically added to the user's address book." msgstr "是否自动将联系人添加到用户地址簿中。" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:7 msgid "Pidgin address book source" msgstr "Pidgin 地址簿来源" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:8 msgid "" "Address book to use for storing automatically synced contacts from Pidgin." msgstr "用于存放从 Pidgin 同步所得联系人的地址簿" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:9 msgid "Pidgin check interval" msgstr "Pidgin 检查时间间隔" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:10 msgid "Check interval for Pidgin syncing of contacts." msgstr "检查与 Pidgin 之间联系人同步的时间间隔" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:11 msgid "Pidgin last sync MD5" msgstr "Pidgin 上次同步 MD5" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:12 msgid "Pidgin last sync MD5." msgstr "Pidgin 上次同步 MD5" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:13 msgid "Pidgin last sync time" msgstr "Pidgin 上次同步时间" #: ../data/org.gnome.evolution.plugin.autocontacts.gschema.xml.in.h:14 msgid "Pidgin last sync time." msgstr "Pidgin 上次同步时间" #: ../data/org.gnome.evolution.plugin.email-custom-header.gschema.xml.in.h:1 msgid "List of Custom Headers" msgstr "自定义信头列表" #: ../data/org.gnome.evolution.plugin.email-custom-header.gschema.xml.in.h:2 msgid "" "The key specifies the list of custom headers that you can add to an outgoing " "message. The format for specifying a Header and Header value is: Name of the " "custom header followed by \"=\" and the values separated by \";\"" msgstr "此键值指定了您可以向发送邮件中添加的自定义头的列表。指定头和头值的格式为:自定义头的名称,接下来是“=”和它的值,头与头之间以“;”分割" #: ../data/org.gnome.evolution.plugin.external-editor.gschema.xml.in.h:1 msgid "Default External Editor" msgstr "默认外部编辑器" #: ../data/org.gnome.evolution.plugin.external-editor.gschema.xml.in.h:2 msgid "The default command that must be used as the editor." msgstr "默认命令必须用作编辑器。" #: ../data/org.gnome.evolution.plugin.external-editor.gschema.xml.in.h:3 msgid "Automatically launch when a new mail is edited" msgstr "在编辑新邮件时自动启动" #: ../data/org.gnome.evolution.plugin.external-editor.gschema.xml.in.h:4 msgid "Automatically launch editor when key is pressed in the mail composer." msgstr "在邮件编辑界面通过按键操作自动打开外部编辑器。" #: ../data/org.gnome.evolution.plugin.face-picture.gschema.xml.in.h:1 msgid "Insert Face picture by default" msgstr "按默认方式插入头像图片(_I)" #: ../data/org.gnome.evolution.plugin.face-picture.gschema.xml.in.h:2 msgid "" "Whether insert Face picture to outgoing messages by default. The picture " "should be set before checking this, otherwise nothing happens." msgstr "是否按照默认插入头像图片到发送的信息。在选择之前必须先设置好头像图片,否则不会生效。" #: ../data/org.gnome.evolution.plugin.itip.gschema.xml.in.h:1 msgid "Delete processed" msgstr "删除操作已处理" #: ../data/org.gnome.evolution.plugin.itip.gschema.xml.in.h:2 msgid "Whether to delete processed iTip objects" msgstr "是否删除已处理过的 iTip 对象" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:1 msgid "Notify new messages for Inbox only." msgstr "只通知收件箱中的新信息。" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:2 msgid "Whether to notify new messages in Inbox folder only." msgstr "是否只通知收件箱文件夹中的新信息。" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:3 msgid "Enable D-Bus messages." msgstr "启用 D-Bus 信息。" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:4 msgid "Generates a D-Bus message when new mail messages arrive." msgstr "新邮件到达时生成 D-Bus 信息。" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:5 msgid "Enable icon in notification area." msgstr "启用通知区图标。" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:6 msgid "Show new mail icon in notification area when new messages arrive." msgstr "新邮件到达时在通知区显示新邮件图标。" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:7 msgid "Popup message together with the icon." msgstr "同时弹出信息和图标。" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:8 msgid "Whether show message over the icon when new messages arrive." msgstr "新邮件到达时是否在图标上显示信息" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:9 msgid "Enable audible notifications when new messages arrive." msgstr "收到新信息时发出通知音" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:10 msgid "" "Whether to make a sound of any kind when new messages arrive. If \"false\", " "the \"notify-sound-beep\", \"notify-sound-file\", \"notify-sound-play-file\" " "and \"notify-sound-use-theme\" keys are disregarded." msgstr "" "是否在收到新信息时发出通知音。如果为 \"false\",则 \"notify-sound-beep\", \"notify-sound-file\", " "\"notify-sound-play-file\" 和 \"notify-sound-use-theme\" 键将被弃置。" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:11 msgid "Whether to emit a beep." msgstr "是否发出蜂鸣声" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:12 msgid "Whether to emit a beep when new messages arrive." msgstr "是否在收到新信息时蜂鸣" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:13 msgid "Sound filename to be played." msgstr "将播放的声音文件名" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:14 msgid "" "Sound file to be played when new messages arrive, if \"notify-sound-play-" "file\" is \"true\"." msgstr "当 \"notify-sound-play-file\" 的值为 \"true\" 时,收到新信息时播放的声音文件。" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:15 msgid "Whether to play a sound file." msgstr "是否播放声音文件。" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:16 msgid "" "Whether to play a sound file when new messages arrive. The name of the sound " "file is given by the 'notify-sound-file' key." msgstr "是否在收到新信息时播放声音文件。声音文件名由 'notify-sound-file' 决定。" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:17 msgid "Use sound theme" msgstr "使用声音主题" #: ../data/org.gnome.evolution.plugin.mail-notification.gschema.xml.in.h:18 msgid "Play themed sound when new messages arrive, if not in beep mode." msgstr "不在 beep 模式下时新邮件到达要播放主题的声音文件。" #: ../data/org.gnome.evolution.plugin.prefer-plain.gschema.xml.in.h:1 msgid "Mode to use when displaying mails" msgstr "邮件显示模式" #: ../data/org.gnome.evolution.plugin.prefer-plain.gschema.xml.in.h:2 msgid "" "The mode to use for displaying mails. \"normal\" makes Evolution choose the " "best part to show, \"prefer_plain\" makes it use the text part, if present, " "and \"only_plain\" forces Evolution to only show plain text" msgstr "" "邮件显示模式。\"normal\" 模式下由 Evolution 自行决定,\"prefer_plain\" " "模式下优先显示文本内容,\"only_plain\" 模式下 Evolution 将强制使用纯文本进行显示。" #: ../data/org.gnome.evolution.plugin.prefer-plain.gschema.xml.in.h:3 msgid "Whether to show suppressed HTML output" msgstr "是否以 HTML 模式显示" #: ../data/org.gnome.evolution.plugin.publish-calendar.gschema.xml.in.h:1 msgid "List of Destinations for publishing" msgstr "发布地点列表" #: ../data/org.gnome.evolution.plugin.publish-calendar.gschema.xml.in.h:2 msgid "" "The key specifies the list of destinations to where publish calendars. Each " "values specifies an XML with setup for publishing to one destination." msgstr "本键值指定了日程表的发布地点列表。每个值均通过一个 XML 配置文件来控制一个发布地点。" #: ../data/org.gnome.evolution.plugin.templates.gschema.xml.in.h:1 msgid "" "List of keyword/value pairs for the Templates plugin to substitute in a " "message body." msgstr "用于模板插件以替换邮件内容的键/值对列表。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:1 msgid "Skip development warning dialog" msgstr "跳过开发警告对话框" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:2 msgid "" "Whether the warning dialog in development versions of Evolution is skipped." msgstr "是否跳过 Evoltuion 开发版本的警告。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:3 msgid "Initial attachment view" msgstr "初始附件视图" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:4 msgid "" "Initial view for attachment bar widgets. \"0\" is Icon View, \"1\" is List " "View." msgstr "附件栏的初始视图。“0”是图标视图、“1”是列表视图。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:5 msgid "Initial file chooser folder" msgstr "初始文件选择器文件夹" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:6 msgid "Initial folder for GtkFileChooser dialogs." msgstr "GtkFileChooser 对话框的起始文件夹。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:7 ../shell/main.c:308 msgid "Start in offline mode" msgstr "以离线模式启动" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:8 msgid "" "Whether Evolution will start up in offline mode instead of online mode." msgstr "是否以离线模式而非在线模式启动 Evolution。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:9 msgid "Offline folder paths" msgstr "离线文件夹路径" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:10 msgid "" "List of paths for the folders to be synchronized to disk for offline usage." msgstr "需要同步到本地磁盘供离线使用的路径列表。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:11 msgid "Enable express mode" msgstr "启用快捷模式" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:12 msgid "Flag that enables a much simplified user interface." msgstr "用于启用简洁用户界面的标识。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:13 msgid "Window buttons are visible" msgstr "窗口按钮可见" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:14 msgid "Whether the window buttons should be visible." msgstr "窗口按钮是否可见。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:15 msgid "Window button style" msgstr "窗口按钮样式" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:16 msgid "" "The style of the window buttons. Can be \"text\", \"icons\", \"both\", " "\"toolbar\". If \"toolbar\" is set, the style of the buttons is determined " "by the GNOME toolbar setting." msgstr "" "窗口按钮的样式。可以是“text”(文字)、“icon”(图标)、“both”(二者)、“toolbar”(工具栏)。如果设置为“toolbar”(工具栏" "),则工具栏的样式由 GNOME 设置决定。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:17 msgid "Toolbar is visible" msgstr "工具栏可见" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:18 msgid "Whether the toolbar should be visible." msgstr "工具栏是否可见。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:19 msgid "Sidebar is visible" msgstr "侧边栏可见" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:20 msgid "Whether the sidebar should be visible." msgstr "侧边栏是否可见。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:21 msgid "Statusbar is visible" msgstr "状态栏可见" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:22 msgid "Whether the status bar should be visible." msgstr "状态栏是否可见。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:23 msgid "ID or alias of the component to be shown by default at start-up." msgstr "启动时默认显示的组件 ID 或别名。" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:24 msgid "Default sidebar width" msgstr "默认侧边栏宽度" #: ../data/org.gnome.evolution.shell.gschema.xml.in.h:25 msgid "The default width for the sidebar, in pixels." msgstr "侧边栏的默认宽度,以像素计。" #: ../data/org.gnome.evolution.spamassassin.gschema.xml.in.h:1 msgid "Use only local spam tests." msgstr "只使用本地垃圾信息测试。" #: ../data/org.gnome.evolution.spamassassin.gschema.xml.in.h:2 msgid "Use only the local spam tests (no DNS)." msgstr "之使用本地垃圾信息测试(无 DNS)。" #: ../em-format/e-mail-formatter-attachment.c:397 #: ../e-util/e-attachment-bar.c:101 ../e-util/e-attachment-bar.c:106 #: ../e-util/e-attachment-paned.c:176 ../e-util/e-attachment-paned.c:181 #: ../mail/message-list.etspec.h:4 msgid "Attachment" msgid_plural "Attachments" msgstr[0] "附件" #: ../em-format/e-mail-formatter-attachment.c:398 msgid "Display as attachment" msgstr "显示为附件" #: ../em-format/e-mail-formatter-headers.c:107 #: ../em-format/e-mail-part-headers.c:47 ../mail/e-mail-tag-editor.c:272 #: ../mail/message-list.etspec.h:5 ../modules/mail/em-mailer-prefs.c:64 msgid "From" msgstr "发件人" #: ../em-format/e-mail-formatter-headers.c:133 msgid "(no subject)" msgstr "(无主题)" #: ../em-format/e-mail-formatter-headers.c:333 #, c-format msgid "This message was sent by %s on behalf of %s" msgstr "此信息由 %s 代表 %s 的身份发送" #: ../em-format/e-mail-formatter-image.c:152 msgid "Regular Image" msgstr "普通图像" #: ../em-format/e-mail-formatter-image.c:153 msgid "Display part as an image" msgstr "将相关部分显示为图像" #: ../em-format/e-mail-formatter-message-rfc822.c:246 msgid "RFC822 message" msgstr "RFC822 格式消息" #: ../em-format/e-mail-formatter-message-rfc822.c:247 msgid "Format part as an RFC822 message" msgstr "以 RFC822 模式进行显示" #: ../em-format/e-mail-formatter-print.c:54 #: ../e-util/gal-view-instance-save-as-dialog.c:95 #: ../mail/e-mail-label-tree-view.c:99 #: ../modules/cal-config-caldav/e-caldav-chooser.c:1328 #: ../modules/cal-config-google/e-google-chooser.c:237 #: ../modules/plugin-manager/evolution-plugin-manager.c:67 msgid "Name" msgstr "姓名" #: ../em-format/e-mail-formatter-print.c:54 #: ../e-util/e-attachment-tree-view.c:574 ../mail/message-list.etspec.h:10 msgid "Size" msgstr "大小" #: ../em-format/e-mail-formatter-print-headers.c:144 msgid "GPG signed" msgstr "已进行 GPG 签名" #: ../em-format/e-mail-formatter-print-headers.c:150 msgid "GPG encrpyted" msgstr "已进行 GPG 加密" #: ../em-format/e-mail-formatter-print-headers.c:156 msgid "S/MIME signed" msgstr "已进行 S/MIME 签名" #: ../em-format/e-mail-formatter-print-headers.c:162 msgid "S/MIME encrpyted" msgstr "已进行 S/MIME 加密" #: ../em-format/e-mail-formatter-print-headers.c:171 #: ../mail/e-mail-config-security-page.c:645 #: ../modules/mail-config/e-mail-config-remote-accounts.c:195 #: ../modules/mail-config/e-mail-config-smtp-backend.c:129 msgid "Security" msgstr "安全" #: ../em-format/e-mail-formatter-quote-headers.c:168 #: ../em-format/e-mail-part-headers.c:52 ../mail/e-mail-tag-editor.c:277 #: ../mail/em-filter-i18n.h:77 ../mail/message-list.etspec.h:6 #: ../modules/mail/em-mailer-prefs.c:69 ../smime/lib/e-asn1-object.c:712 msgid "Subject" msgstr "主题" #. pseudo-header #: ../em-format/e-mail-formatter-quote-headers.c:187 #: ../em-format/e-mail-formatter-utils.c:344 #: ../modules/mail/em-mailer-prefs.c:1145 msgid "Mailer" msgstr "邮件程序" #: ../em-format/e-mail-formatter-quote-text-enriched.c:91 #: ../em-format/e-mail-formatter-text-enriched.c:98 msgid "Richtext" msgstr "富文本" #: ../em-format/e-mail-formatter-quote-text-enriched.c:92 #: ../em-format/e-mail-formatter-text-enriched.c:99 msgid "Display part as enriched text" msgstr "以富文本模式进行显示" #: ../em-format/e-mail-formatter-quote-text-html.c:90 #: ../em-format/e-mail-formatter-text-html.c:351 msgid "HTML" msgstr "HTML" #: ../em-format/e-mail-formatter-quote-text-html.c:91 #: ../em-format/e-mail-formatter-text-html.c:352 msgid "Format part as HTML" msgstr "以 HTML 模式进行显示" #: ../em-format/e-mail-formatter-quote-text-plain.c:115 #: ../em-format/e-mail-formatter-text-plain.c:185 msgid "Plain Text" msgstr "纯文本" #: ../em-format/e-mail-formatter-quote-text-plain.c:116 #: ../em-format/e-mail-formatter-text-plain.c:186 msgid "Format part as plain text" msgstr "以纯文本模式进行显示" #: ../em-format/e-mail-formatter-secure-button.c:52 msgid "Unsigned" msgstr "未签名" #: ../em-format/e-mail-formatter-secure-button.c:52 msgid "" "This message is not signed. There is no guarantee that this message is " "authentic." msgstr "此信息未签名。无法保证这封信是可信的。" #: ../em-format/e-mail-formatter-secure-button.c:53 msgid "Valid signature" msgstr "有效签名" #: ../em-format/e-mail-formatter-secure-button.c:53 msgid "" "This message is signed and is valid meaning that it is very likely that this " "message is authentic." msgstr "此信息已签名,而且签名是有效的。这意味着这封信应该是可信的。" #: ../em-format/e-mail-formatter-secure-button.c:54 msgid "Invalid signature" msgstr "无效签名" #: ../em-format/e-mail-formatter-secure-button.c:54 msgid "" "The signature of this message cannot be verified, it may have been altered " "in transit." msgstr "无法校验这封信的签名,可能在传送的过程中邮件被篡改了。" #: ../em-format/e-mail-formatter-secure-button.c:55 msgid "Valid signature, but cannot verify sender" msgstr "签名有效,但是无法校验发送者" #: ../em-format/e-mail-formatter-secure-button.c:55 msgid "" "This message is signed with a valid signature, but the sender of the message " "cannot be verified." msgstr "这封信的签名有效,但是无法校验邮件的发送者。" #: ../em-format/e-mail-formatter-secure-button.c:56 msgid "Signature exists, but need public key" msgstr "签名已存在,但需要公钥" #: ../em-format/e-mail-formatter-secure-button.c:56 msgid "" "This message is signed with a signature, but there is no corresponding " "public key." msgstr "这封信的签名有效,但是没有相应的公钥。" #: ../em-format/e-mail-formatter-secure-button.c:63 msgid "Unencrypted" msgstr "未加密" #: ../em-format/e-mail-formatter-secure-button.c:63 msgid "" "This message is not encrypted. Its content may be viewed in transit across " "the Internet." msgstr "这封信未加密。在 Internet 上传送时所有人都可以看到其内容。" #: ../em-format/e-mail-formatter-secure-button.c:64 msgid "Encrypted, weak" msgstr "弱加密" #: ../em-format/e-mail-formatter-secure-button.c:64 msgid "" "This message is encrypted, but with a weak encryption algorithm. It would be " "difficult, but not impossible for an outsider to view the content of this " "message in a practical amount of time." msgstr "这封信已加密,但使用的是弱加密算法。如果外人想要查看这封信的内容,可能要花一定时间进行暴力破解,这很困难但并不是不可能。" #: ../em-format/e-mail-formatter-secure-button.c:65 msgid "Encrypted" msgstr "加密" #: ../em-format/e-mail-formatter-secure-button.c:65 msgid "" "This message is encrypted. It would be difficult for an outsider to view " "the content of this message." msgstr "这封信已加密。外人要想查看这封信的内容十分困难。" #: ../em-format/e-mail-formatter-secure-button.c:66 msgid "Encrypted, strong" msgstr "强加密" #: ../em-format/e-mail-formatter-secure-button.c:66 msgid "" "This message is encrypted, with a strong encryption algorithm. It would be " "very difficult for an outsider to view the content of this message in a " "practical amount of time." msgstr "这封信已加密,且使用的是强加密算法。如果外人想要查看这封信的内容,可能要花大量时间进行暴力破解,这十分困难。" #: ../em-format/e-mail-formatter-secure-button.c:187 #: ../smime/gui/smime-ui.ui.h:20 msgid "_View Certificate" msgstr "查看证书(_V)" #: ../em-format/e-mail-formatter-secure-button.c:202 msgid "This certificate is not viewable" msgstr "此证书不可查看" #: ../em-format/e-mail-formatter-source.c:115 msgid "Source" msgstr "来源" #: ../em-format/e-mail-formatter-source.c:116 msgid "Display source of a MIME part" msgstr "显示 MIME 加密部分的来源" #: ../em-format/e-mail-formatter-utils.c:204 #: ../em-format/e-mail-formatter-utils.c:221 #: ../em-format/e-mail-part-headers.c:50 ../modules/mail/em-mailer-prefs.c:67 msgid "Cc" msgstr "抄送" #: ../em-format/e-mail-formatter-utils.c:205 #: ../em-format/e-mail-formatter-utils.c:222 #: ../em-format/e-mail-part-headers.c:51 ../modules/mail/em-mailer-prefs.c:68 msgid "Bcc" msgstr "密件抄送" #: ../em-format/e-mail-parser-application-mbox.c:88 #, c-format msgid "Error parsing MBOX part: %s" msgstr "无法解析 MBOX 部分:%s" #: ../em-format/e-mail-parser-application-smime.c:84 #, c-format msgid "Could not parse S/MIME message: %s" msgstr "无法解析 S/MIME 消息:%s" #: ../em-format/e-mail-parser-inlinepgp-encrypted.c:80 #, c-format msgid "Could not parse PGP message: %s" msgstr "无法解析 PGP 消息:%s" #: ../em-format/e-mail-parser-inlinepgp-signed.c:83 #: ../em-format/e-mail-parser-multipart-signed.c:128 #, c-format msgid "Error verifying signature: %s" msgstr "无法验证签名:%s" #: ../em-format/e-mail-parser-message-external.c:69 msgid "Malformed external-body part" msgstr "未正确格式化的外部主体部分" #: ../em-format/e-mail-parser-message-external.c:102 #, c-format msgid "Pointer to FTP site (%s)" msgstr "指向 FTP 站点 (%s)" #: ../em-format/e-mail-parser-message-external.c:113 #, c-format msgid "Pointer to local file (%s) valid at site \"%s\"" msgstr "在站点“%2$s”指向本地文件 (%1$s) 合法" #: ../em-format/e-mail-parser-message-external.c:115 #, c-format msgid "Pointer to local file (%s)" msgstr "指向本地文件 (%s)" #: ../em-format/e-mail-parser-message-external.c:134 #, c-format msgid "Pointer to remote data (%s)" msgstr "指向远程数据 (%s)" #: ../em-format/e-mail-parser-message-external.c:152 #, c-format msgid "Pointer to unknown external data (\"%s\" type)" msgstr "指向未知的外部数据 (“%s”类型)" #: ../em-format/e-mail-parser-multipart-encrypted.c:67 #: ../em-format/e-mail-parser-multipart-signed.c:81 msgid "Could not parse MIME message. Displaying as source." msgstr "无法解析 MIME 信息。显示源文本。" #: ../em-format/e-mail-parser-multipart-encrypted.c:83 msgid "Unsupported encryption type for multipart/encrypted" msgstr "不支持 multipart/encrypted 的加密类型" #: ../em-format/e-mail-parser-multipart-encrypted.c:102 #, c-format msgid "Could not parse PGP/MIME message: %s" msgstr "无法解析 PGP/MIME 消息:%s" #: ../em-format/e-mail-parser-multipart-signed.c:114 msgid "Unsupported signature format" msgstr "不支持的签名格式" #: ../em-format/e-mail-part-headers.c:48 ../modules/mail/em-mailer-prefs.c:65 msgid "Reply-To" msgstr "回复至" #: ../em-format/e-mail-part-headers.c:53 ../e-util/e-dateedit.c:550 #: ../e-util/e-dateedit.c:573 ../mail/message-list.etspec.h:7 #: ../modules/mail/em-mailer-prefs.c:70 msgid "Date" msgstr "日期" #: ../em-format/e-mail-part-headers.c:54 ../modules/mail/em-mailer-prefs.c:71 msgid "Newsgroups" msgstr "新闻组" #: ../em-format/e-mail-part-headers.c:55 ../modules/mail/em-mailer-prefs.c:72 #: ../plugins/face/org-gnome-face.eplug.xml.h:1 msgid "Face" msgstr "头像" #: ../em-format/e-mail-part-utils.c:500 #, c-format msgid "%s attachment" msgstr "%s 附件" #: ../e-util/e-send-options.ui.h:3 msgid "Standard" msgstr "标准" #: ../e-util/e-send-options.ui.h:6 msgid "Proprietary" msgstr "优先级" #: ../e-util/e-send-options.ui.h:8 msgid "Secret" msgstr "机密" #: ../e-util/e-send-options.ui.h:9 msgid "Top Secret" msgstr "绝密" #: ../e-util/e-send-options.ui.h:10 msgid "For Your Eyes Only" msgstr "独家" #. Translators: Used in send options dialog #: ../e-util/e-send-options.ui.h:12 msgctxt "send-options" msgid "None" msgstr "无" #: ../e-util/e-send-options.ui.h:13 msgid "Mail Receipt" msgstr "已读回执" #: ../e-util/e-send-options.ui.h:15 msgid "R_eply requested" msgstr "请求回复(_E)" #: ../e-util/e-send-options.ui.h:16 msgctxt "ESendOptionsWithin" msgid "Wi_thin" msgstr "少于(_T)" #: ../e-util/e-send-options.ui.h:17 msgctxt "ESendOptionsWithin" msgid "days" msgstr "天" #: ../e-util/e-send-options.ui.h:18 msgid "_When convenient" msgstr "方便时(_W)" #: ../e-util/e-send-options.ui.h:19 ../e-util/e-filter-rule.c:840 msgid "Replies" msgstr "回复" #: ../e-util/e-send-options.ui.h:20 msgid "_Delay message delivery" msgstr "推迟信息投递(_D)" #: ../e-util/e-send-options.ui.h:21 msgctxt "ESendOptionsAfter" msgid "_After" msgstr "经过(_A)" #: ../e-util/e-send-options.ui.h:22 msgctxt "ESendOptionsAfter" msgid "days" msgstr "天" #: ../e-util/e-send-options.ui.h:23 msgid "_Set expiration date" msgstr "设置过期时间(_S)" #: ../e-util/e-send-options.ui.h:24 msgctxt "ESendOptions" msgid "_Until" msgstr "直到(_U)" #: ../e-util/e-send-options.ui.h:25 msgid "Delivery Options" msgstr "发送选项" #: ../e-util/e-send-options.ui.h:26 msgid "_Priority:" msgstr "优先级(_P):" #: ../e-util/e-send-options.ui.h:27 msgid "_Classification:" msgstr "分类(_C):" #: ../e-util/e-send-options.ui.h:28 msgid "Gene_ral Options" msgstr "常规选项(_R)" #: ../e-util/e-send-options.ui.h:29 msgid "Creat_e a sent item to track information" msgstr "创建一个已发送项以跟踪信息(_E)" #: ../e-util/e-send-options.ui.h:30 msgid "_Delivered" msgstr "已投递(_D)" #: ../e-util/e-send-options.ui.h:31 msgid "Deli_vered and opened" msgstr "已发送和已打开(_V)" #: ../e-util/e-send-options.ui.h:32 msgid "_All information" msgstr "全部信息(_A)" #: ../e-util/e-send-options.ui.h:33 msgid "A_uto-delete sent item" msgstr "自动删除已发项目(_U)" #: ../e-util/e-send-options.ui.h:34 msgid "Status Tracking" msgstr "状态跟踪" #: ../e-util/e-send-options.ui.h:35 msgid "_When opened:" msgstr "打开时(_W):" #: ../e-util/e-send-options.ui.h:36 msgid "When decli_ned:" msgstr "拒绝时(_N):" #: ../e-util/e-send-options.ui.h:37 msgid "When co_mpleted:" msgstr "完成时(_M):" #: ../e-util/e-send-options.ui.h:38 msgid "When acce_pted:" msgstr "接受时(_P):" #: ../e-util/e-send-options.ui.h:39 msgid "Return Notification" msgstr "返回通知" #: ../e-util/e-send-options.ui.h:40 msgid "Sta_tus Tracking" msgstr "状态跟踪(_T)" #: ../e-util/e-table-config.ui.h:1 msgid "_Sort..." msgstr "排序(_S)..." #: ../e-util/e-table-config.ui.h:2 msgid "_Group By..." msgstr "分组依据(_G)..." #: ../e-util/e-table-config.ui.h:3 msgid "_Fields Shown..." msgstr "显示的域(_F)..." #: ../e-util/e-table-config.ui.h:6 msgid "Clear _All" msgstr "全部清除(_A)" #: ../e-util/e-table-config.ui.h:7 msgid "_Show field in View" msgstr "在视图中显示域(_S)" #: ../e-util/e-table-config.ui.h:8 ../e-util/e-table-header-item.c:1753 msgid "Ascending" msgstr "升序" #: ../e-util/e-table-config.ui.h:9 ../e-util/e-table-header-item.c:1753 msgid "Descending" msgstr "降序" #: ../e-util/e-table-config.ui.h:10 msgid "Group Items By" msgstr "分组依据" #: ../e-util/e-table-config.ui.h:11 msgid "Show _field in View" msgstr "在视图中显示域(_F)" #: ../e-util/e-table-config.ui.h:12 msgid "Then By" msgstr "然后按" #: ../e-util/e-table-config.ui.h:13 msgid "Show field i_n View" msgstr "在视图中显示域(_N)" #: ../e-util/e-table-config.ui.h:14 msgid "Show field in _View" msgstr "在视图中显示域(_V)" #: ../e-util/e-table-config.ui.h:15 msgid "Sort" msgstr "排序" #: ../e-util/e-table-config.ui.h:16 msgid "Clear All" msgstr "全部清除" #: ../e-util/e-table-config.ui.h:17 msgid "Sort Items By" msgstr "排序依据" #: ../e-util/e-timezone-dialog.ui.h:1 msgid "Select a Time Zone" msgstr "选择一个时区" #: ../e-util/e-timezone-dialog.ui.h:2 msgid "" "Use the left mouse button to zoom in on an area of the map and select a time " "zone.\n" "Use the right mouse button to zoom out." msgstr "" "用鼠标左键放大地图的某个区域并选择时区。\n" "用鼠标右键缩小。" #: ../e-util/e-timezone-dialog.ui.h:4 msgid "Time Zones" msgstr "时区" #: ../e-util/e-timezone-dialog.ui.h:5 msgid "_Selection" msgstr "选择(_S)" #: ../e-util/e-timezone-dialog.ui.h:6 msgid "Timezone drop-down combination box" msgstr "时区下拉组合框" #: ../e-util/filter.ui.h:1 ../e-util/e-filter-rule.c:1239 #: ../mail/em-utils.c:240 msgid "Incoming" msgstr "接收" #: ../e-util/filter.ui.h:2 msgid "the current time" msgstr "当前时间" #: ../e-util/filter.ui.h:3 msgid "the time you specify" msgstr "您指定的时间" #: ../e-util/filter.ui.h:4 msgid "a time relative to the current time" msgstr "相对于当前时间的时间" #: ../e-util/filter.ui.h:5 ../mail/mail-config.ui.h:78 msgid "seconds" msgstr "秒" #: ../e-util/filter.ui.h:9 ../plugins/publish-calendar/publish-calendar.ui.h:7 msgid "weeks" msgstr "周" #: ../e-util/filter.ui.h:10 #: ../plugins/publish-calendar/publish-calendar.ui.h:8 msgid "months" msgstr "月" #: ../e-util/filter.ui.h:11 msgid "years" msgstr "年" #: ../e-util/filter.ui.h:12 msgid "ago" msgstr "过去" #: ../e-util/filter.ui.h:13 msgid "in the future" msgstr "未来" #: ../e-util/filter.ui.h:14 msgid "Show filters for mail:" msgstr "显示邮件过滤器:" #: ../e-util/filter.ui.h:15 ../mail/em-filter-editor.c:166 msgid "_Filter Rules" msgstr "过滤规则(_F)" #: ../e-util/filter.ui.h:17 msgid "Compare against" msgstr "比较对象" #: ../e-util/filter.ui.h:18 msgid "" "The message's date will be compared against\n" "the current time when filtering occurs." msgstr "信息的日期将会在过滤执行时与当前时间进行比较。" #: ../e-util/filter.ui.h:20 msgid "" "The message's date will be compared against\n" "12:00am of the date specified." msgstr "信息的日期将会与指定日期的午夜12:00进行比较。" #: ../e-util/filter.ui.h:22 msgid "" "The message's date will be compared against\n" "a time relative to when filtering occurs." msgstr "信息的日期将会在过滤执行时与指定时间进行比较。" #: ../e-util/gal-view-instance-save-as-dialog.ui.h:1 msgid "_Create new view" msgstr "创建新视图(_C)" #: ../e-util/gal-view-instance-save-as-dialog.ui.h:2 #: ../e-util/e-mail-signature-script-dialog.c:417 #: ../mail/e-mail-config-identity-page.c:311 #: ../mail/e-mail-config-summary-page.c:341 msgid "_Name:" msgstr "名称(_N):" #: ../e-util/gal-view-instance-save-as-dialog.ui.h:3 msgid "_Replace existing view" msgstr "替换现有视图(_R)" #: ../e-util/e-activity-proxy.c:311 #: ../modules/mail/e-mail-shell-view-actions.c:1734 msgid "Cancel" msgstr "取消" #. Translators: This is a cancelled activity. #: ../e-util/e-activity.c:259 #, c-format msgid "%s (cancelled)" msgstr "%s(取消的)" #. Translators: This is a completed activity. #: ../e-util/e-activity.c:262 #, c-format msgid "%s (completed)" msgstr "%s(完成的)" #. Translators: This is an activity waiting to run. #: ../e-util/e-activity.c:265 #, c-format msgid "%s (waiting)" msgstr "%s (等待中)" #. Translators: This is a running activity which #. * the user has requested to cancel. #: ../e-util/e-activity.c:269 #, c-format msgid "%s (cancelling)" msgstr "%s (正在取消)" #: ../e-util/e-activity.c:271 #, c-format msgid "%s" msgstr "%s" #: ../e-util/e-activity.c:276 #, c-format msgid "%s (%d%% complete)" msgstr "%s (%d%% 完成)" #. Translators: Escape is a keyboard binding. #: ../e-util/e-alert-bar.c:121 msgid "Close this message (Escape)" msgstr "关闭消息 (Esc 键)" #: ../e-util/e-attachment-bar.c:660 ../e-util/e-attachment-paned.c:703 msgid "Icon View" msgstr "图标视图" #: ../e-util/e-attachment-bar.c:662 ../e-util/e-attachment-paned.c:705 msgid "List View" msgstr "列表视图" #: ../e-util/e-attachment-dialog.c:318 msgid "Attachment Properties" msgstr "附件属性" #: ../e-util/e-attachment-dialog.c:340 ../e-util/e-import-assistant.c:273 msgid "F_ilename:" msgstr "文件名(_I):" #: ../e-util/e-attachment-dialog.c:375 msgid "MIME Type:" msgstr "MIME 类型:" #: ../e-util/e-attachment-dialog.c:383 ../e-util/e-attachment-store.c:483 msgid "_Suggest automatic display of attachment" msgstr "建议自动显示附件(_S)" #: ../e-util/e-attachment-handler-image.c:97 msgid "Could not set as background" msgstr "不能设置为背景" #: ../e-util/e-attachment-handler-image.c:147 msgid "Set as _Background" msgstr "设为背景(_B)" #: ../e-util/e-attachment-icon-view.c:166 #: ../e-util/e-attachment-tree-view.c:549 msgid "Loading" msgstr "载入" #: ../e-util/e-attachment-icon-view.c:178 #: ../e-util/e-attachment-tree-view.c:561 msgid "Saving" msgstr "保存" #: ../e-util/e-attachment-paned.c:104 msgid "Hide Attachment _Bar" msgstr "隐藏附件栏(_B)" #: ../e-util/e-attachment-paned.c:106 ../e-util/e-attachment-paned.c:719 msgid "Show Attachment _Bar" msgstr "显示附件栏(_B)" #: ../e-util/e-attachment-store.c:463 msgid "Add Attachment" msgstr "添加附件" #: ../e-util/e-attachment-store.c:466 msgid "A_ttach" msgstr "附件(_T)" #: ../e-util/e-attachment-store.c:537 msgid "Save Attachment" msgid_plural "Save Attachments" msgstr[0] "保存附件" #. Translators: Default attachment filename. #: ../e-util/e-attachment-store.c:568 ../e-util/e-attachment.c:2056 #: ../e-util/e-attachment.c:2716 msgid "attachment.dat" msgstr "attachment.dat" #: ../e-util/e-attachment-view.c:378 msgid "Open With Other Application..." msgstr "用其他应用程序打开..." #: ../e-util/e-attachment-view.c:385 msgid "S_ave All" msgstr "全部保存(_A)" #: ../e-util/e-attachment-view.c:411 msgid "A_dd Attachment..." msgstr "添加附件(_D)..." #: ../e-util/e-attachment-view.c:435 msgid "_Hide" msgstr "隐藏(_H)" #: ../e-util/e-attachment-view.c:442 msgid "Hid_e All" msgstr "全部隐藏(_E)" #: ../e-util/e-attachment-view.c:449 msgid "_View Inline" msgstr "嵌入查看(_V)" #: ../e-util/e-attachment-view.c:456 msgid "Vie_w All Inline" msgstr "嵌入查看(_W)" #: ../e-util/e-attachment-view.c:786 #, c-format msgid "Open With \"%s\"" msgstr "使用“%s”打开" #: ../e-util/e-attachment-view.c:789 #, c-format msgid "Open this attachment in %s" msgstr "在 %s 中打开附件" #. To Translators: This text is set as a description of an attached #. * message when, for example, attaching it to a composer. When the #. * message to be attached has also filled Subject, then this text is #. * of form "Attached message - Subject", otherwise it's left as is. #: ../e-util/e-attachment.c:1106 msgid "Attached message" msgstr "附加的信息" #: ../e-util/e-attachment.c:2137 ../e-util/e-attachment.c:3022 msgid "A load operation is already in progress" msgstr "一个已经加载的操作正在进行" #: ../e-util/e-attachment.c:2145 ../e-util/e-attachment.c:3030 msgid "A save operation is already in progress" msgstr "个已经保存的操作正在进行" #: ../e-util/e-attachment.c:2262 #, c-format msgid "Could not load '%s'" msgstr "不能加载“%s”" #: ../e-util/e-attachment.c:2265 #, c-format msgid "Could not load the attachment" msgstr "不能加载附件" #: ../e-util/e-attachment.c:2569 #, c-format msgid "Could not open '%s'" msgstr "不能打开“%s”" #: ../e-util/e-attachment.c:2572 #, c-format msgid "Could not open the attachment" msgstr "不能打开附件" #: ../e-util/e-attachment.c:3039 msgid "Attachment contents not loaded" msgstr "附件内容未载入" #: ../e-util/e-attachment.c:3115 #, c-format msgid "Could not save '%s'" msgstr "不能保存“%s”" #: ../e-util/e-attachment.c:3118 #, c-format msgid "Could not save the attachment" msgstr "无法保存附件" #: ../e-util/e-book-source-config.c:98 msgid "Mark as default address book" msgstr "标记为默认地址簿" #: ../e-util/e-book-source-config.c:103 msgid "Autocomplete with this address book" msgstr "基于该地址簿信息进行自动补全" #: ../e-util/e-book-source-config.c:277 msgid "Copy book content locally for offline operation" msgstr "将地址簿信息保存到本地供离线操作" #. To Translators: The text is concatenated to a form: "Ctrl-click to open a link http://www.example.com" #: ../e-util/e-buffer-tagger.c:410 msgid "Ctrl-click to open a link" msgstr "Ctrl 加单击来打开一个链接" #: ../e-util/e-cal-source-config.c:170 msgid "Mark as default calendar" msgstr "标记为默认日历" #: ../e-util/e-cal-source-config.c:173 msgid "Mark as default task list" msgstr "标记为默认任务列表" #: ../e-util/e-cal-source-config.c:176 msgid "Mark as default memo list" msgstr "标记为默认备忘列表" #: ../e-util/e-cal-source-config.c:201 msgid "Color:" msgstr "颜色:" #: ../e-util/e-cal-source-config.c:406 msgid "Copy calendar contents locally for offline operation" msgstr "将日程表内容复制到本地供离线操作" #: ../e-util/e-cal-source-config.c:410 msgid "Copy task list contents locally for offline operation" msgstr "将任务列表内容复制到本地供离线操作" #: ../e-util/e-cal-source-config.c:414 msgid "Copy memo list contents locally for offline operation" msgstr "将备忘列表内容复制到本地供离线操作" #. This is a strftime() format. %B = Month name. #: ../e-util/e-calendar-item.c:1327 ../e-util/e-calendar-item.c:2195 msgctxt "CalItem" msgid "%B" msgstr "%B" #. This is a strftime() format. %Y = Year. #: ../e-util/e-calendar-item.c:1329 msgctxt "CalItem" msgid "%Y" msgstr "%Y" #. This is a strftime() format. %B = Month name, %Y = Year. #: ../e-util/e-calendar-item.c:1366 msgctxt "CalItem" msgid "%B %Y" msgstr "%B %Y" #: ../e-util/e-calendar.c:190 msgid "Previous month" msgstr "上个月" #: ../e-util/e-calendar.c:215 msgid "Next month" msgstr "下个月" #: ../e-util/e-calendar.c:241 msgid "Previous year" msgstr "上一年" #: ../e-util/e-calendar.c:266 msgid "Next year" msgstr "下一年" #: ../e-util/e-calendar.c:290 msgid "Month Calendar" msgstr "月历" #: ../e-util/e-categories-editor.c:224 msgid "Currently _used categories:" msgstr "当前使用分类 (_U):" #: ../e-util/e-categories-editor.c:235 msgid "_Available Categories:" msgstr "可用类别(_A):" #: ../e-util/e-categories-selector.c:323 msgid "Icon" msgstr "图标" #: ../e-util/e-category-completion.c:300 #, c-format msgid "Create category \"%s\"" msgstr "创建分类 \"%s\"" #: ../e-util/e-category-editor.c:137 msgid "Category Icon" msgstr "分类图标" #: ../e-util/e-category-editor.c:141 msgid "_No Image" msgstr "无图 _(N)" #: ../e-util/e-category-editor.c:178 msgid "Category _Name" msgstr "分类名称 (_N)" #: ../e-util/e-category-editor.c:190 msgid "Category _Icon" msgstr "分类图标 (_I)" #: ../e-util/e-category-editor.c:216 msgid "Category Properties" msgstr "分类属性" #: ../e-util/e-category-editor.c:277 #, c-format msgid "" "There is already a category '%s' in the configuration. Please use another " "name" msgstr "配置文件中已存在分类 '%s',请修改分类名称" #: ../e-util/e-cell-combo.c:186 msgid "popup list" msgstr "弹出列表" #: ../e-util/e-cell-date-edit.c:299 msgid "Now" msgstr "现在" #. strftime format of a weekday and a date. #: ../e-util/e-cell-date-edit.c:307 ../e-util/e-datetime-format.c:209 #: ../modules/calendar/e-cal-shell-view-actions.c:1900 #: ../modules/itip-formatter/itip-view.c:230 msgid "Today" msgstr "今天" #. Translators: "None" as a label of a button to unset date in a #. * date table cell. #: ../e-util/e-cell-date-edit.c:317 msgctxt "table-date" msgid "None" msgstr "无" #: ../e-util/e-cell-date-edit.c:325 msgid "OK" msgstr "确定" #: ../e-util/e-cell-date-edit.c:873 #, c-format msgid "The time must be in the format: %s" msgstr "时间必须采用格式:%s" #: ../e-util/e-cell-date.c:51 ../mail/message-list.c:1851 msgid "?" msgstr "?" #: ../e-util/e-cell-percent.c:80 msgid "The percent value must be between 0 and 100, inclusive" msgstr "百分比值必需在 0 到 100 之间,含 0 和 100" #: ../e-util/e-charset-combo-box.c:100 msgid "Character Encoding" msgstr "字符编码" #: ../e-util/e-charset-combo-box.c:123 msgid "Enter the character set to use" msgstr "输入要使用的字符集" #: ../e-util/e-charset-combo-box.c:369 msgid "Other..." msgstr "其它..." #: ../e-util/e-charset.c:53 msgid "Arabic" msgstr "阿拉伯语" #: ../e-util/e-charset.c:54 msgid "Baltic" msgstr "波罗的语" #: ../e-util/e-charset.c:55 msgid "Central European" msgstr "中欧" #: ../e-util/e-charset.c:56 msgid "Chinese" msgstr "中文" #: ../e-util/e-charset.c:57 msgid "Cyrillic" msgstr "西里尔语" #: ../e-util/e-charset.c:58 msgid "Greek" msgstr "希腊语" #: ../e-util/e-charset.c:59 msgid "Hebrew" msgstr "希伯来语" #: ../e-util/e-charset.c:60 msgid "Japanese" msgstr "日文" #: ../e-util/e-charset.c:61 msgid "Korean" msgstr "韩语" #: ../e-util/e-charset.c:62 msgid "Thai" msgstr "泰语" #: ../e-util/e-charset.c:63 msgid "Turkish" msgstr "土耳其语" #: ../e-util/e-charset.c:64 msgid "Unicode" msgstr "Unicode" #: ../e-util/e-charset.c:65 msgid "Western European" msgstr "西欧" #: ../e-util/e-charset.c:66 msgid "Western European, New" msgstr "西欧,新" #. Translators: Character set "Chinese, Traditional" #: ../e-util/e-charset.c:85 ../e-util/e-charset.c:87 ../e-util/e-charset.c:89 msgid "Traditional" msgstr "繁体" #. Translators: Character set "Chinese, Simplified" #: ../e-util/e-charset.c:91 ../e-util/e-charset.c:93 ../e-util/e-charset.c:95 #: ../e-util/e-charset.c:97 msgid "Simplified" msgstr "简体" #. Translators: Character set "Cyrillic, Ukrainian" #: ../e-util/e-charset.c:101 msgid "Ukrainian" msgstr "乌克兰语" #. Translators: Character set "Hebrew, Visual" #: ../e-util/e-charset.c:105 msgid "Visual" msgstr "可视" #: ../e-util/e-client-cache.c:1162 #, c-format msgid "Cannot create a client object from extension name '%s'" msgstr "无法从扩展名 '%s' 创建客户端对象" #: ../e-util/e-dateedit.c:524 msgid "Date and Time" msgstr "日期和时间" #: ../e-util/e-dateedit.c:549 msgid "Text entry to input date" msgstr "输入日期的文本框" #: ../e-util/e-dateedit.c:572 msgid "Click this button to show a calendar" msgstr "单击此按钮可显示日历" #: ../e-util/e-dateedit.c:626 msgid "Drop-down combination box to select time" msgstr "选择时间的组合框" #: ../e-util/e-dateedit.c:627 #: ../modules/calendar/e-calendar-preferences.ui.h:9 msgid "Time" msgstr "时间" #: ../e-util/e-dateedit.c:701 msgid "No_w" msgstr "现在(_W)" #: ../e-util/e-dateedit.c:708 msgid "_Today" msgstr "今天(_T)" #. Note that we don't show this here, since by default a 'None' date #. * is not permitted. #: ../e-util/e-dateedit.c:717 msgid "_None" msgstr "无(_N)" #. Translators: "None" for date field of a date edit, shown when #. * there is no date set. #: ../e-util/e-dateedit.c:1839 ../e-util/e-dateedit.c:2087 msgctxt "date" msgid "None" msgstr "无" #: ../e-util/e-dateedit.c:1979 msgid "Invalid Date Value" msgstr "无效的日期值" #: ../e-util/e-dateedit.c:2024 msgid "Invalid Time Value" msgstr "无效的时间值" #. strftime format of a weekday and a date. #: ../e-util/e-datetime-format.c:220 ../modules/itip-formatter/itip-view.c:258 msgid "Tomorrow" msgstr "明天" #: ../e-util/e-datetime-format.c:222 msgid "Yesterday" msgstr "昨天" #. Translators: This is used for abbreviated days in the future. #. * You can use strftime modifiers here too, like "Next %a", to avoid #. * repeated translation of the abbreviated day name. #: ../e-util/e-datetime-format.c:230 msgctxt "DateFmt" msgid "Next Mon" msgstr "下周一" #. Translators: This is used for abbreviated days in the future. #. * You can use strftime modifiers here too, like "Next %a", to avoid #. * repeated translation of the abbreviated day name. #: ../e-util/e-datetime-format.c:236 msgctxt "DateFmt" msgid "Next Tue" msgstr "下周二" #. Translators: This is used for abbreviated days in the future. #. * You can use strftime modifiers here too, like "Next %a", to avoid #. * repeated translation of the abbreviated day name. #: ../e-util/e-datetime-format.c:242 msgctxt "DateFmt" msgid "Next Wed" msgstr "下周三" #. Translators: This is used for abbreviated days in the future. #. * You can use strftime modifiers here too, like "Next %a", to avoid #. * repeated translation of the abbreviated day name. #: ../e-util/e-datetime-format.c:248 msgctxt "DateFmt" msgid "Next Thu" msgstr "下周四" #. Translators: This is used for abbreviated days in the future. #. * You can use strftime modifiers here too, like "Next %a", to avoid #. * repeated translation of the abbreviated day name. #: ../e-util/e-datetime-format.c:254 msgctxt "DateFmt" msgid "Next Fri" msgstr "下周五" #. Translators: This is used for abbreviated days in the future. #. * You can use strftime modifiers here too, like "Next %a", to avoid #. * repeated translation of the abbreviated day name. #: ../e-util/e-datetime-format.c:260 msgctxt "DateFmt" msgid "Next Sat" msgstr "下周六" #. Translators: This is used for abbreviated days in the future. #. * You can use strftime modifiers here too, like "Next %a", to avoid #. * repeated translation of the abbreviated day name. #: ../e-util/e-datetime-format.c:266 msgctxt "DateFmt" msgid "Next Sun" msgstr "下周日" #: ../e-util/e-datetime-format.c:353 ../e-util/e-datetime-format.c:363 #: ../e-util/e-datetime-format.c:372 msgid "Use locale default" msgstr "使用本地默认值" #: ../e-util/e-datetime-format.c:577 msgid "Format:" msgstr "格式:" #: ../e-util/e-file-utils.c:121 msgid "(Unknown Filename)" msgstr "(未知文件名)" #. Translators: The string value is the basename of a file. #: ../e-util/e-file-utils.c:125 #, c-format msgid "Writing \"%s\"" msgstr "正在写入“%s”" #. Translators: The first string value is the basename of a #. * remote file, the second string value is the hostname. #: ../e-util/e-file-utils.c:130 #, c-format msgid "Writing \"%s\" to %s" msgstr "把“%s”写入到 %s" #. Don't delete this code, since it is needed so that xgettext can extract the translations. #. * Please, keep these strings in sync with the strings in the timespans array #: ../e-util/e-filter-datespec.c:67 #, c-format msgid "1 second ago" msgid_plural "%d seconds ago" msgstr[0] "%d 秒前" #: ../e-util/e-filter-datespec.c:68 #, c-format msgid "1 second in the future" msgid_plural "%d seconds in the future" msgstr[0] "%d 秒内" #: ../e-util/e-filter-datespec.c:69 #, c-format msgid "1 minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d 分钟前" #: ../e-util/e-filter-datespec.c:70 #, c-format msgid "1 minute in the future" msgid_plural "%d minutes in the future" msgstr[0] "%d 分钟内" #: ../e-util/e-filter-datespec.c:71 #, c-format msgid "1 hour ago" msgid_plural "%d hours ago" msgstr[0] "%d 小时前" #: ../e-util/e-filter-datespec.c:72 #, c-format msgid "1 hour in the future" msgid_plural "%d hours in the future" msgstr[0] "%d 小时内" #: ../e-util/e-filter-datespec.c:73 #, c-format msgid "1 day ago" msgid_plural "%d days ago" msgstr[0] "%d 天前" #: ../e-util/e-filter-datespec.c:74 #, c-format msgid "1 day in the future" msgid_plural "%d days in the future" msgstr[0] "%d 内" #: ../e-util/e-filter-datespec.c:75 #, c-format msgid "1 week ago" msgid_plural "%d weeks ago" msgstr[0] "%d 周前" #: ../e-util/e-filter-datespec.c:76 #, c-format msgid "1 week in the future" msgid_plural "%d weeks in the future" msgstr[0] "%d 周内" #: ../e-util/e-filter-datespec.c:77 #, c-format msgid "1 month ago" msgid_plural "%d months ago" msgstr[0] "%d 个月前" #: ../e-util/e-filter-datespec.c:78 #, c-format msgid "1 month in the future" msgid_plural "%d months in the future" msgstr[0] "%d 个月内" #: ../e-util/e-filter-datespec.c:79 #, c-format msgid "1 year ago" msgid_plural "%d years ago" msgstr[0] "%d 年前" #: ../e-util/e-filter-datespec.c:80 #, c-format msgid "1 year in the future" msgid_plural "%d years in the future" msgstr[0] "%d 年内" #: ../e-util/e-filter-datespec.c:130 msgid "" msgstr "<单击此处以选择日期>" #: ../e-util/e-filter-datespec.c:133 ../e-util/e-filter-datespec.c:144 #: ../e-util/e-filter-datespec.c:155 msgid "now" msgstr "现在" #. strftime for date filter display, only needs to show a day date (i.e. no time) #: ../e-util/e-filter-datespec.c:140 msgid "%d-%b-%Y" msgstr "%Y-%m-%d" #: ../e-util/e-filter-datespec.c:289 msgid "Select a time to compare against" msgstr "选择用于比较的时间" #: ../e-util/e-filter-file.c:187 msgid "Choose a File" msgstr "选择文件" #: ../e-util/e-filter-rule.c:743 msgid "R_ule name:" msgstr "规则名(_U):" #: ../e-util/e-filter-rule.c:793 msgid "all the following conditions" msgstr "以下所有情况" #: ../e-util/e-filter-rule.c:794 msgid "any of the following conditions" msgstr "以下情况中任意一种或几种" #: ../e-util/e-filter-rule.c:800 msgid "_Find items which match:" msgstr "寻找符合条件的项目 (_F):" #: ../e-util/e-filter-rule.c:823 msgid "Find items that meet the following conditions" msgstr "查找符合下列条件的项目" #. Translators: "None" for not including threads; #. * part of "Include threads: None" #. protocol: #. name: #: ../e-util/e-filter-rule.c:838 ../e-util/e-mail-signature-combo-box.c:369 #: ../libemail-engine/camel-null-store.c:28 #: ../mail/e-mail-config-summary-page.c:139 #: ../modules/book-config-ldap/evolution-book-config-ldap.c:622 msgid "None" msgstr "无" #: ../e-util/e-filter-rule.c:839 msgid "All related" msgstr "相关的全部" #: ../e-util/e-filter-rule.c:841 msgid "Replies and parents" msgstr "回复及原始邮件" #: ../e-util/e-filter-rule.c:842 msgid "No reply or parent" msgstr "无回复或原始邮件" #: ../e-util/e-filter-rule.c:845 msgid "I_nclude threads:" msgstr "包含线索(_N):" #: ../e-util/e-filter-rule.c:922 msgid "A_dd Condition" msgstr "添加动作(_D)" #: ../e-util/e-filter-rule.c:1239 ../mail/em-utils.c:241 msgid "Outgoing" msgstr "寄出" #: ../e-util/e-import-assistant.c:256 msgid "" "Choose the file that you want to import into Evolution, and select what type " "of file it is from the list." msgstr "选择您希望导入到 Evolution 的文件,并从列表中选择文件的类型。" #: ../e-util/e-import-assistant.c:283 msgid "Select a file" msgstr "选择一个文件" #: ../e-util/e-import-assistant.c:297 ../e-util/e-import-assistant.c:472 msgid "File _type:" msgstr "文件类型(_T):" #: ../e-util/e-import-assistant.c:340 ../e-util/e-import-assistant.c:921 msgid "Choose the destination for this import" msgstr "选择此导入的目的位置" #: ../e-util/e-import-assistant.c:365 msgid "Choose the type of importer to run:" msgstr "选择要运行的导入器类型:" #: ../e-util/e-import-assistant.c:373 msgid "Import data and settings from _older programs" msgstr "从旧版程序中导入数据和设置(_O)" #: ../e-util/e-import-assistant.c:381 msgid "Import a _single file" msgstr "导入单个文件(_S)" #: ../e-util/e-import-assistant.c:403 #: ../modules/startup-wizard/e-mail-config-import-page.c:202 msgid "Please select the information that you would like to import:" msgstr "请选择您希望导入的信息:" #: ../e-util/e-import-assistant.c:533 msgid "" "Evolution checked for settings to import from the following applications: " "Pine, Netscape, Elm, iCalendar. No importable settings found. If you would " "like to try again, please click the \"Back\" button." msgstr "" "Evolution " "检查了从以下程序导入的设置:Pine、Netscape、Elm、iCalendar。并未发现可导入的设置。如果您想要再试一次,请单击“上一步”按钮。" #: ../e-util/e-import-assistant.c:559 #: ../modules/startup-wizard/e-mail-config-import-page.c:231 #, c-format msgid "From %s:" msgstr "从 %s:" #. Install a custom "Cancel Import" button. #: ../e-util/e-import-assistant.c:775 msgid "_Cancel Import" msgstr "取消导入(_C)" #: ../e-util/e-import-assistant.c:920 msgid "Preview data to be imported" msgstr "预览要导入的信息" #: ../e-util/e-import-assistant.c:926 ../e-util/e-import-assistant.c:939 #: ../e-util/e-import-assistant.c:1292 ../e-util/e-import-assistant.c:1368 #: ../e-util/e-import-assistant.c:1377 msgid "Import Data" msgstr "导入数据" #: ../e-util/e-import-assistant.c:934 msgid "Select what type of file you want to import from the list." msgstr "选择您想从列表导入的类型" #: ../e-util/e-import-assistant.c:1282 ../e-util/e-import-assistant.c:1317 msgid "Evolution Import Assistant" msgstr "Evolution 导入助手" #: ../e-util/e-import-assistant.c:1299 ../e-util/e-import-assistant.c:1355 msgid "Import Location" msgstr "导入位置" #: ../e-util/e-import-assistant.c:1310 msgid "" "Welcome to the Evolution Import Assistant.\n" "With this assistant you will be guided through the process of importing " "external files into Evolution." msgstr "" "欢迎使用 Evolution 导入助手。\n" "本助手将全程指导您将外部文件导入 Evolution。" #: ../e-util/e-import-assistant.c:1327 msgid "Importer Type" msgstr "导入器类型" #: ../e-util/e-import-assistant.c:1337 msgid "Select Information to Import" msgstr "选择要导入的信息" #: ../e-util/e-import-assistant.c:1346 msgid "Select a File" msgstr "选择一个文件" #: ../e-util/e-import-assistant.c:1363 msgid "Click \"Apply\" to begin importing the file into Evolution." msgstr "单击“应用”以便开始将文件导入到 Evolution。" #: ../e-util/e-mail-signature-combo-box.c:378 msgid "Autogenerated" msgstr "自动生成的" #: ../e-util/e-mail-signature-editor.c:310 msgid "Close" msgstr "关闭" #: ../e-util/e-mail-signature-editor.c:315 msgid "_Save and Close" msgstr "保存并关闭(_S)" #: ../e-util/e-mail-signature-editor.c:529 msgid "Edit Signature" msgstr "编辑签名" #: ../e-util/e-mail-signature-editor.c:549 msgid "_Signature Name:" msgstr "签名(_S):" #: ../e-util/e-mail-signature-editor.c:595 msgid "Unnamed" msgstr "未命名" #: ../e-util/e-mail-signature-manager.c:337 msgid "Add _Script" msgstr "添加脚本(_S)" #: ../e-util/e-mail-signature-manager.c:422 msgid "Add Signature Script" msgstr "添加签名脚本" #: ../e-util/e-mail-signature-manager.c:492 msgid "Edit Signature Script" msgstr "编辑签名脚本" #: ../e-util/e-mail-signature-script-dialog.c:395 msgid "" "The output of this script will be used as your\n" "signature. The name you specify will be used\n" "for display purposes only." msgstr "" "此脚本的输出将用于您的签名。您指定的名称将只会\n" "用于显示。" #: ../e-util/e-mail-signature-script-dialog.c:446 msgid "S_cript:" msgstr "脚本(_C):" #: ../e-util/e-mail-signature-script-dialog.c:477 msgid "Script file must be executable." msgstr "脚本文件必须可执行。" #: ../e-util/e-map.c:886 msgid "World Map" msgstr "世界地图" #: ../e-util/e-map.c:889 msgid "" "Mouse-based interactive map widget for selecting timezone. Keyboard users " "should instead select the timezone from the drop-down combination box below." msgstr "基于鼠标交互的地图部件,可用来选择时区。键盘用户可以从下方的组合框中选择时区。" #: ../e-util/e-misc-utils.c:242 msgid "Could not open the link." msgstr "无法打开链接。" #: ../e-util/e-misc-utils.c:289 msgid "Could not display help for Evolution." msgstr "无法显示 Evolution 的帮助。" #: ../e-util/e-name-selector-dialog.c:279 msgid "Show Contacts" msgstr "显示联系人" #: ../e-util/e-name-selector-dialog.c:311 msgid "Address B_ook:" msgstr "地址簿(_B):" #: ../e-util/e-name-selector-dialog.c:318 msgid "Cat_egory:" msgstr "分类(_C):" #: ../e-util/e-name-selector-dialog.c:342 msgid "_Search:" msgstr "搜索(_S):" #: ../e-util/e-name-selector-dialog.c:368 #: ../e-util/e-name-selector-dialog.c:1276 #: ../modules/addressbook/e-book-shell-view-actions.c:1113 #: ../modules/calendar/e-cal-shell-view-actions.c:1733 #: ../modules/calendar/e-memo-shell-view-actions.c:767 #: ../modules/calendar/e-task-shell-view-actions.c:938 msgid "Any Category" msgstr "任何类别" #: ../e-util/e-name-selector-dialog.c:370 msgid "Co_ntacts" msgstr "联系人(_C):" #: ../e-util/e-name-selector-dialog.c:447 msgid "Search" msgstr "搜索" #: ../e-util/e-name-selector-dialog.c:450 #: ../mail/importers/pine-importer.c:431 msgid "Address Book" msgstr "地址簿" #: ../e-util/e-name-selector-dialog.c:578 msgid "Select Contacts from Address Book" msgstr "从地址簿选择联系人" #: ../e-util/e-name-selector-dialog.c:1001 msgid "_Remove" msgstr "删除(_R)" #. To Translators: This would be similiar to "Expand MyList Inline" where MyList is a Contact List #: ../e-util/e-name-selector-entry.c:3028 #, c-format msgid "E_xpand %s Inline" msgstr "行内展开 %s (_E)" #. Copy Contact Item #: ../e-util/e-name-selector-entry.c:3044 #, c-format msgid "Cop_y %s" msgstr "复制 %s (_C)" #. Cut Contact Item #: ../e-util/e-name-selector-entry.c:3055 #, c-format msgid "C_ut %s" msgstr "剪切 %s (_C)" #. Edit Contact item #: ../e-util/e-name-selector-entry.c:3073 #, c-format msgid "_Edit %s" msgstr "编辑 %s (_E)" #: ../e-util/e-name-selector-list.c:583 #, c-format msgid "_Delete %s" msgstr "删除 %s (_D)" #: ../e-util/e-online-button.c:31 msgid "Evolution is currently online. Click this button to work offline." msgstr "Evolution 目前在线。单击该按钮可离线工作。" #: ../e-util/e-online-button.c:34 msgid "Evolution is currently offline. Click this button to work online." msgstr "Evolution 目前离线。单击该按钮可在线工作。" #: ../e-util/e-online-button.c:37 msgid "Evolution is currently offline because the network is unavailable." msgstr "因为网络不可用,所以 Evolution 目前离线。" #: ../e-util/e-passwords.c:127 msgid "Keyring key is unusable: no user or host name" msgstr "无法使用钥匙串密码,找不到用户或主机名" #: ../e-util/e-passwords.c:447 msgid "You have the Caps Lock key on." msgstr "您打开了大写锁定键" #: ../e-util/e-passwords.c:578 msgid "_Remember this passphrase" msgstr "记住口令 (_R)" #: ../e-util/e-passwords.c:579 msgid "_Remember this passphrase for the remainder of this session" msgstr "在本次会话中记住口令 (_R)" #: ../e-util/e-passwords.c:584 msgid "_Remember this password" msgstr "记住密码 (_R)" #: ../e-util/e-passwords.c:585 msgid "_Remember this password for the remainder of this session" msgstr "在本次会话中记住密码 (_R)" #: ../e-util/e-preferences-window.c:318 msgid "Evolution Preferences" msgstr "Evolution 首选项" #: ../e-util/e-print.c:161 msgid "An error occurred while printing" msgstr "打印时发生了错误" #: ../e-util/e-print.c:168 msgid "The printing system reported the following details about the error:" msgstr "打印系统报告了下列错误细节:" #: ../e-util/e-print.c:174 msgid "" "The printing system did not report any additional details about the error." msgstr "打印系统未报告关于错误的任何额外细节。" #: ../e-util/e-rule-editor.c:185 msgid "Add Rule" msgstr "添加规则" #: ../e-util/e-rule-editor.c:287 msgid "Edit Rule" msgstr "编辑规则" #: ../e-util/e-search-bar.c:81 #, c-format msgid "Matches: %u" msgstr "符合条件:%u" #: ../e-util/e-search-bar.c:565 msgid "Close the find bar" msgstr "关闭查找栏" #: ../e-util/e-search-bar.c:573 msgid "Fin_d:" msgstr "查找(_D):" #: ../e-util/e-search-bar.c:585 msgid "Clear the search" msgstr "清除搜索" #: ../e-util/e-search-bar.c:609 msgid "_Previous" msgstr "上一项(_P)" #: ../e-util/e-search-bar.c:615 msgid "Find the previous occurrence of the phrase" msgstr "寻找该词句出现的前一个位置" #: ../e-util/e-search-bar.c:624 msgid "_Next" msgstr "下一项(_N)" #: ../e-util/e-search-bar.c:630 msgid "Find the next occurrence of the phrase" msgstr "寻找该词句出现的下一个位置" #: ../e-util/e-search-bar.c:639 msgid "Mat_ch case" msgstr "大小写匹配(_C)" #: ../e-util/e-search-bar.c:667 msgid "Reached bottom of page, continued from top" msgstr "到达页面底部,移到顶部继续" #: ../e-util/e-search-bar.c:689 msgid "Reached top of page, continued from bottom" msgstr "到达页面顶部,移到底部继续" #: ../e-util/e-send-options.c:538 ../mail/importers/elm-importer.c:331 #: ../mail/importers/pine-importer.c:424 #: ../modules/mail/e-mail-shell-view.c:1088 msgid "Mail" msgstr "邮件" #: ../e-util/e-send-options.c:570 msgid "When de_leted:" msgstr "删除时(_L):" #: ../e-util/e-source-config.c:681 ../e-util/e-source-config.c:685 msgid "Type:" msgstr "类型:" #: ../e-util/e-source-config.c:693 ../e-util/e-source-config.c:697 msgid "Name:" msgstr "名称:" #. Translators: This is the first of a sequence of widgets: #. * "Refresh every [NUMERIC_ENTRY] [TIME_UNITS_COMBO]" #: ../e-util/e-source-config.c:1302 msgid "Refresh every" msgstr "刷新间隔" #: ../e-util/e-source-config.c:1332 ../e-util/e-source-config.c:1402 msgid "Use a secure connection" msgstr "使用安全连接" #: ../e-util/e-source-config.c:1428 msgid "Unset _trust for SSL certificate" msgstr "停止信任 SSL 证书 (_T)" #: ../e-util/e-source-config.c:1464 msgid "User" msgstr "用户" #: ../e-util/e-source-selector-dialog.c:229 msgid "_Destination" msgstr "目标 (_D)" #: ../e-util/e-source-selector-dialog.c:342 msgid "Select destination" msgstr "选择目标" #. no suggestions. Put something in the menu anyway... #: ../e-util/e-spell-entry.c:384 msgid "(no suggestions)" msgstr "(没有建议)" #: ../e-util/e-spell-entry.c:408 msgid "More..." msgstr "更多..." #. + Add to Dictionary #: ../e-util/e-spell-entry.c:479 #, c-format msgid "Add \"%s\" to Dictionary" msgstr "将 \"%s\" 加入字典" #. - Ignore All #: ../e-util/e-spell-entry.c:530 msgid "Ignore All" msgstr "忽略全部" #: ../e-util/e-spell-entry.c:558 msgid "Spelling Suggestions" msgstr "拼写检查" #: ../e-util/e-system.error.xml.h:1 msgid "A file named \"{0}\" already exists. Do you want to replace it?" msgstr "文件名 \"{0}\" 已存在。是否进行替换?" #: ../e-util/e-system.error.xml.h:2 msgid "" "The file already exists in \"{0}\". Replacing it will overwrite its contents." msgstr "文件已在 \"{0}\" 中存在。替换操作将覆盖其内容。" #: ../e-util/e-system.error.xml.h:3 msgid "_Replace" msgstr "替换 (_R)" #: ../e-util/e-system.error.xml.h:4 msgid "Cannot save file \"{0}\"." msgstr "无法保存文件“{0}”。" #: ../e-util/e-system.error.xml.h:5 msgid "Because \"{1}\"." msgstr "原因是“{1}”。" #: ../e-util/e-system.error.xml.h:6 msgid "Cannot open file \"{0}\"." msgstr "无法打开文件“{0}”。" #: ../e-util/e-system.error.xml.h:7 msgid "Failed to remove data source "{0}"." msgstr "无法移除数据来源 "{0}"。" #: ../e-util/e-system.error.xml.h:8 ../mail/mail.error.xml.h:61 msgid "The reported error was "{1}"." msgstr "显示的错误是 "{1}"。" #: ../e-util/e-system.error.xml.h:9 msgid "Failed to update data source "{0}"." msgstr "无法更新数据来源 "{0}"。" #: ../e-util/e-system.error.xml.h:10 msgid "Failed to delete resource "{0}"." msgstr "无法删除数据来源 "{0}"。" #: ../e-util/e-system.error.xml.h:11 msgid "" "The address book backend servicing "{0}" has quit unexpectedly." msgstr "地址簿后端服务 "{0}" 意外退出。" #: ../e-util/e-system.error.xml.h:12 msgid "" "Some of your contacts may not be available until Evolution is restarted." msgstr "在 Evolution 重启之前您可能无法查看部分联系人。" #: ../e-util/e-system.error.xml.h:13 msgid "The calendar backend servicing "{0}" has quit unexpectedly." msgstr "日历后端服务 "{0}" 意外退出。" #: ../e-util/e-system.error.xml.h:14 msgid "" "Some of your appointments may not be available until Evolution is restarted." msgstr "在 Evolution 重启之前您可能无法查看部分日历事件。" #: ../e-util/e-system.error.xml.h:15 msgid "" "The memo list backend servicing "{0}" has quit unexpectedly." msgstr "备忘录后端服务 "{0}" 意外退出。" #: ../e-util/e-system.error.xml.h:16 msgid "Some of your memos may not be available until Evolution is restarted." msgstr "在 Evolution 重启之前您可能无法查看部分备忘录。" #: ../e-util/e-system.error.xml.h:17 msgid "" "The task list backend servicing "{0}" has quit unexpectedly." msgstr "任务列表后端服务 "{0}" 意外退出。" #: ../e-util/e-system.error.xml.h:18 msgid "Some of your tasks may not be available until Evolution is restarted." msgstr "在 Evolution 重启之前您可能无法查看部分任务。" #: ../e-util/e-system.error.xml.h:19 msgid "" "The address book backend servicing "{0}" encountered an error." msgstr "地址簿后端服务 "{0}" 遇到了一个问题。" #: ../e-util/e-system.error.xml.h:20 msgid "The calendar backend servicing "{0}" encountered an error." msgstr "日历后端服务 "{0}" 遇到了一个问题。" #: ../e-util/e-system.error.xml.h:21 msgid "The memo list backend servicing "{0}" encountered an error." msgstr "备忘列表后端服务 "{0}" 遇到了一个问题。" #: ../e-util/e-system.error.xml.h:22 msgid "The task list backend servicing "{0}" encountered an error." msgstr "任务列表后端服务 "{0}" 遇到了一个问题。" #: ../e-util/e-table-click-to-add.c:680 #: ../e-util/gal-a11y-e-table-click-to-add.c:62 #: ../e-util/gal-a11y-e-table-click-to-add.c:143 msgid "click to add" msgstr "单击可添加" #: ../e-util/e-table-column-selector.c:266 msgid "Move selected column names to top" msgstr "将选定的列移动到顶部" #: ../e-util/e-table-column-selector.c:271 msgid "Move selected column names up one row" msgstr "将选定的列向上移动一行" #: ../e-util/e-table-column-selector.c:276 msgid "Move selected column names down one row" msgstr "将选定的列向下移动一行" #: ../e-util/e-table-column-selector.c:281 msgid "Move selected column names to bottom" msgstr "将选定的列移动到底部" #: ../e-util/e-table-column-selector.c:286 msgid "Select all column names" msgstr "选定所有列" #: ../e-util/e-table-config.c:389 ../e-util/e-table-config.c:435 msgid "(Ascending)" msgstr "(升序)" #: ../e-util/e-table-config.c:389 ../e-util/e-table-config.c:435 msgid "(Descending)" msgstr "(降序)" #: ../e-util/e-table-config.c:396 msgid "Not sorted" msgstr "未排序" #: ../e-util/e-table-config.c:441 msgid "No grouping" msgstr "未分组" #: ../e-util/e-table-config.c:546 msgid "Show Fields" msgstr "显示域" #: ../e-util/e-table-config.c:562 msgid "Choose the order of information to appear in the message list." msgstr "选择显示在消息列表中的信息顺序" #: ../e-util/e-table-field-chooser-dialog.c:227 msgid "Add a Column" msgstr "添加一列" #: ../e-util/e-table-field-chooser.c:167 msgid "" "To add a column to your table, drag it into\n" "the location in which you want it to appear." msgstr "要在您的表格中添加列,请将其拖曳到您想要其出现的位置。" #: ../e-util/e-table-group-container.c:369 #, c-format msgid "%s: %s (%d item)" msgid_plural "%s: %s (%d items)" msgstr[0] "%s:%s (%d 项)" #: ../e-util/e-table-group-container.c:383 #, c-format msgid "%s (%d item)" msgid_plural "%s (%d items)" msgstr[0] "%s (%d 项)" #: ../e-util/e-table-header-item.c:1576 msgid "Customize Current View" msgstr "自定义当前视图" #: ../e-util/e-table-header-item.c:1599 msgid "Sort _Ascending" msgstr "升序排序(_A)" #: ../e-util/e-table-header-item.c:1602 msgid "Sort _Descending" msgstr "降序排序(_D)" #: ../e-util/e-table-header-item.c:1605 msgid "_Unsort" msgstr "未排序(_U)" #: ../e-util/e-table-header-item.c:1608 msgid "Group By This _Field" msgstr "按该域分组(_F)" #: ../e-util/e-table-header-item.c:1611 msgid "Group By _Box" msgstr "按方框分组(_B)" #: ../e-util/e-table-header-item.c:1615 msgid "Remove This _Column" msgstr "删除该列(_C)" #: ../e-util/e-table-header-item.c:1618 msgid "Add a C_olumn..." msgstr "添加一列(_O)..." #: ../e-util/e-table-header-item.c:1622 msgid "A_lignment" msgstr "对齐(_L)" #: ../e-util/e-table-header-item.c:1625 msgid "B_est Fit" msgstr "最佳匹配(_E)" #: ../e-util/e-table-header-item.c:1628 msgid "Format Column_s..." msgstr "格式化列(_S)..." #: ../e-util/e-table-header-item.c:1632 msgid "Custo_mize Current View..." msgstr "自定义当前视图(_M)..." #: ../e-util/e-table-header-item.c:1703 msgid "_Sort By" msgstr "排序方式(_S)" #. Custom #: ../e-util/e-table-header-item.c:1726 msgid "_Custom" msgstr "自定义(_C)" #: ../e-util/e-text.c:2098 msgid "Select All" msgstr "全选" #: ../e-util/e-text.c:2111 msgid "Input Methods" msgstr "输入法" #. Put the "UTC" entry at the top of the combo's list. #: ../e-util/e-timezone-dialog.c:207 ../e-util/e-timezone-dialog.c:429 #: ../e-util/e-timezone-dialog.c:433 ../e-util/e-timezone-dialog.c:437 #: ../e-util/e-timezone-dialog.c:803 msgid "UTC" msgstr "UTC" #: ../e-util/e-url-entry.c:109 msgid "Click here to open the URL" msgstr "单击此处打开 URL 地址" #: ../e-util/e-url-entry.c:111 msgid "Enter a URL here" msgstr "在此处输入 URL 地址" #: ../e-util/e-web-view-gtkhtml.c:406 ../e-util/e-web-view.c:285 msgid "_Copy Link Location" msgstr "复制链接位置(_C)" #: ../e-util/e-web-view-gtkhtml.c:408 ../e-util/e-web-view.c:287 msgid "Copy the link to the clipboard" msgstr "将链接复制到剪贴板" #: ../e-util/e-web-view-gtkhtml.c:416 ../e-util/e-web-view.c:295 msgid "_Open Link in Browser" msgstr "在浏览器中打开链接(_O)" #: ../e-util/e-web-view-gtkhtml.c:418 ../e-util/e-web-view.c:297 msgid "Open the link in a web browser" msgstr "在浏览器中打开链接" #: ../e-util/e-web-view-gtkhtml.c:426 ../e-util/e-web-view.c:305 msgid "_Copy Email Address" msgstr "复制电子邮件地址(_C)" #: ../e-util/e-web-view-gtkhtml.c:443 ../e-util/e-web-view.c:322 msgid "_Copy Image" msgstr "复制图像(_C)" #: ../e-util/e-web-view-gtkhtml.c:445 ../e-util/e-web-view.c:324 msgid "Copy the image to the clipboard" msgstr "将图像复制到剪贴板" #: ../e-util/e-web-view-gtkhtml.c:465 ../e-util/e-web-view-gtkhtml.c:1308 #: ../e-util/e-web-view.c:351 ../e-util/e-web-view.c:1317 msgid "Select all text and images" msgstr "选中全部文本和图像" #: ../e-util/e-web-view-gtkhtml.c:972 ../e-util/e-web-view-gtkhtml.c:974 #: ../e-util/e-web-view-gtkhtml.c:976 ../e-util/e-web-view.c:992 #: ../e-util/e-web-view.c:994 ../e-util/e-web-view.c:996 #, c-format msgid "Click to call %s" msgstr "单击以呼叫 %s" #: ../e-util/e-web-view-gtkhtml.c:978 ../e-util/e-web-view.c:998 msgid "Click to hide/unhide addresses" msgstr "单击可隐藏/显示地址" #: ../e-util/e-web-view-gtkhtml.c:980 ../e-util/e-web-view.c:1000 #, c-format msgid "Click to open %s" msgstr "单击以打开 %s" #: ../e-util/e-web-view.c:329 msgid "Save _Image..." msgstr "保存图像(_I)..." #: ../e-util/e-web-view.c:331 msgid "Save the image to a file" msgstr "保存该图像为文件" #: ../e-util/e-web-view.c:2894 msgid "Copying image to clipboard" msgstr "将图片复制到剪贴板" #: ../e-util/e-web-view.c:3082 msgid "Save Image" msgstr "保存图像" #: ../e-util/e-web-view.c:3118 #, c-format msgid "Saving image to '%s'" msgstr "将图片保存到 '%s'" #: ../e-util/ea-calendar-item.c:315 ../e-util/ea-calendar-item.c:324 msgid "%d %B %Y" msgstr "%Y年%-m月%-d日" #: ../e-util/ea-calendar-item.c:327 #, c-format msgid "Calendar: from %s to %s" msgstr "日历:从 %s 到 %s" #: ../e-util/ea-calendar-item.c:364 msgid "evolution calendar item" msgstr "Evolution 日历项目" #: ../e-util/evolution-source-viewer.c:635 msgid "Evolution Source Viewer" msgstr "Evolution 来源查看器" #. Translators: The name that is displayed in the user interface #: ../e-util/evolution-source-viewer.c:665 msgid "Display Name" msgstr "显示名称" #: ../e-util/evolution-source-viewer.c:674 msgid "Flags" msgstr "旗标" #: ../e-util/evolution-source-viewer.c:726 #: ../mail/e-mail-config-identity-page.c:678 msgid "Identity" msgstr "标识" #: ../e-util/filter.error.xml.h:1 msgid "Missing date." msgstr "缺少日期。" #: ../e-util/filter.error.xml.h:2 msgid "You must choose a date." msgstr "您忘记选择日期了。" #: ../e-util/filter.error.xml.h:3 msgid "Missing filename." msgstr "文件名缺失。" #: ../e-util/filter.error.xml.h:4 msgid "You must specify a filename." msgstr "您必须指定一个文件名" #: ../e-util/filter.error.xml.h:5 msgid "File "{0}" does not exist or is not a regular file." msgstr "文件“{0}”不存在或不是普通文件。" #: ../e-util/filter.error.xml.h:6 msgid "Bad regular expression "{0}"." msgstr "无效的正则表达式“{0}”。" #: ../e-util/filter.error.xml.h:7 msgid "Could not compile regular expression "{1}"." msgstr "无法编译正则表达式“{1}”。" #: ../e-util/filter.error.xml.h:8 ../mail/mail.error.xml.h:100 msgid "Missing name." msgstr "缺少名称。" #: ../e-util/filter.error.xml.h:9 msgid "You must name this filter." msgstr "您必须为该过滤规则命名。" #: ../e-util/filter.error.xml.h:10 msgid "Name "{0}" already used." msgstr "名称“{0}”已使用。" #: ../e-util/filter.error.xml.h:11 msgid "Please choose another name." msgstr "请另选一个名称。" #. Translators: description of a "popup" action #: ../e-util/gal-a11y-e-cell-popup.c:128 msgid "popup a child" msgstr "弹出子对象" #. Translators: description of a "toggle" action #: ../e-util/gal-a11y-e-cell-toggle.c:180 msgid "toggle the cell" msgstr "切换单元格" #. Translators: description of an "expand" action #: ../e-util/gal-a11y-e-cell-tree.c:215 msgid "expands the row in the ETree containing this cell" msgstr "在包含此单元格的 ETree 中展开行" #. Translators: description of a "collapse" action #: ../e-util/gal-a11y-e-cell-tree.c:223 msgid "collapses the row in the ETree containing this cell" msgstr "在包含此单元格的 ETree 中折叠行" #: ../e-util/gal-a11y-e-cell.c:123 msgid "Table Cell" msgstr "表格单元格" #: ../e-util/gal-a11y-e-table-click-to-add.c:72 msgid "click" msgstr "单击" #: ../e-util/gal-a11y-e-table-column-header.c:163 msgid "sort" msgstr "排序" #: ../e-util/gal-view-instance-save-as-dialog.c:296 msgid "Save Current View" msgstr "保存当前视图" #: ../e-util/widgets.error.xml.h:1 msgid "Do you wish to save your changes?" msgstr "您希望保存更改吗?" #: ../e-util/widgets.error.xml.h:2 msgid "This signature has been changed, but has not been saved." msgstr "签名已经更改,但尚未保存。" #: ../e-util/widgets.error.xml.h:3 msgid "_Discard changes" msgstr "丢弃更改(_D)" #: ../e-util/widgets.error.xml.h:4 msgid "Blank Signature" msgstr "空签名" #: ../e-util/widgets.error.xml.h:5 msgid "Please provide an unique name to identify this signature." msgstr "请提供此签名的唯一标识名称。" #: ../e-util/widgets.error.xml.h:6 msgid "Unable to copy image to clipboard." msgstr "无法将图片复制到剪贴板。" #: ../e-util/widgets.error.xml.h:7 msgid "Unable to save image." msgstr "无法保存图片。" #: ../e-util/widgets.error.xml.h:8 msgid "Could not load signature." msgstr "无法加载签名。" #: ../e-util/widgets.error.xml.h:9 msgid "Could not save signature." msgstr "无法保存签名。" #: ../libemail-engine/camel-sasl-xoauth2.c:27 msgid "OAuth2" msgstr "OAuth2" #: ../libemail-engine/camel-sasl-xoauth2.c:28 msgid "" "This option will use an OAuth 2.0 access token to connect to the server" msgstr "此选项将用 OAuth 2.0 方式连接至服务器" #: ../libemail-engine/e-mail-authenticator.c:182 #, c-format msgid "Invalid authentication result code (%d)" msgstr "无效的认证结果码 (%d)" #: ../libemail-engine/e-mail-folder-utils.c:114 #, c-format msgid "Saving message to folder '%s'" msgstr "把信息保存到文件夹 %s 中" #: ../libemail-engine/e-mail-folder-utils.c:572 msgid "Forwarded messages" msgstr "转发的信息" #: ../libemail-engine/e-mail-folder-utils.c:682 #: ../libemail-engine/e-mail-folder-utils.c:933 #, c-format msgid "Retrieving %d message" msgid_plural "Retrieving %d messages" msgstr[0] "收取 %d 封信" #: ../libemail-engine/e-mail-folder-utils.c:776 msgid "Scanning messages for duplicates" msgstr "扫描信息中的重复信息?" #: ../libemail-engine/e-mail-folder-utils.c:1184 #, c-format msgid "Removing folder '%s'" msgstr "删除文件夹 %s" #: ../libemail-engine/e-mail-folder-utils.c:1321 #, c-format msgid "File \"%s\" has been removed." msgstr "已经删除了“%s”文件。" #: ../libemail-engine/e-mail-folder-utils.c:1325 msgid "File has been removed." msgstr "文件已移除。" #: ../libemail-engine/e-mail-folder-utils.c:1384 msgid "Removing attachments" msgstr "正在移除附件" #: ../libemail-engine/e-mail-folder-utils.c:1548 #, c-format msgid "Saving %d message" msgid_plural "Saving %d messages" msgstr[0] "保存 %d 封信" #: ../libemail-engine/e-mail-folder-utils.c:1926 #, c-format msgid "Invalid folder URI '%s'" msgstr "无效的文件夹 URI:“%s”" #: ../libemail-engine/e-mail-session-utils.c:540 msgid "No mail transport service available" msgstr "没有可用的邮件传送服务" #: ../libemail-engine/e-mail-session-utils.c:640 #: ../libemail-engine/mail-ops.c:730 #, c-format msgid "Failed to apply outgoing filters: %s" msgstr "应用寄出过滤器失败:%s" #: ../libemail-engine/e-mail-session-utils.c:689 #: ../libemail-engine/mail-ops.c:774 #, c-format msgid "" "Failed to append to %s: %s\n" "Appending to local 'Sent' folder instead." msgstr "" "追加到 %s:%s 失败\n" "转而追加到本地“已发”文件夹。" #: ../libemail-engine/e-mail-session-utils.c:715 #: ../libemail-engine/mail-ops.c:798 #, c-format msgid "Failed to append to local 'Sent' folder: %s" msgstr "追加到本地“已发”文件夹失败:%s" #: ../libemail-engine/e-mail-session-utils.c:916 #: ../libemail-engine/mail-ops.c:929 ../libemail-engine/mail-ops.c:1031 msgid "Sending message" msgstr "发送信息" #: ../libemail-engine/e-mail-session.c:120 ../mail/em-folder-properties.c:342 #: ../mail/em-folder-tree-model.c:789 #: ../modules/mail/e-mail-shell-view-private.c:1061 #: ../modules/mail/e-mail-shell-view-private.c:1072 msgid "Inbox" msgstr "收件箱" #. E_MAIL_LOCAL_FOLDER_INBOX #: ../libemail-engine/e-mail-session.c:121 ../mail/em-folder-tree-model.c:782 #: ../modules/mail/e-mail-shell-view-private.c:1059 msgid "Drafts" msgstr "草稿" #. E_MAIL_LOCAL_FOLDER_DRAFTS #: ../libemail-engine/e-mail-session.c:122 ../mail/em-folder-tree-model.c:793 #: ../modules/mail/e-mail-shell-view-private.c:1063 msgid "Outbox" msgstr "发件箱" #. E_MAIL_LOCAL_FOLDER_OUTBOX #: ../libemail-engine/e-mail-session.c:123 ../mail/em-folder-tree-model.c:797 #: ../modules/mail/e-mail-shell-view-private.c:1065 msgid "Sent" msgstr "已发箱" #. E_MAIL_LOCAL_FOLDER_SENT #: ../libemail-engine/e-mail-session.c:124 ../mail/em-folder-tree-model.c:785 #: ../modules/mail/e-mail-shell-view-private.c:1067 #: ../plugins/templates/org-gnome-templates.eplug.xml.h:1 #: ../plugins/templates/templates.c:1082 ../plugins/templates/templates.c:1381 #: ../plugins/templates/templates.c:1391 msgid "Templates" msgstr "模板" #: ../libemail-engine/e-mail-session.c:1347 #, c-format msgid "User cancelled operation" msgstr "用户取消了操作" #: ../libemail-engine/e-mail-session.c:1542 #, c-format msgid "%s authentication failed" msgstr "%s 认证失败" #: ../libemail-engine/e-mail-session.c:1592 #, c-format msgid "No data source found for UID '%s'" msgstr "未发现 UID '%s' 的数据源" #: ../libemail-engine/e-mail-session.c:1655 #, c-format msgid "" "No destination address provided, forwarding of the message has been " "cancelled." msgstr "未提供收件方地址,转发操作被取消。" #: ../libemail-engine/e-mail-session.c:1668 #, c-format msgid "" "No identity found to use, forwarding of the message has been cancelled." msgstr "未提供验证信息,转发操作被取消。" #: ../libemail-engine/e-mail-store-utils.c:190 #, c-format msgid "Disconnecting from '%s'" msgstr "断开与 %s 的连接" #: ../libemail-engine/e-mail-store-utils.c:279 #, c-format msgid "Reconnecting to '%s'" msgstr "重新连接到 %s" #: ../libemail-engine/e-mail-store-utils.c:370 #, c-format msgid "Preparing account '%s' for offline" msgstr "正在准备离线使用帐号“%s”" #: ../libemail-engine/mail-folder-cache.c:1241 #, c-format msgid "Pinging %s" msgstr "查验 %s" #: ../libemail-engine/mail-ops.c:94 msgid "Filtering Selected Messages" msgstr "过滤选中的信息" #: ../libemail-engine/mail-ops.c:152 #, c-format msgid "" "Failed to filter selected messages. One reason can be that folder location " "set in one or more filters is invalid. Please check your filters in Edit-" ">Message Filters.\n" "Original error was: %s" msgstr "" "无法过滤所选信息。可能是因为一个或多个过滤器中含有无效的文件夹位置。请通过“编辑”->“消息过滤器”来检查过滤器设置。\n" "错误信息原文为: %s" #: ../libemail-engine/mail-ops.c:233 #, c-format msgid "Fetching mail from '%s'" msgstr "从 '%s' 收取邮件" #: ../libemail-engine/mail-ops.c:724 #, c-format msgid "" "Failed to apply outgoing filters. One reason can be that folder location set " "in one or more filters is invalid. Please check your filters in Edit-" ">Message Filters.\n" "Original error was: %s" msgstr "" "无法过滤发出邮件。可能是因为一个或多个过滤器中含有无效的文件夹位置。请通过“编辑”->“消息过滤器”来检查过滤器设置。\n" "错误信息原文为: %s" #: ../libemail-engine/mail-ops.c:940 #, c-format msgid "Sending message %d of %d" msgstr "正在发送第 %d 封信,共 %d 封" #: ../libemail-engine/mail-ops.c:992 #, c-format msgid "Failed to send a message" msgid_plural "Failed to send %d of %d messages" msgstr[0] "%d / %d 个消息发送失败" #: ../libemail-engine/mail-ops.c:998 msgid "Canceled." msgstr "已取消。" #: ../libemail-engine/mail-ops.c:1000 msgid "Complete." msgstr "完成。" #: ../libemail-engine/mail-ops.c:1112 #, c-format msgid "Moving messages to '%s'" msgstr "正在移动信息至 %s" #: ../libemail-engine/mail-ops.c:1113 #, c-format msgid "Copying messages to '%s'" msgstr "把信息复制到 %s" #: ../libemail-engine/mail-ops.c:1232 #, c-format msgid "Storing folder '%s'" msgstr "存储文件夹“%s”" #: ../libemail-engine/mail-ops.c:1360 #, c-format msgid "Expunging and storing account '%s'" msgstr "销毁并存储帐号“%s”" #: ../libemail-engine/mail-ops.c:1361 #, c-format msgid "Storing account '%s'" msgstr "存储帐号“%s”" #: ../libemail-engine/mail-ops.c:1435 #, c-format msgid "Emptying trash in '%s'" msgstr "清空“%s”中的废件箱" #: ../libemail-engine/mail-tools.c:71 #, c-format msgid "Could not create spool directory '%s': %s" msgstr "无法创建离线目录“%s”:%s" #: ../libemail-engine/mail-tools.c:111 #, c-format msgid "Trying to movemail a non-mbox source '%s'" msgstr "试图将邮件移至非 mbox 源 %s" #: ../libemail-engine/mail-tools.c:237 #, c-format msgid "Forwarded message - %s" msgstr "转发的信息 - %s" #: ../libemail-engine/mail-tools.c:239 msgid "Forwarded message" msgstr "转发的信息" #: ../libemail-engine/mail-vfolder.c:153 #, c-format msgid "Setting up Search Folder: %s" msgstr "设置搜索文件夹:%s" #: ../libemail-engine/mail-vfolder.c:306 #, c-format msgid "Updating Search Folders for '%s' - %s" msgstr "为 '%s' - %s 更新搜索文件夹" #. Translators: The first %s is name of the affected #. * search folder(s), the second %s is the URI of the #. * removed folder. For more than one search folder is #. * each of them on a separate line, with four spaces #. * in front of its name, without quotes. #: ../libemail-engine/mail-vfolder.c:670 #, c-format msgid "" "The Search Folder \"%s\" has been modified to account for the deleted " "folder\n" "\"%s\"." msgid_plural "" "The following Search Folders\n" "%s have been modified to account for the deleted folder\n" "\"%s\"." msgstr[0] "" "以下搜索文件夹\n" "%s 已经修改,以用于删除文件夹\n" "“%s”。" #: ../mail/e-mail-account-manager.c:116 ../mail/e-mail-account-manager.c:203 msgid "Open _Online Accounts" msgstr "打开在线账号 (_O)" #: ../mail/e-mail-account-manager.c:142 ../mail/e-mail-account-manager.c:229 msgid "This account was created through the Online Accounts service." msgstr "本帐号通过“在线账号”服务建立。" #: ../mail/e-mail-account-manager.c:690 msgid "_Restore Default" msgstr "重置为默认值 (_R)" #: ../mail/e-mail-account-manager.c:703 msgid "You can drag and drop account names to reorder them." msgstr "您可以直接拖放帐号来进行重排" #: ../mail/e-mail-account-manager.c:746 msgid "De_fault" msgstr "默认(_F)" #: ../mail/e-mail-account-tree-view.c:85 #: ../modules/mail/em-composer-prefs.c:443 #: ../modules/plugin-manager/evolution-plugin-manager.c:359 #: ../plugins/publish-calendar/publish-calendar.c:890 msgid "Enabled" msgstr "已启用" #: ../mail/e-mail-account-tree-view.c:109 msgid "Account Name" msgstr "帐号名" #: ../mail/e-mail-account-tree-view.c:136 #: ../mail/e-mail-config-security-page.c:335 #: ../mail/e-mail-config-security-page.c:475 ../mail/e-mail-reader.c:3600 #: ../mail/mail-config.ui.h:49 msgid "Default" msgstr "默认" #: ../mail/e-mail-autoconfig.c:578 msgid "No email address provided" msgstr "未提供邮件地址" #: ../mail/e-mail-autoconfig.c:587 msgid "Missing domain in email address" msgstr "邮件地址中域名缺失" #: ../mail/e-mail-backend.c:754 msgid "Unknown background operation" msgstr "未知的后台操作" #: ../mail/e-mail-browser.c:129 ../shell/e-shell-window-actions.c:860 #: ../shell/e-shell-window-actions.c:867 ../shell/e-shell-window-actions.c:874 msgid "Close this window" msgstr "关闭此窗口" #: ../mail/e-mail-browser.c:286 msgid "(No Subject)" msgstr "(无主题)" #. GtkAssistant sinks the floating button reference. #: ../mail/e-mail-config-assistant.c:102 msgid "_Skip Lookup" msgstr "跳过检查 (_S)" #: ../mail/e-mail-config-assistant.c:562 msgid "Evolution Account Assistant" msgstr "Evolution 帐号助手" #: ../mail/e-mail-config-auth-check.c:352 msgid "Check for Supported Types" msgstr "检查支持类型" #: ../mail/e-mail-config-confirm-page.c:157 msgid "" "Congratulations, your mail configuration is complete.\n" "\n" "You are now ready to send and receive email using Evolution.\n" "\n" "Click \"Apply\" to save your settings." msgstr "" "恭喜,您的邮件配置已经完成。\n" "\n" "您现在就可以用 Evolution 收发邮件了。\n" "\n" "单击“应用”可保存您的设置。" #: ../mail/e-mail-config-confirm-page.c:169 msgid "Done" msgstr "完成" #: ../mail/e-mail-config-defaults-page.c:552 msgid "Special Folders" msgstr "特殊文件夹" #: ../mail/e-mail-config-defaults-page.c:561 msgid "Draft Messages _Folder:" msgstr "草稿文件夹 (_F)" #: ../mail/e-mail-config-defaults-page.c:571 msgid "Choose a folder for saving draft messages." msgstr "选择存放草稿消息的文件夹。" #: ../mail/e-mail-config-defaults-page.c:585 msgid "Sent _Messages Folder:" msgstr "已发送信息文件夹(_M):" #: ../mail/e-mail-config-defaults-page.c:595 msgid "Choose a folder for saving sent messages." msgstr "选择存放已发送消息的文件夹。" #: ../mail/e-mail-config-defaults-page.c:614 msgid "S_ave replies in the folder of the message being replied to" msgstr "将回复消息与被回复消息放在同一个文件夹 (_A)" #: ../mail/e-mail-config-defaults-page.c:631 msgid "_Restore Defaults" msgstr "重置为默认值 (_R)" #: ../mail/e-mail-config-defaults-page.c:645 msgid "Use a Real Folder for _Trash:" msgstr "使用文件夹作为回收站 (_T):" #: ../mail/e-mail-config-defaults-page.c:646 msgid "Choose a folder for deleted messages." msgstr "选择存放已删除消息的文件夹。" #: ../mail/e-mail-config-defaults-page.c:655 msgid "Use a Real Folder for _Junk:" msgstr "使用文件夹存放垃圾邮件 (_J) :" #: ../mail/e-mail-config-defaults-page.c:656 msgid "Choose a folder for junk messages." msgstr "选择存放垃圾消息的文件夹。" #: ../mail/e-mail-config-defaults-page.c:673 msgid "Composing Messages" msgstr "撰写信息" #: ../mail/e-mail-config-defaults-page.c:682 msgid "Alway_s carbon-copy (cc) to:" msgstr "总是抄送到(_S):" #: ../mail/e-mail-config-defaults-page.c:707 msgid "Always _blind carbon-copy (bcc) to:" msgstr "总是密件抄送到(_B):" #: ../mail/e-mail-config-defaults-page.c:742 msgid "Message Receipts" msgstr "已读回执" #: ../mail/e-mail-config-defaults-page.c:751 msgid "S_end message receipts:" msgstr "发送信息收条(_E):" #: ../mail/e-mail-config-defaults-page.c:776 msgid "Never" msgstr "从不" #: ../mail/e-mail-config-defaults-page.c:782 msgid "Always" msgstr "总是" #: ../mail/e-mail-config-defaults-page.c:788 msgid "Ask for each message" msgstr "每条信息都询问" #: ../mail/e-mail-config-defaults-page.c:859 msgid "Defaults" msgstr "默认值" #: ../mail/e-mail-config-identity-page.c:266 msgid "" "Please enter your name and email address below. The \"optional\" fields " "below do not need to be filled in, unless you wish to include this " "information in email you send." msgstr "请在下面输入您的姓名和电子邮件地址。下面的“可选”域不必填入,除非您想要在您发出的邮件中包含此信息。" #: ../mail/e-mail-config-identity-page.c:294 #: ../mail/e-mail-config-summary-page.c:324 msgid "Account Information" msgstr "帐号信息" #: ../mail/e-mail-config-identity-page.c:303 #: ../mail/e-mail-config-summary-page.c:333 msgid "" "Type the name by which you would like to refer to this account.\n" "For example, \"Work\" or \"Personal\"." msgstr "" "输入一个帐号别名,\n" "比如“工作邮箱”或者“个人邮箱”。" #: ../mail/e-mail-config-identity-page.c:348 msgid "Required Information" msgstr "需要的信息" #: ../mail/e-mail-config-identity-page.c:357 msgid "Full Nam_e:" msgstr "全名(_E):" #: ../mail/e-mail-config-identity-page.c:384 msgid "Email _Address:" msgstr "电子邮件地址(_A):" #: ../mail/e-mail-config-identity-page.c:431 #: ../plugins/publish-calendar/publish-calendar.ui.h:26 msgid "Optional Information" msgstr "可选信息" #: ../mail/e-mail-config-identity-page.c:440 msgid "Re_ply-To:" msgstr "回复到(_P):" #: ../mail/e-mail-config-identity-page.c:467 msgid "Or_ganization:" msgstr "组织(_G):" #: ../mail/e-mail-config-identity-page.c:522 msgid "Add Ne_w Signature..." msgstr "添加新签名(_W)..." #: ../mail/e-mail-config-lookup-page.c:68 msgid "Looking up account details..." msgstr "查找帐号详细信息..." #: ../mail/e-mail-config-provider-page.c:485 msgid "Checking for New Mail" msgstr "检查新邮件" #: ../mail/e-mail-config-provider-page.c:501 msgid "Check for _new messages every" msgstr "自动检查新信息的间隔(_N)" #: ../mail/e-mail-config-provider-page.c:700 msgid "Receiving Options" msgstr "接收选项" #: ../mail/e-mail-config-receiving-page.c:50 msgid "Receiving Email" msgstr "接收电子邮件" #: ../mail/e-mail-config-security-page.c:260 #: ../mail/em-folder-properties.c:266 ../mail/mail-config.ui.h:24 #: ../modules/addressbook/autocompletion-config.c:114 #: ../modules/calendar/e-calendar-preferences.ui.h:47 #: ../modules/itip-formatter/plugin/config-ui.c:91 #: ../plugins/publish-calendar/publish-calendar.ui.h:16 #: ../smime/gui/certificate-viewer.c:653 msgid "General" msgstr "常规" #: ../mail/e-mail-config-security-page.c:269 msgid "_Do not sign meeting requests (for Outlook compatibility)" msgstr "不要签名会议请求(同 Outlook 兼容)(_D)" #: ../mail/e-mail-config-security-page.c:291 msgid "Pretty Good Privacy (OpenPGP)" msgstr "Pretty Good Privacy (OpenPGP)" #: ../mail/e-mail-config-security-page.c:300 msgid "OpenPGP _Key ID:" msgstr "OpenPGP _Key ID:" #: ../mail/e-mail-config-security-page.c:322 msgid "Si_gning algorithm:" msgstr "签名函数(_N):" #: ../mail/e-mail-config-security-page.c:338 #: ../mail/e-mail-config-security-page.c:478 ../mail/mail-config.ui.h:50 msgid "SHA1" msgstr "SHA1" #: ../mail/e-mail-config-security-page.c:341 #: ../mail/e-mail-config-security-page.c:481 ../mail/mail-config.ui.h:51 msgid "SHA256" msgstr "SHA256" #: ../mail/e-mail-config-security-page.c:344 #: ../mail/e-mail-config-security-page.c:484 ../mail/mail-config.ui.h:52 msgid "SHA384" msgstr "SHA384" #: ../mail/e-mail-config-security-page.c:347 #: ../mail/e-mail-config-security-page.c:487 ../mail/mail-config.ui.h:53 msgid "SHA512" msgstr "SHA512" #: ../mail/e-mail-config-security-page.c:363 msgid "Al_ways sign outgoing messages when using this account" msgstr "当使用该帐号时总是发送签名信息(_W)" #: ../mail/e-mail-config-security-page.c:375 msgid "Always encrypt to _myself when sending encrypted messages" msgstr "当发送加密邮件时总是对自身加密(_M)" #: ../mail/e-mail-config-security-page.c:387 msgid "Always _trust keys in my keyring when encrypting" msgstr "加密时总是信任我的密钥环中的密钥(_T)" #: ../mail/e-mail-config-security-page.c:411 msgid "Secure MIME (S/MIME)" msgstr "安全 MIME(S/MIME)" #: ../mail/e-mail-config-security-page.c:420 msgid "Sig_ning certificate:" msgstr "签名证书(_N):" #: ../mail/e-mail-config-security-page.c:444 #: ../mail/e-mail-config-security-page.c:550 msgid "Select" msgstr "选择" #: ../mail/e-mail-config-security-page.c:462 msgid "Signing _algorithm:" msgstr "签名函数(_A):" #: ../mail/e-mail-config-security-page.c:503 msgid "Always sign outgoing messages when using this account" msgstr "总是对此帐号发出的消息进行签名" #: ../mail/e-mail-config-security-page.c:526 msgid "Encryption certificate:" msgstr "加密证书:" #: ../mail/e-mail-config-security-page.c:568 msgid "Always encrypt outgoing messages when using this account" msgstr "总是对此账号发出的消息进行加密" #: ../mail/e-mail-config-security-page.c:588 msgid "Always encrypt to myself when sending encrypted messages" msgstr "发送加密消息时总是给自己也加密一份" #: ../mail/e-mail-config-sending-page.c:50 msgid "Sending Email" msgstr "发送电子邮件" #: ../mail/e-mail-config-service-page.c:640 msgid "Server _Type:" msgstr "服务器类型(_T):" #: ../mail/e-mail-config-summary-page.c:142 msgid "SSL" msgstr "SSL" #: ../mail/e-mail-config-summary-page.c:145 msgid "TLS" msgstr "TLS" #: ../mail/e-mail-config-summary-page.c:307 msgid "" "This is a summary of the settings which will be used to access your mail." msgstr "以下是邮箱服务相关设置概况。" #: ../mail/e-mail-config-summary-page.c:372 msgid "Personal Details" msgstr "个人信息" #: ../mail/e-mail-config-summary-page.c:381 msgid "Full Name:" msgstr "全名:" #: ../mail/e-mail-config-summary-page.c:395 msgid "Email Address:" msgstr "邮件地址:" #: ../mail/e-mail-config-summary-page.c:409 msgid "Receiving" msgstr "接收" #: ../mail/e-mail-config-summary-page.c:421 msgid "Sending" msgstr "发送" #: ../mail/e-mail-config-summary-page.c:433 msgid "Server Type:" msgstr "服务器类型:" #: ../mail/e-mail-config-summary-page.c:454 #: ../modules/book-config-ldap/evolution-book-config-ldap.c:608 msgid "Server:" msgstr "服务器:" #: ../mail/e-mail-config-summary-page.c:475 #: ../modules/book-config-ldap/evolution-book-config-ldap.c:697 msgid "Username:" msgstr "用户名:" #: ../mail/e-mail-config-summary-page.c:496 msgid "Security:" msgstr "安全:" #: ../mail/e-mail-config-summary-page.c:787 msgid "Account Summary" msgstr "账号概况" #: ../mail/e-mail-config-welcome-page.c:157 msgid "" "Welcome to the Evolution Mail Configuration Assistant.\n" "\n" "Click \"Continue\" to begin." msgstr "" "欢迎使用 Evolution 邮件程序配置助手。\n" "\n" "单击“继续”开始。" #: ../mail/e-mail-config-welcome-page.c:167 #: ../modules/startup-wizard/e-startup-assistant.c:152 msgid "Welcome" msgstr "欢迎" #: ../mail/e-mail-config-window.c:327 msgid "Account Editor" msgstr "帐号编辑器" #: ../mail/e-mail-display.c:96 msgid "_Add to Address Book..." msgstr "添加到地址簿(_A)..." #: ../mail/e-mail-display.c:103 msgid "_To This Address" msgstr "到此地址(_T)" #: ../mail/e-mail-display.c:110 msgid "_From This Address" msgstr "自此地址(_F)" #: ../mail/e-mail-display.c:117 msgid "Send _Reply To..." msgstr "发送回复给(_R)..." #: ../mail/e-mail-display.c:119 msgid "Send a reply message to this address" msgstr "发送一条回复信息到这个地址" #: ../mail/e-mail-display.c:126 msgid "Create Search _Folder" msgstr "创建搜索文件夹(_F)" #. Label + combo box has a 12px left margin so it's #. * aligned with the junk mail options above it. #: ../mail/e-mail-junk-options.c:252 msgid "Junk filtering software:" msgstr "垃圾过滤软件:" #: ../mail/e-mail-label-dialog.c:225 msgid "_Label name:" msgstr "标签名称(_L):" #: ../mail/e-mail-label-list-store.c:57 msgid "I_mportant" msgstr "重要(_M)" #. red #: ../mail/e-mail-label-list-store.c:58 msgid "_Work" msgstr "工作(_W)" #. orange #: ../mail/e-mail-label-list-store.c:59 msgid "_Personal" msgstr "个人(_P)" #. green #: ../mail/e-mail-label-list-store.c:60 msgid "_To Do" msgstr "待办(_T)" #. blue #: ../mail/e-mail-label-list-store.c:61 msgid "_Later" msgstr "稍候(_L)" #: ../mail/e-mail-label-manager.c:170 #: ../modules/mail/e-mail-shell-view-actions.c:1030 msgid "Add Label" msgstr "添加标签" #: ../mail/e-mail-label-manager.c:221 msgid "Edit Label" msgstr "编辑标签" #: ../mail/e-mail-label-manager.c:353 msgid "" "Note: Underscore in the label name is used\n" "as mnemonic identifier in menu." msgstr "注意:标签名中的下划线被用作菜单中的助记符。" #: ../mail/e-mail-label-tree-view.c:89 msgid "Color" msgstr "颜色" #: ../mail/e-mail-print-config-headers.c:167 msgid "Move selected headers to top" msgstr "将选中的邮件头移动到顶部" #: ../mail/e-mail-print-config-headers.c:172 msgid "Move selected headers up one row" msgstr "将选中的邮件头向上移动一行" #: ../mail/e-mail-print-config-headers.c:177 msgid "Move selected headers down one row" msgstr "将选中的邮件头向下移动一行" #: ../mail/e-mail-print-config-headers.c:182 msgid "Move selected headers to bottom" msgstr "将选中的邮件头移动到底部" #: ../mail/e-mail-print-config-headers.c:187 msgid "Select all headers" msgstr "选择所有邮件头" #: ../mail/e-mail-print-config-headers.c:206 msgid "Header Name" msgstr "邮件头名称" #: ../mail/e-mail-print-config-headers.c:215 msgid "Header Value" msgstr "邮件头值" #: ../mail/e-mail-printer.c:125 ../mail/mail-config.ui.h:101 msgid "Headers" msgstr "信头" #: ../mail/e-mail-printer.c:167 #, c-format msgid "Page %d of %d" msgstr "第 %d 页,共 %d 页" #: ../mail/e-mail-reader.c:351 ../mail/em-filter-i18n.h:12 msgid "Copy to Folder" msgstr "复制到文件夹" #: ../mail/e-mail-reader.c:351 ../mail/em-folder-utils.c:518 msgid "C_opy" msgstr "复制(_O)" #: ../mail/e-mail-reader.c:851 ../mail/em-filter-i18n.h:54 msgid "Move to Folder" msgstr "移至文件夹" #: ../mail/e-mail-reader.c:851 ../mail/em-folder-utils.c:518 msgid "_Move" msgstr "移动(_M)" #: ../mail/e-mail-reader.c:1177 ../mail/e-mail-reader.c:1389 #: ../mail/e-mail-reader.c:1429 msgid "_Do not ask me again." msgstr "不再询问(_D)。" #: ../mail/e-mail-reader.c:1435 msgid "_Always ignore Reply-To: for mailing lists." msgstr "总是忽略对于邮件列表的“回复至”域(_A)。" #: ../mail/e-mail-reader.c:1637 msgid "Failed to retrieve message:" msgstr "无法获取信息:" #: ../mail/e-mail-reader.c:1677 ../mail/e-mail-reader.c:2842 #, c-format msgid "Retrieving message '%s'" msgstr "收取信息 %s" #: ../mail/e-mail-reader.c:1865 msgid "A_dd Sender to Address Book" msgstr "将发件人添加到地址簿(_D)" #: ../mail/e-mail-reader.c:1867 msgid "Add sender to address book" msgstr "将发件人添加到地址簿" #: ../mail/e-mail-reader.c:1872 msgid "Check for _Junk" msgstr "检查垃圾信息(_J)" #: ../mail/e-mail-reader.c:1874 msgid "Filter the selected messages for junk status" msgstr "把选中的信息标记为垃圾信息" #: ../mail/e-mail-reader.c:1879 msgid "_Copy to Folder..." msgstr "复制到文件夹(_C)..." #: ../mail/e-mail-reader.c:1881 msgid "Copy selected messages to another folder" msgstr "把选中的信息复制到其它文件夹" #: ../mail/e-mail-reader.c:1886 msgid "_Delete Message" msgstr "删除信息(_D)" #: ../mail/e-mail-reader.c:1888 msgid "Mark the selected messages for deletion" msgstr "为选中信息做删除标记" #: ../mail/e-mail-reader.c:1893 msgid "Create a Filter Rule for Mailing _List..." msgstr "为邮件列表创建过滤规则 (_L)..." #: ../mail/e-mail-reader.c:1895 msgid "Create a rule to filter messages to this mailing list" msgstr "创建可过滤寄往此邮件列表的信息的规则" #: ../mail/e-mail-reader.c:1900 msgid "Create a Filter Rule for _Recipients..." msgstr "为收件人创建过滤规则 (_R)..." #: ../mail/e-mail-reader.c:1902 msgid "Create a rule to filter messages to these recipients" msgstr "创建可过滤寄往这些收件人的信息的规则" #: ../mail/e-mail-reader.c:1907 msgid "Create a Filter Rule for Se_nder..." msgstr "为发件人创建过滤规则 (_N)..." #: ../mail/e-mail-reader.c:1909 msgid "Create a rule to filter messages from this sender" msgstr "创建可过滤此人寄来的信息的规则" #: ../mail/e-mail-reader.c:1914 msgid "Create a Filter Rule for _Subject..." msgstr "为邮件标题创建过滤规则(_S)..." #: ../mail/e-mail-reader.c:1916 msgid "Create a rule to filter messages with this subject" msgstr "创建可过滤此主题信息的规则" #: ../mail/e-mail-reader.c:1921 msgid "A_pply Filters" msgstr "应用过滤规则(_P)" #: ../mail/e-mail-reader.c:1923 msgid "Apply filter rules to the selected messages" msgstr "应用过滤规则到选中的信息" #: ../mail/e-mail-reader.c:1928 msgid "_Find in Message..." msgstr "在信息中查找(_F)..." #: ../mail/e-mail-reader.c:1930 msgid "Search for text in the body of the displayed message" msgstr "在显示信息的主体中搜索文本" #: ../mail/e-mail-reader.c:1935 msgid "_Clear Flag" msgstr "清除标志(_C)" #: ../mail/e-mail-reader.c:1937 msgid "Remove the follow-up flag from the selected messages" msgstr "删除选中信息的跟随标志" #: ../mail/e-mail-reader.c:1942 msgid "_Flag Completed" msgstr "标志为已完成(_F)" #: ../mail/e-mail-reader.c:1944 msgid "Set the follow-up flag to completed on the selected messages" msgstr "设置选中信息的跟随标志为已完成" #: ../mail/e-mail-reader.c:1949 msgid "Follow _Up..." msgstr "跟随(_U)..." #: ../mail/e-mail-reader.c:1951 msgid "Flag the selected messages for follow-up" msgstr "为选中信息添加跟随标志" #: ../mail/e-mail-reader.c:1956 msgid "_Attached" msgstr "附件(_A)" #: ../mail/e-mail-reader.c:1958 ../mail/e-mail-reader.c:1965 msgid "Forward the selected message to someone as an attachment" msgstr "把选中信息作为附件转发给某人" #: ../mail/e-mail-reader.c:1963 msgid "Forward As _Attached" msgstr "作为附件转发(_A)" #: ../mail/e-mail-reader.c:1970 msgid "_Inline" msgstr "嵌入(_I)" #: ../mail/e-mail-reader.c:1972 ../mail/e-mail-reader.c:1979 msgid "Forward the selected message in the body of a new message" msgstr "在新信体中转发选中信息" #: ../mail/e-mail-reader.c:1977 msgid "Forward As _Inline" msgstr "嵌入正文转发(_I)" #: ../mail/e-mail-reader.c:1984 msgid "_Quoted" msgstr "引用(_Q)" #: ../mail/e-mail-reader.c:1986 ../mail/e-mail-reader.c:1993 msgid "Forward the selected message quoted like a reply" msgstr "以类似于回复的引用方式转发选中的信息" #: ../mail/e-mail-reader.c:1991 msgid "Forward As _Quoted" msgstr "作文引用转发(_Q)" #: ../mail/e-mail-reader.c:1998 msgid "_Load Images" msgstr "载入图像(_L)" #: ../mail/e-mail-reader.c:2000 msgid "Force images in HTML mail to be loaded" msgstr "强制载入 HTML 邮件中的图像" #: ../mail/e-mail-reader.c:2005 msgid "_Important" msgstr "重要(_I)" #: ../mail/e-mail-reader.c:2007 msgid "Mark the selected messages as important" msgstr "把选中信息标记为重要邮件" #: ../mail/e-mail-reader.c:2012 msgid "_Junk" msgstr "垃圾(_J)" #: ../mail/e-mail-reader.c:2014 msgid "Mark the selected messages as junk" msgstr "把选中信息标记为垃圾信息" #: ../mail/e-mail-reader.c:2019 msgid "_Not Junk" msgstr "非垃圾(_N)" #: ../mail/e-mail-reader.c:2021 msgid "Mark the selected messages as not being junk" msgstr "把选中信息标记为非垃圾信息" #: ../mail/e-mail-reader.c:2026 msgid "_Read" msgstr "读取(_R)" #: ../mail/e-mail-reader.c:2028 msgid "Mark the selected messages as having been read" msgstr "把选中信息标记为已读" #: ../mail/e-mail-reader.c:2033 msgid "Uni_mportant" msgstr "不重要(_M)" #: ../mail/e-mail-reader.c:2035 msgid "Mark the selected messages as unimportant" msgstr "把选中信息标记为不重要" #: ../mail/e-mail-reader.c:2040 msgid "_Unread" msgstr "未读(_U)" #: ../mail/e-mail-reader.c:2042 msgid "Mark the selected messages as not having been read" msgstr "把选中信息标记为未读" #: ../mail/e-mail-reader.c:2047 msgid "_Edit as New Message..." msgstr "作为新信息进行编辑(_E)..." #: ../mail/e-mail-reader.c:2049 msgid "Open the selected messages in the composer for editing" msgstr "在编辑器中打开选中的信息以便编辑" #: ../mail/e-mail-reader.c:2054 msgid "Compose _New Message" msgstr "撰写新信息(_N)" #: ../mail/e-mail-reader.c:2056 msgid "Open a window for composing a mail message" msgstr "打开窗口以撰写信息" #: ../mail/e-mail-reader.c:2061 msgid "_Open in New Window" msgstr "在新窗口中打开(_O)" #: ../mail/e-mail-reader.c:2063 msgid "Open the selected messages in a new window" msgstr "在新窗口中打开选中的信息" #: ../mail/e-mail-reader.c:2068 msgid "_Move to Folder..." msgstr "移至文件夹(_M)..." #: ../mail/e-mail-reader.c:2070 msgid "Move selected messages to another folder" msgstr "把选中的信息移至其它文件夹" #: ../mail/e-mail-reader.c:2075 msgid "_Next Message" msgstr "下一封信(_N)" #: ../mail/e-mail-reader.c:2077 msgid "Display the next message" msgstr "显示下一封信息" #: ../mail/e-mail-reader.c:2082 msgid "Next _Important Message" msgstr "下一封重要信息(_I)" #: ../mail/e-mail-reader.c:2084 msgid "Display the next important message" msgstr "显示下一封重要信息" #: ../mail/e-mail-reader.c:2089 msgid "Next _Thread" msgstr "下一条线索(_T)" #: ../mail/e-mail-reader.c:2091 msgid "Display the next thread" msgstr "显示下一条线索" #: ../mail/e-mail-reader.c:2096 msgid "Next _Unread Message" msgstr "下一封未读信息(_U)" #: ../mail/e-mail-reader.c:2098 msgid "Display the next unread message" msgstr "显示下一封未读信息" #: ../mail/e-mail-reader.c:2103 msgid "_Previous Message" msgstr "上一封信(_P)" #: ../mail/e-mail-reader.c:2105 msgid "Display the previous message" msgstr "显示上一封信息" #: ../mail/e-mail-reader.c:2110 msgid "Pr_evious Important Message" msgstr "上一封重要信息(_E)" #: ../mail/e-mail-reader.c:2112 msgid "Display the previous important message" msgstr "显示上一封重要信息" #: ../mail/e-mail-reader.c:2117 msgid "Previous T_hread" msgstr "上一条线索(_H)" #: ../mail/e-mail-reader.c:2119 msgid "Display the previous thread" msgstr "显示上一条线索" #: ../mail/e-mail-reader.c:2124 msgid "P_revious Unread Message" msgstr "上一封未读信息(_R)" #: ../mail/e-mail-reader.c:2126 msgid "Display the previous unread message" msgstr "显示上一封未读信息" #: ../mail/e-mail-reader.c:2133 msgid "Print this message" msgstr "打印该信息" #: ../mail/e-mail-reader.c:2140 msgid "Preview the message to be printed" msgstr "预览要打印的信息" #: ../mail/e-mail-reader.c:2145 msgid "Re_direct" msgstr "重发(_D)" #: ../mail/e-mail-reader.c:2147 msgid "Redirect (bounce) the selected message to someone" msgstr "将选中信息重发(退回)给某人" #: ../mail/e-mail-reader.c:2152 msgid "Remo_ve Attachments" msgstr "移除附件(_V)" #: ../mail/e-mail-reader.c:2154 msgid "Remove attachments" msgstr "移除附件" #: ../mail/e-mail-reader.c:2159 msgid "Remove Du_plicate Messages" msgstr "移除重复的信息(_P)" #: ../mail/e-mail-reader.c:2161 msgid "Checks selected messages for duplicates" msgstr "检查所选信息中的重复信息?" #: ../mail/e-mail-reader.c:2166 ../mail/mail.error.xml.h:27 #: ../modules/calendar/e-cal-shell-view-actions.c:1547 #: ../modules/mail/e-mail-attachment-handler.c:214 msgid "Reply to _All" msgstr "回复所有人(_A)" #: ../mail/e-mail-reader.c:2168 msgid "Compose a reply to all the recipients of the selected message" msgstr "为选中信息的所有收件人撰写回复" #: ../mail/e-mail-reader.c:2173 ../mail/mail.error.xml.h:25 msgid "Reply to _List" msgstr "回复邮件列表(_L)" #: ../mail/e-mail-reader.c:2175 msgid "Compose a reply to the mailing list of the selected message" msgstr "为选中信息的邮件列表撰写回复" #: ../mail/e-mail-reader.c:2180 #: ../modules/mail/e-mail-attachment-handler.c:221 msgid "_Reply to Sender" msgstr "回复发件人(_R)" #: ../mail/e-mail-reader.c:2182 msgid "Compose a reply to the sender of the selected message" msgstr "为选中信息的发件人撰写回复" #: ../mail/e-mail-reader.c:2187 msgid "_Save as mbox..." msgstr "另存为 mbox 格式(_S)..." #: ../mail/e-mail-reader.c:2189 msgid "Save selected messages as an mbox file" msgstr "把选中信息另存为 mbox 格式文件" #: ../mail/e-mail-reader.c:2194 msgid "_Message Source" msgstr "信息源代码(_M)" #: ../mail/e-mail-reader.c:2196 msgid "Show the raw email source of the message" msgstr "显示信息的原始邮件源代码" #: ../mail/e-mail-reader.c:2208 msgid "_Undelete Message" msgstr "取消删除信息(_U)" #: ../mail/e-mail-reader.c:2210 msgid "Undelete the selected messages" msgstr "取消选中信息的删除" #: ../mail/e-mail-reader.c:2215 msgid "_Normal Size" msgstr "普通大小(_N)" #: ../mail/e-mail-reader.c:2217 msgid "Reset the text to its original size" msgstr "把文本重新设置为原来的大小" #: ../mail/e-mail-reader.c:2222 msgid "_Zoom In" msgstr "放大(_Z)" #: ../mail/e-mail-reader.c:2224 msgid "Increase the text size" msgstr "增加文本大小" #: ../mail/e-mail-reader.c:2229 msgid "Zoom _Out" msgstr "缩小(_O)" #: ../mail/e-mail-reader.c:2231 msgid "Decrease the text size" msgstr "减少文本大小" #: ../mail/e-mail-reader.c:2238 msgid "Cre_ate" msgstr "新建 (_A)" #: ../mail/e-mail-reader.c:2245 msgid "Ch_aracter Encoding" msgstr "字符编码(_A)" #: ../mail/e-mail-reader.c:2252 msgid "F_orward As" msgstr "转发为(_O)" #: ../mail/e-mail-reader.c:2259 msgid "_Group Reply" msgstr "回复全部(_G)" #: ../mail/e-mail-reader.c:2266 msgid "_Go To" msgstr "转到(_G)" #: ../mail/e-mail-reader.c:2273 msgid "Mar_k As" msgstr "标记为(_K)" #: ../mail/e-mail-reader.c:2280 msgid "_Message" msgstr "信息(_M)" #: ../mail/e-mail-reader.c:2287 msgid "_Zoom" msgstr "缩放(_Z)" #: ../mail/e-mail-reader.c:2297 msgid "Create a Search Folder from Mailing _List..." msgstr "为邮件列表创建搜索文件夹 (_L)..." #: ../mail/e-mail-reader.c:2299 msgid "Create a search folder for this mailing list" msgstr "为此邮件列表创建搜索文件夹" #: ../mail/e-mail-reader.c:2304 msgid "Create a Search Folder from Recipien_ts..." msgstr "为收件人创建搜索文件夹 (_T)..." #: ../mail/e-mail-reader.c:2306 msgid "Create a search folder for these recipients" msgstr "为这些收件人创建搜索文件夹" #: ../mail/e-mail-reader.c:2311 msgid "Create a Search Folder from Sen_der..." msgstr "为发件人创建搜索文件夹 (_N)..." #: ../mail/e-mail-reader.c:2313 msgid "Create a search folder for this sender" msgstr "为该发件人创建搜索文件夹" #: ../mail/e-mail-reader.c:2318 msgid "Create a Search Folder from S_ubject..." msgstr "为邮件标题创建搜索文件夹 (_U)..." #: ../mail/e-mail-reader.c:2320 msgid "Create a search folder for this subject" msgstr "为该主题创建搜索文件夹" #: ../mail/e-mail-reader.c:2343 msgid "Mark for Follo_w Up..." msgstr "标记为跟随(_W)..." #: ../mail/e-mail-reader.c:2351 msgid "Mark as _Important" msgstr "标记为重要(_I)" #: ../mail/e-mail-reader.c:2355 msgid "Mark as _Junk" msgstr "标记为垃圾(_J)" #: ../mail/e-mail-reader.c:2359 msgid "Mark as _Not Junk" msgstr "标记为非垃圾(_N)" #: ../mail/e-mail-reader.c:2363 msgid "Mar_k as Read" msgstr "标记为已读(_K)" #: ../mail/e-mail-reader.c:2367 msgid "Mark as Uni_mportant" msgstr "标记为不重要(_M)" #: ../mail/e-mail-reader.c:2371 msgid "Mark as _Unread" msgstr "标记为未读(_U)" #: ../mail/e-mail-reader.c:2415 msgid "_Caret Mode" msgstr "光标模式(_C)" #: ../mail/e-mail-reader.c:2417 msgid "Show a blinking cursor in the body of displayed messages" msgstr "在显示信息的信体中显示闪烁光标" #: ../mail/e-mail-reader.c:2423 msgid "All Message _Headers" msgstr "全部信头(_H)" #: ../mail/e-mail-reader.c:2425 msgid "Show messages with all email headers" msgstr "显示信息时显示所有信头" #: ../mail/e-mail-reader.c:2848 msgid "Retrieving message" msgstr "获取消息" #: ../mail/e-mail-reader.c:3770 #: ../modules/mail/e-mail-attachment-handler.c:207 msgid "_Forward" msgstr "转发(_F)" #: ../mail/e-mail-reader.c:3771 msgid "Forward the selected message to someone" msgstr "把选中信息转发给某人" #: ../mail/e-mail-reader.c:3790 msgid "Group Reply" msgstr "回复全部" #: ../mail/e-mail-reader.c:3791 msgid "Reply to the mailing list, or to all recipients" msgstr "为选中信息的邮件列表或全部收件人撰写回复" #: ../mail/e-mail-reader.c:3857 ../mail/em-filter-i18n.h:15 msgid "Delete" msgstr "删除" #: ../mail/e-mail-reader.c:3869 #: ../modules/calendar/e-cal-shell-view-actions.c:1372 msgid "Next" msgstr "下一项" #: ../mail/e-mail-reader.c:3873 #: ../modules/calendar/e-cal-shell-view-actions.c:1365 msgid "Previous" msgstr "上一项" #: ../mail/e-mail-reader.c:3882 ../mail/mail-dialogs.ui.h:15 msgid "Reply" msgstr "回复" #: ../mail/e-mail-reader-utils.c:151 msgid "Do not warn me again" msgstr "不要再警告我" #: ../mail/e-mail-reader-utils.c:976 msgid "Printing" msgstr "打印" #. Translators: %s is replaced with a folder #. * name %u with count of duplicate messages. #: ../mail/e-mail-reader-utils.c:1211 #, c-format msgid "" "Folder '%s' contains %u duplicate message. Are you sure you want to delete " "it?" msgid_plural "" "Folder '%s' contains %u duplicate messages. Are you sure you want to delete " "them?" msgstr[0] "“%s”文件夹中包含 %u 条重复信息。您确定想删除吗?" #: ../mail/e-mail-reader-utils.c:2026 msgid "Save Message" msgid_plural "Save Messages" msgstr[0] "保存信息" #. Translators: This is part of a suggested file name #. * used when saving a message or multiple messages to #. * mbox format, when the first message doesn't have a #. * subject. The extension ".mbox" is appended to the #. * string; for example "Message.mbox". #: ../mail/e-mail-reader-utils.c:2047 msgid "Message" msgid_plural "Messages" msgstr[0] "信息" #: ../mail/e-mail-reader-utils.c:2416 msgid "Parsing message" msgstr "解析消息" #: ../mail/e-mail-request.c:197 msgid "The message has no text content." msgstr "该消息没有文本信息" #: ../mail/e-mail-tag-editor.c:238 msgid "Flag to Follow Up" msgstr "跟随的标志" #. Note to translators: this is the attribution string used #. * when quoting messages. Each ${Variable} gets replaced #. * with a value. To see a full list of available variables, #. * see mail/em-composer-utils.c:attribvars array. #: ../mail/em-composer-utils.c:1372 msgid "" "On ${AbbrevWeekdayName}, ${Year}-${Month}-${Day} at ${24Hour}:${Minute} " "${TimeZone}, ${Sender} wrote:" msgstr "" "在 ${Year}-${Month}-${Day}${AbbrevWeekdayName}的 ${24Hour}:${Minute} " "${TimeZone},${Sender}写道:" #: ../mail/em-composer-utils.c:1378 msgid "-------- Forwarded Message --------" msgstr "-------- 转发的信息 --------" #: ../mail/em-composer-utils.c:1383 msgid "-----Original Message-----" msgstr "-------- 原始信息 --------" #: ../mail/em-composer-utils.c:2528 msgid "an unknown sender" msgstr "未知发件人" #: ../mail/em-composer-utils.c:2949 msgid "Posting destination" msgstr "投递目的" #: ../mail/em-composer-utils.c:2950 msgid "Choose folders to post the message to." msgstr "选择要将信息投递到哪个文件夹。" #: ../mail/em-filter-editor-folder-element.c:157 msgid "Select Folder" msgstr "选择文件夹" #. Automatically generated. Do not edit. #: ../mail/em-filter-i18n.h:2 msgid "Adjust Score" msgstr "调整计分" #: ../mail/em-filter-i18n.h:3 msgid "Any header" msgstr "任意邮件头" #: ../mail/em-filter-i18n.h:4 msgid "Assign Color" msgstr "分配颜色" #: ../mail/em-filter-i18n.h:5 msgid "Assign Score" msgstr "分配计分" #: ../mail/em-filter-i18n.h:7 msgid "BCC" msgstr "BCC" #: ../mail/em-filter-i18n.h:8 msgid "Beep" msgstr "响铃" #: ../mail/em-filter-i18n.h:9 msgid "CC" msgstr "CC" #: ../mail/em-filter-i18n.h:10 msgid "Completed On" msgstr "完成于" #: ../mail/em-filter-i18n.h:13 msgid "Date received" msgstr "接收日期" #: ../mail/em-filter-i18n.h:14 msgid "Date sent" msgstr "发送日期" #: ../mail/em-filter-i18n.h:16 msgid "Deleted" msgstr "已删除" #: ../mail/em-filter-i18n.h:18 msgid "does not end with" msgstr "不结尾于" #: ../mail/em-filter-i18n.h:19 msgid "does not exist" msgstr "不存在" #: ../mail/em-filter-i18n.h:20 msgid "does not have words" msgstr "没有单词" #: ../mail/em-filter-i18n.h:21 msgid "does not return" msgstr "不含有" #: ../mail/em-filter-i18n.h:22 msgid "does not sound like" msgstr "发音不像" #: ../mail/em-filter-i18n.h:23 msgid "does not start with" msgstr "不开始于" #: ../mail/em-filter-i18n.h:25 msgid "Draft" msgstr "草稿" #: ../mail/em-filter-i18n.h:26 msgid "ends with" msgstr "结束于" #: ../mail/em-filter-i18n.h:28 msgid "exists" msgstr "存在" #: ../mail/em-filter-i18n.h:29 msgid "Expression" msgstr "表达式" #: ../mail/em-filter-i18n.h:30 msgid "Follow Up" msgstr "跟随" #: ../mail/em-filter-i18n.h:31 msgid "Forward to" msgstr "转发至" #: ../mail/em-filter-i18n.h:32 msgid "has words" msgstr "有单词" #: ../mail/em-filter-i18n.h:33 msgid "Important" msgstr "重要" #: ../mail/em-filter-i18n.h:35 msgid "is after" msgstr "之后" #: ../mail/em-filter-i18n.h:36 msgid "is before" msgstr "之前" #: ../mail/em-filter-i18n.h:37 msgid "is Flagged" msgstr "已标志" #: ../mail/em-filter-i18n.h:41 msgid "is not Flagged" msgstr "未标志" #: ../mail/em-filter-i18n.h:42 msgid "is not set" msgstr "未设置" #: ../mail/em-filter-i18n.h:43 msgid "is set" msgstr "已设置" #: ../mail/em-filter-i18n.h:44 ../mail/mail-config.ui.h:108 msgid "Junk" msgstr "垃圾" #: ../mail/em-filter-i18n.h:45 msgid "Junk Test" msgstr "垃圾测试" #: ../mail/em-filter-i18n.h:46 msgid "Label" msgstr "标签" #: ../mail/em-filter-i18n.h:47 msgid "Mailing list" msgstr "邮件列表" #: ../mail/em-filter-i18n.h:48 msgid "Match All" msgstr "全部匹配" #: ../mail/em-filter-i18n.h:49 msgid "Message Body" msgstr "信体" #: ../mail/em-filter-i18n.h:50 msgid "Message Header" msgstr "信头" #: ../mail/em-filter-i18n.h:51 msgid "Message is Junk" msgstr "是垃圾信息" #: ../mail/em-filter-i18n.h:52 msgid "Message is not Junk" msgstr "不是垃圾信息" #: ../mail/em-filter-i18n.h:53 msgid "Message Location" msgstr "信息位置" #: ../mail/em-filter-i18n.h:55 msgid "Pipe to Program" msgstr "管道到程序" #: ../mail/em-filter-i18n.h:56 msgid "Play Sound" msgstr "播放声音" #. Past tense, as in "has been read". #: ../mail/em-filter-i18n.h:57 ../mail/mail-dialogs.ui.h:14 msgid "Read" msgstr "已读" #: ../mail/em-filter-i18n.h:58 ../mail/message-list.etspec.h:16 msgid "Recipients" msgstr "收件人" #: ../mail/em-filter-i18n.h:59 msgid "Regex Match" msgstr "正则表达式匹配" #: ../mail/em-filter-i18n.h:60 msgid "Replied to" msgstr "已回复到" #: ../mail/em-filter-i18n.h:61 msgid "returns" msgstr "返回" #: ../mail/em-filter-i18n.h:62 msgid "returns greater than" msgstr "返回大于" #: ../mail/em-filter-i18n.h:63 msgid "returns less than" msgstr "返回小于" #: ../mail/em-filter-i18n.h:64 msgid "Run Program" msgstr "运行程序" #: ../mail/em-filter-i18n.h:65 ../mail/message-list.etspec.h:3 msgid "Score" msgstr "分数" #: ../mail/em-filter-i18n.h:66 ../mail/message-list.etspec.h:15 msgid "Sender" msgstr "发送者" #: ../mail/em-filter-i18n.h:67 msgid "Sender or Recipients" msgstr "发送者或接收者" #: ../mail/em-filter-i18n.h:68 msgid "Set Label" msgstr "设置标签" #: ../mail/em-filter-i18n.h:69 msgid "Set Status" msgstr "设置状态" #: ../mail/em-filter-i18n.h:70 msgid "Size (kB)" msgstr "大小(kB)" #: ../mail/em-filter-i18n.h:71 msgid "sounds like" msgstr "发音类似" #: ../mail/em-filter-i18n.h:72 msgid "Source Account" msgstr "来源帐号" #: ../mail/em-filter-i18n.h:73 msgid "Specific header" msgstr "指定信头" #: ../mail/em-filter-i18n.h:74 msgid "starts with" msgstr "开始于" #: ../mail/em-filter-i18n.h:76 msgid "Stop Processing" msgstr "停止处理" #: ../mail/em-filter-i18n.h:79 msgid "Unset Color" msgstr "重置颜色" #: ../mail/em-filter-i18n.h:80 msgid "Unset Status" msgstr "取消状态" #. and now for the action area #: ../mail/em-filter-rule.c:583 msgid "Then" msgstr "然后" #: ../mail/em-filter-rule.c:648 msgid "Add Ac_tion" msgstr "添加动作(_T)" #: ../mail/em-folder-properties.c:145 msgid "Unread messages:" msgid_plural "Unread messages:" msgstr[0] "未读信息数:" #: ../mail/em-folder-properties.c:156 msgid "Total messages:" msgid_plural "Total messages:" msgstr[0] "总信息数:" #: ../mail/em-folder-properties.c:177 #, c-format msgid "Quota usage (%s):" msgstr "配额使用(%s):" #: ../mail/em-folder-properties.c:179 #, c-format msgid "Quota usage" msgstr "配额使用" #: ../mail/em-folder-properties.c:347 msgid "Folder Properties" msgstr "文件夹属性" #: ../mail/em-folder-selection-button.c:80 msgid "" msgstr "<单击此处以选择文件夹>" #: ../mail/em-folder-selector.c:390 msgid "C_reate" msgstr "创建(_R)" #: ../mail/em-folder-selector.c:396 msgid "Folder _name:" msgstr "文件夹名称(_N):" #: ../mail/em-folder-tree.c:644 msgid "Folder names cannot contain '/'" msgstr "文件夹名不能含有字符“/”" #: ../mail/em-folder-tree.c:781 #, c-format msgctxt "folder-display" msgid "%s (%u%s)" msgstr "%s (%u%s)" #: ../mail/em-folder-tree.c:1609 msgid "Mail Folder Tree" msgstr "邮件文件夹树" #: ../mail/em-folder-tree.c:2179 ../mail/em-folder-utils.c:112 #, c-format msgid "Moving folder %s" msgstr "移动文件夹“%s”" #: ../mail/em-folder-tree.c:2182 ../mail/em-folder-utils.c:114 #, c-format msgid "Copying folder %s" msgstr "复制文件夹 %s" #: ../mail/em-folder-tree.c:2189 ../mail/message-list.c:2280 #, c-format msgid "Moving messages into folder %s" msgstr "把信息移至文件夹 %s" #: ../mail/em-folder-tree.c:2193 ../mail/message-list.c:2282 #, c-format msgid "Copying messages into folder %s" msgstr "把信息复制到文件夹 %s" #: ../mail/em-folder-tree.c:2212 #, c-format msgid "Cannot drop message(s) into toplevel store" msgstr "无法将信息放到顶级文件夹存储" #. UNMATCHED is always last. #: ../mail/em-folder-tree-model.c:176 ../mail/em-folder-tree-model.c:178 msgid "UNMATCHED" msgstr "不匹配" #: ../mail/em-folder-tree-model.c:873 ../mail/em-folder-tree-model.c:1170 msgid "Loading..." msgstr "正在载入..." #: ../mail/em-folder-utils.c:519 msgid "Move Folder To" msgstr "移动文件夹到" #: ../mail/em-folder-utils.c:519 msgid "Copy Folder To" msgstr "复制文件夹到" #: ../mail/em-folder-utils.c:617 msgid "Create Folder" msgstr "创建文件夹" #: ../mail/em-folder-utils.c:618 msgid "Specify where to create the folder:" msgstr "指定在哪里创建文件夹:" #: ../mail/em-subscription-editor.c:867 msgid "_Subscribe" msgstr "订阅 (_S)" #: ../mail/em-subscription-editor.c:876 msgid "Su_bscribe To Shown" msgstr "订阅已显示部分 (_B)" #: ../mail/em-subscription-editor.c:884 msgid "Subscribe To _All" msgstr "订阅所有 (_A)" #: ../mail/em-subscription-editor.c:981 ../mail/em-subscription-editor.c:1875 #: ../modules/mail/e-mail-shell-view-actions.c:1641 msgid "_Unsubscribe" msgstr "退订(_U)" #: ../mail/em-subscription-editor.c:990 msgid "Unsu_bscribe From Hidden" msgstr "退订隐藏部分 (_B)" #: ../mail/em-subscription-editor.c:998 msgid "Unsubscribe From _All" msgstr "退订所有 (_A)" #: ../mail/em-subscription-editor.c:1712 msgid "Folder Subscriptions" msgstr "文件夹订阅" #: ../mail/em-subscription-editor.c:1751 msgid "_Account:" msgstr "账户(_A):" #: ../mail/em-subscription-editor.c:1764 msgid "Clear Search" msgstr "清除搜索" #: ../mail/em-subscription-editor.c:1781 msgid "Sho_w items that contain:" msgstr "显示包含以下内容的项目(_W):" #: ../mail/em-subscription-editor.c:1828 msgid "Subscribe to the selected folder" msgstr "订阅选定的文件夹" #: ../mail/em-subscription-editor.c:1829 msgid "Su_bscribe" msgstr "订阅(_B)" #: ../mail/em-subscription-editor.c:1874 #: ../modules/mail/e-mail-shell-view-actions.c:1643 msgid "Unsubscribe from the selected folder" msgstr "取消对选定文件夹的订阅" #: ../mail/em-subscription-editor.c:1914 msgid "Collapse all folders" msgstr "折叠所有文件夹" #: ../mail/em-subscription-editor.c:1915 msgid "C_ollapse All" msgstr "全部折叠(_O)" #: ../mail/em-subscription-editor.c:1925 msgid "Expand all folders" msgstr "展开所有文件夹" #: ../mail/em-subscription-editor.c:1926 msgid "E_xpand All" msgstr "全部展开(_X)" #: ../mail/em-subscription-editor.c:1936 msgid "Refresh the folder list" msgstr "刷新文件夹列表" #: ../mail/em-subscription-editor.c:1948 msgid "Stop the current operation" msgstr "停止当前操作" #. Translators: This message is shown only for ten or more #. * messages to be opened. The %d is replaced with the actual #. * count of messages. If you need a '%' in your text, then #. * write it doubled, like '%%'. #: ../mail/em-utils.c:86 #, c-format msgid "Are you sure you want to open %d message at once?" msgid_plural "Are you sure you want to open %d messages at once?" msgstr[0] "您确定要一次打开 %d 封信吗?" #: ../mail/em-utils.c:142 #: ../modules/mailto-handler/evolution-mailto-handler.c:150 msgid "_Do not show this message again" msgstr "不再显示此信息(_D)" #: ../mail/em-utils.c:252 msgid "Message Filters" msgstr "邮件过滤器" #: ../mail/em-utils.c:982 #, c-format msgid "Messages from %s" msgstr "来自 %s 的信息" #: ../mail/em-vfolder-editor.c:105 msgid "Search _Folders" msgstr "搜索文件夹(_F)" #: ../mail/em-vfolder-editor-rule.c:397 msgid "Add Folder" msgstr "添加文件夹" #: ../mail/em-vfolder-editor-rule.c:523 msgid "Search Folder Sources" msgstr "搜索文件夹来源" #: ../mail/em-vfolder-editor-rule.c:555 msgid "Automatically update on any _source folder change" msgstr "自动更新来源文件夹 (_S)" #: ../mail/em-vfolder-editor-rule.c:567 msgid "All local folders" msgstr "全部本地文件夹" #: ../mail/em-vfolder-editor-rule.c:568 msgid "All active remote folders" msgstr "全部活跃远程文件夹" #: ../mail/em-vfolder-editor-rule.c:569 msgid "All local and active remote folders" msgstr "全部本地和活跃远程文件夹" #: ../mail/em-vfolder-editor-rule.c:570 msgid "Specific folders" msgstr "指定文件夹" #: ../mail/em-vfolder-editor-rule.c:608 msgid "include subfolders" msgstr "包括子文件夹" #: ../mail/importers/elm-importer.c:178 msgid "Importing Elm data" msgstr "导入 Elm 数据" #: ../mail/importers/elm-importer.c:378 msgid "Evolution Elm importer" msgstr "Evolution Elm 导入器" #: ../mail/importers/elm-importer.c:379 msgid "Import mail from Elm." msgstr "从 Elm 导入邮件。" #: ../mail/importers/evolution-mbox-importer.c:140 #: ../plugins/dbx-import/dbx-importer.c:250 msgid "_Destination folder:" msgstr "目的文件夹(_D):" #: ../mail/importers/evolution-mbox-importer.c:146 #: ../plugins/dbx-import/dbx-importer.c:256 #: ../plugins/pst-import/pst-importer.c:545 msgid "Select folder" msgstr "选择文件夹" #: ../mail/importers/evolution-mbox-importer.c:147 #: ../plugins/dbx-import/dbx-importer.c:257 #: ../plugins/pst-import/pst-importer.c:546 msgid "Select folder to import into" msgstr "选择要导入到哪个文件夹" #: ../mail/importers/evolution-mbox-importer.c:437 msgctxt "mboxImp" msgid "Subject" msgstr "主题" #: ../mail/importers/evolution-mbox-importer.c:442 msgctxt "mboxImp" msgid "From" msgstr "来自" #: ../mail/importers/evolution-mbox-importer.c:486 #: ../shell/e-shell-utils.c:172 msgid "Berkeley Mailbox (mbox)" msgstr "Berkeley 邮箱(mbox)" #: ../mail/importers/evolution-mbox-importer.c:487 msgid "Importer Berkeley Mailbox format folders" msgstr "导入 Berkeley 邮箱格式文件夹" #: ../mail/importers/mail-importer.c:63 msgid "Importing mailbox" msgstr "导入邮箱" #. Destination folder, was set in our widget #: ../mail/importers/mail-importer.c:153 #: ../plugins/dbx-import/dbx-importer.c:612 #: ../plugins/pst-import/pst-importer.c:764 #, c-format msgid "Importing '%s'" msgstr "正在导入“%s”" #: ../mail/importers/mail-importer.c:316 #, c-format msgid "Scanning %s" msgstr "正在扫描 %s" #: ../mail/importers/pine-importer.c:252 msgid "Importing Pine data" msgstr "导入 Pine 数据" #: ../mail/importers/pine-importer.c:479 msgid "Evolution Pine importer" msgstr "Evolution Pine 导入器" #: ../mail/importers/pine-importer.c:480 msgid "Import mail from Pine." msgstr "从 Pine 导入邮件。" #: ../mail/mail-autofilter.c:70 #, c-format msgid "Mail to %s" msgstr "发送给 %s" #: ../mail/mail-autofilter.c:226 ../mail/mail-autofilter.c:269 #, c-format msgid "Mail from %s" msgstr "来自 %s 的邮件" #: ../mail/mail-autofilter.c:252 #, c-format msgid "Subject is %s" msgstr "主题是 %s" #: ../mail/mail-autofilter.c:293 #, c-format msgid "%s mailing list" msgstr "%s 邮件列表" #: ../mail/mail-autofilter.c:403 msgid "Add Filter Rule" msgstr "添加过滤规则" #. Translators: The first %s is name of the affected #. * filter rule(s), the second %s is URI of the removed #. * folder. For more than one filter rule is each of #. * them on a separate line, with four spaces in front #. * of its name, without quotes. #: ../mail/mail-autofilter.c:512 #, c-format msgid "" "The filter rule \"%s\" has been modified to account for the deleted folder\n" "\"%s\"." msgid_plural "" "The following filter rules\n" "%s have been modified to account for the deleted folder\n" "\"%s\"." msgstr[0] "" "以下过滤规则\n" "%s 已经修改,以用于删除文件夹\n" "“%s”。" #: ../mail/mail-config.ui.h:1 msgid "Set custom junk header" msgstr "设置自定义垃圾信息头" #: ../mail/mail-config.ui.h:2 msgid "" "All new emails with header that matches given content will be automatically " "filtered as junk" msgstr "所有信头与所给内容匹配的新邮件将被自动按垃圾邮件过滤掉" #: ../mail/mail-config.ui.h:3 msgid "Header name" msgstr "信头名称" #: ../mail/mail-config.ui.h:4 msgid "Header content" msgstr "信头内容" #: ../mail/mail-config.ui.h:5 msgid "Default Behavior" msgstr "默认行为" #: ../mail/mail-config.ui.h:6 msgid "For_mat messages in HTML" msgstr "以 HTML 格式化消息 (_M)" #: ../mail/mail-config.ui.h:7 msgid "Automatically insert _emoticon images" msgstr "自动插入表情图像(_E)" #: ../mail/mail-config.ui.h:8 msgid "Always request rea_d receipt" msgstr "请求阅读收条(_D)" #: ../mail/mail-config.ui.h:9 msgid "Encode filenames in an _Outlook/GMail way" msgstr "以 Outlook/GMail 方式编码文件名 (_O)" #: ../mail/mail-config.ui.h:10 msgid "Ch_aracter encoding:" msgstr "字符编码 (_A):" #: ../mail/mail-config.ui.h:11 msgid "Replies and Forwards" msgstr "回复和转发" #: ../mail/mail-config.ui.h:12 msgid "_Reply style:" msgstr "回复风格(_R):" #: ../mail/mail-config.ui.h:13 msgid "_Forward style:" msgstr "转发方式(_F):" #: ../mail/mail-config.ui.h:14 msgid "Start _typing at the bottom on replying" msgstr "回复时在底部开始打字(_T)" #: ../mail/mail-config.ui.h:15 msgid "_Keep signature above the original message on replying" msgstr "回复时保留原始信息的签名(_K)" #: ../mail/mail-config.ui.h:16 msgid "Ig_nore Reply-To: for mailing lists" msgstr "为邮件列表忽略 Reply-To (_N):" #: ../mail/mail-config.ui.h:17 msgid "Gro_up Reply goes only to mailing list, if possible" msgstr "如有可能,群回邮件只发给邮件列表 (_U)" #: ../mail/mail-config.ui.h:18 msgid "Digitally _sign messages when original message signed (PGP or S/MIME)" msgstr "在原始消息被加密时也对回复消息进行加密(PGP 或 S/MIME)(_S)" #: ../mail/mail-config.ui.h:19 msgctxt "ReplyForward" msgid "Attachment" msgstr "附件" #: ../mail/mail-config.ui.h:20 msgctxt "ReplyForward" msgid "Inline (Outlook style)" msgstr "行内预览(Outlook 风格)" #: ../mail/mail-config.ui.h:21 msgctxt "ReplyForward" msgid "Quoted" msgstr "引用" #: ../mail/mail-config.ui.h:22 msgctxt "ReplyForward" msgid "Do Not Quote" msgstr "不引用原文" #: ../mail/mail-config.ui.h:23 msgctxt "ReplyForward" msgid "Inline" msgstr "行内预览" #: ../mail/mail-config.ui.h:25 msgid "Sig_natures" msgstr "签名(_N)" #: ../mail/mail-config.ui.h:26 msgid "Signatures" msgstr "签名" #: ../mail/mail-config.ui.h:27 msgid "_Languages" msgstr "语言(_L)" #: ../mail/mail-config.ui.h:28 msgid "Languages Table" msgstr "语言表" #: ../mail/mail-config.ui.h:29 msgid "" "The list of languages here reflects only the languages for which you have a " "dictionary installed." msgstr "在此列出的语言反映了您所安装的字典。" #: ../mail/mail-config.ui.h:31 msgid "Check spelling while I _type" msgstr "在我输入时进行拼写检查(_T)" #: ../mail/mail-config.ui.h:32 msgid "Color for _misspelled words:" msgstr "给错误拼写的单词着色(_M):" #: ../mail/mail-config.ui.h:33 #: ../modules/calendar/e-calendar-preferences.ui.h:58 msgid "Pick a color" msgstr "选取一种颜色" #: ../mail/mail-config.ui.h:34 msgid "Spell Checking" msgstr "拼写检查" #: ../mail/mail-config.ui.h:35 msgid "" "To help avoid email accidents and embarrassments, ask for confirmation " "before taking the following checkmarked actions:" msgstr "为了帮助避免电子邮件意外和问题,在采取以下勾选的操作前请求确认:" #. This is in the context of: Ask for confirmation before... #: ../mail/mail-config.ui.h:37 msgid "Sending a message with an _empty subject line" msgstr "发送带空主题行的信息时(_E)" #. This is in the context of: Ask for confirmation before... #: ../mail/mail-config.ui.h:39 msgid "Sending a message with only _Bcc recipients defined" msgstr "发送只填写了密件抄送收件人的信息时(_B)" #. This is in the context of: Ask for confirmation before... #: ../mail/mail-config.ui.h:41 msgid "Sending a _private reply to a mailing list message" msgstr "向邮件列表邮箱发送私人回复时(_P)" #. This is in the context of: Ask for confirmation before... #: ../mail/mail-config.ui.h:43 msgid "Sending a reply to a large _number of recipients" msgstr "向很多收件人发送回复时(_N)" #. This is in the context of: Ask for confirmation before... #: ../mail/mail-config.ui.h:45 msgid "Allowing a _mailing list to redirect a private reply to the list" msgstr "允许邮件列表将私人回复重定向到列表(_M)" #. This is in the context of: Ask for confirmation before... #: ../mail/mail-config.ui.h:47 msgid "Sending a message with _recipients not entered as mail addresses" msgstr "发送只填写了密件抄送收件人的信息时(_B)" #: ../mail/mail-config.ui.h:48 msgid "Confirmations" msgstr "配置" #: ../mail/mail-config.ui.h:54 ../smime/gui/smime-ui.ui.h:1 msgid "a" msgstr "a" #: ../mail/mail-config.ui.h:55 ../smime/gui/smime-ui.ui.h:2 msgid "b" msgstr "b" #: ../mail/mail-config.ui.h:56 msgid "Proxy Settings" msgstr "代理设置" #: ../mail/mail-config.ui.h:57 msgid "_Use system defaults" msgstr "使用默认值(_U)" #: ../mail/mail-config.ui.h:58 msgid "_Direct connection to the Internet" msgstr "直接连接到 Internet(_D)" #: ../mail/mail-config.ui.h:59 msgid "_Manual proxy configuration:" msgstr "手动代理服务器配置(_M):" #: ../mail/mail-config.ui.h:60 msgid "H_TTP Proxy:" msgstr "HTTP 代理服务器(_T):" #: ../mail/mail-config.ui.h:61 msgid "_Secure HTTP Proxy:" msgstr "安全 HTTP 代理(_S):" #: ../mail/mail-config.ui.h:62 msgid "SOC_KS Proxy:" msgstr "Socks 代理 (K):" #: ../mail/mail-config.ui.h:63 msgid "No _Proxy for:" msgstr "不使用代理的情况(_P):" #: ../mail/mail-config.ui.h:64 #: ../modules/book-config-ldap/evolution-book-config-ldap.c:614 msgid "Port:" msgstr "端口:" #: ../mail/mail-config.ui.h:65 msgid "Use Authe_ntication" msgstr "使用身份验证(_N)" #: ../mail/mail-config.ui.h:66 msgid "Us_ername:" msgstr "用户名(_E):" #: ../mail/mail-config.ui.h:67 msgid "Pass_word:" msgstr "密码(_W):" #: ../mail/mail-config.ui.h:68 msgid "Start up" msgstr "启动" #: ../mail/mail-config.ui.h:69 msgid "Check for new _messages on start" msgstr "启动时自动检查新信息(_M)" #: ../mail/mail-config.ui.h:70 msgid "Check for new messa_ges in all active accounts" msgstr "检查所有活动账户的新信息(_G)" #: ../mail/mail-config.ui.h:71 msgid "Message Display" msgstr "信息显示" #: ../mail/mail-config.ui.h:72 msgid "_Use the same fonts as other applications" msgstr "使用与其它应用程序相同的字体(_U)" #: ../mail/mail-config.ui.h:73 msgid "S_tandard Font:" msgstr "标准字体(_T):" #: ../mail/mail-config.ui.h:74 msgid "Select HTML fixed width font" msgstr "选择 HTML 固定宽度字体" #: ../mail/mail-config.ui.h:75 msgid "Select HTML variable width font" msgstr "选择 HTML 变宽度字体" #: ../mail/mail-config.ui.h:76 msgid "Fix_ed Width Font:" msgstr "等宽字体(_E):" #: ../mail/mail-config.ui.h:77 msgid "_Mark messages as read after" msgstr "把信息标记为已读前等(_M)" #: ../mail/mail-config.ui.h:79 msgid "Highlight _quotations with" msgstr "突出显示引用(_Q)" #: ../mail/mail-config.ui.h:80 msgid "color" msgstr "颜色" #: ../mail/mail-config.ui.h:81 msgid "Default character e_ncoding:" msgstr "默认字符编码(_N):" #: ../mail/mail-config.ui.h:82 msgid "Apply the same _view settings to all folders" msgstr "应用同样的查看设置到所有文件夹(_v)" #: ../mail/mail-config.ui.h:83 msgid "F_all back to threading messages by subject" msgstr "默认按照主题对线索中的信息排序(_A)" #: ../mail/mail-config.ui.h:84 msgid "Delete Mail" msgstr "删除邮件" #: ../mail/mail-config.ui.h:85 msgid "Empty _trash folders" msgstr "清空回收站文件夹 (_T)" #: ../mail/mail-config.ui.h:86 msgid "Confirm _when expunging a folder" msgstr "销毁文件夹时确认(_W)" #. If enabled, show animation; if disabled, only display a static image without any animation #: ../mail/mail-config.ui.h:88 msgid "_Show animated images" msgstr "显示动态图像(_S)" #: ../mail/mail-config.ui.h:89 msgid "_Prompt on sending HTML mail to contacts that do not want them" msgstr "发送给不想接收 HTML 的联系人时提示(_P)" #: ../mail/mail-config.ui.h:90 msgid "Loading Images" msgstr "载入图像" #: ../mail/mail-config.ui.h:91 msgid "_Never load images from the Internet" msgstr "绝不从 Internet 载入图像(_N)" #: ../mail/mail-config.ui.h:92 msgid "_Load images only in messages from contacts" msgstr "载入来自联系人的邮件中的图像(_L)" #: ../mail/mail-config.ui.h:93 msgid "_Always load images from the Internet" msgstr "总是从 Internet 上载入图像(_A)" #: ../mail/mail-config.ui.h:94 msgid "HTML Messages" msgstr "HTML 信息" #: ../mail/mail-config.ui.h:95 ../mail/message-list.etspec.h:19 msgid "Labels" msgstr "标签" #: ../mail/mail-config.ui.h:96 msgid "Sender Photograph" msgstr "发送者照片" #: ../mail/mail-config.ui.h:97 msgid "_Show the photograph of sender in the message preview" msgstr "在信息预览中显示发送者的照片(_S)" #: ../mail/mail-config.ui.h:98 msgid "Displayed Message Headers" msgstr "显示信头" #: ../mail/mail-config.ui.h:99 msgid "Mail Headers Table" msgstr "邮件头表" #: ../mail/mail-config.ui.h:100 #: ../modules/addressbook/autocompletion-config.c:117 #: ../modules/calendar/e-calendar-preferences.ui.h:54 msgid "Date/Time Format" msgstr "日期/时间格式" #: ../mail/mail-config.ui.h:102 msgid "Check incoming _messages for junk" msgstr "检查收到的邮件是否是垃圾信息(_M)" #: ../mail/mail-config.ui.h:103 msgid "_Delete junk messages" msgstr "删除垃圾消息 (_D)" #: ../mail/mail-config.ui.h:104 msgid "Check cu_stom headers for junk" msgstr "检查自定义信头以判别垃圾信息(_S)" #: ../mail/mail-config.ui.h:105 msgid "Do not mar_k messages as junk if sender is in my address book" msgstr "如果信息发送者在地址簿中则不标记为垃圾信息(_K)" #: ../mail/mail-config.ui.h:106 msgid "_Lookup in local address book only" msgstr "仅在本地地址簿中查阅(_L)" #: ../mail/mail-config.ui.h:107 msgid "Option is ignored if a match for custom junk headers is found." msgstr "如果找到匹配的自定义垃圾信头,此选项将被覆盖。" #: ../mail/mail-config.ui.h:109 #: ../modules/mail-config/e-mail-config-remote-accounts.c:225 #: ../modules/mail-config/e-mail-config-smtp-backend.c:159 msgid "No encryption" msgstr "不加密" #: ../mail/mail-config.ui.h:110 msgid "TLS encryption" msgstr "TLS 加密" #: ../mail/mail-config.ui.h:111 msgid "SSL encryption" msgstr "SSL 加密" #: ../mail/mail-dialogs.ui.h:1 msgid "" "The messages you have selected for follow up are listed below.\n" "Please select a follow up action from the \"Flag\" menu." msgstr "" "您选中进行跟随的信息已经在下面列出。\n" "请从“标志”菜单中选择跟随操作。" #: ../mail/mail-dialogs.ui.h:3 msgid "_Flag:" msgstr "标志(_F):" #: ../mail/mail-dialogs.ui.h:4 msgid "_Due By:" msgstr "延期人(_D):" #. Translators: Flag Completed #: ../mail/mail-dialogs.ui.h:6 msgid "Co_mpleted" msgstr "已完成(_M)" #: ../mail/mail-dialogs.ui.h:7 msgid "Call" msgstr "呼叫" #: ../mail/mail-dialogs.ui.h:8 msgid "Do Not Forward" msgstr "不要转发" #: ../mail/mail-dialogs.ui.h:9 msgid "Follow-Up" msgstr "跟随" #: ../mail/mail-dialogs.ui.h:10 msgid "For Your Information" msgstr "给您的信息" #: ../mail/mail-dialogs.ui.h:11 msgid "Forward" msgstr "转发" #: ../mail/mail-dialogs.ui.h:12 msgid "No Response Necessary" msgstr "不必回复" #: ../mail/mail-dialogs.ui.h:16 msgid "Reply to All" msgstr "全部回复" #: ../mail/mail-dialogs.ui.h:17 msgid "Review" msgstr "回顾" #: ../mail/mail-dialogs.ui.h:18 msgid "License Agreement" msgstr "许可协议" #: ../mail/mail-dialogs.ui.h:19 msgid "_Tick this to accept the license agreement" msgstr "选中此处以表明您接受许可协议(_T)" #: ../mail/mail-dialogs.ui.h:20 msgid "_Accept License" msgstr "接受协议(_A)" #: ../mail/mail-dialogs.ui.h:21 msgid "Security Information" msgstr "安全信息" #: ../mail/mail-dialogs.ui.h:22 msgid "Digital Signature" msgstr "数字签名" #: ../mail/mail-dialogs.ui.h:23 msgid "Encryption" msgstr "加密" #: ../mail/mail.error.xml.h:1 msgid "Invalid authentication" msgstr "无效的身份验证" #: ../mail/mail.error.xml.h:2 msgid "" "This server does not support this type of authentication and may not support " "authentication at all." msgstr "此服务器不支持此类型的身份验证,也可能根本不支持身份验证。" #: ../mail/mail.error.xml.h:3 msgid "Your login to your server \"{0}\" as \"{0}\" failed." msgstr "您以“{0}”的身份登录到服务器“{0}”失败。" #: ../mail/mail.error.xml.h:4 msgid "" "Check to make sure your password is spelled correctly. Remember that many " "passwords are case sensitive; your caps lock might be on." msgstr "选中此处以确保您的密码拼写正确。请记住,很多密码都是区分大小写的;您的 Caps Lock 灯可能为开。" #: ../mail/mail.error.xml.h:5 msgid "Are you sure you want to send a message in HTML format?" msgstr "您确定想要以 HTML 格式发送信息吗?" #: ../mail/mail.error.xml.h:6 msgid "" "Please make sure the following recipients are willing and able to receive " "HTML email:\n" "{0}" msgstr "" "请确定下列收件人愿意并且能够接收 HTML 邮件:\n" "{0}" #: ../mail/mail.error.xml.h:9 msgid "Are you sure you want to send a message without a subject?" msgstr "您确定想要发送没有主题的信息吗?" #: ../mail/mail.error.xml.h:10 msgid "" "Adding a meaningful Subject line to your messages will give your recipients " "an idea of what your mail is about." msgstr "在您的信息中添加有意义的主题可以让您的收件人更容易明白您邮件的内容。" #: ../mail/mail.error.xml.h:11 msgid "Are you sure you want to send a message with only BCC recipients?" msgstr "您确信您要发送只有密件抄送收件人的信息吗?" #: ../mail/mail.error.xml.h:12 msgid "" "The contact list you are sending to is configured to hide list recipients.\n" "\n" "Many email systems add an Apparently-To header to messages that only have " "BCC recipients. This header, if added, will list all of your recipients in " "your message. To avoid this, you should add at least one To: or CC: " "recipient. " msgstr "" "您即将发送的联系人列表配置为隐藏列表收件人。\n" "\n" "许多邮件系统会在只有密件抄送收件人的信息中添加 Apparently-To " "头。如果添加了这个邮件头,将在您的信息中列出您的全部收件人。为了避免这种情况,您应该至少填入一个 To: 或 CC: 收件人。 " #: ../mail/mail.error.xml.h:15 msgid "" "Many email systems add an Apparently-To header to messages that only have " "BCC recipients. This header, if added, will list all of your recipients to " "your message anyway. To avoid this, you should add at least one To: or CC: " "recipient." msgstr "" "许多邮件系统会在只有密件抄送收件人的信息中添加 Apparently-To " "头。如果添加了这个邮件头,将在您的信息中列出您的全部收件人。为了避免这种情况,您应该至少填入一个 To: 或 CC: 收件人。" #: ../mail/mail.error.xml.h:16 msgid "Are you sure you want to send a message with invalid address?" msgstr "您确信您要发送收件人地址无效的信息吗?" #: ../mail/mail.error.xml.h:17 msgid "" "The following recipient was not recognized as a valid mail address:\n" "{0}" msgstr "" "下列接收者不能被识别为有效的电子邮件地址:\n" "{0}" #: ../mail/mail.error.xml.h:19 msgid "Are you sure you want to send a message with invalid addresses?" msgstr "您确信您要发送收件人地址无效的信息吗?" #: ../mail/mail.error.xml.h:20 msgid "" "The following recipients were not recognized as valid mail addresses:\n" "{0}" msgstr "" "下列接收者不能被识别为有效的电子邮件地址:\n" "{0}" #: ../mail/mail.error.xml.h:22 msgid "Send private reply?" msgstr "发送私人回复?" #: ../mail/mail.error.xml.h:23 msgid "" "You are replying privately to a message which arrived via a mailing list, " "but the list is trying to redirect your reply to go back to the list. Are " "you sure you want to proceed?" msgstr "您正在给一封通过邮件列表收到的邮件发送一个私下的回复,而邮件列表正试图重定向您的回复回邮件列表。您确定要继续么?" #: ../mail/mail.error.xml.h:24 msgid "Reply _Privately" msgstr "私人回复(_P)" #: ../mail/mail.error.xml.h:26 msgid "" "You are replying to a message which arrived via a mailing list, but you are " "replying privately to the sender; not to the list. Are you sure you want to " "proceed?" msgstr "您正在回复一封通过邮件列表收到的邮件,但是您正私下的回复给发件人,而不是邮件列表。您确定要这么做么?" #: ../mail/mail.error.xml.h:28 msgid "Send reply to all recipients?" msgstr "发送回复给所有收件人?" #: ../mail/mail.error.xml.h:29 msgid "" "You are replying to a message which was sent to many recipients. Are you " "sure you want to reply to ALL of them?" msgstr "您正要向多个收件人回复信息,您确定要回复其中的所有人吗?" #: ../mail/mail.error.xml.h:30 msgid "" "This message cannot be sent because you have not specified any recipients" msgstr "无法发送此信息,因为您没有指定任何收件人" #: ../mail/mail.error.xml.h:31 msgid "" "Please enter a valid email address in the To: field. You can search for " "email addresses by clicking on the To: button next to the entry box." msgstr "请在 To: 中输入有效的电子邮件地址。您可以单击输入框旁边的 To: 按钮来搜索电子邮件地址。" #: ../mail/mail.error.xml.h:32 msgid "Use default drafts folder?" msgstr "使用默认的草稿文件夹吗?" #: ../mail/mail.error.xml.h:33 msgid "" "Unable to open the drafts folder for this account. Use the system drafts " "folder instead?" msgstr "无法打开此帐号的草稿文件夹。使用系统的草稿文件夹吗?" #: ../mail/mail.error.xml.h:34 msgid "Use _Default" msgstr "使用默认值(_D)" #: ../mail/mail.error.xml.h:35 msgid "" "Are you sure you want to permanently remove all the deleted messages in " "folder \"{0}\"?" msgstr "您确定想要永久删除文件夹“{0}”中已删除的全部信息吗?" #: ../mail/mail.error.xml.h:36 msgid "If you continue, you will not be able to recover these messages." msgstr "如果您继续的话,您将无法恢复这些信息。" #: ../mail/mail.error.xml.h:37 msgid "_Expunge" msgstr "销毁(_E)" #: ../mail/mail.error.xml.h:38 msgid "" "Are you sure you want to permanently remove all the deleted messages in all " "folders?" msgstr "您确定想要永久删除全部文件夹中已删除的全部信息吗?" #: ../mail/mail.error.xml.h:39 #: ../modules/mail/e-mail-shell-view-actions.c:1529 msgid "_Empty Trash" msgstr "清空废件箱(_E)" #: ../mail/mail.error.xml.h:40 msgid "Opening too many messages at once may take a long time." msgstr "一次打开太多封信可能要花一点时间。" #: ../mail/mail.error.xml.h:41 msgid "_Open Messages" msgstr "打开信息(_O)" #: ../mail/mail.error.xml.h:42 msgid "You have unsent messages, do you wish to quit anyway?" msgstr "您有未发送信息,您仍然想要退出吗?" #: ../mail/mail.error.xml.h:43 msgid "" "If you quit, these messages will not be sent until Evolution is started " "again." msgstr "如果您退出,这些信息将会等到 Evolution 下次启动才会发出。" #. Translators: the {0} is replaced with an operation name, which failed. #. It can be basically anything run asynchronously, like "Fetching Mail", #. "Sending message" and others, mostly from mail-ops.c file. #: ../mail/mail.error.xml.h:47 msgid "Error while {0}." msgstr "{0} 时出错。" #: ../mail/mail.error.xml.h:48 msgid "Error while performing operation." msgstr "执行操作时出错。" #: ../mail/mail.error.xml.h:49 msgid "Enter password." msgstr "输入密码。" #: ../mail/mail.error.xml.h:50 msgid "Error loading filter definitions." msgstr "载入过滤器定义错误。" #: ../mail/mail.error.xml.h:51 msgid "Cannot save to directory \"{0}\"." msgstr "无法保存到目录“{0}”。" #: ../mail/mail.error.xml.h:52 msgid "Cannot save to file \"{0}\"." msgstr "无法保存到文件“{0}”。" #: ../mail/mail.error.xml.h:53 msgid "Cannot create the save directory, because \"{1}\"" msgstr "无法创建保存目录,原因是“{1}”" #: ../mail/mail.error.xml.h:54 msgid "Cannot create temporary save directory." msgstr "无法创建临时保存目录。" #: ../mail/mail.error.xml.h:55 msgid "File exists but cannot overwrite it." msgstr "文件存在但无法覆盖。" #: ../mail/mail.error.xml.h:56 msgid "File exists but is not a regular file." msgstr "文件存在但不是普通文件。" #: ../mail/mail.error.xml.h:57 msgid "Cannot delete folder \"{0}\"." msgstr "无法删除文件夹“{0}”。" #: ../mail/mail.error.xml.h:58 msgid "Cannot delete system folder \"{0}\"." msgstr "无法删除系统文件夹“{0}”。" #: ../mail/mail.error.xml.h:59 msgid "" "System folders are required for Evolution to function correctly and cannot " "be renamed, moved, or deleted." msgstr "您无法重命名、移动或删除要让 Evolution 正常运作所需的系统文件夹。" #: ../mail/mail.error.xml.h:60 msgid "Failed to expunge folder "{0}"." msgstr "擦除文件夹 "{0}" 失败。" #: ../mail/mail.error.xml.h:62 msgid "Failed to refresh folder "{0}"." msgstr "刷新文件夹 "{0}" 失败。" #: ../mail/mail.error.xml.h:63 msgid "Cannot rename or move system folder \"{0}\"." msgstr "无法重命名或移动系统文件夹“{0}”。" #: ../mail/mail.error.xml.h:64 msgid "Really delete folder \"{0}\" and all of its subfolders?" msgstr "真的要删除文件夹“{0}”及其全部子文件夹吗?" #: ../mail/mail.error.xml.h:65 msgid "" "If you delete the folder, all of its contents and its subfolders' contents " "will be deleted permanently." msgstr "如果您删除文件夹,其中的全部内容及其子文件夹内容将被永久删除。" #: ../mail/mail.error.xml.h:67 msgid "Really delete folder \"{0}\"?" msgstr "真要删除文件夹“{0}”?" #: ../mail/mail.error.xml.h:68 msgid "" "If you delete the folder, all of its contents will be deleted permanently." msgstr "如果您删除文件夹,其中的全部内容将被永久删除。" #: ../mail/mail.error.xml.h:69 msgid "These messages are not copies." msgstr "这些信息不是副本。" #: ../mail/mail.error.xml.h:70 msgid "" "Messages shown in Search Folders are not copies. Deleting them from a Search " "Folder will delete the actual messages from the folder or folders in which " "they physically reside. Do you really want to delete these messages?" msgstr "搜索文件夹中所显示的信息不是副本。从搜索文件夹删除他们将删除其所在文件夹中的实际信息。您真的要删除这些信息吗?" #: ../mail/mail.error.xml.h:71 msgid "Cannot rename \"{0}\" to \"{1}\"." msgstr "无法将“{0}”重命名为“{1}”。" #: ../mail/mail.error.xml.h:72 msgid "A folder named \"{1}\" already exists. Please use a different name." msgstr "已经存在名为“{1}”的文件夹。请使用不同的名称。" #: ../mail/mail.error.xml.h:73 msgid "Cannot move folder \"{0}\" to \"{1}\"." msgstr "无法将文件夹“{0}”移至“{1}”。" #: ../mail/mail.error.xml.h:74 msgid "Cannot open source folder. Error: {2}" msgstr "无法打开来源文件夹。错误:{2}" #: ../mail/mail.error.xml.h:75 msgid "Cannot open target folder. Error: {2}" msgstr "无法打开目标文件夹。错误:{2}" #: ../mail/mail.error.xml.h:76 msgid "Cannot copy folder \"{0}\" to \"{1}\"." msgstr "无法将文件夹“{0}”复制到“{1}”。" #: ../mail/mail.error.xml.h:77 msgid "Cannot create folder \"{0}\"." msgstr "无法创建文件夹“{0}”。" #: ../mail/mail.error.xml.h:78 msgid "Cannot open folder. Error: {1}" msgstr "无法打开文件夹。错误:{1}" #: ../mail/mail.error.xml.h:79 msgid "Cannot save changes to account." msgstr "无法将更改保存到帐号。" #: ../mail/mail.error.xml.h:80 msgid "You have not filled in all of the required information." msgstr "您没有填入所需的全部信息。" #: ../mail/mail.error.xml.h:81 msgid "You may not create two accounts with the same name." msgstr "您不能创建两个同名帐号。" #: ../mail/mail.error.xml.h:82 msgid "Are you sure you want to delete this account?" msgstr "您确定要删除此帐号吗?" #: ../mail/mail.error.xml.h:83 msgid "If you proceed, the account information will be deleted permanently." msgstr "如果您继续的话,帐号信息将被永久删除。" #: ../mail/mail.error.xml.h:84 msgid "Are you sure you want to delete this account and all its proxies?" msgstr "您确定要删除此帐号及其全部代理服务器吗?" #: ../mail/mail.error.xml.h:85 msgid "" "If you proceed, the account information and\n" "all proxy information will be deleted permanently." msgstr "如果您继续的话,帐号信息及其全部代理服务器信息将被永久删除。" #: ../mail/mail.error.xml.h:87 msgid "" "Are you sure you want to disable this account and delete all its proxies?" msgstr "您确定要禁用此帐号及其全部代理服务器吗?" #: ../mail/mail.error.xml.h:88 msgid "If you proceed, all proxy accounts will be deleted permanently." msgstr "如果您继续的话,全部代理服务器帐号都将被永久删除。" #: ../mail/mail.error.xml.h:89 msgid "Do _Not Disable" msgstr "不禁用(_N)" #: ../mail/mail.error.xml.h:90 #: ../plugins/publish-calendar/publish-calendar.c:649 msgid "_Disable" msgstr "禁用(_D)" #: ../mail/mail.error.xml.h:91 msgid "Cannot edit Search Folder \"{0}\" as it does not exist." msgstr "无法编辑搜索文件夹“{0}”,原因是该文件夹不存在。" #: ../mail/mail.error.xml.h:92 msgid "" "This folder may have been added implicitly,\n" "go to the Search Folder editor to add it explicitly, if required." msgstr "此文件夹可能已经隐式添加了。如果需要的话,请转到搜索文件夹编辑器显式添加。" #: ../mail/mail.error.xml.h:94 msgid "Cannot add Search Folder \"{0}\"." msgstr "无法添加搜索文件夹“{0}”。" #: ../mail/mail.error.xml.h:95 msgid "A folder named \"{0}\" already exists. Please use a different name." msgstr "已经存在名为“{0}”的文件夹。请使用不同的名称。" #: ../mail/mail.error.xml.h:96 msgid "Search Folders automatically updated." msgstr "搜索文件夹已自动更新。" #: ../mail/mail.error.xml.h:97 msgid "Mail filters automatically updated." msgstr "邮件过滤器已自动更新。" #: ../mail/mail.error.xml.h:98 msgid "Missing folder." msgstr "缺少文件夹。" #: ../mail/mail.error.xml.h:99 msgid "You must specify a folder." msgstr "您必须指定文件夹。" #: ../mail/mail.error.xml.h:101 msgid "You must name this Search Folder." msgstr "您必须为此搜索文件夹命名。" #: ../mail/mail.error.xml.h:102 msgid "No folder selected." msgstr "未选中文件夹" #: ../mail/mail.error.xml.h:103 msgid "" "You must specify at least one folder as a source.\n" "Either by selecting the folders individually, and/or by selecting all local " "folders, all remote folders, or both." msgstr "" "您必须一次至少指定一个文件夹作为源。\n" "或者逐一选择文件夹,或者选中全部本地文件夹和/或全部远程文件夹。" #: ../mail/mail.error.xml.h:105 msgid "Problem migrating old mail folder \"{0}\"." msgstr "升迁旧的邮件文件夹“{0}”出现问题。" #: ../mail/mail.error.xml.h:106 msgid "" "A non-empty folder at \"{1}\" already exists.\n" "\n" "You can choose to ignore this folder, overwrite or append its contents, or " "quit." msgstr "" "“{1}”已经存在非空文件夹。\n" "\n" "您可以选择忽略此文件夹,覆盖或追加其内容,或者退出。" #: ../mail/mail.error.xml.h:109 msgid "Ignore" msgstr "忽略" #: ../mail/mail.error.xml.h:110 msgid "_Overwrite" msgstr "覆盖(_O)" #: ../mail/mail.error.xml.h:111 msgid "_Append" msgstr "追加(_A)" #: ../mail/mail.error.xml.h:112 msgid "Evolution's local mail format has changed." msgstr "Evolution 的本地邮件格式已更改。" #: ../mail/mail.error.xml.h:113 msgid "" "Evolution's local mail format has changed from mbox to Maildir. Your local " "mail must be migrated to the new format before Evolution can proceed. Do you " "want to migrate now?\n" "\n" "An mbox account will be created to preserve the old mbox folders. You can " "delete the account after ensuring the data is safely migrated. Please make " "sure there is enough disk space if you choose to migrate now." msgstr "" "默认的本地存储已经从 mbox 格式改为 maildir 格式。您想现在进行迁移吗?\n" "\n" "将会创建一个 mbox 账户来保留旧的 mbox 文件夹。在确信数据已经安全迁移后,您可以删除它。要迁移,请先确保有足够的磁盘空间。" #: ../mail/mail.error.xml.h:116 msgid "_Exit Evolution" msgstr "退出 Evolution(_E)" #: ../mail/mail.error.xml.h:117 msgid "_Migrate Now" msgstr "迁移 Now(_M)" #: ../mail/mail.error.xml.h:118 msgid "Unable to read license file." msgstr "无法读取许可文件。" #: ../mail/mail.error.xml.h:119 msgid "" "Cannot read the license file \"{0}\", due to an installation problem. You " "will not be able to use this provider until you can accept its license." msgstr "无法读取许可文件“{0}”,原因是安装有问题。您将无法使用此提供者,除非您接受其许可协议。" #: ../mail/mail.error.xml.h:120 msgid "Please wait." msgstr "请稍候。" #: ../mail/mail.error.xml.h:121 msgid "Querying server for a list of supported authentication mechanisms." msgstr "查询服务器所支持的身份验证算法列表。" #: ../mail/mail.error.xml.h:122 msgid "" "Failed to query server for a list of supported authentication mechanisms." msgstr "查询服务器所支持的身份验证方法列表失败。" #: ../mail/mail.error.xml.h:123 msgid "Synchronize folders locally for offline usage?" msgstr "同步文件夹到本地以离线使用吗?" #: ../mail/mail.error.xml.h:124 msgid "" "Do you want to locally synchronize the folders that are marked for offline " "usage?" msgstr "您想要同步那些标记为离线使用的文件夹吗?" #: ../mail/mail.error.xml.h:125 msgid "Do _Not Synchronize" msgstr "不同步(_D)" #: ../mail/mail.error.xml.h:126 msgid "_Synchronize" msgstr "同步(_S)" #: ../mail/mail.error.xml.h:127 msgid "Do you want to mark all messages as read?" msgstr "您是否想要把所有信息标记为已读?" #: ../mail/mail.error.xml.h:128 msgid "This will mark all messages as read in the selected folder." msgstr "这将把选中文件夹中的全部信息标记为已读。" #: ../mail/mail.error.xml.h:129 msgid "Also mark messages in subfolders?" msgstr "也标记的子文件夹中的信息吗?" #: ../mail/mail.error.xml.h:130 msgid "" "Do you want to mark messages as read in the current folder only, or in the " "current folder as well as all subfolders?" msgstr "您是想要只标记当前文件夹中的信息,还是也包括子文件夹中的信息?" #: ../mail/mail.error.xml.h:131 msgid "In Current Folder and _Subfolders" msgstr "在当前文件夹和子文件夹(_S)" #: ../mail/mail.error.xml.h:132 msgid "In Current _Folder Only" msgstr "只在当前文件夹(_F)" #: ../mail/mail.error.xml.h:133 msgid "Should Evolution close this window when replying or forwarding?" msgstr "是否在回复或转发邮件时关闭此窗口?" #: ../mail/mail.error.xml.h:134 msgid "_Yes, Always" msgstr "是,关闭窗口 (_Y)" #: ../mail/mail.error.xml.h:135 msgid "_No, Never" msgstr "否,从不关闭(_N)" #: ../mail/mail.error.xml.h:136 msgid "Copy folder in folder tree." msgstr "在文件夹列表中复制文件夹" #: ../mail/mail.error.xml.h:137 msgid "Are you sure you want to copy folder '{0}' to folder '{1}'?" msgstr "是否确定将文件夹 '{0}' 复制到文件夹 '{1}'?" #: ../mail/mail.error.xml.h:138 msgid "_Yes" msgstr "是(_Y)" #: ../mail/mail.error.xml.h:139 msgid "_No" msgstr "否(_N)" #: ../mail/mail.error.xml.h:140 msgid "_Always" msgstr "总是(_A)" #: ../mail/mail.error.xml.h:141 msgid "N_ever" msgstr "从不(_E)" #: ../mail/mail.error.xml.h:142 msgid "Move folder in folder tree." msgstr "在文件夹列表中移动文件夹。" #: ../mail/mail.error.xml.h:143 msgid "Are you sure you want to to move folder '{0}' to folder '{1}'?" msgstr "是否确定将文件夹 '{0}' 移动到文件夹 '{1}'?" #: ../mail/mail.error.xml.h:144 msgid "" "This message cannot be sent because the account you chose to send with is " "not enabled" msgstr "无法发送此信息,因为您所选择用来发送的帐号未启用" #: ../mail/mail.error.xml.h:145 msgid "Please enable the account or send using another account." msgstr "请启用帐号或者使用其它帐号发送。" #: ../mail/mail.error.xml.h:146 msgid "Mail Deletion Failed" msgstr "邮件删除失败" #: ../mail/mail.error.xml.h:147 msgid "You do not have sufficient permissions to delete this mail." msgstr "您没有足够的权限删除此邮件。" #: ../mail/mail.error.xml.h:148 msgid "\"Check Junk\" Failed" msgstr "检查垃圾信息失败" #: ../mail/mail.error.xml.h:149 msgid "\"Report Junk\" Failed" msgstr "报告垃圾信息失败" #: ../mail/mail.error.xml.h:150 msgid "\"Report Not Junk\" Failed" msgstr "报告非垃圾信息失败" #: ../mail/mail.error.xml.h:151 msgid "Remove duplicate messages?" msgstr "移除重复的信息?" #: ../mail/mail.error.xml.h:152 msgid "No duplicate messages found." msgstr "没有找到重复信息。" #. Translators: {0} is replaced with a folder name #: ../mail/mail.error.xml.h:154 msgid "Folder '{0}' doesn't contain any duplicate message." msgstr "“{0}”文件夹中没有重复信息。" #: ../mail/mail.error.xml.h:155 msgid "Failed to disconnect account "{0}"." msgstr "无法断开帐号 "{0}"。" #: ../mail/mail.error.xml.h:157 msgid "Failed to unsubscribe from folder "{0}"." msgstr "无法退订文件夹 "{0}"。" #: ../mail/mail.error.xml.h:158 msgid "Unable to retrieve message." msgstr "无法获取信息。" #: ../mail/mail.error.xml.h:159 msgid "{0}" msgstr "{0}" #: ../mail/mail.error.xml.h:160 msgid "Failed to open folder." msgstr "打开文件夹失败。" #: ../mail/mail.error.xml.h:161 msgid "Failed to find duplicate messages." msgstr "查找重复信息失败。" #: ../mail/mail.error.xml.h:162 msgid "Failed to retrieve messages." msgstr "获取信息失败。" #: ../mail/mail.error.xml.h:163 msgid "Failed to mark messages as read." msgstr "无法将消息标记为已读。" #: ../mail/mail.error.xml.h:164 msgid "Failed to remove attachments from messages." msgstr "移除信息里的附件失败。" #: ../mail/mail.error.xml.h:165 msgid "Failed to download messages for offline viewing." msgstr "无法下载信息以离线查看。" #: ../mail/mail.error.xml.h:166 msgid "Failed to save messages to disk." msgstr "保存信息到磁盘失败。" #: ../mail/mail.error.xml.h:167 msgid "Hidden file is attached." msgstr "附件为隐藏文件。" #: ../mail/mail.error.xml.h:168 msgid "" "The attachment named {0} is a hidden file and may contain sensitive data. " "Please review it before sending." msgstr "名为 {0} 的附件是一个隐藏文件,可能含有敏感数据。请在发送之前再次检查。" #: ../mail/mail.error.xml.h:169 msgid "Printing failed." msgstr "打印失败。" #: ../mail/mail.error.xml.h:170 msgid "The printer replied "{0}"." msgstr "打印机返回信息 "{0}"。" #: ../mail/mail.error.xml.h:171 msgid "Could not perform this operation on {0}." msgstr "无法在 {0} 完成此操作。" #: ../mail/mail.error.xml.h:172 msgid "You must be working online to complete this operation." msgstr "此操作需在在线状态下进行。" #: ../mail/mail-send-recv.c:202 msgid "Canceling..." msgstr "正在取消..." #: ../mail/mail-send-recv.c:546 msgid "Send & Receive Mail" msgstr "发送和接收邮件" #: ../mail/mail-send-recv.c:562 msgid "Cancel _All" msgstr "全部取消(_A)" #: ../mail/mail-send-recv.c:655 ../mail/mail-send-recv.c:1047 msgid "Updating..." msgstr "正在更新..." #: ../mail/mail-send-recv.c:655 ../mail/mail-send-recv.c:736 msgid "Waiting..." msgstr "正在等待..." #: ../mail/mail-send-recv.c:1020 #, c-format msgid "Checking for new mail at '%s'" msgstr "在 '%s' 检查新邮件" #: ../mail/mail-vfolder-ui.c:78 msgid "Search Folders" msgstr "搜索文件夹" #: ../mail/mail-vfolder-ui.c:158 msgid "Edit Search Folder" msgstr "编辑搜索文件夹" #: ../mail/mail-vfolder-ui.c:279 msgid "New Search Folder" msgstr "新建搜索文件夹" #: ../mail/message-list.c:298 msgid "Unseen" msgstr "未看" #: ../mail/message-list.c:299 msgid "Seen" msgstr "已看" #: ../mail/message-list.c:300 msgid "Answered" msgstr "已答复" #: ../mail/message-list.c:301 msgid "Forwarded" msgstr "已转发" #: ../mail/message-list.c:302 msgid "Multiple Unseen Messages" msgstr "多封未看信息" #: ../mail/message-list.c:303 msgid "Multiple Messages" msgstr "多封信" #: ../mail/message-list.c:316 msgid "Lowest" msgstr "最低" #: ../mail/message-list.c:317 msgid "Lower" msgstr "较低" #: ../mail/message-list.c:321 msgid "Higher" msgstr "较高" #: ../mail/message-list.c:322 msgid "Highest" msgstr "最高" #: ../mail/message-list.c:466 ../mail/message-list.c:5730 msgid "Generating message list" msgstr "生成信息列表" #. strftime format of a time, #. * in 12-hour format, without seconds. #: ../mail/message-list.c:1858 ../modules/itip-formatter/itip-view.c:244 msgid "Today %l:%M %p" msgstr "今天%p%l:%M" #: ../mail/message-list.c:1867 msgid "Yesterday %l:%M %p" msgstr "昨天%p%l:%M" #: ../mail/message-list.c:1879 msgid "%a %l:%M %p" msgstr "%A%p%l:%M" #: ../mail/message-list.c:1887 msgid "%b %d %l:%M %p" msgstr "%m月%d日%p%l:%M" #: ../mail/message-list.c:1889 msgid "%b %d %Y" msgstr "%Y年%m月%d日" #: ../mail/message-list.c:2767 msgid "Select all visible messages" msgstr "选中所有可见的信息" #: ../mail/message-list.c:3395 ../mail/message-list.etspec.h:17 msgid "Messages" msgstr "信息" #. default follow-up flag name to use when clicked in the message list column #: ../mail/message-list.c:4774 msgid "Follow-up" msgstr "跟随" #: ../mail/message-list.c:5668 msgid "" "No message satisfies your search criteria. Change search criteria by " "selecting a new Show message filter from the drop down list above or by " "running a new search either by clearing it with Search->Clear menu item or " "by changing the query above." msgstr "" "没有消息符合您的搜索条件。如需修改搜索条件,您可以在上方下拉菜单中选择新的“显示”消息过滤器,亦可通过选择“搜索”-" ">“清空”菜单项或改变上访搜索词来进行新的搜索。" #: ../mail/message-list.c:5676 msgid "There are no messages in this folder." msgstr "此文件夹中没有信息。" #: ../mail/message-list.etspec.h:2 msgid "Flagged" msgstr "已标志" #: ../mail/message-list.etspec.h:8 msgid "Received" msgstr "已接收" #: ../mail/message-list.etspec.h:11 msgid "Flag Status" msgstr "标志状态" #: ../mail/message-list.etspec.h:12 msgid "Follow Up Flag" msgstr "跟随标志" #: ../mail/message-list.etspec.h:13 msgid "Due By" msgstr "延期" #: ../mail/message-list.etspec.h:18 msgid "Messages To" msgstr "消息发送给" #: ../mail/message-list.etspec.h:20 msgid "Subject - Trimmed" msgstr "主题 - 被截断" #: ../mail/searchtypes.xml.h:1 msgid "Subject or Addresses contains" msgstr "主题或地址包含" #: ../mail/searchtypes.xml.h:2 #: ../modules/mail/e-mail-shell-view-actions.c:2012 msgid "Recipients contain" msgstr "收件人含有" #: ../mail/searchtypes.xml.h:3 #: ../modules/mail/e-mail-shell-view-actions.c:2005 msgid "Message contains" msgstr "信息含有" #: ../mail/searchtypes.xml.h:4 #: ../modules/mail/e-mail-shell-view-actions.c:2026 msgid "Subject contains" msgstr "主题含有" #: ../mail/searchtypes.xml.h:5 #: ../modules/mail/e-mail-shell-view-actions.c:2019 msgid "Sender contains" msgstr "发件人含有" #: ../mail/searchtypes.xml.h:6 #: ../modules/mail/e-mail-shell-view-actions.c:1998 msgid "Body contains" msgstr "邮件体含有" #. To Translators: 'Table column' is a label for configurable date/time format for table columns showing a date in message list #: ../modules/addressbook/autocompletion-config.c:123 #: ../modules/mail/em-mailer-prefs.c:1213 msgid "_Table column:" msgstr "表列(T):" #: ../modules/addressbook/autocompletion-config.c:126 msgid "Address formatting" msgstr "地址格式" #: ../modules/addressbook/autocompletion-config.c:129 msgid "_Format address according to standard of its destination country" msgstr "根据收件人所在国家的标准格式化地址信息" #: ../modules/addressbook/autocompletion-config.c:137 msgid "Autocompletion" msgstr "自动补全" #: ../modules/addressbook/autocompletion-config.c:140 msgid "Always _show address of the autocompleted contact" msgstr "总是显示自动补全的联系人的地址(_S)" #: ../modules/addressbook/eab-composer-util.c:148 msgid "Multiple vCards" msgstr "多个 vCard" #: ../modules/addressbook/eab-composer-util.c:156 #, c-format msgid "vCard for %s" msgstr "%s 的 vCard" #: ../modules/addressbook/eab-composer-util.c:168 #: ../modules/addressbook/eab-composer-util.c:195 #, c-format msgid "Contact information" msgstr "联系人信息" #: ../modules/addressbook/eab-composer-util.c:197 #, c-format msgid "Contact information for %s" msgstr "%s 的联系人信息" #: ../modules/addressbook/e-book-shell-backend.c:259 #: ../modules/addressbook/e-book-shell-view-actions.c:125 msgid "New Address Book" msgstr "新地址簿" #: ../modules/addressbook/e-book-shell-backend.c:268 msgctxt "New" msgid "_Contact" msgstr "联系人(_C)" #: ../modules/addressbook/e-book-shell-backend.c:270 #: ../modules/addressbook/e-book-shell-view-actions.c:979 msgid "Create a new contact" msgstr "创建一个新联系人" #: ../modules/addressbook/e-book-shell-backend.c:275 msgctxt "New" msgid "Contact _List" msgstr "联系人列表(_L)" #: ../modules/addressbook/e-book-shell-backend.c:277 #: ../modules/addressbook/e-book-shell-view-actions.c:986 msgid "Create a new contact list" msgstr "创建一个新的联系人列表" #: ../modules/addressbook/e-book-shell-backend.c:285 msgctxt "New" msgid "Address _Book" msgstr "地址簿(_B)" #: ../modules/addressbook/e-book-shell-backend.c:287 #: ../modules/addressbook/e-book-shell-view-actions.c:902 msgid "Create a new address book" msgstr "创建新地址簿" #: ../modules/addressbook/e-book-shell-backend.c:315 msgid "Certificates" msgstr "证书" #: ../modules/addressbook/e-book-shell-view-actions.c:198 msgid "Address Book Properties" msgstr "地址簿属性" #. Translators: This is a save dialog title #: ../modules/addressbook/e-book-shell-view-actions.c:476 #: ../modules/addressbook/e-book-shell-view-actions.c:772 msgid "Save as vCard" msgstr "另存为 VCard" #: ../modules/addressbook/e-book-shell-view-actions.c:879 msgid "Co_py All Contacts To..." msgstr "将全部联系人复制到(_P)..." #: ../modules/addressbook/e-book-shell-view-actions.c:881 msgid "Copy the contacts of the selected address book to another" msgstr "把选中地址簿中的联系人复制到其它地址簿" #: ../modules/addressbook/e-book-shell-view-actions.c:886 msgid "D_elete Address Book" msgstr "删除地址簿(_E)" #: ../modules/addressbook/e-book-shell-view-actions.c:888 msgid "Delete the selected address book" msgstr "删除选中的地址薄" #: ../modules/addressbook/e-book-shell-view-actions.c:893 msgid "Mo_ve All Contacts To..." msgstr "将全部联系人移至(_V)..." #: ../modules/addressbook/e-book-shell-view-actions.c:895 msgid "Move the contacts of the selected address book to another" msgstr "把选中的地址簿中的联系人移至其它地址簿" #: ../modules/addressbook/e-book-shell-view-actions.c:900 msgid "_New Address Book" msgstr "新建地址簿(_N)" #: ../modules/addressbook/e-book-shell-view-actions.c:907 msgid "Address _Book Properties" msgstr "地址簿属性(_B)" #: ../modules/addressbook/e-book-shell-view-actions.c:909 msgid "Show properties of the selected address book" msgstr "更改选中地址薄的属性" #: ../modules/addressbook/e-book-shell-view-actions.c:914 #: ../modules/calendar/e-cal-shell-view-actions.c:1414 #: ../modules/calendar/e-memo-shell-view-actions.c:636 #: ../modules/calendar/e-task-shell-view-actions.c:760 msgid "Re_fresh" msgstr "刷新(_F)" #: ../modules/addressbook/e-book-shell-view-actions.c:916 msgid "Refresh the selected address book" msgstr "刷新选中的地址簿" #: ../modules/addressbook/e-book-shell-view-actions.c:921 msgid "Address Book _Map" msgstr "地址簿地图(_M)" #: ../modules/addressbook/e-book-shell-view-actions.c:923 msgid "Show map with all contacts from selected address book" msgstr "显示选中地址簿中所有联系人的地图" #: ../modules/addressbook/e-book-shell-view-actions.c:928 #: ../modules/calendar/e-cal-shell-view-actions.c:1421 #: ../modules/calendar/e-memo-shell-view-actions.c:643 #: ../modules/calendar/e-task-shell-view-actions.c:767 #: ../modules/mail/e-mail-shell-view-actions.c:1620 msgid "_Rename..." msgstr "重命名(_R)..." #: ../modules/addressbook/e-book-shell-view-actions.c:930 msgid "Rename the selected address book" msgstr "重命名选中地址薄" #: ../modules/addressbook/e-book-shell-view-actions.c:937 msgid "Stop loading" msgstr "停止载入" #: ../modules/addressbook/e-book-shell-view-actions.c:942 msgid "_Copy Contact To..." msgstr "复制联系人到(_C)..." #: ../modules/addressbook/e-book-shell-view-actions.c:944 msgid "Copy selected contacts to another address book" msgstr "把选中的联系人复制到其它地址薄" #: ../modules/addressbook/e-book-shell-view-actions.c:949 msgid "_Delete Contact" msgstr "删除联系人(_D)" #: ../modules/addressbook/e-book-shell-view-actions.c:956 msgid "_Find in Contact..." msgstr "在联系人查找(_F)..." #: ../modules/addressbook/e-book-shell-view-actions.c:958 msgid "Search for text in the displayed contact" msgstr "在显示的联系人中搜索文本" #: ../modules/addressbook/e-book-shell-view-actions.c:963 msgid "_Forward Contact..." msgstr "转发联系人(_F)..." #: ../modules/addressbook/e-book-shell-view-actions.c:965 msgid "Send selected contacts to another person" msgstr "把选中的联系人发送给其他人" #: ../modules/addressbook/e-book-shell-view-actions.c:970 msgid "_Move Contact To..." msgstr "移动联系人至(_M)..." #: ../modules/addressbook/e-book-shell-view-actions.c:972 msgid "Move selected contacts to another address book" msgstr "把选中的联系人移至其它地址薄" #: ../modules/addressbook/e-book-shell-view-actions.c:977 msgid "_New Contact..." msgstr "新建联系人(_N)..." #: ../modules/addressbook/e-book-shell-view-actions.c:984 msgid "New Contact _List..." msgstr "新建联系人列表(_L)..." #: ../modules/addressbook/e-book-shell-view-actions.c:991 msgid "_Open Contact" msgstr "打开联系人(_O)" #: ../modules/addressbook/e-book-shell-view-actions.c:993 msgid "View the current contact" msgstr "查看当前联系人" #: ../modules/addressbook/e-book-shell-view-actions.c:998 msgid "_Send Message to Contact..." msgstr "给联系人发送信息(_S)..." #: ../modules/addressbook/e-book-shell-view-actions.c:1000 msgid "Send a message to the selected contacts" msgstr "给选中的联系人发送信息" #: ../modules/addressbook/e-book-shell-view-actions.c:1007 #: ../modules/calendar/e-cal-shell-view-actions.c:1577 #: ../modules/calendar/e-task-shell-view-actions.c:825 msgid "_Actions" msgstr "操作(_A)" #: ../modules/addressbook/e-book-shell-view-actions.c:1014 #: ../modules/calendar/e-memo-shell-view-actions.c:680 #: ../modules/calendar/e-task-shell-view-actions.c:832 #: ../modules/mail/e-mail-shell-view-actions.c:1785 msgid "_Preview" msgstr "预览(_P)" #: ../modules/addressbook/e-book-shell-view-actions.c:1023 #: ../modules/calendar/e-cal-shell-view-actions.c:1594 #: ../modules/calendar/e-memo-shell-view-actions.c:693 #: ../modules/calendar/e-task-shell-view-actions.c:845 msgid "_Delete" msgstr "删除(_D)" #: ../modules/addressbook/e-book-shell-view-actions.c:1027 #: ../modules/mail/e-mail-shell-view-actions.c:1536 msgid "_Properties" msgstr "属性(_P)" #: ../modules/addressbook/e-book-shell-view-actions.c:1035 msgid "Address Book Map" msgstr "地址簿地图" #: ../modules/addressbook/e-book-shell-view-actions.c:1067 msgid "Contact _Preview" msgstr "联系人预览(_P)" #: ../modules/addressbook/e-book-shell-view-actions.c:1069 msgid "Show contact preview window" msgstr "显示联系人预览窗口" #: ../modules/addressbook/e-book-shell-view-actions.c:1075 msgid "Show _Maps" msgstr "显示地图(_M)" #: ../modules/addressbook/e-book-shell-view-actions.c:1077 msgid "Show maps in contact preview window" msgstr "在联系人预览窗口中显示地图" #: ../modules/addressbook/e-book-shell-view-actions.c:1096 #: ../modules/calendar/e-memo-shell-view-actions.c:750 #: ../modules/calendar/e-task-shell-view-actions.c:914 #: ../modules/mail/e-mail-shell-view-actions.c:1915 msgid "_Classic View" msgstr "分类视图(_C)" #: ../modules/addressbook/e-book-shell-view-actions.c:1098 msgid "Show contact preview below the contact list" msgstr "在联系人列表下方显示联系人预览" #: ../modules/addressbook/e-book-shell-view-actions.c:1103 #: ../modules/calendar/e-memo-shell-view-actions.c:757 #: ../modules/calendar/e-task-shell-view-actions.c:921 #: ../modules/mail/e-mail-shell-view-actions.c:1922 msgid "_Vertical View" msgstr "竖直视图(_V)" #: ../modules/addressbook/e-book-shell-view-actions.c:1105 msgid "Show contact preview alongside the contact list" msgstr "在联系人列表旁显示联系人预览" #: ../modules/addressbook/e-book-shell-view-actions.c:1120 #: ../modules/calendar/e-cal-shell-view-actions.c:1754 #: ../modules/calendar/e-memo-shell-view-actions.c:774 #: ../modules/calendar/e-task-shell-view-actions.c:973 msgid "Unmatched" msgstr "无匹配" #: ../modules/addressbook/e-book-shell-view-actions.c:1130 #: ../modules/calendar/e-cal-shell-view-actions.c:1764 #: ../modules/calendar/e-memo-shell-view-actions.c:784 #: ../modules/calendar/e-task-shell-view-actions.c:983 #: ../modules/mail/e-mail-shell-view-actions.c:1991 #: ../shell/e-shell-content.c:658 msgid "Advanced Search" msgstr "高级搜索" #: ../modules/addressbook/e-book-shell-view-actions.c:1163 msgid "Print all shown contacts" msgstr "打印全部显示的联系人" #: ../modules/addressbook/e-book-shell-view-actions.c:1170 msgid "Preview the contacts to be printed" msgstr "预览将要打印的联系人" #: ../modules/addressbook/e-book-shell-view-actions.c:1177 msgid "Print selected contacts" msgstr "打印选中的联系人" #: ../modules/addressbook/e-book-shell-view-actions.c:1192 msgid "S_ave Address Book as vCard" msgstr "保存地址簿为 VCard(_A)" #: ../modules/addressbook/e-book-shell-view-actions.c:1194 msgid "Save the contacts of the selected address book as a vCard" msgstr "把选中地址薄中的的联系人保存为 VCard" #. Translators: This is an action label #: ../modules/addressbook/e-book-shell-view-actions.c:1200 #: ../modules/addressbook/e-book-shell-view-actions.c:1210 msgid "_Save as vCard..." msgstr "另存为 vCard(_S)..." #: ../modules/addressbook/e-book-shell-view-actions.c:1202 msgid "Save selected contacts as a vCard" msgstr "把选中的联系人保存为 vCard" #: ../modules/addressbook/e-book-shell-view.c:312 msgid "_Forward Contacts" msgstr "转发联系人(_F)" #: ../modules/addressbook/e-book-shell-view.c:314 msgid "_Forward Contact" msgstr "转发联系人(_F)" #: ../modules/addressbook/e-book-shell-view.c:345 msgid "_Send Message to Contacts" msgstr "给联系人发送信息(_S)" #: ../modules/addressbook/e-book-shell-view.c:347 msgid "_Send Message to List" msgstr "给列表发送信息(_S)" #: ../modules/addressbook/e-book-shell-view.c:349 msgid "_Send Message to Contact" msgstr "给联系人发送信息(_M)" #: ../modules/audio-inline/e-mail-formatter-audio.c:316 msgid "Audio Player" msgstr "音频播放器" #: ../modules/audio-inline/e-mail-formatter-audio.c:317 msgid "Play the attachment in embedded audio player" msgstr "在内嵌音频播放器中播放附件" #: ../modules/backup-restore/e-mail-config-restore-page.c:165 msgid "" "You can restore Evolution from a backup file.\n" "\n" "This will restore all your personal data, settings mail filters, etc." msgstr "" "您可以从备份文件恢复 Evolution 数据。 \n" "\n" "这将回复您的所有个人信息、设置、邮件过滤器等数据。" #: ../modules/backup-restore/e-mail-config-restore-page.c:180 msgid "_Restore from a backup file:" msgstr "从备份文件恢复 (_R):" #: ../modules/backup-restore/e-mail-config-restore-page.c:191 msgid "Choose a backup file to restore" msgstr "选择需要恢复的备份文件" #. Keep the title identical to EMailConfigRestorePage #. * so it's only shown once in the assistant sidebar. #: ../modules/backup-restore/e-mail-config-restore-page.c:311 #: ../modules/backup-restore/e-mail-config-restore-ready-page.c:57 msgid "Restore from Backup" msgstr "从备份恢复" #: ../modules/backup-restore/evolution-backup-restore.c:217 msgid "Select name of the Evolution backup file" msgstr "选择 Evolution 备份文件名称" #: ../modules/backup-restore/evolution-backup-restore.c:250 msgid "_Restart Evolution after backup" msgstr "备份后重新启动 Evolution(_R)" #: ../modules/backup-restore/evolution-backup-restore.c:277 msgid "Select name of the Evolution backup file to restore" msgstr "选择要恢复的 Evolution 备份文件名称" #: ../modules/backup-restore/evolution-backup-restore.c:290 msgid "_Restart Evolution after restore" msgstr "恢复后重新启动 Evolution(_R)" #: ../modules/backup-restore/evolution-backup-restore.c:308 msgid "_Back up Evolution Data..." msgstr "备份 Evolution 数据(_B)..." #: ../modules/backup-restore/evolution-backup-restore.c:310 msgid "Back up Evolution data and settings to an archive file" msgstr "备份 Evolution 的数据和设置到一个归档文件" #: ../modules/backup-restore/evolution-backup-restore.c:315 msgid "R_estore Evolution Data..." msgstr "恢复 Evolution 数据(_E)..." #: ../modules/backup-restore/evolution-backup-restore.c:317 msgid "Restore Evolution data and settings from an archive file" msgstr "从归档文件备份及恢复 Evolution 的数据和设置" #: ../modules/backup-restore/evolution-backup-tool.c:84 msgid "Back up Evolution directory" msgstr "备份 Evolution 目录" #: ../modules/backup-restore/evolution-backup-tool.c:86 msgid "Restore Evolution directory" msgstr "恢复 Evolution 目录" #: ../modules/backup-restore/evolution-backup-tool.c:88 msgid "Check Evolution Back up" msgstr "检查 Evolution 备份" #: ../modules/backup-restore/evolution-backup-tool.c:90 msgid "Restart Evolution" msgstr "重新启动 Evolution" #: ../modules/backup-restore/evolution-backup-tool.c:92 msgid "With Graphical User Interface" msgstr "带图形用户界面" #. FIXME Will the versioned setting always work? #: ../modules/backup-restore/evolution-backup-tool.c:322 #: ../modules/backup-restore/evolution-backup-tool.c:516 msgid "Shutting down Evolution" msgstr "关闭 Evolution" #: ../modules/backup-restore/evolution-backup-tool.c:331 msgid "Backing Evolution accounts and settings" msgstr "备份 Evolution 的帐号及设置" #: ../modules/backup-restore/evolution-backup-tool.c:348 msgid "Backing Evolution data (Mails, Contacts, Calendar, Tasks, Memos)" msgstr "备份 Evolution 数据(邮件、联系人、日历、任务、备忘)" #: ../modules/backup-restore/evolution-backup-tool.c:364 msgid "Back up complete" msgstr "备份完成" #: ../modules/backup-restore/evolution-backup-tool.c:371 #: ../modules/backup-restore/evolution-backup-tool.c:703 msgid "Restarting Evolution" msgstr "重新启动 Evolution" #: ../modules/backup-restore/evolution-backup-tool.c:522 msgid "Back up current Evolution data" msgstr "备份当前 Evolution 数据" #: ../modules/backup-restore/evolution-backup-tool.c:529 msgid "Extracting files from back up" msgstr "从备份中提取文件" #: ../modules/backup-restore/evolution-backup-tool.c:611 msgid "Loading Evolution settings" msgstr "载入 Evolution 的设置" #: ../modules/backup-restore/evolution-backup-tool.c:677 msgid "Removing temporary back up files" msgstr "删除临时备份文件" #: ../modules/backup-restore/evolution-backup-tool.c:688 msgid "Reloading registry service" msgstr "重新加载注册服务" #: ../modules/backup-restore/evolution-backup-tool.c:915 msgid "Evolution Back Up" msgstr "Evolution 备份" #: ../modules/backup-restore/evolution-backup-tool.c:916 #, c-format msgid "Backing up to the folder %s" msgstr "正在备份到文件夹 %s" #: ../modules/backup-restore/evolution-backup-tool.c:920 msgid "Evolution Restore" msgstr "Evolution 恢复" #: ../modules/backup-restore/evolution-backup-tool.c:921 #, c-format msgid "Restoring from the folder %s" msgstr "正在从文件夹 %s 中恢复" #: ../modules/backup-restore/evolution-backup-tool.c:991 msgid "Backing up Evolution Data" msgstr "正在备份 Evolution 数据" #: ../modules/backup-restore/evolution-backup-tool.c:992 msgid "Please wait while Evolution is backing up your data." msgstr "请稍候,Evolution 正在备份您的数据。" #: ../modules/backup-restore/evolution-backup-tool.c:994 msgid "Restoring Evolution Data" msgstr "正在恢复 Evolution 数据" #: ../modules/backup-restore/evolution-backup-tool.c:995 msgid "Please wait while Evolution is restoring your data." msgstr "请稍候,Evolution 正在恢复您的数据。" #: ../modules/backup-restore/evolution-backup-tool.c:1017 msgid "" "This may take a while depending on the amount of data in your account." msgstr "这可能要花一点时间,取决于您帐号中的数据总量。" #: ../modules/backup-restore/org-gnome-backup-restore.error.xml.h:1 msgid "Invalid Evolution backup file" msgstr "无效的 Evolution 备份文件" #: ../modules/backup-restore/org-gnome-backup-restore.error.xml.h:2 msgid "Please select a valid backup file to restore." msgstr "请选择要恢复的有效备份文件。" #: ../modules/backup-restore/org-gnome-backup-restore.error.xml.h:3 msgid "Are you sure you want to close Evolution?" msgstr "您确定要关闭 Evolution 吗?" #: ../modules/backup-restore/org-gnome-backup-restore.error.xml.h:4 msgid "" "To back up your data and settings, you must first close Evolution. Please " "make sure that you save any unsaved data before proceeding." msgstr "要备份您的数据和设置,您必须先关闭 Evolution。请在处理前确认您保存了所有未保存的数据。" #: ../modules/backup-restore/org-gnome-backup-restore.error.xml.h:5 msgid "Close and Back up Evolution" msgstr "关闭并备份 Evolution" #: ../modules/backup-restore/org-gnome-backup-restore.error.xml.h:6 msgid "" "Are you sure you want to restore Evolution from the selected backup file?" msgstr "您确定想要从选中的备份文件中恢复 Evolution 吗?" #: ../modules/backup-restore/org-gnome-backup-restore.error.xml.h:7 msgid "" "To restore your data and settings, you must first close Evolution. Please " "make sure that you save any unsaved data before proceeding. This will delete " "all your current Evolution data and settings and restore them from your " "backup." msgstr "" "要恢复您的数据和设置,您必须先关闭 Evolution。请在处理前确认您保存了所有未保存的数据。这会删除所有您当前 Evolution " "的数据和设置,并从您的备份中恢复。" #: ../modules/backup-restore/org-gnome-backup-restore.error.xml.h:8 msgid "Close and Restore Evolution" msgstr "关闭并恢复 Evolution" #: ../modules/backup-restore/org-gnome-backup-restore.error.xml.h:9 msgid "Insufficient Permissions" msgstr "权限不够" #: ../modules/backup-restore/org-gnome-backup-restore.error.xml.h:10 msgid "The selected folder is not writable." msgstr "选中的文件夹不可写。" #: ../modules/bogofilter/evolution-bogofilter.c:145 #, c-format msgid "Failed to spawn Bogofilter (%s): " msgstr "启动 Bogofilter 失败(%s): " #: ../modules/bogofilter/evolution-bogofilter.c:163 msgid "Failed to stream mail message content to Bogofilter: " msgstr "无法将邮件信息内容通过流传送给 Bogofilter: " #: ../modules/bogofilter/evolution-bogofilter.c:212 msgid "Bogofilter either crashed or failed to process a mail message" msgstr "Bogofilter 可能崩溃了或无法处理邮件信息" #: ../modules/bogofilter/evolution-bogofilter.c:308 msgid "Bogofilter Options" msgstr "Bogofilter 选项" #: ../modules/bogofilter/evolution-bogofilter.c:317 msgid "Convert message text to _Unicode" msgstr "将信息文本转换为 _Unicode" #: ../modules/bogofilter/evolution-bogofilter.c:474 msgid "Bogofilter" msgstr "Bogofilter" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:447 msgid "Standard LDAP Port" msgstr "标准 LDAP 接口" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:453 #: ../modules/book-config-ldap/evolution-book-config-ldap.c:625 msgid "LDAP over SSL (deprecated)" msgstr "LDAP over SSL(已弃用)" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:459 msgid "Microsoft Global Catalog" msgstr "Microsoft Global Catalog" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:465 msgid "Microsoft Global Catalog over SSL" msgstr "Microsoft Global Catalog over SSL" #. Page 1 #: ../modules/book-config-ldap/evolution-book-config-ldap.c:570 msgid "Connecting to LDAP" msgstr "连接到 LDAP" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:587 msgid "Server Information" msgstr "服务器信息" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:628 msgid "StartTLS (recommended)" msgstr "StartTLS(推荐)" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:630 msgid "Encryption:" msgstr "加密:" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:654 #: ../modules/mail-config/e-mail-config-remote-accounts.c:246 #: ../modules/mail-config/e-mail-config-smtp-backend.c:180 msgid "Authentication" msgstr "身份验证" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:677 msgid "Anonymous" msgstr "匿名" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:680 msgid "Using email address" msgstr "使用电子邮件地址" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:683 msgid "Using distinguished name (DN)" msgstr "使用已识别的姓名(DN)" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:685 msgid "Method:" msgstr "方法:" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:690 msgid "" "This is the method Evolution will use to authenticate you. Note that " "setting this to \"Using email address\" requires anonymous access to your " "LDAP server." msgstr "这是 Evolution 所使用的验证方法。请注意如果设置为“使用电子邮件地址”,则需要匿名使用您的 LDAP 服务器。" #. Page 2 #: ../modules/book-config-ldap/evolution-book-config-ldap.c:705 msgid "Using LDAP" msgstr "使用 LDAP?" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:722 #: ../modules/mail/e-mail-shell-view.c:117 msgid "Searching" msgstr "搜索" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:744 msgid "Search Base:" msgstr "搜索数据库:" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:749 msgid "Find Possible Search Bases" msgstr "查找可能的搜索基础" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:774 msgid "One Level" msgstr "向下一层" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:776 msgid "Subtree" msgstr "所有层级" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:778 msgid "Search Scope:" msgstr "搜索范围:" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:783 msgid "" "The search scope defines how deep you would like the search to extend down " "the directory tree. A search scope of \"Subtree\" will include all entries " "below your search base. A search scope of \"One Level\" will only include " "the entries one level beneath your search base." msgstr "" "搜索范围选项决定了您的搜索范围深度。如果选择“所有层级”,则会从您所在层级开始向下遍历所有的层级。如果选择“向下一层”,则只会从您所在层级开始向下搜索一层" "。" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:792 msgid "Search Filter:" msgstr "搜索过滤器:" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:804 msgid "Downloading" msgstr "下载" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:825 msgid "Limit:" msgstr "限额:" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:836 msgid "contacts" msgstr "联系人" #: ../modules/book-config-ldap/evolution-book-config-ldap.c:841 msgid "Browse until limit is reached" msgstr "保持浏览,直至达到限额" #: ../modules/book-config-webdav/evolution-book-config-webdav.c:136 #: ../modules/cal-config-caldav/evolution-cal-config-caldav.c:205 #: ../modules/cal-config-webcal/evolution-cal-config-webcal.c:128 msgid "URL:" msgstr "URL:" #: ../modules/book-config-webdav/evolution-book-config-webdav.c:146 msgid "Avoid IfMatch (needed on Apache < 2.2.8)" msgstr "避免 IfMatch(在 Apache <2.2.8 时需要)" #: ../modules/cal-config-caldav/e-caldav-chooser.c:447 #, c-format msgid "HTTP Error: %s" msgstr "HTTP 错误:%s" #: ../modules/cal-config-caldav/e-caldav-chooser.c:475 msgid "Could not parse response" msgstr "无法解析回复" #: ../modules/cal-config-caldav/e-caldav-chooser.c:484 msgid "Empty response" msgstr "空资源" #: ../modules/cal-config-caldav/e-caldav-chooser.c:492 msgid "Unexpected reply from server" msgstr "来自服务器的意外回复" #: ../modules/cal-config-caldav/e-caldav-chooser.c:1124 msgid "Could not locate user's calendars" msgstr "无法定位用户日历" #: ../modules/cal-config-caldav/e-caldav-chooser.c:1348 msgid "Path" msgstr "路径" #: ../modules/cal-config-caldav/e-caldav-chooser-dialog.c:264 #: ../modules/cal-config-google/e-google-chooser-dialog.c:200 msgid "Choose a Calendar" msgstr "选择一个日历" #: ../modules/cal-config-caldav/e-caldav-chooser-dialog.c:267 msgid "Choose a Memo List" msgstr "选择一个备忘列表" #: ../modules/cal-config-caldav/e-caldav-chooser-dialog.c:270 msgid "Choose a Task List" msgstr "选择一个任务列表" #: ../modules/cal-config-caldav/evolution-cal-config-caldav.c:219 msgid "Find Calendars" msgstr "查找日历" #: ../modules/cal-config-caldav/evolution-cal-config-caldav.c:222 msgid "Find Memo Lists" msgstr "查找备忘列表" #: ../modules/cal-config-caldav/evolution-cal-config-caldav.c:225 msgid "Find Task Lists" msgstr "查找任务列表" #: ../modules/cal-config-caldav/evolution-cal-config-caldav.c:243 msgid "Email:" msgstr "电子邮件:" #: ../modules/cal-config-caldav/evolution-cal-config-caldav.c:248 msgid "Server handles meeting invitations" msgstr "由服务器处理会议邀请" #: ../modules/cal-config-contacts/evolution-cal-config-contacts.c:71 msgid "Choose which address books to use." msgstr "选择需要使用的地址簿。" #: ../modules/cal-config-contacts/evolution-cal-config-contacts.c:201 msgid "Use in Birthdays & Anniversaries calendar" msgstr "用于“生日和纪念日”日历" #: ../modules/cal-config-google/e-google-chooser-button.c:127 msgid "Default User Calendar" msgstr "默认用户日历" #: ../modules/cal-config-google/e-google-chooser.c:515 #, c-format msgid "Enter Google password for user '%s'." msgstr "输入用户 '%s' 的 Google 密码" #: ../modules/cal-config-google/e-google-chooser.c:532 msgid "User declined to provide a password" msgstr "用户拒绝提供密码" #: ../modules/cal-config-local/evolution-cal-config-local.c:160 msgid "Use an existing iCalendar (ics) file" msgstr "使用已有的 iCalendar (ics) 文件" #: ../modules/cal-config-local/evolution-cal-config-local.c:185 msgid "iCalendar File" msgstr "iCalendar 文件" #: ../modules/cal-config-local/evolution-cal-config-local.c:197 msgid "Choose an iCalendar file" msgstr "选择一个 iCalendar 文件" #: ../modules/cal-config-local/evolution-cal-config-local.c:200 msgid "File:" msgstr "文件:" #: ../modules/cal-config-local/evolution-cal-config-local.c:215 msgid "Allow Evolution to update the file" msgstr "允许 Evolution 更新文件" #: ../modules/calendar/e-cal-attachment-handler.c:320 #: ../smime/gui/smime-ui.ui.h:9 msgid "I_mport" msgstr "导入(_M)" #: ../modules/calendar/e-cal-attachment-handler.c:406 msgid "Select a Calendar" msgstr "选择一个日历" #: ../modules/calendar/e-cal-attachment-handler.c:433 msgid "Select a Task List" msgstr "选择一个任务列表" #: ../modules/calendar/e-cal-attachment-handler.c:443 msgid "I_mport to Calendar" msgstr "导入到日历(_M)" #: ../modules/calendar/e-cal-attachment-handler.c:450 msgid "I_mport to Tasks" msgstr "导入到任务(_M)" #: ../modules/calendar/e-calendar-preferences.c:517 msgid "Selected Calendars for Alarms" msgstr "已选择用于提醒的日历" #: ../modules/calendar/e-calendar-preferences.c:925 msgid "Ti_me and date:" msgstr "时间和日期(_M):" #: ../modules/calendar/e-calendar-preferences.c:926 msgid "_Date only:" msgstr "仅日期(_D):" #: ../modules/calendar/e-calendar-preferences.ui.h:1 msgid "Minutes" msgstr "分钟" #: ../modules/calendar/e-calendar-preferences.ui.h:2 msgid "Hours" msgstr "小时" #: ../modules/calendar/e-calendar-preferences.ui.h:3 msgid "Days" msgstr "天" #: ../modules/calendar/e-calendar-preferences.ui.h:4 msgid "60 minutes" msgstr "60 分钟" #: ../modules/calendar/e-calendar-preferences.ui.h:5 msgid "30 minutes" msgstr "30 分钟" #: ../modules/calendar/e-calendar-preferences.ui.h:6 msgid "15 minutes" msgstr "15 分钟" #: ../modules/calendar/e-calendar-preferences.ui.h:7 msgid "10 minutes" msgstr "10 分钟" #: ../modules/calendar/e-calendar-preferences.ui.h:8 msgid "05 minutes" msgstr "05 分钟" #: ../modules/calendar/e-calendar-preferences.ui.h:10 msgid "Se_cond zone:" msgstr "第二时区(_C):" #: ../modules/calendar/e-calendar-preferences.ui.h:12 msgid "(Shown in a Day View)" msgstr "(在日视图中显示)" #: ../modules/calendar/e-calendar-preferences.ui.h:14 msgid "Use s_ystem time zone" msgstr "显示系统时区(_Y)" #: ../modules/calendar/e-calendar-preferences.ui.h:15 msgid "Time format:" msgstr "时间格式:" #: ../modules/calendar/e-calendar-preferences.ui.h:16 msgid "_12 hour (AM/PM)" msgstr "_12 小时(上/下午)" #: ../modules/calendar/e-calendar-preferences.ui.h:17 msgid "_24 hour" msgstr "_24 小时" #: ../modules/calendar/e-calendar-preferences.ui.h:18 #: ../modules/calendar/e-cal-shell-view-actions.c:1716 msgid "Work Week" msgstr "工作日" #. A weekday like "Monday" follows #: ../modules/calendar/e-calendar-preferences.ui.h:20 msgid "Wee_k starts on:" msgstr "一周开始于(_K):" #: ../modules/calendar/e-calendar-preferences.ui.h:21 msgid "Work days:" msgstr "工作日:" #: ../modules/calendar/e-calendar-preferences.ui.h:22 msgid "_Day begins:" msgstr "一天开始(_D):" #. Monday #: ../modules/calendar/e-calendar-preferences.ui.h:24 msgid "_Mon" msgstr "周一(_M)" #. Tuesday #: ../modules/calendar/e-calendar-preferences.ui.h:27 msgid "_Tue" msgstr "周二(_T)" #. Wednesday #: ../modules/calendar/e-calendar-preferences.ui.h:30 msgid "_Wed" msgstr "周三(_W)" #. Thursday #: ../modules/calendar/e-calendar-preferences.ui.h:33 msgid "T_hu" msgstr "周四(_H)" #. Friday #: ../modules/calendar/e-calendar-preferences.ui.h:36 msgid "_Fri" msgstr "周五(_F)" #. Saturday #: ../modules/calendar/e-calendar-preferences.ui.h:39 msgid "_Sat" msgstr "周六(_S)" #. Sunday #: ../modules/calendar/e-calendar-preferences.ui.h:42 msgid "S_un" msgstr "周日(_U)" #: ../modules/calendar/e-calendar-preferences.ui.h:44 msgid "Day _ends:" msgstr "一天结束(_E):" #: ../modules/calendar/e-calendar-preferences.ui.h:45 msgid "Alerts" msgstr "提醒" #: ../modules/calendar/e-calendar-preferences.ui.h:46 msgid "_Ask for confirmation when deleting items" msgstr "删除项时要求确认(_A)" #: ../modules/calendar/e-calendar-preferences.ui.h:48 msgid "_Time divisions:" msgstr "时间分割(_T):" #: ../modules/calendar/e-calendar-preferences.ui.h:49 msgid "_Show appointment end times in week and month view" msgstr "在周视图和月视图中显示约会结束时间(_S)" #: ../modules/calendar/e-calendar-preferences.ui.h:50 msgid "_Compress weekends in month view" msgstr "不在月视图中显示周末(_C)" #: ../modules/calendar/e-calendar-preferences.ui.h:51 msgid "Show week _numbers" msgstr "显示周数(_N)" #: ../modules/calendar/e-calendar-preferences.ui.h:52 msgid "Show r_ecurring events in italic in bottom left calendar" msgstr "在底部左侧的日历中以斜体显示重复发生的事件(_E)" #: ../modules/calendar/e-calendar-preferences.ui.h:53 msgid "Sc_roll Month View by a week" msgstr "通过一个周来滚动月视图(_R)" #: ../modules/calendar/e-calendar-preferences.ui.h:55 msgid "Display" msgstr "显示" #: ../modules/calendar/e-calendar-preferences.ui.h:56 msgid "Task List" msgstr "任务列表" #: ../modules/calendar/e-calendar-preferences.ui.h:57 msgid "Highlight t_asks due today" msgstr "高亮今日到期任务(_A)" #: ../modules/calendar/e-calendar-preferences.ui.h:59 msgid "Highlight _overdue tasks" msgstr "高亮过期任务(_O)" #: ../modules/calendar/e-calendar-preferences.ui.h:60 msgid "_Hide completed tasks after" msgstr "随后隐藏已完成的任务(_H)" #: ../modules/calendar/e-calendar-preferences.ui.h:63 msgid "Display reminders in _notification area only" msgstr "只在通知区域显示提醒(_O)" #. This is the first half of a user preference. "Show a reminder [time-period] before every appointment" #: ../modules/calendar/e-calendar-preferences.ui.h:65 msgid "Sh_ow a reminder" msgstr "显示一条提醒(_O)" #. This is the last half of a user preference. "Show a reminder [time-period] before every appointment" #: ../modules/calendar/e-calendar-preferences.ui.h:67 msgid "before every appointment" msgstr "在每次约会前" #. This is the first half of a user preference. "Show a reminder [time-period] before every anniversary/birthday" #: ../modules/calendar/e-calendar-preferences.ui.h:69 msgid "Show a _reminder" msgstr "显示一条提醒(_R)" #. This is the last half of a user preference. "Show a reminder [time-period] before every anniversary/birthday" #: ../modules/calendar/e-calendar-preferences.ui.h:71 msgid "before every anniversary/birthday" msgstr "在每个周年/生日前" #: ../modules/calendar/e-calendar-preferences.ui.h:72 msgid "Select the calendars for reminder notification" msgstr "选择用于提醒通知的日历" #: ../modules/calendar/e-calendar-preferences.ui.h:73 msgid "Default Free/Busy Server" msgstr "默认闲/忙服务器" #: ../modules/calendar/e-calendar-preferences.ui.h:74 msgid "Template:" msgstr "模板:" #: ../modules/calendar/e-calendar-preferences.ui.h:76 #, no-c-format msgid "%u and %d will be replaced by user and domain from the email address." msgstr "%u 和 %d 将被替换为电子邮件地址中的用户和域名。" #: ../modules/calendar/e-calendar-preferences.ui.h:77 msgid "Publishing Information" msgstr "发布信息" #: ../modules/calendar/e-cal-shell-backend.c:313 #: ../modules/calendar/e-cal-shell-view-actions.c:191 msgid "New Calendar" msgstr "新建日历" #: ../modules/calendar/e-cal-shell-backend.c:322 msgctxt "New" msgid "_Appointment" msgstr "约会(_A)" #: ../modules/calendar/e-cal-shell-backend.c:324 #: ../modules/calendar/e-cal-shell-view-actions.c:1521 msgid "Create a new appointment" msgstr "创建新约会" #: ../modules/calendar/e-cal-shell-backend.c:329 msgctxt "New" msgid "All Day A_ppointment" msgstr "全天约会(_P)" #: ../modules/calendar/e-cal-shell-backend.c:331 msgid "Create a new all-day appointment" msgstr "创建新全天约会" #: ../modules/calendar/e-cal-shell-backend.c:336 msgctxt "New" msgid "M_eeting" msgstr "会议(_E)" #: ../modules/calendar/e-cal-shell-backend.c:338 msgid "Create a new meeting request" msgstr "创建一条新会议请求" #: ../modules/calendar/e-cal-shell-backend.c:346 msgctxt "New" msgid "Cale_ndar" msgstr "日历(_N)" #: ../modules/calendar/e-cal-shell-backend.c:348 #: ../modules/calendar/e-cal-shell-view-actions.c:1395 msgid "Create a new calendar" msgstr "创建新日历" #: ../modules/calendar/e-cal-shell-backend.c:703 msgid "Calendar and Tasks" msgstr "日历和任务" #: ../modules/calendar/e-cal-shell-sidebar.c:119 #, c-format msgid "Opening calendar '%s'" msgstr "打开日历 '%s'" #: ../modules/calendar/e-cal-shell-sidebar.c:591 msgid "Calendar Selector" msgstr "日历选择器" #: ../modules/calendar/e-cal-shell-view-actions.c:216 #: ../modules/calendar/e-cal-shell-view-actions.c:245 msgid "Print" msgstr "打印" #: ../modules/calendar/e-cal-shell-view-actions.c:291 msgid "Calendar Properties" msgstr "日历属性" #: ../modules/calendar/e-cal-shell-view-actions.c:322 msgid "" "This operation will permanently erase all events older than the selected " "amount of time. If you continue, you will not be able to recover these " "events." msgstr "该操作将永久删除所有比选中时间量早的事件。如果您继续,您将无法恢复这些事件。" #. Translators: This is the first part of the sentence: #. * "Purge events older than <> days" #: ../modules/calendar/e-cal-shell-view-actions.c:339 msgid "Purge events older than" msgstr "销毁较早的事件" #: ../modules/calendar/e-cal-shell-view-actions.c:585 msgid "Copying Items" msgstr "复制项目" #: ../modules/calendar/e-cal-shell-view-actions.c:878 msgid "Moving Items" msgstr "移动项目" #. Translators: Default filename part saving an event to a file when #. * no summary is filed, the '.ics' extension is concatenated to it. #: ../modules/calendar/e-cal-shell-view-actions.c:1211 msgid "event" msgstr "事件" #: ../modules/calendar/e-cal-shell-view-actions.c:1213 #: ../modules/calendar/e-cal-shell-view-memopad.c:231 #: ../modules/calendar/e-cal-shell-view-taskpad.c:298 #: ../modules/calendar/e-memo-shell-view-actions.c:527 #: ../modules/calendar/e-task-shell-view-actions.c:644 msgid "Save as iCalendar" msgstr "保存为 iCalendar" #: ../modules/calendar/e-cal-shell-view-actions.c:1351 #: ../modules/calendar/e-memo-shell-view-actions.c:608 msgid "_Copy..." msgstr "复制(_C)..." #: ../modules/calendar/e-cal-shell-view-actions.c:1358 msgid "D_elete Calendar" msgstr "删除日历(_E)" #: ../modules/calendar/e-cal-shell-view-actions.c:1360 msgid "Delete the selected calendar" msgstr "删除选中的日历" #: ../modules/calendar/e-cal-shell-view-actions.c:1367 msgid "Go Back" msgstr "后退" #: ../modules/calendar/e-cal-shell-view-actions.c:1374 msgid "Go Forward" msgstr "前进" #: ../modules/calendar/e-cal-shell-view-actions.c:1381 msgid "Select today" msgstr "选择今天" #: ../modules/calendar/e-cal-shell-view-actions.c:1386 msgid "Select _Date" msgstr "选择日期(_D)" #: ../modules/calendar/e-cal-shell-view-actions.c:1388 msgid "Select a specific date" msgstr "选择特定日期" #: ../modules/calendar/e-cal-shell-view-actions.c:1393 msgid "_New Calendar" msgstr "新建日历(_N)" #: ../modules/calendar/e-cal-shell-view-actions.c:1407 #: ../modules/calendar/e-task-shell-view-actions.c:816 msgid "Purg_e" msgstr "销毁(_E)" #: ../modules/calendar/e-cal-shell-view-actions.c:1409 msgid "Purge old appointments and meetings" msgstr "销毁旧约会和会议" #: ../modules/calendar/e-cal-shell-view-actions.c:1416 msgid "Refresh the selected calendar" msgstr "刷新选中的日历" #: ../modules/calendar/e-cal-shell-view-actions.c:1423 msgid "Rename the selected calendar" msgstr "重命名选中的日历" #: ../modules/calendar/e-cal-shell-view-actions.c:1428 msgid "Find _next" msgstr "查找下一个(_N)" #: ../modules/calendar/e-cal-shell-view-actions.c:1430 msgid "Find next occurrence of the current search string" msgstr "查找当前关键词的下一处出现位置" #: ../modules/calendar/e-cal-shell-view-actions.c:1435 msgid "Find _previous" msgstr "查找上一个(_P)" #: ../modules/calendar/e-cal-shell-view-actions.c:1437 msgid "Find previous occurrence of the current search string" msgstr "查找当前关键词的上一处出现位置" #: ../modules/calendar/e-cal-shell-view-actions.c:1442 msgid "Stop _running search" msgstr "停止搜索 (_R)" #: ../modules/calendar/e-cal-shell-view-actions.c:1444 msgid "Stop currently running search" msgstr "停止当前正在运行的搜索" #: ../modules/calendar/e-cal-shell-view-actions.c:1449 msgid "Show _Only This Calendar" msgstr "只显示此日历(_O)" #: ../modules/calendar/e-cal-shell-view-actions.c:1456 msgid "Cop_y to Calendar..." msgstr "复制到日历(_Y)..." #: ../modules/calendar/e-cal-shell-view-actions.c:1463 msgid "_Delegate Meeting..." msgstr "代理会议(_D)..." #: ../modules/calendar/e-cal-shell-view-actions.c:1470 msgid "_Delete Appointment" msgstr "删除约会(_D)" #: ../modules/calendar/e-cal-shell-view-actions.c:1472 msgid "Delete selected appointments" msgstr "删除选中的约会" #: ../modules/calendar/e-cal-shell-view-actions.c:1477 msgid "Delete This _Occurrence" msgstr "删除此次出现(_O)" #: ../modules/calendar/e-cal-shell-view-actions.c:1479 msgid "Delete this occurrence" msgstr "删除此次发生" #: ../modules/calendar/e-cal-shell-view-actions.c:1484 msgid "Delete All Occ_urrences" msgstr "删除所有出现(_U)" #: ../modules/calendar/e-cal-shell-view-actions.c:1486 msgid "Delete all occurrences" msgstr "删除全部发生" #: ../modules/calendar/e-cal-shell-view-actions.c:1491 msgid "New All Day _Event..." msgstr "新建全天事件(_E)" #: ../modules/calendar/e-cal-shell-view-actions.c:1493 msgid "Create a new all day event" msgstr "创建一个新的全天事件" #: ../modules/calendar/e-cal-shell-view-actions.c:1498 #: ../modules/calendar/e-cal-shell-view-memopad.c:265 #: ../modules/calendar/e-cal-shell-view-taskpad.c:338 #: ../modules/calendar/e-memo-shell-view-actions.c:601 #: ../modules/calendar/e-task-shell-view-actions.c:725 msgid "_Forward as iCalendar..." msgstr "作为 iCalendar 转发(_F)..." #: ../modules/calendar/e-cal-shell-view-actions.c:1505 msgid "New _Meeting..." msgstr "新建会议(_M)..." #: ../modules/calendar/e-cal-shell-view-actions.c:1507 msgid "Create a new meeting" msgstr "创建一个新的会议" #: ../modules/calendar/e-cal-shell-view-actions.c:1512 msgid "Mo_ve to Calendar..." msgstr "移至日历(_V)..." #: ../modules/calendar/e-cal-shell-view-actions.c:1519 msgid "New _Appointment..." msgstr "新建约会(_A)..." #: ../modules/calendar/e-cal-shell-view-actions.c:1526 msgid "Make this Occurrence _Movable" msgstr "将此次发生变为可移动(_M)" #: ../modules/calendar/e-cal-shell-view-actions.c:1533 msgid "_Open Appointment" msgstr "打开约会(_O)" #: ../modules/calendar/e-cal-shell-view-actions.c:1535 msgid "View the current appointment" msgstr "查看当前约会" #: ../modules/calendar/e-cal-shell-view-actions.c:1540 msgid "_Reply" msgstr "回复(_R)" #: ../modules/calendar/e-cal-shell-view-actions.c:1554 msgid "_Schedule Meeting..." msgstr "调度会议(_S)..." #: ../modules/calendar/e-cal-shell-view-actions.c:1556 msgid "Converts an appointment to a meeting" msgstr "转换约会为会议" #: ../modules/calendar/e-cal-shell-view-actions.c:1561 msgid "Conv_ert to Appointment..." msgstr "转换到约会(_E)..." #: ../modules/calendar/e-cal-shell-view-actions.c:1563 msgid "Converts a meeting to an appointment" msgstr "转换会议为约会" #: ../modules/calendar/e-cal-shell-view-actions.c:1568 msgid "Quit" msgstr "退出" #: ../modules/calendar/e-cal-shell-view-actions.c:1688 msgid "Day" msgstr "天" #: ../modules/calendar/e-cal-shell-view-actions.c:1690 msgid "Show one day" msgstr "显示一天" #: ../modules/calendar/e-cal-shell-view-actions.c:1695 msgid "List" msgstr "列表" #: ../modules/calendar/e-cal-shell-view-actions.c:1697 msgid "Show as list" msgstr "显示为列表" #: ../modules/calendar/e-cal-shell-view-actions.c:1702 msgid "Month" msgstr "月" #: ../modules/calendar/e-cal-shell-view-actions.c:1704 msgid "Show one month" msgstr "显示一个月" #: ../modules/calendar/e-cal-shell-view-actions.c:1709 msgid "Week" msgstr "周" #: ../modules/calendar/e-cal-shell-view-actions.c:1711 msgid "Show one week" msgstr "显示一周" #: ../modules/calendar/e-cal-shell-view-actions.c:1718 msgid "Show one work week" msgstr "显示一个工作周" #: ../modules/calendar/e-cal-shell-view-actions.c:1726 msgid "Active Appointments" msgstr "活动约会" #: ../modules/calendar/e-cal-shell-view-actions.c:1740 msgid "Next 7 Days' Appointments" msgstr "下一周的约会" #: ../modules/calendar/e-cal-shell-view-actions.c:1747 msgid "Occurs Less Than 5 Times" msgstr "出现不超过五次" #: ../modules/calendar/e-cal-shell-view-actions.c:1778 #: ../modules/calendar/e-memo-shell-view-actions.c:798 #: ../modules/calendar/e-task-shell-view-actions.c:997 msgid "Description contains" msgstr "描述含有" #: ../modules/calendar/e-cal-shell-view-actions.c:1785 #: ../modules/calendar/e-memo-shell-view-actions.c:805 #: ../modules/calendar/e-task-shell-view-actions.c:1004 msgid "Summary contains" msgstr "概要含有" #: ../modules/calendar/e-cal-shell-view-actions.c:1797 msgid "Print this calendar" msgstr "打印此日历" #: ../modules/calendar/e-cal-shell-view-actions.c:1804 msgid "Preview the calendar to be printed" msgstr "预览将要打印的日历" #: ../modules/calendar/e-cal-shell-view-actions.c:1826 #: ../modules/calendar/e-cal-shell-view-memopad.c:306 #: ../modules/calendar/e-cal-shell-view-taskpad.c:393 #: ../modules/calendar/e-memo-shell-view-actions.c:846 #: ../modules/calendar/e-task-shell-view-actions.c:1045 msgid "_Save as iCalendar..." msgstr "保存为 iCalendar(_S)..." #: ../modules/calendar/e-cal-shell-view-actions.c:1903 msgid "Go To" msgstr "转到" #. Translators: Default filename part saving a memo to a file when #. * no summary is filed, the '.ics' extension is concatenated to it. #: ../modules/calendar/e-cal-shell-view-memopad.c:229 #: ../modules/calendar/e-memo-shell-view-actions.c:525 msgid "memo" msgstr "备忘" #: ../modules/calendar/e-cal-shell-view-memopad.c:272 #: ../modules/calendar/e-memo-shell-view-actions.c:657 msgid "New _Memo" msgstr "新建备忘(_M)" #: ../modules/calendar/e-cal-shell-view-memopad.c:274 #: ../modules/calendar/e-memo-shell-backend.c:219 #: ../modules/calendar/e-memo-shell-view-actions.c:659 msgid "Create a new memo" msgstr "创建新备忘" #: ../modules/calendar/e-cal-shell-view-memopad.c:279 #: ../modules/calendar/e-memo-shell-view-actions.c:664 msgid "_Open Memo" msgstr "打开备忘(_O)" #: ../modules/calendar/e-cal-shell-view-memopad.c:281 #: ../modules/calendar/e-memo-shell-view-actions.c:666 msgid "View the selected memo" msgstr "查看选中的备忘" #: ../modules/calendar/e-cal-shell-view-memopad.c:286 #: ../modules/calendar/e-cal-shell-view-taskpad.c:373 #: ../modules/calendar/e-memo-shell-view-actions.c:671 #: ../modules/calendar/e-task-shell-view-actions.c:809 msgid "Open _Web Page" msgstr "打开网页(_W)" #: ../modules/calendar/e-cal-shell-view-memopad.c:298 #: ../modules/calendar/e-memo-shell-view-actions.c:831 msgid "Print the selected memo" msgstr "打印选中的备忘" #: ../modules/calendar/e-cal-shell-view-private.c:1562 msgid "Searching next matching event" msgstr "搜索下一个符合条件的事件" #: ../modules/calendar/e-cal-shell-view-private.c:1563 msgid "Searching previous matching event" msgstr "搜索上一个符合条件的事件" #: ../modules/calendar/e-cal-shell-view-private.c:1584 #, c-format msgid "Cannot find matching event in the next %d year" msgid_plural "Cannot find matching event in the next %d years" msgstr[0] "无法在未来 %d 年中找到符合条件的事件" #: ../modules/calendar/e-cal-shell-view-private.c:1588 #, c-format msgid "Cannot find matching event in the previous %d year" msgid_plural "Cannot find matching event in the previous %d years" msgstr[0] "无法在过去 %d 年中找到符合条件的事件" #: ../modules/calendar/e-cal-shell-view-private.c:1613 msgid "Cannot search with no active calendar" msgstr "没有活动日历时无法进行搜索" #. Translators: Default filename part saving a task to a file when #. * no summary is filed, the '.ics' extension is concatenated to it. #. Translators: Default filename part saving a task to a file when #. * no summary is filed, the '.ics' extension is concatenated to it #: ../modules/calendar/e-cal-shell-view-taskpad.c:296 #: ../modules/calendar/e-task-shell-view-actions.c:642 msgid "task" msgstr "任务" #: ../modules/calendar/e-cal-shell-view-taskpad.c:331 #: ../modules/calendar/e-task-shell-view-actions.c:704 msgid "_Assign Task" msgstr "分配任务(_A)" #: ../modules/calendar/e-cal-shell-view-taskpad.c:345 #: ../modules/calendar/e-task-shell-view-actions.c:781 msgid "_Mark as Complete" msgstr "标记为完成(_M)" #: ../modules/calendar/e-cal-shell-view-taskpad.c:347 #: ../modules/calendar/e-task-shell-view-actions.c:783 msgid "Mark selected tasks as complete" msgstr "把选中任务标记为完成" #: ../modules/calendar/e-cal-shell-view-taskpad.c:352 msgid "_Mark as Incomplete" msgstr "标记为未完成(_M)" #: ../modules/calendar/e-cal-shell-view-taskpad.c:354 #: ../modules/calendar/e-task-shell-view-actions.c:790 msgid "Mark selected tasks as incomplete" msgstr "把选中任务标记为未完成" #: ../modules/calendar/e-cal-shell-view-taskpad.c:359 #: ../modules/calendar/e-task-shell-view-actions.c:795 msgid "New _Task" msgstr "新建任务(_T)" #: ../modules/calendar/e-cal-shell-view-taskpad.c:361 #: ../modules/calendar/e-task-shell-backend.c:216 #: ../modules/calendar/e-task-shell-view-actions.c:797 msgid "Create a new task" msgstr "创建新任务" #: ../modules/calendar/e-cal-shell-view-taskpad.c:366 #: ../modules/calendar/e-task-shell-view-actions.c:802 msgid "_Open Task" msgstr "打开任务(_O)" #: ../modules/calendar/e-cal-shell-view-taskpad.c:368 #: ../modules/calendar/e-task-shell-view-actions.c:804 msgid "View the selected task" msgstr "查看选中的任务" #: ../modules/calendar/e-cal-shell-view-taskpad.c:385 #: ../modules/calendar/e-task-shell-view-actions.c:1030 msgid "Print the selected task" msgstr "打印选中的任务" #: ../modules/calendar/e-memo-shell-backend.c:208 #: ../modules/calendar/e-memo-shell-view-actions.c:196 msgid "New Memo List" msgstr "新建备忘列表" #: ../modules/calendar/e-memo-shell-backend.c:217 msgctxt "New" msgid "Mem_o" msgstr "备忘(_O)" #: ../modules/calendar/e-memo-shell-backend.c:224 msgctxt "New" msgid "_Shared Memo" msgstr "共享的备忘(_S)" #: ../modules/calendar/e-memo-shell-backend.c:226 msgid "Create a new shared memo" msgstr "创建一个新的共享备忘" #: ../modules/calendar/e-memo-shell-backend.c:234 msgctxt "New" msgid "Memo Li_st" msgstr "备忘列表(_S)" #: ../modules/calendar/e-memo-shell-backend.c:236 #: ../modules/calendar/e-memo-shell-view-actions.c:624 msgid "Create a new memo list" msgstr "创建新备忘列表" #: ../modules/calendar/e-memo-shell-sidebar.c:117 #, c-format msgid "Opening memo list '%s'" msgstr "打开备忘列表 '%s'" #: ../modules/calendar/e-memo-shell-sidebar.c:547 msgid "Memo List Selector" msgstr "备忘列表选择器" #: ../modules/calendar/e-memo-shell-view-actions.c:212 #: ../modules/calendar/e-memo-shell-view-actions.c:227 msgid "Print Memos" msgstr "打印备忘" #: ../modules/calendar/e-memo-shell-view-actions.c:268 msgid "Memo List Properties" msgstr "备忘列表属性" #: ../modules/calendar/e-memo-shell-view-actions.c:587 msgid "_Delete Memo" msgstr "删除备忘(_D)" #: ../modules/calendar/e-memo-shell-view-actions.c:594 msgid "_Find in Memo..." msgstr "在备忘中查找(_F)..." #: ../modules/calendar/e-memo-shell-view-actions.c:596 msgid "Search for text in the displayed memo" msgstr "在显示备忘的主体中搜索文本" #: ../modules/calendar/e-memo-shell-view-actions.c:615 msgid "D_elete Memo List" msgstr "删除备忘列表(_D)" #: ../modules/calendar/e-memo-shell-view-actions.c:617 msgid "Delete the selected memo list" msgstr "重命名选中备忘列表" #: ../modules/calendar/e-memo-shell-view-actions.c:622 msgid "_New Memo List" msgstr "新建备忘列表(_N)" #: ../modules/calendar/e-memo-shell-view-actions.c:638 msgid "Refresh the selected memo list" msgstr "重命名选中备忘列表" #: ../modules/calendar/e-memo-shell-view-actions.c:645 msgid "Rename the selected memo list" msgstr "重命名选中备忘列表" #: ../modules/calendar/e-memo-shell-view-actions.c:650 msgid "Show _Only This Memo List" msgstr "只显示此备忘列表(_O)" #: ../modules/calendar/e-memo-shell-view-actions.c:729 msgid "Memo _Preview" msgstr "备忘预览(_P)" #: ../modules/calendar/e-memo-shell-view-actions.c:731 msgid "Show memo preview pane" msgstr "显示备忘预览面板" #: ../modules/calendar/e-memo-shell-view-actions.c:752 msgid "Show memo preview below the memo list" msgstr "在备忘列表下方显示备忘预览" #: ../modules/calendar/e-memo-shell-view-actions.c:759 msgid "Show memo preview alongside the memo list" msgstr "在备忘列表下方显示备忘预览" #: ../modules/calendar/e-memo-shell-view-actions.c:817 msgid "Print the list of memos" msgstr "打印备忘列表" #: ../modules/calendar/e-memo-shell-view-actions.c:824 msgid "Preview the list of memos to be printed" msgstr "预览要打印的备忘列表" #: ../modules/calendar/e-memo-shell-view.c:239 msgid "Delete Memos" msgstr "删除备忘" #: ../modules/calendar/e-memo-shell-view.c:241 msgid "Delete Memo" msgstr "删除备忘" #: ../modules/calendar/e-memo-shell-view-private.c:538 #, c-format msgid "%d memo" msgid_plural "%d memos" msgstr[0] "%d 个备忘" #: ../modules/calendar/e-memo-shell-view-private.c:542 #: ../modules/calendar/e-task-shell-view-private.c:746 #, c-format msgid "%d selected" msgstr "选中 %d 个" #: ../modules/calendar/e-task-shell-backend.c:205 #: ../modules/calendar/e-task-shell-view-actions.c:219 msgid "New Task List" msgstr "新建任务列表" #: ../modules/calendar/e-task-shell-backend.c:214 msgctxt "New" msgid "_Task" msgstr "任务(_T)" #: ../modules/calendar/e-task-shell-backend.c:221 msgctxt "New" msgid "Assigne_d Task" msgstr "分配的任务(_D)" #: ../modules/calendar/e-task-shell-backend.c:223 msgid "Create a new assigned task" msgstr "创建新分配的任务" #: ../modules/calendar/e-task-shell-backend.c:231 msgctxt "New" msgid "Tas_k List" msgstr "任务列表(_K)" #: ../modules/calendar/e-task-shell-backend.c:233 #: ../modules/calendar/e-task-shell-view-actions.c:748 msgid "Create a new task list" msgstr "创建新任务列表" #: ../modules/calendar/e-task-shell-sidebar.c:117 #, c-format msgid "Opening task list '%s'" msgstr "打开任务列表 '%s'" #: ../modules/calendar/e-task-shell-sidebar.c:547 msgid "Task List Selector" msgstr "任务列表选择器" #: ../modules/calendar/e-task-shell-view-actions.c:235 #: ../modules/calendar/e-task-shell-view-actions.c:250 msgid "Print Tasks" msgstr "打印任务" #: ../modules/calendar/e-task-shell-view-actions.c:291 msgid "Task List Properties" msgstr "任务列表属性" #: ../modules/calendar/e-task-shell-view-actions.c:586 msgid "" "This operation will permanently erase all tasks marked as completed. If you " "continue, you will not be able to recover these tasks.\n" "\n" "Really erase these tasks?" msgstr "" "该操作将永久删除所有标记为完成的任务。如果您继续,您将无法恢复这些任务。\n" "\n" "确实删除这些任务吗?" #: ../modules/calendar/e-task-shell-view-actions.c:593 msgid "Do not ask me again" msgstr "不要再次询问" #: ../modules/calendar/e-task-shell-view-actions.c:711 msgid "_Delete Task" msgstr "删除任务(_D)" #: ../modules/calendar/e-task-shell-view-actions.c:718 msgid "_Find in Task..." msgstr "在任务中查找(_F)..." #: ../modules/calendar/e-task-shell-view-actions.c:720 msgid "Search for text in the displayed task" msgstr "在显示的任务中搜索文本" #: ../modules/calendar/e-task-shell-view-actions.c:732 msgid "Copy..." msgstr "复制..." #: ../modules/calendar/e-task-shell-view-actions.c:739 msgid "D_elete Task List" msgstr "删除任务列表(_D)" #: ../modules/calendar/e-task-shell-view-actions.c:741 msgid "Delete the selected task list" msgstr "重命名选中任务列表" #: ../modules/calendar/e-task-shell-view-actions.c:746 msgid "_New Task List" msgstr "新建任务列表(_N)" #: ../modules/calendar/e-task-shell-view-actions.c:762 msgid "Refresh the selected task list" msgstr "更新选中任务列表" #: ../modules/calendar/e-task-shell-view-actions.c:769 msgid "Rename the selected task list" msgstr "重命名选中任务列表" #: ../modules/calendar/e-task-shell-view-actions.c:774 msgid "Show _Only This Task List" msgstr "只显示此任务列表(_O)" #: ../modules/calendar/e-task-shell-view-actions.c:788 msgid "Mar_k as Incomplete" msgstr "标记为未完成(_K)" #: ../modules/calendar/e-task-shell-view-actions.c:818 msgid "Delete completed tasks" msgstr "删除已完成的任务" #: ../modules/calendar/e-task-shell-view-actions.c:893 msgid "Task _Preview" msgstr "任务预览(_P)" #: ../modules/calendar/e-task-shell-view-actions.c:895 msgid "Show task preview pane" msgstr "显示任务预览面板" #: ../modules/calendar/e-task-shell-view-actions.c:916 msgid "Show task preview below the task list" msgstr "在任务列表下方显示任务预览" #: ../modules/calendar/e-task-shell-view-actions.c:923 msgid "Show task preview alongside the task list" msgstr "在任务列表下方显示任务预览" #: ../modules/calendar/e-task-shell-view-actions.c:931 msgid "Active Tasks" msgstr "活动任务" #: ../modules/calendar/e-task-shell-view-actions.c:945 msgid "Completed Tasks" msgstr "已完成任务" #: ../modules/calendar/e-task-shell-view-actions.c:952 msgid "Next 7 Days' Tasks" msgstr "下一周的任务" #: ../modules/calendar/e-task-shell-view-actions.c:959 msgid "Overdue Tasks" msgstr "延期任务" #: ../modules/calendar/e-task-shell-view-actions.c:966 msgid "Tasks with Attachments" msgstr "有附件的任务" #: ../modules/calendar/e-task-shell-view-actions.c:1016 msgid "Print the list of tasks" msgstr "打印任务列表" #: ../modules/calendar/e-task-shell-view-actions.c:1023 msgid "Preview the list of tasks to be printed" msgstr "预览要打印的任务列表" #: ../modules/calendar/e-task-shell-view.c:374 msgid "Delete Tasks" msgstr "删除任务" #: ../modules/calendar/e-task-shell-view.c:376 msgid "Delete Task" msgstr "删除任务" #: ../modules/calendar/e-task-shell-view-private.c:631 msgid "Expunging" msgstr "销毁" #: ../modules/calendar/e-task-shell-view-private.c:742 #, c-format msgid "%d task" msgid_plural "%d tasks" msgstr[0] "%d 个任务" #: ../modules/itip-formatter/e-mail-formatter-itip.c:149 msgid "ITIP" msgstr "ITIP" #: ../modules/itip-formatter/e-mail-formatter-itip.c:150 msgid "Display part as an invitation" msgstr "将该部分显示为邀请" #. strftime format of a time, #. * in 24-hour format, without seconds. #: ../modules/itip-formatter/itip-view.c:235 msgid "Today %H:%M" msgstr "今天 %H:%M" #. strftime format of a time, #. * in 24-hour format. #: ../modules/itip-formatter/itip-view.c:239 msgid "Today %H:%M:%S" msgstr "今天 %H:%M:%S" #. strftime format of a time, #. * in 12-hour format. #: ../modules/itip-formatter/itip-view.c:248 msgid "Today %l:%M:%S %p" msgstr "今天%p%l:%M:%S" #. strftime format of a time, #. * in 24-hour format, without seconds. #: ../modules/itip-formatter/itip-view.c:263 msgid "Tomorrow %H:%M" msgstr "明天 %H:%M" #. strftime format of a time, #. * in 24-hour format. #: ../modules/itip-formatter/itip-view.c:267 msgid "Tomorrow %H:%M:%S" msgstr "明天 %H:%M:%S" #. strftime format of a time, #. * in 12-hour format, without seconds. #: ../modules/itip-formatter/itip-view.c:272 msgid "Tomorrow %l:%M %p" msgstr "明天%p%l:%M" #. strftime format of a time, #. * in 12-hour format. #: ../modules/itip-formatter/itip-view.c:276 msgid "Tomorrow %l:%M:%S %p" msgstr "明天%p%l:%M:%S" #. strftime format of a weekday. #: ../modules/itip-formatter/itip-view.c:295 #, c-format msgid "%A" msgstr "%A" #. strftime format of a weekday and a #. * time, in 24-hour format, without seconds. #: ../modules/itip-formatter/itip-view.c:300 msgid "%A %H:%M" msgstr "%A %H:%M" #. strftime format of a weekday and a #. * time, in 24-hour format. #: ../modules/itip-formatter/itip-view.c:304 msgid "%A %H:%M:%S" msgstr "%A %H:%M:%S" #. strftime format of a weekday and a #. * time, in 12-hour format, without seconds. #: ../modules/itip-formatter/itip-view.c:309 msgid "%A %l:%M %p" msgstr "%A%p%l:%M" #. strftime format of a weekday and a #. * time, in 12-hour format. #: ../modules/itip-formatter/itip-view.c:313 msgid "%A %l:%M:%S %p" msgstr "%A%p%l:%M:%S" #. strftime format of a weekday and a date #. * without a year. #: ../modules/itip-formatter/itip-view.c:322 msgid "%A, %B %e" msgstr "%-m月%-d日%A" #. strftime format of a weekday, a date #. * without a year and a time, #. * in 24-hour format, without seconds. #: ../modules/itip-formatter/itip-view.c:328 msgid "%A, %B %e %H:%M" msgstr "%-m月%-d日%A %H:%M" #. strftime format of a weekday, a date without a year #. * and a time, in 24-hour format. #: ../modules/itip-formatter/itip-view.c:332 msgid "%A, %B %e %H:%M:%S" msgstr "%-m月%-d日%A %H:%M:%S" #. strftime format of a weekday, a date without a year #. * and a time, in 12-hour format, without seconds. #: ../modules/itip-formatter/itip-view.c:337 msgid "%A, %B %e %l:%M %p" msgstr "%-m月%-d日%A%p%l:%M" #. strftime format of a weekday, a date without a year #. * and a time, in 12-hour format. #: ../modules/itip-formatter/itip-view.c:341 msgid "%A, %B %e %l:%M:%S %p" msgstr "%-m月%-d日%A%p%l:%M:%S" #. strftime format of a weekday and a date. #: ../modules/itip-formatter/itip-view.c:347 msgid "%A, %B %e, %Y" msgstr "%Y年%-m月%-d日%A" #. strftime format of a weekday, a date and a #. * time, in 24-hour format, without seconds. #: ../modules/itip-formatter/itip-view.c:352 msgid "%A, %B %e, %Y %H:%M" msgstr "%Y年%-m月%-d日%A %H:%M" #. strftime format of a weekday, a date and a #. * time, in 24-hour format. #: ../modules/itip-formatter/itip-view.c:356 msgid "%A, %B %e, %Y %H:%M:%S" msgstr "%Y年%-m月%-d日%A %H:%M:%S" #. strftime format of a weekday, a date and a #. * time, in 12-hour format, without seconds. #: ../modules/itip-formatter/itip-view.c:361 msgid "%A, %B %e, %Y %l:%M %p" msgstr "%Y年%-m月%-d日%A%p%l:%M" #. strftime format of a weekday, a date and a #. * time, in 12-hour format. #: ../modules/itip-formatter/itip-view.c:365 msgid "%A, %B %e, %Y %l:%M:%S %p" msgstr "%Y年%-m月%-d日%A%p%l:%M:%S" #: ../modules/itip-formatter/itip-view.c:403 #: ../modules/itip-formatter/itip-view.c:404 #: ../modules/itip-formatter/itip-view.c:493 #: ../modules/itip-formatter/itip-view.c:494 #: ../modules/itip-formatter/itip-view.c:583 msgid "An unknown person" msgstr "未知的人" #: ../modules/itip-formatter/itip-view.c:408 #: ../modules/itip-formatter/itip-view.c:498 #: ../modules/itip-formatter/itip-view.c:587 #, c-format msgid "Please respond on behalf of %s" msgstr "请以 %s 的身份回应" #: ../modules/itip-formatter/itip-view.c:410 #: ../modules/itip-formatter/itip-view.c:500 #: ../modules/itip-formatter/itip-view.c:589 #, c-format msgid "Received on behalf of %s" msgstr "以 %s 的身份接收" #: ../modules/itip-formatter/itip-view.c:415 #, c-format msgid "%s through %s has published the following meeting information:" msgstr "%s 通过 %s 发布了会议信息:" #: ../modules/itip-formatter/itip-view.c:417 #, c-format msgid "%s has published the following meeting information:" msgstr "%s 发布了会议信息:" #: ../modules/itip-formatter/itip-view.c:422 #, c-format msgid "%s has delegated the following meeting to you:" msgstr "%s 为您代理了下列会议:" #: ../modules/itip-formatter/itip-view.c:425 #, c-format msgid "%s through %s requests your presence at the following meeting:" msgstr "%s 通过 %s 请求您参加下列会议:" #: ../modules/itip-formatter/itip-view.c:427 #, c-format msgid "%s requests your presence at the following meeting:" msgstr "%s 请求您参加下列会议:" #: ../modules/itip-formatter/itip-view.c:433 #, c-format msgid "%s through %s wishes to add to an existing meeting:" msgstr "%s 通过 %s 希望加入到已有的会议:" #: ../modules/itip-formatter/itip-view.c:435 #, c-format msgid "%s wishes to add to an existing meeting:" msgstr "%s 希望加入到已有的会议:" #: ../modules/itip-formatter/itip-view.c:439 #, c-format msgid "" "%s through %s wishes to receive the latest information for the following " "meeting:" msgstr "%s 通过 %s 希望接收到下列会议的最新信息:" #: ../modules/itip-formatter/itip-view.c:441 #, c-format msgid "" "%s wishes to receive the latest information for the following meeting:" msgstr "%s 希望接收到下列会议的最新信息:" #: ../modules/itip-formatter/itip-view.c:445 #, c-format msgid "%s through %s has sent back the following meeting response:" msgstr "%s 通过 %s 发回了下列会议请求的响应:" #: ../modules/itip-formatter/itip-view.c:447 #, c-format msgid "%s has sent back the following meeting response:" msgstr "%s 发回了下列会议请求的响应:" #: ../modules/itip-formatter/itip-view.c:451 #, c-format msgid "%s through %s has canceled the following meeting:" msgstr "%s 通过 %s 取消了下列会议:" #: ../modules/itip-formatter/itip-view.c:453 #, c-format msgid "%s has canceled the following meeting:" msgstr "%s 取消了以下会议:" #: ../modules/itip-formatter/itip-view.c:457 #, c-format msgid "%s through %s has proposed the following meeting changes." msgstr "%s 通过 %s 提议了下列会议变更。" #: ../modules/itip-formatter/itip-view.c:459 #, c-format msgid "%s has proposed the following meeting changes:" msgstr "%s 发起了以下会议更改:" #: ../modules/itip-formatter/itip-view.c:463 #, c-format msgid "%s through %s has declined the following meeting changes:" msgstr "%s 通过 %s 拒绝了下列会议变更:" #: ../modules/itip-formatter/itip-view.c:465 #, c-format msgid "%s has declined the following meeting changes:" msgstr "%s 拒绝了以下会议更改:" #: ../modules/itip-formatter/itip-view.c:505 #, c-format msgid "%s through %s has published the following task:" msgstr "%s 通过 %s 发布了下列任务:" #: ../modules/itip-formatter/itip-view.c:507 #, c-format msgid "%s has published the following task:" msgstr "%s 发布了下列任务:" #: ../modules/itip-formatter/itip-view.c:512 #, c-format msgid "%s requests the assignment of %s to the following task:" msgstr "%s 请求给 %s 分配下列任务:" #: ../modules/itip-formatter/itip-view.c:515 #, c-format msgid "%s through %s has assigned you a task:" msgstr "%s 通过 %s 为您分配了下列任务:" #: ../modules/itip-formatter/itip-view.c:517 #, c-format msgid "%s has assigned you a task:" msgstr "%s 为您分配了一个任务:" #: ../modules/itip-formatter/itip-view.c:523 #, c-format msgid "%s through %s wishes to add to an existing task:" msgstr "%s 通过 %s 希望加入到已有的任务:" #: ../modules/itip-formatter/itip-view.c:525 #, c-format msgid "%s wishes to add to an existing task:" msgstr "%s 希望加入到已存在的任务:" #: ../modules/itip-formatter/itip-view.c:529 #, c-format msgid "" "%s through %s wishes to receive the latest information for the following " "assigned task:" msgstr "%s 通过 %s 想要收到所分配的下列任务的最新信息:" #: ../modules/itip-formatter/itip-view.c:531 #, c-format msgid "" "%s wishes to receive the latest information for the following assigned task:" msgstr "%s 想要收到所分配的下列任务的最新信息:" #: ../modules/itip-formatter/itip-view.c:535 #, c-format msgid "%s through %s has sent back the following assigned task response:" msgstr "%s 通过 %s 发回了下列分配任务的回应:" #: ../modules/itip-formatter/itip-view.c:537 #, c-format msgid "%s has sent back the following assigned task response:" msgstr "%s 发回了下列分配任务的回应:" #: ../modules/itip-formatter/itip-view.c:541 #, c-format msgid "%s through %s has canceled the following assigned task:" msgstr "%s 通过 %s 取消了下列任务分配:" #: ../modules/itip-formatter/itip-view.c:543 #, c-format msgid "%s has canceled the following assigned task:" msgstr "%s 取消分配的下列任务:" #: ../modules/itip-formatter/itip-view.c:547 #, c-format msgid "%s through %s has proposed the following task assignment changes:" msgstr "%s 通过 %s 提议了下列任务分配变更:" #: ../modules/itip-formatter/itip-view.c:549 #, c-format msgid "%s has proposed the following task assignment changes:" msgstr "%s 提议了下列任务分配变更:" #: ../modules/itip-formatter/itip-view.c:553 #, c-format msgid "%s through %s has declined the following assigned task:" msgstr "%s 通过 %s 拒绝了下列任务分配:" #: ../modules/itip-formatter/itip-view.c:555 #, c-format msgid "%s has declined the following assigned task:" msgstr "%s 拒绝了分配的下列任务:" #: ../modules/itip-formatter/itip-view.c:594 #, c-format msgid "%s through %s has published the following memo:" msgstr "%s 通过 %s 发布了下列备忘:" #: ../modules/itip-formatter/itip-view.c:596 #, c-format msgid "%s has published the following memo:" msgstr "%s 发布了下列备忘:" #: ../modules/itip-formatter/itip-view.c:601 #, c-format msgid "%s through %s wishes to add to an existing memo:" msgstr "%s 通过 %s 希望加入到已有的备忘:" #: ../modules/itip-formatter/itip-view.c:603 #, c-format msgid "%s wishes to add to an existing memo:" msgstr "%s 希望加入到已有的备忘中:" #: ../modules/itip-formatter/itip-view.c:607 #, c-format msgid "%s through %s has canceled the following shared memo:" msgstr "%s 通过 %s 取消了下列共享备忘:" #: ../modules/itip-formatter/itip-view.c:609 #, c-format msgid "%s has canceled the following shared memo:" msgstr "%s 取消了下列共享备忘:" #: ../modules/itip-formatter/itip-view.c:682 msgid "All day:" msgstr "全天:" #: ../modules/itip-formatter/itip-view.c:688 msgid "Start day:" msgstr "开始日期:" #: ../modules/itip-formatter/itip-view.c:688 #: ../modules/itip-formatter/itip-view.c:1502 msgid "Start time:" msgstr "开始时间:" #: ../modules/itip-formatter/itip-view.c:697 msgid "End day:" msgstr "结束日期:" #: ../modules/itip-formatter/itip-view.c:697 #: ../modules/itip-formatter/itip-view.c:1503 msgid "End time:" msgstr "结束时间:" #: ../modules/itip-formatter/itip-view.c:1028 msgid "Ope_n Calendar" msgstr "打开日历 (_N)" #: ../modules/itip-formatter/itip-view.c:1031 msgid "_Decline all" msgstr "全部拒绝(_D)" #: ../modules/itip-formatter/itip-view.c:1034 msgid "_Decline" msgstr "拒绝(_D)" #: ../modules/itip-formatter/itip-view.c:1037 msgid "_Tentative all" msgstr "全部待定(_T)" #: ../modules/itip-formatter/itip-view.c:1040 msgid "_Tentative" msgstr "待定(_T)" #: ../modules/itip-formatter/itip-view.c:1043 msgid "Acce_pt all" msgstr "接受所有 (_P)" #: ../modules/itip-formatter/itip-view.c:1046 msgid "Acce_pt" msgstr "接受 (_P)" #: ../modules/itip-formatter/itip-view.c:1049 msgid "Send _Information" msgstr "发送信息 (_I)" #: ../modules/itip-formatter/itip-view.c:1052 msgid "_Update Attendee Status" msgstr "更新与会者状态(_U)" #: ../modules/itip-formatter/itip-view.c:1055 msgid "_Update" msgstr "更新(_U)" #: ../modules/itip-formatter/itip-view.c:1505 #: ../modules/itip-formatter/itip-view.c:1553 #: ../modules/itip-formatter/itip-view.c:1624 msgid "Comment:" msgstr "注释:" #. RSVP area #: ../modules/itip-formatter/itip-view.c:1541 msgid "Send reply to sender" msgstr "向发件人发送回复" #. Updates #: ../modules/itip-formatter/itip-view.c:1556 msgid "Send _updates to attendees" msgstr "给出席者发送更新(_U)" #. The recurrence check button #: ../modules/itip-formatter/itip-view.c:1559 msgid "_Apply to all instances" msgstr "应用到全部实例(_A)" #: ../modules/itip-formatter/itip-view.c:1560 msgid "Show time as _free" msgstr "将时间显示为空闲(_F)" #: ../modules/itip-formatter/itip-view.c:1561 msgid "_Preserve my reminder" msgstr "保留我的提醒(_P)" #: ../modules/itip-formatter/itip-view.c:1562 msgid "_Inherit reminder" msgstr "继承提醒(_I)" #: ../modules/itip-formatter/itip-view.c:1892 msgid "_Tasks:" msgstr "任务(_T):" #: ../modules/itip-formatter/itip-view.c:1895 msgid "_Memos:" msgstr "备忘(_M):" #: ../modules/itip-formatter/itip-view.c:3123 msgid "Sa_ve" msgstr "保存 (_V)" #: ../modules/itip-formatter/itip-view.c:3583 #: ../modules/itip-formatter/itip-view.c:5028 msgid "Attendee status updated" msgstr "出席者状态已更新" #: ../modules/itip-formatter/itip-view.c:3762 #, c-format msgid "An appointment in the calendar '%s' conflicts with this meeting" msgstr "日历“%s”中的一个约会与此会议冲突" #: ../modules/itip-formatter/itip-view.c:3791 #, c-format msgid "Found the appointment in the calendar '%s'" msgstr "在日历“%s”中找到了约会" #: ../modules/itip-formatter/itip-view.c:3904 msgid "Unable to find any calendars" msgstr "无法找到任何日历" #: ../modules/itip-formatter/itip-view.c:3912 msgid "Unable to find this meeting in any calendar" msgstr "无法在任何日历中找到此会议" #: ../modules/itip-formatter/itip-view.c:3917 msgid "Unable to find this task in any task list" msgstr "无法在任何任务列表中找到此任务" #: ../modules/itip-formatter/itip-view.c:3922 msgid "Unable to find this memo in any memo list" msgstr "无法在任何备忘列表中找到此备忘" #: ../modules/itip-formatter/itip-view.c:4266 msgid "Opening the calendar. Please wait..." msgstr "正在打开日历,请稍候..." #: ../modules/itip-formatter/itip-view.c:4271 msgid "Searching for an existing version of this appointment" msgstr "搜索此约会的已有版本" #: ../modules/itip-formatter/itip-view.c:4664 #, c-format msgid "Unable to send item to calendar '%s'. %s" msgstr "无法将项目发送到日历“%s”。%s" #: ../modules/itip-formatter/itip-view.c:4679 #, c-format msgid "Sent to calendar '%s' as accepted" msgstr "将日历“%s”发送为已接受" #: ../modules/itip-formatter/itip-view.c:4684 #, c-format msgid "Sent to calendar '%s' as tentative" msgstr "将日历“%s”发送为待定" #: ../modules/itip-formatter/itip-view.c:4690 #, c-format msgid "Sent to calendar '%s' as declined" msgstr "将日历“%s”发送为已拒绝" #: ../modules/itip-formatter/itip-view.c:4696 #, c-format msgid "Sent to calendar '%s' as canceled" msgstr "将日历“%s”发送为已取消" #: ../modules/itip-formatter/itip-view.c:4717 #: ../modules/itip-formatter/itip-view.c:5174 #: ../modules/itip-formatter/itip-view.c:5280 msgid "Saving changes to the calendar. Please wait..." msgstr "正在保存更改,请稍后..." #: ../modules/itip-formatter/itip-view.c:4758 msgid "Unable to parse item" msgstr "无法分析项目" #: ../modules/itip-formatter/itip-view.c:4951 #, c-format msgid "Organizer has removed the delegate %s " msgstr "组织者已经删除了代理人 %s " #: ../modules/itip-formatter/itip-view.c:4968 msgid "Sent a cancelation notice to the delegate" msgstr "已给代理人发送了取消通知" #: ../modules/itip-formatter/itip-view.c:4972 msgid "Could not send the cancelation notice to the delegate" msgstr "无法给代理人发送取消通知" #: ../modules/itip-formatter/itip-view.c:5020 #, c-format msgid "Unable to update attendee. %s" msgstr "无法更新出席者。%s" #: ../modules/itip-formatter/itip-view.c:5063 msgid "The meeting is invalid and cannot be updated" msgstr "回忆无效,无法更新" #: ../modules/itip-formatter/itip-view.c:5139 msgid "Attendee status could not be updated because the status is invalid" msgstr "出席者状态无法更新,原因是状态无效" #: ../modules/itip-formatter/itip-view.c:5211 #: ../modules/itip-formatter/itip-view.c:5250 msgid "Attendee status can not be updated because the item no longer exists" msgstr "由于条目不再存在而无法更新出席者状态" #: ../modules/itip-formatter/itip-view.c:5313 msgid "Meeting information sent" msgstr "会议信息已发送" #: ../modules/itip-formatter/itip-view.c:5318 msgid "Task information sent" msgstr "任务信息已发送" #: ../modules/itip-formatter/itip-view.c:5323 msgid "Memo information sent" msgstr "备忘信息已发送" #: ../modules/itip-formatter/itip-view.c:5334 msgid "Unable to send meeting information, the meeting does not exist" msgstr "无法发送会议信息,会议不存在" #: ../modules/itip-formatter/itip-view.c:5339 msgid "Unable to send task information, the task does not exist" msgstr "无法发送任务信息,任务不存在" #: ../modules/itip-formatter/itip-view.c:5344 msgid "Unable to send memo information, the memo does not exist" msgstr "无法发送备忘信息,备忘不存在" #. Translators: This is a default filename for a calendar. #: ../modules/itip-formatter/itip-view.c:5409 msgid "calendar.ics" msgstr "calendar.ics" #: ../modules/itip-formatter/itip-view.c:5414 msgid "Save Calendar" msgstr "保存日历" #: ../modules/itip-formatter/itip-view.c:5463 #: ../modules/itip-formatter/itip-view.c:5476 msgid "The calendar attached is not valid" msgstr "附加的日历无效" #: ../modules/itip-formatter/itip-view.c:5464 #: ../modules/itip-formatter/itip-view.c:5477 msgid "" "The message claims to contain a calendar, but the calendar is not a valid " "iCalendar." msgstr "信息声明其包含日历,但日历不是有效的 iCalendar。" #: ../modules/itip-formatter/itip-view.c:5519 #: ../modules/itip-formatter/itip-view.c:5549 #: ../modules/itip-formatter/itip-view.c:5650 msgid "The item in the calendar is not valid" msgstr "日历项无效" #: ../modules/itip-formatter/itip-view.c:5520 #: ../modules/itip-formatter/itip-view.c:5550 #: ../modules/itip-formatter/itip-view.c:5651 msgid "" "The message does contain a calendar, but the calendar contains no events, " "tasks or free/busy information" msgstr "信息的确包含日历,但是日历不包含事件、任务或忙/闲信息" #: ../modules/itip-formatter/itip-view.c:5565 msgid "The calendar attached contains multiple items" msgstr "附加的日历包含多个项目" #: ../modules/itip-formatter/itip-view.c:5566 msgid "" "To process all of these items, the file should be saved and the calendar " "imported" msgstr "要处理这些全部项目,应该保存文件并导入日历" #: ../modules/itip-formatter/itip-view.c:6067 msgctxt "cal-itip" msgid "None" msgstr "无" #: ../modules/itip-formatter/itip-view.c:6083 msgid "Tentatively Accepted" msgstr "暂时接受" #: ../modules/itip-formatter/itip-view.c:6243 msgid "This meeting recurs" msgstr "此会议重现" #: ../modules/itip-formatter/itip-view.c:6246 msgid "This task recurs" msgstr "此任务重现" #: ../modules/itip-formatter/itip-view.c:6249 msgid "This memo recurs" msgstr "此备忘重现" #: ../modules/itip-formatter/org-gnome-itip-formatter.error.xml.h:1 msgid "" "This response is not from a current attendee. Add the sender as an attendee?" msgstr "此响应并非来自当前出席者。将响应者加为出席者吗?" #: ../modules/itip-formatter/org-gnome-itip-formatter.error.xml.h:2 msgid "This meeting has been delegated" msgstr "该会议已被代理" #: ../modules/itip-formatter/org-gnome-itip-formatter.error.xml.h:3 msgid "" "'{0}' has delegated the meeting. Do you want to add the delegate '{1}'?" msgstr "“{0}”代理了该会议。您是否想要添加代理人“{1}”?" #: ../modules/itip-formatter/plugin/config-ui.c:82 msgid "Meeting Invitations" msgstr "会议邀请" #: ../modules/itip-formatter/plugin/config-ui.c:108 msgid "_Delete message after acting" msgstr "操作后删除信息(_D)" #: ../modules/itip-formatter/plugin/config-ui.c:122 #: ../modules/itip-formatter/plugin/config-ui.c:153 msgid "Conflict Search" msgstr "冲突搜索" #. Source selector #: ../modules/itip-formatter/plugin/config-ui.c:137 msgid "Select the calendars to search for meeting conflicts" msgstr "选择要搜索冲突会议的日历" #: ../modules/itip-formatter/plugin/org-gnome-itip-formatter.eplug.xml.h:1 msgid "Itip Formatter" msgstr "Itip 格式化" #: ../modules/itip-formatter/plugin/org-gnome-itip-formatter.eplug.xml.h:2 msgid "Display \"text/calendar\" MIME parts in mail messages." msgstr "在邮件信息的 MIME 部分显示“文本/日历”。" #: ../modules/mail-config/e-mail-config-google-summary.c:252 msgid "Google Features" msgstr "Google 功能" #: ../modules/mail-config/e-mail-config-google-summary.c:261 msgid "Add Google Ca_lendar to this account" msgstr "将 Google 日历添加到此帐号 (_L)" #: ../modules/mail-config/e-mail-config-google-summary.c:269 msgid "Add Google Con_tacts to this account" msgstr "将 Google 联系人添加到此帐号 (_T)" #: ../modules/mail-config/e-mail-config-google-summary.c:277 msgid "You may need to enable IMAP access" msgstr "你可能需要开启 IMAP 选项" #: ../modules/mail-config/e-mail-config-local-accounts.c:246 #: ../modules/mail-config/e-mail-config-local-accounts.c:292 msgid "Mail _Directory:" msgstr "邮件路径 (_D)" #: ../modules/mail-config/e-mail-config-local-accounts.c:247 msgid "Choose a MH mail directory" msgstr "选择一个 MH 邮件路径" #: ../modules/mail-config/e-mail-config-local-accounts.c:269 msgid "Local Delivery _File:" msgstr "本地发送信息文件 (_F)" #: ../modules/mail-config/e-mail-config-local-accounts.c:270 msgid "Choose a local delivery file" msgstr "选择一个本地发送信息文件" #: ../modules/mail-config/e-mail-config-local-accounts.c:293 msgid "Choose a Maildir mail directory" msgstr "选择一个 Maildir 邮件路径" #: ../modules/mail-config/e-mail-config-local-accounts.c:315 msgid "Spool _File:" msgstr "Spool 文件 (_F):" #: ../modules/mail-config/e-mail-config-local-accounts.c:316 msgid "Choose a mbox spool file" msgstr "选择一个 mbox spool 文件" #: ../modules/mail-config/e-mail-config-local-accounts.c:338 msgid "Spool _Directory:" msgstr "Spool 路径 (_D):" #: ../modules/mail-config/e-mail-config-local-accounts.c:339 msgid "Choose a mbox spool directory" msgstr "选择一个 mbox spool 路径" #: ../modules/mail-config/e-mail-config-remote-accounts.c:137 #: ../modules/mail-config/e-mail-config-sendmail-backend.c:54 #: ../modules/mail-config/e-mail-config-smtp-backend.c:80 #: ../modules/plugin-manager/evolution-plugin-manager.c:159 msgid "Configuration" msgstr "配置" #: ../modules/mail-config/e-mail-config-remote-accounts.c:155 #: ../modules/mail-config/e-mail-config-smtp-backend.c:98 #: ../plugins/publish-calendar/publish-calendar.ui.h:24 msgid "_Server:" msgstr "服务器(_S):" #: ../modules/mail-config/e-mail-config-remote-accounts.c:169 #: ../modules/mail-config/e-mail-config-smtp-backend.c:111 msgid "_Port:" msgstr "端口(_P):" #: ../modules/mail-config/e-mail-config-remote-accounts.c:181 #: ../modules/mail-config/e-mail-config-smtp-backend.c:227 msgid "User_name:" msgstr "用户名(_N):" #: ../modules/mail-config/e-mail-config-remote-accounts.c:214 #: ../modules/mail-config/e-mail-config-smtp-backend.c:148 msgid "Encryption _method:" msgstr "加密方法 (_M):" #: ../modules/mail-config/e-mail-config-remote-accounts.c:229 #: ../modules/mail-config/e-mail-config-smtp-backend.c:163 msgid "STARTTLS after connecting" msgstr "连接后启用 STARTTLS" #: ../modules/mail-config/e-mail-config-remote-accounts.c:233 #: ../modules/mail-config/e-mail-config-smtp-backend.c:167 msgid "SSL on a dedicated port" msgstr "为专用端口启用 SSL" #: ../modules/mail-config/e-mail-config-sendmail-backend.c:70 msgid "_Use custom binary, instead of 'sendmail'" msgstr "使用自定义二进制文件,而不是“sendmail”(_U):" #: ../modules/mail-config/e-mail-config-sendmail-backend.c:74 msgid "_Custom binary:" msgstr "自定义二进制文件 (_C):" #: ../modules/mail-config/e-mail-config-sendmail-backend.c:91 msgid "U_se custom arguments" msgstr "使用自定义参数 (_S)" #: ../modules/mail-config/e-mail-config-sendmail-backend.c:95 msgid "Cus_tom arguments:" msgstr "自定义参数 (_T):" #: ../modules/mail-config/e-mail-config-sendmail-backend.c:113 msgid "" "Default arguments are '-i -f %F -- %R', where\n" " %F - stands for the From address\n" " %R - stands for the recipient addresses" msgstr "" "默认参数为 '-i -f %F -- %R',其中\n" " %F - 发件人信息\n" " %R - 收件人信息" #: ../modules/mail-config/e-mail-config-sendmail-backend.c:128 msgid "Send mail also when in offline _mode" msgstr "在 offline _mode 下也发送邮件" #: ../modules/mail-config/e-mail-config-smtp-backend.c:123 msgid "Ser_ver requires authentication" msgstr "服务器需要认证(_V)" #: ../modules/mail-config/e-mail-config-smtp-backend.c:209 msgid "T_ype:" msgstr "类型(_Y):" #: ../modules/mail-config/e-mail-config-yahoo-summary.c:247 msgid "Yahoo! Features" msgstr "Yahoo! 功能" #: ../modules/mail-config/e-mail-config-yahoo-summary.c:256 msgid "Add Yahoo! Ca_lendar and Tasks to this account" msgstr "将 Yahoo! 日历和任务添加到此账户中 (_L)" #: ../modules/mail/e-mail-attachment-handler.c:425 #, c-format msgid "%d attached message" msgid_plural "%d attached messages" msgstr[0] "%d 个存在附件的消息" #: ../modules/mail/e-mail-shell-backend.c:321 msgctxt "New" msgid "_Mail Message" msgstr "信息(_M)" #: ../modules/mail/e-mail-shell-backend.c:323 msgid "Compose a new mail message" msgstr "撰写一封新信" #: ../modules/mail/e-mail-shell-backend.c:331 msgctxt "New" msgid "Mail Acco_unt" msgstr "邮件账户 (_U)" #: ../modules/mail/e-mail-shell-backend.c:333 msgid "Create a new mail account" msgstr "创建新邮件账户" #: ../modules/mail/e-mail-shell-backend.c:338 msgctxt "New" msgid "Mail _Folder" msgstr "邮件文件夹(_F)" #: ../modules/mail/e-mail-shell-backend.c:340 msgid "Create a new mail folder" msgstr "创建新邮件文件夹" #: ../modules/mail/e-mail-shell-backend.c:636 msgid "Mail Accounts" msgstr "邮件帐号" #: ../modules/mail/e-mail-shell-backend.c:645 msgid "Mail Preferences" msgstr "邮件首选项" #: ../modules/mail/e-mail-shell-backend.c:654 msgid "Composer Preferences" msgstr "编写器首选项" #: ../modules/mail/e-mail-shell-backend.c:663 msgid "Network Preferences" msgstr "网络首选项" #. Translators: The first item in the list, to be #. * able to set rule: [Label] [is/is-not] [None] #: ../modules/mail/e-mail-shell-backend.c:954 msgctxt "label" msgid "None" msgstr "无" #: ../modules/mail/e-mail-shell-view-actions.c:672 msgid "Marking messages as read..." msgstr "将消息标记为已读..." #: ../modules/mail/e-mail-shell-view-actions.c:1522 msgid "_Disable Account" msgstr "禁用帐号(_D)" #: ../modules/mail/e-mail-shell-view-actions.c:1524 msgid "Disable this account" msgstr "禁用这个帐号" #: ../modules/mail/e-mail-shell-view-actions.c:1531 msgid "Permanently remove all the deleted messages from all folders" msgstr "永久删除所有文件夹中的所有已删除的信息" #: ../modules/mail/e-mail-shell-view-actions.c:1538 msgid "Edit properties of this account" msgstr "编辑此帐户属性" #: ../modules/mail/e-mail-shell-view-actions.c:1543 msgid "_Refresh" msgstr "刷新 (_R)" #: ../modules/mail/e-mail-shell-view-actions.c:1545 msgid "Refresh list of folders of this account" msgstr "刷新此账户下的文件夹列表" #: ../modules/mail/e-mail-shell-view-actions.c:1550 msgid "_Download Messages for Offline Usage" msgstr "下载信息以离线使用(_D)" #: ../modules/mail/e-mail-shell-view-actions.c:1552 msgid "Download messages of accounts and folders marked for offline usage" msgstr "下载标记为离线使用的帐号和文件夹的信息" #: ../modules/mail/e-mail-shell-view-actions.c:1557 msgid "Fl_ush Outbox" msgstr "清空发件箱(_U)" #: ../modules/mail/e-mail-shell-view-actions.c:1564 msgid "_Copy Folder To..." msgstr "文件夹复制到(_C)..." #: ../modules/mail/e-mail-shell-view-actions.c:1566 msgid "Copy the selected folder into another folder" msgstr "把选中的文件夹复制到其它文件夹" #: ../modules/mail/e-mail-shell-view-actions.c:1573 msgid "Permanently remove this folder" msgstr "永久删除此文件夹" #: ../modules/mail/e-mail-shell-view-actions.c:1578 msgid "E_xpunge" msgstr "销毁(_X)" #: ../modules/mail/e-mail-shell-view-actions.c:1580 msgid "Permanently remove all deleted messages from this folder" msgstr "从该文件夹永久删除所有已删除的信息" #: ../modules/mail/e-mail-shell-view-actions.c:1585 #: ../modules/mail/e-mail-shell-view-actions.c:1685 msgid "Mar_k All Messages as Read" msgstr "把全部信息标记为已读(_K)" #: ../modules/mail/e-mail-shell-view-actions.c:1587 #: ../modules/mail/e-mail-shell-view-actions.c:1687 msgid "Mark all messages in the folder as read" msgstr "将此文件夹中的所有信息标记为已读" #: ../modules/mail/e-mail-shell-view-actions.c:1592 msgid "_Move Folder To..." msgstr "文件夹移至(_M)..." #: ../modules/mail/e-mail-shell-view-actions.c:1594 msgid "Move the selected folder into another folder" msgstr "把选中的文件夹移至其它文件夹" #: ../modules/mail/e-mail-shell-view-actions.c:1599 msgid "_New..." msgstr "新建(_N)..." #: ../modules/mail/e-mail-shell-view-actions.c:1601 msgid "Create a new folder for storing mail" msgstr "创建存储邮件的新文件夹" #: ../modules/mail/e-mail-shell-view-actions.c:1608 msgid "Change the properties of this folder" msgstr "更改此文件夹的属性" #: ../modules/mail/e-mail-shell-view-actions.c:1615 msgid "Refresh the folder" msgstr "刷新文件夹" #: ../modules/mail/e-mail-shell-view-actions.c:1622 msgid "Change the name of this folder" msgstr "更改此文件夹的名称" #: ../modules/mail/e-mail-shell-view-actions.c:1627 msgid "Select Message _Thread" msgstr "选择信息线索(_T)" #: ../modules/mail/e-mail-shell-view-actions.c:1629 msgid "Select all messages in the same thread as the selected message" msgstr "把同一线索中的所有信息选择为选中信息" #: ../modules/mail/e-mail-shell-view-actions.c:1634 msgid "Select Message S_ubthread" msgstr "选择信息子线索(_U)" #: ../modules/mail/e-mail-shell-view-actions.c:1636 msgid "Select all replies to the currently selected message" msgstr "选择当前选中信息的所有回复" #: ../modules/mail/e-mail-shell-view-actions.c:1648 msgid "Empty _Trash" msgstr "清空废件箱(_T)" #: ../modules/mail/e-mail-shell-view-actions.c:1650 msgid "Permanently remove all the deleted messages from all accounts" msgstr "永久删除所有帐号中的所有已删除的信息" #: ../modules/mail/e-mail-shell-view-actions.c:1655 msgid "_New Label" msgstr "新建标签(_N)" #: ../modules/mail/e-mail-shell-view-actions.c:1664 msgid "N_one" msgstr "无(_O)" #: ../modules/mail/e-mail-shell-view-actions.c:1678 msgid "_Manage Subscriptions" msgstr "管理订阅(_M)" #: ../modules/mail/e-mail-shell-view-actions.c:1680 #: ../modules/mail/e-mail-shell-view-actions.c:1764 msgid "Subscribe or unsubscribe to folders on remote servers" msgstr "订阅或退订远程服务器上的文件夹" #: ../modules/mail/e-mail-shell-view-actions.c:1692 #: ../modules/mail/e-mail-shell-view-actions.c:1713 msgid "Send / _Receive" msgstr "发送/接收(_R)" #: ../modules/mail/e-mail-shell-view-actions.c:1694 msgid "Send queued items and retrieve new items" msgstr "发送队列中的的邮件并收取新邮件" #: ../modules/mail/e-mail-shell-view-actions.c:1699 msgid "R_eceive All" msgstr "全部接收(_E)" #: ../modules/mail/e-mail-shell-view-actions.c:1701 msgid "Receive new items from all accounts" msgstr "接收所有账户中的新条目" #: ../modules/mail/e-mail-shell-view-actions.c:1706 msgid "_Send All" msgstr "全部发送(_S)" #: ../modules/mail/e-mail-shell-view-actions.c:1708 msgid "Send queued items in all accounts" msgstr "发送所有账户的队列中的条目" #: ../modules/mail/e-mail-shell-view-actions.c:1736 msgid "Cancel the current mail operation" msgstr "取消当前邮件操作" #: ../modules/mail/e-mail-shell-view-actions.c:1741 msgid "Collapse All _Threads" msgstr "折叠全部线索(_T)" #: ../modules/mail/e-mail-shell-view-actions.c:1743 msgid "Collapse all message threads" msgstr "折叠全部信息线索" #: ../modules/mail/e-mail-shell-view-actions.c:1748 msgid "E_xpand All Threads" msgstr "展开全部线索(_X)" #: ../modules/mail/e-mail-shell-view-actions.c:1750 msgid "Expand all message threads" msgstr "展开全部信息线索" #: ../modules/mail/e-mail-shell-view-actions.c:1755 msgid "_Message Filters" msgstr "信息过滤(_M)" #: ../modules/mail/e-mail-shell-view-actions.c:1757 msgid "Create or edit rules for filtering new mail" msgstr "创建或编辑过滤新邮件的规则" #: ../modules/mail/e-mail-shell-view-actions.c:1762 msgid "_Subscriptions..." msgstr "订阅(_S)..." #: ../modules/mail/e-mail-shell-view-actions.c:1771 msgid "F_older" msgstr "文件夹(_O)" #: ../modules/mail/e-mail-shell-view-actions.c:1778 msgid "_Label" msgstr "标签(_L)" #: ../modules/mail/e-mail-shell-view-actions.c:1795 msgid "C_reate Search Folder From Search..." msgstr "从头创建搜索文件夹(_R)..." #: ../modules/mail/e-mail-shell-view-actions.c:1802 msgid "Search F_olders" msgstr "搜索文件夹(_O)" #: ../modules/mail/e-mail-shell-view-actions.c:1804 msgid "Create or edit search folder definitions" msgstr "创建或编辑搜索文件夹定义" #: ../modules/mail/e-mail-shell-view-actions.c:1843 msgid "_New Folder..." msgstr "新建文件夹(_N)..." #: ../modules/mail/e-mail-shell-view-actions.c:1871 msgid "Show Message _Preview" msgstr "显示信息预览(_P)" #: ../modules/mail/e-mail-shell-view-actions.c:1873 msgid "Show message preview pane" msgstr "显示信息预览窗口" #: ../modules/mail/e-mail-shell-view-actions.c:1879 msgid "Show _Deleted Messages" msgstr "显示删除的信息(_D)" #: ../modules/mail/e-mail-shell-view-actions.c:1881 msgid "Show deleted messages with a line through them" msgstr "在信息列表中显示删除了的信息(带有删除线)" #: ../modules/mail/e-mail-shell-view-actions.c:1887 msgid "_Group By Threads" msgstr "按线索分组(_G)" #: ../modules/mail/e-mail-shell-view-actions.c:1889 msgid "Threaded message list" msgstr "按线索排列信息" #: ../modules/mail/e-mail-shell-view-actions.c:1895 msgid "_Unmatched Folder Enabled" msgstr "开启未匹配文件夹 (_U)" #: ../modules/mail/e-mail-shell-view-actions.c:1897 msgid "Toggles whether Unmatched search folder is enabled" msgstr "决定是否开启未匹配搜索文件夹" #: ../modules/mail/e-mail-shell-view-actions.c:1917 msgid "Show message preview below the message list" msgstr "在信息列表下方显示信息预览" #: ../modules/mail/e-mail-shell-view-actions.c:1924 msgid "Show message preview alongside the message list" msgstr "在信息列表旁显示信息预览" #: ../modules/mail/e-mail-shell-view-actions.c:1932 msgid "All Messages" msgstr "全部信息" #: ../modules/mail/e-mail-shell-view-actions.c:1939 msgid "Important Messages" msgstr "重要信息" #: ../modules/mail/e-mail-shell-view-actions.c:1946 msgid "Last 5 Days' Messages" msgstr "前五天的信息" #: ../modules/mail/e-mail-shell-view-actions.c:1953 msgid "Messages Not Junk" msgstr "不是垃圾信息" #: ../modules/mail/e-mail-shell-view-actions.c:1960 msgid "Messages with Attachments" msgstr "有附件的信息" #: ../modules/mail/e-mail-shell-view-actions.c:1967 msgid "No Label" msgstr "无标签" #: ../modules/mail/e-mail-shell-view-actions.c:1974 msgid "Read Messages" msgstr "已读信息" #: ../modules/mail/e-mail-shell-view-actions.c:1981 msgid "Unread Messages" msgstr "未读信息" #: ../modules/mail/e-mail-shell-view-actions.c:2033 msgid "Subject or Addresses contain" msgstr "主题或地址含有" #: ../modules/mail/e-mail-shell-view-actions.c:2043 msgid "All Accounts" msgstr "全部帐号" #: ../modules/mail/e-mail-shell-view-actions.c:2050 msgid "Current Account" msgstr "当前帐号" #: ../modules/mail/e-mail-shell-view-actions.c:2057 msgid "Current Folder" msgstr "当前文件夹" #: ../modules/mail/e-mail-shell-view.c:638 msgid "All Account Search" msgstr "全部帐号搜索" #: ../modules/mail/e-mail-shell-view.c:746 msgid "Account Search" msgstr "帐号搜索" #: ../modules/mail/e-mail-shell-view-private.c:973 #, c-format msgid "%d selected, " msgid_plural "%d selected, " msgstr[0] "已选中 %d 个, " #: ../modules/mail/e-mail-shell-view-private.c:982 #: ../modules/mail/e-mail-shell-view-private.c:999 #, c-format msgid "%d deleted" msgid_plural "%d deleted" msgstr[0] "%d 封已删除" #: ../modules/mail/e-mail-shell-view-private.c:1008 #: ../modules/mail/e-mail-shell-view-private.c:1014 #, c-format msgid "%d junk" msgid_plural "%d junk" msgstr[0] "%d 封垃圾" #: ../modules/mail/e-mail-shell-view-private.c:1021 #, c-format msgid "%d draft" msgid_plural "%d drafts" msgstr[0] "%d 封草稿" #: ../modules/mail/e-mail-shell-view-private.c:1027 #, c-format msgid "%d unsent" msgid_plural "%d unsent" msgstr[0] "%d 封未发" #: ../modules/mail/e-mail-shell-view-private.c:1033 #, c-format msgid "%d sent" msgid_plural "%d sent" msgstr[0] "%d 封已发" #: ../modules/mail/e-mail-shell-view-private.c:1045 #, c-format msgid "%d unread, " msgid_plural "%d unread, " msgstr[0] ",%d 封未读, " #: ../modules/mail/e-mail-shell-view-private.c:1048 #, c-format msgid "%d total" msgid_plural "%d total" msgstr[0] "总共 %d 封" #: ../modules/mail/e-mail-shell-view-private.c:1069 msgid "Trash" msgstr "回收站" #: ../modules/mail/e-mail-shell-view-private.c:1507 msgid "Send / Receive" msgstr "发送/接收" #: ../modules/mail/em-composer-prefs.c:447 msgid "Language(s)" msgstr "语言" #: ../modules/mail/em-mailer-prefs.c:81 msgid "On exit, every time" msgstr "退出时,每次均进行" #: ../modules/mail/em-mailer-prefs.c:82 msgid "On exit, once per day" msgstr "退出时,每天一次" #: ../modules/mail/em-mailer-prefs.c:83 msgid "On exit, once per week" msgstr "退出时,每周一次" #: ../modules/mail/em-mailer-prefs.c:84 msgid "On exit, once per month" msgstr "退出时,每月一次" #: ../modules/mail/em-mailer-prefs.c:85 msgid "Immediately, on folder leave" msgstr "离开文件夹时立刻进行" #: ../modules/mail/em-mailer-prefs.c:356 msgid "Header" msgstr "页眉" #: ../modules/mail/em-mailer-prefs.c:360 msgid "Contains Value" msgstr "包含值" #. To Translators: 'Date header' is a label for configurable date/time format for 'Date' header in mail message window/preview #: ../modules/mail/em-mailer-prefs.c:1215 msgid "_Date header:" msgstr "日期头:(_D)" #: ../modules/mail/em-mailer-prefs.c:1216 msgid "Show _original header value" msgstr "显示原始邮件头值(_o)" #: ../modules/mailto-handler/evolution-mailto-handler.c:142 msgid "Do you want to make Evolution your default email client?" msgstr "您是否想要将 Evolution 设置为您的默认电子邮件客户端?" #. Translators: First %s is an email address, second %s #. * is the subject of the email, third %s is the date. #: ../modules/mdn/evolution-mdn.c:311 #, c-format msgid "Your message to %s about \"%s\" on %s has been read." msgstr "您在 %3$s 上给 %1$s 发送的关于“%2$s”的信息已被阅读。" #. Translators: %s is the subject of the email message. #: ../modules/mdn/evolution-mdn.c:378 #, c-format msgid "Delivery Notification for \"%s\"" msgstr "\"%s\" 的发送状态通知" #: ../modules/mdn/evolution-mdn.c:543 #, c-format msgid "Send a read receipt to '%s'" msgstr "向 '%s' 发送已读回执" #. name doesn't matter #: ../modules/mdn/evolution-mdn.c:548 msgid "_Notify Sender" msgstr "通知发件人 (_N)" #: ../modules/mdn/evolution-mdn.error.xml.h:1 msgid "Sender wants to be notified when you have read this message." msgstr "发件人希望获得此消息的已读回执" #: ../modules/mdn/evolution-mdn.error.xml.h:2 msgid "Sender has been notified that you have read this message." msgstr "已在您阅读此消息时向发件人发出已读回执" #: ../modules/offline-alert/evolution-offline-alert.error.xml.h:1 msgid "Evolution is currently offline." msgstr "Evolution 目前离线。" #: ../modules/offline-alert/evolution-offline-alert.error.xml.h:2 msgid "Click 'Work Online' to return to online mode." msgstr "点击“在线工作”返回在线模式。" #: ../modules/offline-alert/evolution-offline-alert.error.xml.h:3 msgid "Evolution is currently offline due to a network outage." msgstr "由于网络断开,Evolution 目前离线。" #: ../modules/offline-alert/evolution-offline-alert.error.xml.h:4 msgid "" "Evolution will return to online mode once a network connection is " "established." msgstr "一旦建立了网络连接,Evolution 将返回在线模式。" #: ../modules/plugin-manager/evolution-plugin-manager.c:68 msgid "Author(s)" msgstr "作者" #: ../modules/plugin-manager/evolution-plugin-manager.c:254 msgid "Plugin Manager" msgstr "插件管理器" #: ../modules/plugin-manager/evolution-plugin-manager.c:269 msgid "Note: Some changes will not take effect until restart" msgstr "注意:某些更改直到重新启动后才生效" #: ../modules/plugin-manager/evolution-plugin-manager.c:298 msgid "Overview" msgstr "概览" #: ../modules/plugin-manager/evolution-plugin-manager.c:367 #: ../modules/plugin-manager/evolution-plugin-manager.c:450 msgid "Plugin" msgstr "插件" #: ../modules/plugin-manager/evolution-plugin-manager.c:488 msgid "_Plugins" msgstr "插件(_P)" #: ../modules/plugin-manager/evolution-plugin-manager.c:489 msgid "Enable and disable plugins" msgstr "启用和禁用插件" #: ../modules/prefer-plain/e-mail-display-popup-prefer-plain.c:140 msgid "Display plain text version" msgstr "显示纯文本版本" #: ../modules/prefer-plain/e-mail-display-popup-prefer-plain.c:142 msgid "Display plain text version of multipart/alternative message" msgstr "以纯文本模式显示 multipart/alternative 消息" #: ../modules/prefer-plain/e-mail-display-popup-prefer-plain.c:148 msgid "Display HTML version" msgstr "显示 HTML 版本" #: ../modules/prefer-plain/e-mail-display-popup-prefer-plain.c:150 msgid "Display HTML version of multipart/alternative message" msgstr "以 HTML 模式显示 multipart/alternative 消息" #: ../modules/prefer-plain/e-mail-parser-prefer-plain.c:78 #: ../modules/prefer-plain/plugin/config-ui.c:44 msgid "Show HTML if present" msgstr "首选 HTML" #: ../modules/prefer-plain/e-mail-parser-prefer-plain.c:79 #: ../modules/prefer-plain/plugin/config-ui.c:45 msgid "Let Evolution choose the best part to show." msgstr "让Evolution选择最好的部分显示。" #: ../modules/prefer-plain/e-mail-parser-prefer-plain.c:82 #: ../modules/prefer-plain/plugin/config-ui.c:48 msgid "Show plain text if present" msgstr "如果可用则显示纯文本" #: ../modules/prefer-plain/e-mail-parser-prefer-plain.c:83 #: ../modules/prefer-plain/plugin/config-ui.c:49 msgid "" "Show plain text part, if present, otherwise let Evolution choose the best " "part to show." msgstr "如果提出,那么显示纯文本部分,否则让Evolution选择好的部分显示," #: ../modules/prefer-plain/e-mail-parser-prefer-plain.c:87 #: ../modules/prefer-plain/plugin/config-ui.c:53 msgid "Only ever show plain text" msgstr "仅显示纯文本" #: ../modules/prefer-plain/e-mail-parser-prefer-plain.c:88 #: ../modules/prefer-plain/plugin/config-ui.c:54 msgid "" "Always show plain text part and make attachments from other parts, if " "requested." msgstr "如果请求,总是显示文本部分而把其他部分作为附件" #: ../modules/prefer-plain/plugin/config-ui.c:105 msgid "Show s_uppressed HTML parts as attachments" msgstr "显示支持的HTML部分作为附件(_s)" #: ../modules/prefer-plain/plugin/config-ui.c:127 msgid "HTML _Mode" msgstr "HT_ML 模式" #: ../modules/prefer-plain/plugin/org-gnome-prefer-plain.eplug.xml.h:1 msgid "Prefer Plain Text" msgstr "首选纯文本" #. but then we also need to create our own section frame #: ../modules/prefer-plain/plugin/org-gnome-prefer-plain.eplug.xml.h:3 msgid "Plain Text Mode" msgstr "纯文字模式" #: ../modules/prefer-plain/plugin/org-gnome-prefer-plain.eplug.xml.h:4 msgid "View mail messages as plain text, even if they contain HTML content." msgstr "作为纯文本来查看邮件信息,甚至在它们包含 HTML 内容时。" #: ../modules/spamassassin/evolution-spamassassin.c:151 #, c-format msgid "Failed to spawn SpamAssassin (%s): " msgstr "启动 SpamAssassin 失败(%s): " #: ../modules/spamassassin/evolution-spamassassin.c:174 msgid "Failed to stream mail message content to SpamAssassin: " msgstr "无法将邮件信息内容通过流传送给 SpamAssassin: " #: ../modules/spamassassin/evolution-spamassassin.c:193 #, c-format msgid "Failed to write '%s' to SpamAssassin: " msgstr "无法将“%s”写入 SpamAssassin: " #: ../modules/spamassassin/evolution-spamassassin.c:221 msgid "Failed to read output from SpamAssassin: " msgstr "读取 SpamAssassin 输出失败: " #: ../modules/spamassassin/evolution-spamassassin.c:276 msgid "SpamAssassin either crashed or failed to process a mail message" msgstr "SpamAssassin 崩溃了,或无法处理邮件信息" #: ../modules/spamassassin/evolution-spamassassin.c:356 msgid "SpamAssassin Options" msgstr "垃圾克星选项" #: ../modules/spamassassin/evolution-spamassassin.c:371 msgid "I_nclude remote tests" msgstr "包含远程测试(_N)" #: ../modules/spamassassin/evolution-spamassassin.c:385 msgid "This will make SpamAssassin more reliable, but slower." msgstr "这将让 SpamAssassin 更可靠,但稍慢。" #: ../modules/spamassassin/evolution-spamassassin.c:559 msgid "SpamAssassin" msgstr "SpamAssassin" #. Keep the title identical to EMailConfigImportPage #. * so it's only shown once in the assistant sidebar. #: ../modules/startup-wizard/e-mail-config-import-page.c:262 #: ../modules/startup-wizard/e-mail-config-import-progress-page.c:342 msgid "Importing Files" msgstr "导入文件" #: ../modules/startup-wizard/e-mail-config-import-progress-page.c:261 msgid "Import cancelled." msgstr "已取消导入。" #: ../modules/startup-wizard/e-mail-config-import-progress-page.c:278 msgid "Import complete." msgstr "已完成导入。" #: ../modules/startup-wizard/e-startup-assistant.c:156 msgid "" "Welcome to Evolution.\n" "\n" "The next few screens will allow Evolution to connect to your email accounts, " "and to import files from other applications." msgstr "" "欢迎来到 Evolution \n" "\n" "以下步骤将帮助您连接到您的电子邮件帐号,或从其它应用程序中导入文件。" #: ../modules/startup-wizard/evolution-startup-wizard.c:229 msgid "Loading accounts..." msgstr "正在载入..." #: ../modules/text-highlight/e-mail-display-popup-text-highlight.c:95 msgid "_Format as..." msgstr "编码格式 (_F)..." #: ../modules/text-highlight/e-mail-display-popup-text-highlight.c:103 msgid "_Other languages" msgstr "其它语言 (_O)" #: ../modules/text-highlight/e-mail-formatter-text-highlight.c:337 msgid "Text Highlight" msgstr "文本高亮" #: ../modules/text-highlight/e-mail-formatter-text-highlight.c:338 msgid "Syntax highlighting of mail parts" msgstr "对邮件内容进行语法高亮" #: ../modules/text-highlight/languages.c:32 msgid "_Plain text" msgstr "纯文本(_P)" #: ../modules/text-highlight/languages.c:38 msgid "_Assembler" msgstr "汇编器(_A)" #: ../modules/text-highlight/languages.c:43 msgid "_Bash" msgstr "_Bash" #: ../modules/text-highlight/languages.c:54 msgid "_C/C++" msgstr "_C/C++" #: ../modules/text-highlight/languages.c:63 msgid "_C#" msgstr "_C#" #: ../modules/text-highlight/languages.c:68 msgid "_Cascade Style Sheet" msgstr "_CSS" #: ../modules/text-highlight/languages.c:73 msgid "_HTML" msgstr "_HTML" #: ../modules/text-highlight/languages.c:81 msgid "_Java" msgstr "_Java" #: ../modules/text-highlight/languages.c:87 msgid "_JavaScript" msgstr "_JavaScript" #: ../modules/text-highlight/languages.c:93 msgid "_Patch/diff" msgstr "补丁(_P)" #: ../modules/text-highlight/languages.c:99 msgid "_Perl" msgstr "_Perl" #: ../modules/text-highlight/languages.c:110 msgid "_PHP" msgstr "_PHP" #: ../modules/text-highlight/languages.c:123 msgid "_Python" msgstr "_Python" #: ../modules/text-highlight/languages.c:128 msgid "_Ruby" msgstr "_Ruby" #: ../modules/text-highlight/languages.c:135 msgid "_Tcl/Tk" msgstr "_Tcl/Tk" #: ../modules/text-highlight/languages.c:141 msgid "_TeX/LaTeX" msgstr "_TeX/LaTeX" #: ../modules/text-highlight/languages.c:147 msgid "_Vala" msgstr "_Vala" #: ../modules/text-highlight/languages.c:152 msgid "_Visual Basic" msgstr "_Visual Basic" #: ../modules/text-highlight/languages.c:159 msgid "_XML" msgstr "_XML" #: ../modules/text-highlight/languages.c:177 msgid "_ActionScript" msgstr "_ActionScript" #: ../modules/text-highlight/languages.c:182 msgid "_ADA95" msgstr "_ADA95" #: ../modules/text-highlight/languages.c:189 msgid "_ALGOL 68" msgstr "_ALGOL 68" #: ../modules/text-highlight/languages.c:194 msgid "(_G)AWK" msgstr "(_G)AWK" #: ../modules/text-highlight/languages.c:199 msgid "_COBOL" msgstr "_COBOL" #: ../modules/text-highlight/languages.c:204 msgid "_DOS Batch" msgstr "_DOS Batch" #: ../modules/text-highlight/languages.c:209 msgid "_D" msgstr "_D" #: ../modules/text-highlight/languages.c:214 msgid "_Erlang" msgstr "_Erlang" #: ../modules/text-highlight/languages.c:219 msgid "_FORTRAN 77" msgstr "_FORTRAN 77" #: ../modules/text-highlight/languages.c:225 msgid "_FORTRAN 90" msgstr "_FORTRAN 90" #: ../modules/text-highlight/languages.c:230 msgid "_F#" msgstr "_F#" #: ../modules/text-highlight/languages.c:235 msgid "_Go" msgstr "_Go" #: ../modules/text-highlight/languages.c:240 msgid "_Haskell" msgstr "_Haskell" #: ../modules/text-highlight/languages.c:245 msgid "_JSP" msgstr "_JSP" #: ../modules/text-highlight/languages.c:250 msgid "_Lisp" msgstr "_Lisp" #: ../modules/text-highlight/languages.c:258 msgid "_Lotus" msgstr "_Lotus" #: ../modules/text-highlight/languages.c:263 msgid "_Lua" msgstr "_Lua" #: ../modules/text-highlight/languages.c:268 msgid "_Maple" msgstr "_Maple" #: ../modules/text-highlight/languages.c:273 msgid "_Matlab" msgstr "_Matlab" #: ../modules/text-highlight/languages.c:278 msgid "_Maya" msgstr "_Maya" #: ../modules/text-highlight/languages.c:283 msgid "_Oberon" msgstr "_Oberon" #: ../modules/text-highlight/languages.c:288 msgid "_Objective C" msgstr "_Objective C" #: ../modules/text-highlight/languages.c:294 msgid "_OCaml" msgstr "_OCaml" #: ../modules/text-highlight/languages.c:299 msgid "_Octave" msgstr "_Octave" #: ../modules/text-highlight/languages.c:304 msgid "_Object Script" msgstr "_Object Script" #: ../modules/text-highlight/languages.c:309 msgid "_Pascal" msgstr "_Pascal" #: ../modules/text-highlight/languages.c:314 msgid "_POV-Ray" msgstr "_POV-Ray" #: ../modules/text-highlight/languages.c:319 msgid "_Prolog" msgstr "_Prolog" #: ../modules/text-highlight/languages.c:324 msgid "_PostScript" msgstr "_PostScript" #: ../modules/text-highlight/languages.c:329 msgid "_R" msgstr "_R" #: ../modules/text-highlight/languages.c:334 msgid "_RPM Spec" msgstr "_RPM Spec" #: ../modules/text-highlight/languages.c:339 msgid "_Scala" msgstr "_Scala" #: ../modules/text-highlight/languages.c:344 msgid "_Smalltalk" msgstr "_Smalltalk" #: ../modules/text-highlight/languages.c:350 msgid "_TCSH" msgstr "_TCSH" #: ../modules/text-highlight/languages.c:355 msgid "_VHDL" msgstr "_VHDL" #: ../modules/vcard-inline/e-mail-formatter-vcard.c:129 #: ../modules/vcard-inline/e-mail-part-vcard.c:152 msgid "Show F_ull vCard" msgstr "展示完整的 vCard (_U)" #: ../modules/vcard-inline/e-mail-formatter-vcard.c:132 #: ../modules/vcard-inline/e-mail-part-vcard.c:170 msgid "Show Com_pact vCard" msgstr "展示精简版 vCard (_P)" #: ../modules/vcard-inline/e-mail-formatter-vcard.c:157 msgid "Save _To Addressbook" msgstr "保存到地址簿 (_T)" #: ../modules/vcard-inline/e-mail-formatter-vcard.c:178 msgid "There is one other contact." msgstr "有另外 1 个联系人。" #: ../modules/vcard-inline/e-mail-formatter-vcard.c:184 #, c-format msgid "There is %d other contact." msgid_plural "There are %d other contacts." msgstr[0] "有另外 %d 个联系人。" #: ../modules/vcard-inline/e-mail-formatter-vcard.c:209 msgid "Addressbook Contact" msgstr "地址簿联系人" #: ../modules/vcard-inline/e-mail-formatter-vcard.c:210 msgid "Display the part as an addressbook contact" msgstr "将此部分显示为地址簿联系人" #: ../modules/web-inspector/evolution-web-inspector.c:96 msgid "Evolution Web Inspector" msgstr "Evolution Web 检查器" #: ../plugins/attachment-reminder/attachment-reminder.c:121 msgid "_Do not show this message again." msgstr "不再显示此信息(_D)。" #: ../plugins/attachment-reminder/attachment-reminder.c:583 #: ../plugins/templates/templates.c:480 msgid "Keywords" msgstr "关键字" #: ../plugins/attachment-reminder/org-gnome-attachment-reminder.error.xml.h:1 msgid "Message has no attachments" msgstr "信息无附件" #: ../plugins/attachment-reminder/org-gnome-attachment-reminder.error.xml.h:2 msgid "" "Evolution has found some keywords that suggest that this message should " "contain an attachment, but cannot find one." msgstr "Evolution 找到一些关键字表明此信息应当包含附件,但却没发现附件。" #: ../plugins/attachment-reminder/org-gnome-attachment-reminder.error.xml.h:3 msgid "_Add Attachment..." msgstr "添加附件(_A)..." #: ../plugins/attachment-reminder/org-gnome-attachment-reminder.error.xml.h:4 msgid "_Edit Message" msgstr "编辑信息(_E)" #: ../plugins/attachment-reminder/org-gnome-evolution-attachment-reminder.eplug.xml.h:1 msgid "Attachment Reminder" msgstr "附件提醒" #: ../plugins/attachment-reminder/org-gnome-evolution-attachment-reminder.eplug.xml.h:2 msgid "Reminds you when you forgot to add an attachment to a mail message." msgstr "当您忘记为邮件信息添加附件时提醒您。" #: ../plugins/bbdb/bbdb.c:635 ../plugins/bbdb/bbdb.c:644 #: ../plugins/bbdb/org-gnome-evolution-bbdb.eplug.xml.h:1 msgid "Automatic Contacts" msgstr "自动联系人" #. Enable BBDB checkbox #: ../plugins/bbdb/bbdb.c:659 msgid "Create _address book entries when sending mails" msgstr "回复邮件时自动在地址簿中创建联系人项(_a)" #: ../plugins/bbdb/bbdb.c:666 msgid "Select Address book for Automatic Contacts" msgstr "选择自动联系人的地址簿" #: ../plugins/bbdb/bbdb.c:683 msgid "Instant Messaging Contacts" msgstr "即时通讯联系人" #. Enable Gaim Checkbox #: ../plugins/bbdb/bbdb.c:698 msgid "_Synchronize contact info and images from Pidgin buddy list" msgstr "定时从 Pidgin 好友列表中同步联系人信息和图像(_S)" #: ../plugins/bbdb/bbdb.c:705 msgid "Select Address book for Pidgin buddy list" msgstr "选择 Pidgin 好友列表的地址簿" #. Synchronize now button. #: ../plugins/bbdb/bbdb.c:718 msgid "Synchronize with _buddy list now" msgstr "立即同步好友列表(_B)" #: ../plugins/bbdb/org-gnome-evolution-bbdb.eplug.xml.h:2 msgid "BBDB" msgstr "BBDB" #: ../plugins/bbdb/org-gnome-evolution-bbdb.eplug.xml.h:3 msgid "" "Takes the gruntwork out of managing your address book.\n" "\n" "Automatically fills your address book with names and email addresses as you " "reply to messages. Also fills in IM contact information from your buddy " "lists." msgstr "" "让您从繁重的的地址簿管理中解脱出来。\n" "\n" "在您回复邮件时自动用姓名和电子邮件地址填入您的地址簿。同时还将填入您好友列表的即时通讯联系信息。" #: ../plugins/dbx-import/dbx-importer.c:282 msgid "Importing Outlook Express data" msgstr "导入 Outlook Express 数据" #: ../plugins/dbx-import/org-gnome-dbx-import.eplug.xml.h:1 msgid "Outlook DBX import" msgstr "Outlook DBX 导入" #: ../plugins/dbx-import/org-gnome-dbx-import.eplug.xml.h:2 msgid "Outlook Express 5/6 personal folders (.dbx)" msgstr "Outlook 个人文件夹(.dbx)" #: ../plugins/dbx-import/org-gnome-dbx-import.eplug.xml.h:3 msgid "Import Outlook Express messages from DBX file" msgstr "从 DBX 文件中导入 Outlook 邮件" #: ../plugins/email-custom-header/email-custom-header.c:291 msgctxt "email-custom-header-Security" msgid "Security:" msgstr "安全:" #: ../plugins/email-custom-header/email-custom-header.c:295 msgctxt "email-custom-header-Security" msgid "Personal" msgstr "个人" #: ../plugins/email-custom-header/email-custom-header.c:296 msgctxt "email-custom-header-Security" msgid "Unclassified" msgstr "未分类" #: ../plugins/email-custom-header/email-custom-header.c:297 msgctxt "email-custom-header-Security" msgid "Protected" msgstr "受保护的" #: ../plugins/email-custom-header/email-custom-header.c:298 msgctxt "email-custom-header-Security" msgid "Confidential" msgstr "机密" #: ../plugins/email-custom-header/email-custom-header.c:299 msgctxt "email-custom-header-Security" msgid "Secret" msgstr "机密" #: ../plugins/email-custom-header/email-custom-header.c:300 msgctxt "email-custom-header-Security" msgid "Top secret" msgstr "绝密" #: ../plugins/email-custom-header/email-custom-header.c:360 msgctxt "email-custom-header" msgid "None" msgstr "无" #: ../plugins/email-custom-header/email-custom-header.c:536 msgid "_Custom Header" msgstr "自定义信头(_C)" #. To translators: This string is used while adding a new message header to configuration, to specifying the format of the key values #: ../plugins/email-custom-header/email-custom-header.c:806 msgid "" "The format for specifying a Custom Header key value is:\n" "Name of the Custom Header key values separated by \";\"." msgstr "" "指定头和头值的格式为:\n" "自定义头的名称,值,头与头之间以“;”分割。" #: ../plugins/email-custom-header/email-custom-header.c:859 msgid "Key" msgstr "键" #: ../plugins/email-custom-header/email-custom-header.c:876 #: ../plugins/templates/templates.c:489 msgid "Values" msgstr "值" #: ../plugins/email-custom-header/org-gnome-email-custom-header.eplug.xml.h:1 msgid "Custom Header" msgstr "自定义信头" #. For Translators: 'custom header' string is used while adding a new message header to outgoing message, to specify what value for the message header would be added #: ../plugins/email-custom-header/org-gnome-email-custom-header.eplug.xml.h:3 msgid "Add custom headers to outgoing mail messages." msgstr "添加自定义邮件头到发送的邮件信息" #: ../plugins/email-custom-header/org-gnome-email-custom-header.ui.h:1 msgid "Email Custom Header" msgstr "自定义信头" #: ../plugins/external-editor/external-editor.c:112 msgid "Command to be executed to launch the editor: " msgstr "调用编辑器要执行的命令: " #: ../plugins/external-editor/external-editor.c:113 msgid "" "For XEmacs use \"xemacs\"\n" "For Vim use \"gvim -f\"" msgstr "" "对 XEmacs 使用 \"xemacs\"\n" "对 Vim 使用 \"gvim -f\"" #: ../plugins/external-editor/external-editor.c:123 msgid "_Automatically launch when a new mail is edited" msgstr "编辑新邮件时自动启动 (_A)" #: ../plugins/external-editor/external-editor.c:413 #: ../plugins/external-editor/external-editor.c:415 msgid "Compose in External Editor" msgstr "在外部编辑器中写作" #: ../plugins/external-editor/org-gnome-external-editor.eplug.xml.h:1 msgid "External Editor" msgstr "外部编辑器" #: ../plugins/external-editor/org-gnome-external-editor.eplug.xml.h:2 msgid "Use an external editor to compose plain-text mail messages." msgstr "一个使用外部编辑器编写纯文本信息的插件。" #: ../plugins/external-editor/org-gnome-external-editor.error.xml.h:1 msgid "Editor not launchable" msgstr "编辑器不可调用" #: ../plugins/external-editor/org-gnome-external-editor.error.xml.h:2 msgid "" "The external editor set in your plugin preferences cannot be launched. Try " "setting a different editor." msgstr "您在插件首选项中设定的外部编辑器无法调用,请尝试设置另外一个编辑器。" #: ../plugins/external-editor/org-gnome-external-editor.error.xml.h:3 msgid "Cannot create Temporary File" msgstr "无法创建临时保存文件" #: ../plugins/external-editor/org-gnome-external-editor.error.xml.h:4 msgid "" "Evolution is unable to create a temporary file to save your mail. Retry " "later." msgstr "Evolution 无法创建临时文件来保存您的邮件。请稍候再试。" #: ../plugins/external-editor/org-gnome-external-editor.error.xml.h:5 msgid "External editor still running" msgstr "外部编辑器还在运行" #: ../plugins/external-editor/org-gnome-external-editor.error.xml.h:6 msgid "" "The external editor is still running. The mail composer window cannot be " "closed as long as the editor is active." msgstr "外部编辑器仍在运行。邮件编辑器窗口无法在外部文本编辑器活动时关闭。" #: ../plugins/face/face.c:171 ../smime/gui/certificate-manager.c:322 msgid "Unknown error" msgstr "未知错误" #: ../plugins/face/face.c:289 msgid "Select a Face Picture" msgstr "选择一个文件" #: ../plugins/face/face.c:299 msgid "Image files" msgstr "图像文件" #: ../plugins/face/face.c:358 msgid "_Insert Face picture by default" msgstr "按默认方式插入头像图片(_I)" #: ../plugins/face/face.c:371 msgid "Load new _Face picture" msgstr "加载新头像图片(_F)" #: ../plugins/face/face.c:432 msgid "Include _Face" msgstr "包含头像(_F)" #: ../plugins/face/org-gnome-face.eplug.xml.h:2 msgid "Attach a small picture of your face to outgoing messages." msgstr "在发送信息里附加您的小头像。" #: ../plugins/face/org-gnome-face.error.xml.h:1 msgid "Failed Read" msgstr "读取失败" #: ../plugins/face/org-gnome-face.error.xml.h:2 msgid "The file cannot be read" msgstr "这个文件不能被读取" #: ../plugins/face/org-gnome-face.error.xml.h:3 msgid "Invalid Image Size" msgstr "无效的图像大小" #: ../plugins/face/org-gnome-face.error.xml.h:4 msgid "Please select an image of size 48 * 48" msgstr "请选择一个 48x48 的图像" #: ../plugins/face/org-gnome-face.error.xml.h:5 msgid "Not an image" msgstr "不是一个图像" #: ../plugins/face/org-gnome-face.error.xml.h:6 msgid "" "The file you selected does not look like a valid .png image. Error: {0}" msgstr "您选择的文件好象不是有效的 PNG 图像。错误:{0}" #: ../plugins/image-inline/org-gnome-image-inline.eplug.xml.h:1 msgid "Inline Image" msgstr "嵌入图像" #: ../plugins/image-inline/org-gnome-image-inline.eplug.xml.h:2 msgid "View image attachments directly in mail messages." msgstr "直接在邮件信息里查看图像附件" #: ../plugins/mailing-list-actions/mailing-list-actions.c:368 msgid "Get List _Archive" msgstr "获得列表存档(_A)" #: ../plugins/mailing-list-actions/mailing-list-actions.c:370 msgid "Get an archive of the list this message belongs to" msgstr "获取这封信所属邮件列表的存档" #: ../plugins/mailing-list-actions/mailing-list-actions.c:375 msgid "Get List _Usage Information" msgstr "获得列表用法信息(_U)" #: ../plugins/mailing-list-actions/mailing-list-actions.c:377 msgid "Get information about the usage of the list this message belongs to" msgstr "获取这封信所属邮件列表的用法信息" #: ../plugins/mailing-list-actions/mailing-list-actions.c:382 msgid "Contact List _Owner" msgstr "联系列表所有者(_O)" #: ../plugins/mailing-list-actions/mailing-list-actions.c:384 msgid "Contact the owner of the mailing list this message belongs to" msgstr "联系这封信所属邮件列表的所有者" #: ../plugins/mailing-list-actions/mailing-list-actions.c:389 msgid "_Post Message to List" msgstr "投递到列表(_P)" #: ../plugins/mailing-list-actions/mailing-list-actions.c:391 msgid "Post a message to the mailing list this message belongs to" msgstr "给这封信所属的邮件列表投递" #: ../plugins/mailing-list-actions/mailing-list-actions.c:396 msgid "_Subscribe to List" msgstr "订阅列表(_S)" #: ../plugins/mailing-list-actions/mailing-list-actions.c:398 msgid "Subscribe to the mailing list this message belongs to" msgstr "订阅这封信所属的邮件列表" #: ../plugins/mailing-list-actions/mailing-list-actions.c:403 msgid "_Unsubscribe from List" msgstr "退订列表(_U)" #: ../plugins/mailing-list-actions/mailing-list-actions.c:405 msgid "Unsubscribe from the mailing list this message belongs to" msgstr "退订这封信所属的邮件列表" #: ../plugins/mailing-list-actions/mailing-list-actions.c:412 msgid "Mailing _List" msgstr "邮件列表(_L)" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.eplug.xml.h:1 msgid "Mailing List Actions" msgstr "邮件列表操作" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.eplug.xml.h:2 msgid "Perform common mailing list actions (subscribe, unsubscribe, etc.)." msgstr "执行普通邮件列表活动 (订阅,取消订阅,等等)。" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:1 msgid "Action not available" msgstr "没有可用的动作" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:2 msgid "" "This message does not contain the header information required for this " "action." msgstr "这封信不包含此动作所需的头信息。" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:3 msgid "Posting not allowed" msgstr "不允许投递" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:4 msgid "" "Posting to this mailing list is not allowed. Possibly, this is a read-only " "mailing list. Contact the list owner for details." msgstr "不允许投递到此邮件列表。可能这是一个只读的邮件列表。详情请联系列表所有人。" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:5 msgid "Send e-mail message to mailing list?" msgstr "把信息发送到邮件列表吗?" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:6 msgid "" "An e-mail message will be sent to the URL \"{0}\". You can either send the " "message automatically, or see and change it first.\n" "\n" "You should receive an answer from the mailing list shortly after the message " "has been sent." msgstr "" "将向 URL“{0}”发送电子邮件。您可以自动发送此信息,或者先看看再改改。\n" "\n" "稍后这封信发出之后,您应该能够从邮件列表收到响应。" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:9 msgid "_Send message" msgstr "发送信息(_S)" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:10 msgid "_Edit message" msgstr "编辑信息(_E)" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:11 msgid "Malformed header" msgstr "头格式不对" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:12 msgid "" "The {0} header of this message is malformed and could not be processed.\n" "\n" "Header: {1}" msgstr "" "信息的 {0} 头格式不对,无法处理。\n" "\n" "头:{1}" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:15 msgid "No e-mail action" msgstr "无电子邮件动作" #: ../plugins/mailing-list-actions/org-gnome-mailing-list-actions.error.xml.h:16 msgid "" "The action could not be performed. The header for this action did not " "contain any action that could be processed.\n" "\n" "Header: {0}" msgstr "" "无法执行此动作。这意味着此动作所用的头不包含可处理的任何动作。\n" "\n" "头:{0}" #: ../plugins/mail-notification/mail-notification.c:384 #: ../plugins/mail-notification/mail-notification.c:420 #, c-format msgid "You have received %d new message." msgid_plural "You have received %d new messages." msgstr[0] "您收到了 %d 封新邮件。" #. Translators: "From:" is preceding a new mail #. * sender address, like "From: user@example.com" #: ../plugins/mail-notification/mail-notification.c:395 #, c-format msgid "From: %s" msgstr "来自:%s" #. Translators: "Subject:" is preceding a new mail #. * subject, like "Subject: It happened again" #: ../plugins/mail-notification/mail-notification.c:409 #, c-format msgid "Subject: %s" msgstr "主题:%s" #: ../plugins/mail-notification/mail-notification.c:426 msgid "New email in Evolution" msgstr "Evolution 中的新邮件" #. Translators: The '%s' is a mail #. * folder name. (e.g. "Show Inbox") #: ../plugins/mail-notification/mail-notification.c:461 #, c-format msgid "Show %s" msgstr "显示 %s" #: ../plugins/mail-notification/mail-notification.c:663 msgid "_Play sound when a new message arrives" msgstr "新信息到达时播放声音(_P)" #: ../plugins/mail-notification/mail-notification.c:695 msgid "_Beep" msgstr "响铃(_B)" #: ../plugins/mail-notification/mail-notification.c:708 msgid "Use sound _theme" msgstr "使用声音主题(_T)" #: ../plugins/mail-notification/mail-notification.c:727 msgid "Play _file:" msgstr "播放文件(_F):" #: ../plugins/mail-notification/mail-notification.c:736 msgid "Select sound file" msgstr "选择声音文件" #: ../plugins/mail-notification/mail-notification.c:792 msgid "Notify new messages for _Inbox only" msgstr "只通知收件箱中的新信息(_I)" #: ../plugins/mail-notification/mail-notification.c:802 msgid "Show _notification when a new message arrives" msgstr "新信息到达时在通知区显示通知(_N)" #: ../plugins/mail-notification/org-gnome-mail-notification.eplug.xml.h:1 msgid "Mail Notification" msgstr "邮件通知" #: ../plugins/mail-notification/org-gnome-mail-notification.eplug.xml.h:2 msgid "Notifies you when new mail messages arrive." msgstr "当新的邮件信息到达时提示您。" #. To Translators: The full sentence looks like: "Created from a mail by John Doe " #: ../plugins/mail-to-task/mail-to-task.c:232 #, c-format msgid "Created from a mail by %s" msgstr "被%s从邮件创建" #: ../plugins/mail-to-task/mail-to-task.c:616 #, c-format msgid "" "Selected calendar contains event '%s' already. Would you like to edit the " "old event?" msgstr "选定的日历已经包含“%s”事件。您想编辑旧的事件吗?" #: ../plugins/mail-to-task/mail-to-task.c:619 #, c-format msgid "" "Selected task list contains task '%s' already. Would you like to edit the " "old task?" msgstr "选定的任务列表已经包含“%s”任务。您想编辑旧的任务吗?" #: ../plugins/mail-to-task/mail-to-task.c:622 #, c-format msgid "" "Selected memo list contains memo '%s' already. Would you like to edit the " "old memo?" msgstr "选定的备忘列表已经包含“%s”备忘。您想编辑旧的备忘吗?" #: ../plugins/mail-to-task/mail-to-task.c:642 #, c-format msgid "" "You have selected %d mails to be converted to events. Do you really want to " "add them all?" msgid_plural "" "You have selected %d mails to be converted to events. Do you really want to " "add them all?" msgstr[0] "您已选择将 %d 封邮件转换为日历事件,是否全部添加?" #: ../plugins/mail-to-task/mail-to-task.c:649 #, c-format msgid "" "You have selected %d mails to be converted to tasks. Do you really want to " "add them all?" msgid_plural "" "You have selected %d mails to be converted to tasks. Do you really want to " "add them all?" msgstr[0] "您已选择将 %d 封邮件转化为任务,是否全部添加?" #: ../plugins/mail-to-task/mail-to-task.c:656 #, c-format msgid "" "You have selected %d mails to be converted to memos. Do you really want to " "add them all?" msgid_plural "" "You have selected %d mails to be converted to memos. Do you really want to " "add them all?" msgstr[0] "您已选择将 %d 封邮件转化为备忘录,是否全部添加?" #: ../plugins/mail-to-task/mail-to-task.c:677 msgid "Do you wish to continue converting remaining mails?" msgstr "您想继续转换剩下的邮件吗?" #: ../plugins/mail-to-task/mail-to-task.c:753 msgid "[No Summary]" msgstr "[没有概要]" #: ../plugins/mail-to-task/mail-to-task.c:766 msgid "Invalid object returned from a server" msgstr "从一个服务器上返回了无效的对象" #: ../plugins/mail-to-task/mail-to-task.c:821 #, c-format msgid "An error occurred during processing: %s" msgstr "在处理时出现了一个错误:%s" #: ../plugins/mail-to-task/mail-to-task.c:855 #, c-format msgid "Cannot open calendar. %s" msgstr "无法打开日历。%s" #: ../plugins/mail-to-task/mail-to-task.c:862 msgid "" "Selected calendar is read only, thus cannot create event there. Select other " "calendar, please." msgstr "所选日历处于只读状态,因此无法在此处创建事件。请选择其它日历。" #: ../plugins/mail-to-task/mail-to-task.c:865 msgid "" "Selected task list is read only, thus cannot create task there. Select other " "task list, please." msgstr "所选任务列表处于只读状态,因此无法在此处创建任务。请选择其它任务列表。" #: ../plugins/mail-to-task/mail-to-task.c:868 msgid "" "Selected memo list is read only, thus cannot create memo there. Select other " "memo list, please." msgstr "所选把备忘列表处于只读状态,因此无法在此处创建备忘。请选择其它备忘列表。" #: ../plugins/mail-to-task/mail-to-task.c:1203 msgid "No writable calendar is available." msgstr "没有可写的日历。" #: ../plugins/mail-to-task/mail-to-task.c:1280 msgid "Create an _Appointment" msgstr "创建新日程 (_A)" #: ../plugins/mail-to-task/mail-to-task.c:1282 msgid "Create a new event from the selected message" msgstr "从选择的信息中创建一个新的事件" #: ../plugins/mail-to-task/mail-to-task.c:1287 msgid "Create a Mem_o" msgstr "创建一个备忘(_O)" #: ../plugins/mail-to-task/mail-to-task.c:1289 msgid "Create a new memo from the selected message" msgstr "用所选邮件创建新备忘" #: ../plugins/mail-to-task/mail-to-task.c:1294 msgid "Create a _Task" msgstr "创建一个任务(_T)" #: ../plugins/mail-to-task/mail-to-task.c:1296 msgid "Create a new task from the selected message" msgstr "用所选邮件创建新任务" #: ../plugins/mail-to-task/mail-to-task.c:1304 msgid "Create a _Meeting" msgstr "创建一个会议(_M)" #: ../plugins/mail-to-task/mail-to-task.c:1306 msgid "Create a new meeting from the selected message" msgstr "用所选邮件创建新会议" #: ../plugins/mail-to-task/org-gnome-mail-to-task.eplug.xml.h:1 msgid "Convert a mail message to a task." msgstr "转换一个邮件信息成为一个任务。" #: ../plugins/pst-import/org-gnome-pst-import.eplug.xml.h:1 msgid "Outlook PST import" msgstr "Outlook PST 导入" #: ../plugins/pst-import/org-gnome-pst-import.eplug.xml.h:2 msgid "Outlook personal folders (.pst)" msgstr "Outlook 个人文件夹(.pst)" #: ../plugins/pst-import/org-gnome-pst-import.eplug.xml.h:3 msgid "Import Outlook messages from PST file" msgstr "从 PST 文件中导入 Outlook 邮件" #: ../plugins/pst-import/pst-importer.c:530 msgid "_Mail" msgstr "邮件(_M)" #: ../plugins/pst-import/pst-importer.c:559 msgid "Destination folder:" msgstr "目的文件夹:" #: ../plugins/pst-import/pst-importer.c:569 msgid "_Address Book" msgstr "地址簿(_A)" #: ../plugins/pst-import/pst-importer.c:574 msgid "A_ppointments" msgstr "约会(_P)" #: ../plugins/pst-import/pst-importer.c:579 ../views/tasks/galview.xml.h:1 msgid "_Tasks" msgstr "任务(_T)" #: ../plugins/pst-import/pst-importer.c:584 msgid "_Journal entries" msgstr "日记项(_J)" #: ../plugins/pst-import/pst-importer.c:701 msgid "Importing Outlook data" msgstr "导入 Outlook 数据" #: ../plugins/publish-calendar/org-gnome-publish-calendar.eplug.xml.h:1 #: ../plugins/publish-calendar/publish-calendar.c:141 #: ../plugins/publish-calendar/publish-calendar.c:148 msgid "Calendar Publishing" msgstr "日历发布" #: ../plugins/publish-calendar/org-gnome-publish-calendar.eplug.xml.h:2 msgid "Locations" msgstr "位置" #: ../plugins/publish-calendar/org-gnome-publish-calendar.eplug.xml.h:3 msgid "Publish calendars to the web." msgstr "将日历发布到 Web。" #: ../plugins/publish-calendar/publish-calendar.c:217 #: ../plugins/publish-calendar/publish-calendar.c:484 #, c-format msgid "Could not open %s:" msgstr "无法打开 %s:" #: ../plugins/publish-calendar/publish-calendar.c:236 #, c-format msgid "There was an error while publishing to %s:" msgstr "发布到%s时出现错误" #: ../plugins/publish-calendar/publish-calendar.c:242 #, c-format msgid "Publishing to %s finished successfully" msgstr "发布到%s成功完成" #: ../plugins/publish-calendar/publish-calendar.c:290 #, c-format msgid "Mount of %s failed:" msgstr "加载 %s 失败:" #: ../plugins/publish-calendar/publish-calendar.c:649 #: ../plugins/publish-calendar/publish-calendar.ui.h:33 msgid "E_nable" msgstr "启用(_N)" #: ../plugins/publish-calendar/publish-calendar.c:799 msgid "Are you sure you want to remove this location?" msgstr "您确定您想要删除此位置吗?" #. To Translators: This is shown to a user when creation of a new thread, #. * where the publishing should be done, fails. Basically, this shouldn't #. * ever happen, and if so, then something is really wrong. #: ../plugins/publish-calendar/publish-calendar.c:1138 msgid "Could not create publish thread." msgstr "无法创建发布索引。" #: ../plugins/publish-calendar/publish-calendar.c:1148 msgid "_Publish Calendar Information" msgstr "发布日历信息(_P)" #: ../plugins/publish-calendar/publish-calendar.ui.h:1 msgid "iCal" msgstr "iCal" #: ../plugins/publish-calendar/publish-calendar.ui.h:3 msgid "Daily" msgstr "每天" #: ../plugins/publish-calendar/publish-calendar.ui.h:4 msgid "Weekly" msgstr "每周" #: ../plugins/publish-calendar/publish-calendar.ui.h:5 msgid "Manual (via Actions menu)" msgstr "手动(通过动作菜单)" #: ../plugins/publish-calendar/publish-calendar.ui.h:9 msgid "Secure FTP (SFTP)" msgstr "Secure FTP (SFTP)" #: ../plugins/publish-calendar/publish-calendar.ui.h:10 msgid "Public FTP" msgstr "公共 FTP" #: ../plugins/publish-calendar/publish-calendar.ui.h:11 msgid "FTP (with login)" msgstr "FTP(使用登录)" #: ../plugins/publish-calendar/publish-calendar.ui.h:12 msgid "Windows share" msgstr "窗口共享" #: ../plugins/publish-calendar/publish-calendar.ui.h:13 msgid "WebDAV (HTTP)" msgstr "WebDAV (HTTP)" #: ../plugins/publish-calendar/publish-calendar.ui.h:14 msgid "Secure WebDAV (HTTPS)" msgstr "安全 WebDAV (HTTPS)" #: ../plugins/publish-calendar/publish-calendar.ui.h:15 msgid "Custom Location" msgstr "自定义位置" #: ../plugins/publish-calendar/publish-calendar.ui.h:17 msgid "_Publish as:" msgstr "发布为(_P):" #: ../plugins/publish-calendar/publish-calendar.ui.h:18 msgid "Publishing _Frequency:" msgstr "发布频率(_F):" #: ../plugins/publish-calendar/publish-calendar.ui.h:19 msgid "Time _duration:" msgstr "时长(_D):" #: ../plugins/publish-calendar/publish-calendar.ui.h:20 msgid "Sources" msgstr "来源" #: ../plugins/publish-calendar/publish-calendar.ui.h:23 msgid "Service _type:" msgstr "服务类型(_T):" #: ../plugins/publish-calendar/publish-calendar.ui.h:25 msgid "_File:" msgstr "文件(_F):" #: ../plugins/publish-calendar/publish-calendar.ui.h:27 msgid "P_ort:" msgstr "端口(_O):" #: ../plugins/publish-calendar/publish-calendar.ui.h:28 msgid "_Username:" msgstr "用户名(_U):" #: ../plugins/publish-calendar/publish-calendar.ui.h:29 msgid "_Password:" msgstr "密码(_P):" #: ../plugins/publish-calendar/publish-calendar.ui.h:30 msgid "_Remember password" msgstr "记住密码(_R)" #: ../plugins/publish-calendar/publish-calendar.ui.h:31 msgid "Publishing Location" msgstr "发布位置" #: ../plugins/publish-calendar/publish-format-fb.c:100 #: ../plugins/publish-calendar/publish-format-ical.c:103 #, c-format msgid "Invalid source UID '%s'" msgstr "无效的来源 UID '%s'" #: ../plugins/publish-calendar/url-editor-dialog.c:540 msgid "New Location" msgstr "新建位置" #: ../plugins/publish-calendar/url-editor-dialog.c:542 msgid "Edit Location" msgstr "编辑位置" #. Translators: the %F %T is the third argument for a #. * strftime function. It lets you define the formatting #. * of the date in the csv-file. #: ../plugins/save-calendar/csv-format.c:161 msgid "%F %T" msgstr "%F %T" #: ../plugins/save-calendar/csv-format.c:375 msgid "UID" msgstr "UID" #: ../plugins/save-calendar/csv-format.c:377 msgid "Description List" msgstr "描述列表" #: ../plugins/save-calendar/csv-format.c:378 msgid "Categories List" msgstr "类别列表" #: ../plugins/save-calendar/csv-format.c:379 msgid "Comment List" msgstr "注释列表" #: ../plugins/save-calendar/csv-format.c:382 msgid "Contact List" msgstr "联系人列表" #: ../plugins/save-calendar/csv-format.c:383 msgid "Start" msgstr "开始" #: ../plugins/save-calendar/csv-format.c:384 msgid "End" msgstr "结束" #: ../plugins/save-calendar/csv-format.c:385 msgid "Due" msgstr "到期" #: ../plugins/save-calendar/csv-format.c:386 msgid "percent Done" msgstr "完成百分比" #: ../plugins/save-calendar/csv-format.c:388 msgid "URL" msgstr "URL" #: ../plugins/save-calendar/csv-format.c:389 msgid "Attendees List" msgstr "出席者列表" #: ../plugins/save-calendar/csv-format.c:391 msgid "Modified" msgstr "修改日期" #: ../plugins/save-calendar/csv-format.c:564 msgid "A_dvanced options for the CSV format" msgstr "CSV 格式的高级选项(_D)" #: ../plugins/save-calendar/csv-format.c:572 msgid "Prepend a _header" msgstr "预置标头(_H)" #: ../plugins/save-calendar/csv-format.c:581 msgid "_Value delimiter:" msgstr "数值分隔符(_V):" #: ../plugins/save-calendar/csv-format.c:592 msgid "_Record delimiter:" msgstr "记录分隔符(_R):" #: ../plugins/save-calendar/csv-format.c:603 msgid "_Encapsulate values with:" msgstr "封装数值使用(_E):" #: ../plugins/save-calendar/csv-format.c:629 msgid "Comma separated values (.csv)" msgstr "逗号分隔的值(.csv)" #: ../plugins/save-calendar/ical-format.c:184 ../shell/e-shell-utils.c:178 msgid "iCalendar (.ics)" msgstr "iCalendar (.ics)" #: ../plugins/save-calendar/org-gnome-save-calendar.eplug.xml.h:1 msgid "Save Selected" msgstr "保存选中" #: ../plugins/save-calendar/org-gnome-save-calendar.eplug.xml.h:2 msgid "Save a calendar or task list to disk." msgstr "保存一个日历或者任务到磁盘。" #. #. * Translator: the %FT%T is the thirth argument for a strftime function. #. * It lets you define the formatting of the date in the rdf-file. #. * Also check out http://www.w3.org/2002/12/cal/tzd #. * #: ../plugins/save-calendar/rdf-format.c:147 msgid "%FT%T" msgstr "%FT%T" #: ../plugins/save-calendar/rdf-format.c:385 msgid "RDF (.rdf)" msgstr "RDF (.rdf)" #: ../plugins/save-calendar/save-calendar.c:121 msgid "_Format:" msgstr "格式(_F):" #: ../plugins/save-calendar/save-calendar.c:187 msgid "Select destination file" msgstr "选择目的文件" #: ../plugins/save-calendar/save-calendar.c:343 msgid "Save the selected calendar to disk" msgstr "保存选中的日历到磁盘" #: ../plugins/save-calendar/save-calendar.c:374 msgid "Save the selected memo list to disk" msgstr "保存选中的备忘列表到磁盘" #: ../plugins/save-calendar/save-calendar.c:405 msgid "Save the selected task list to disk" msgstr "保存选中的任务列表到磁盘" #: ../plugins/templates/org-gnome-templates.eplug.xml.h:2 msgid "" "Drafts based template plugin. You can use variables like $ORIG[subject], " "$ORIG[from], $ORIG[to] or $ORIG[body], which will be replaced by values from " "an email you are replying to." msgstr "" "基于草稿的模板插件。您可以使用 $ORIG[subject]、$ORIG[from]、$ORIG[to] 或 $ORIG[body] " "这样的变量,它们将替换为您所回复邮件中对应的值。" #: ../plugins/templates/templates.c:1148 msgid "No Title" msgstr "无标题" #: ../plugins/templates/templates.c:1257 msgid "Save as _Template" msgstr "另存为模板(_T)" #: ../plugins/templates/templates.c:1259 msgid "Save as Template" msgstr "另存为模板" #: ../shell/e-shell.c:279 msgid "Preparing to go offline..." msgstr "正在准备离线..." #: ../shell/e-shell.c:332 msgid "Preparing to go online..." msgstr "正在准备上线..." #: ../shell/e-shell.c:413 msgid "Preparing to quit" msgstr "准备退出" #: ../shell/e-shell.c:419 msgid "Preparing to quit..." msgstr "正在准备退出..." #: ../shell/e-shell-content.c:721 ../shell/e-shell-content.c:722 msgid "Searches" msgstr "搜索" #: ../shell/e-shell-content.c:765 msgid "Save Search" msgstr "保存搜索" #. Translators: The "Show:" label precedes a combo box that #. * allows the user to filter the current view. Examples of #. * items that appear in the combo box are "Unread Messages", #. * "Important Messages", or "Active Appointments". #: ../shell/e-shell-searchbar.c:939 msgid "Sho_w:" msgstr "显示(_W):" #. Translators: This is part of the quick search interface. #. * example: Search: [_______________] in [ Current Folder ] #: ../shell/e-shell-searchbar.c:964 msgid "Sear_ch:" msgstr "搜索(_C):" #. Translators: This is part of the quick search interface. #. * example: Search: [_______________] in [ Current Folder ] #: ../shell/e-shell-searchbar.c:1032 msgid "i_n" msgstr "在(_N)" #: ../shell/e-shell-utils.c:175 msgid "vCard (.vcf)" msgstr "vCard (.vff)" #: ../shell/e-shell-utils.c:199 msgid "All Files (*)" msgstr "全部文件(*)" #: ../shell/e-shell-view.c:292 msgid "Saving user interface state" msgstr "保存用户界面状态" #. The translator-credits string is for translators to list #. * per-language credits for translation, displayed in the #. * about dialog. #: ../shell/e-shell-window-actions.c:74 msgid "translator-credits" msgstr "" "Wang Li , 2002, 2003\n" "Funda Wang , 2003, 2004, 2005, 2006\n" "Tao Wei , 2009\n" "Andrew Zheng , 2009\n" "Funda Wang , 2010\n" "Aron Xu , 2010\n" "du baodao , 2010\n" "\n" "Launchpad Contributions:\n" " Aron Xu https://launchpad.net/~happyaron\n" " Bie Dejin https://launchpad.net/~bdejin\n" " Carlos Gong https://launchpad.net/~bfsugxy\n" " Chen Ming https://launchpad.net/~chenming\n" " Cheng Xiaodong https://launchpad.net/~ch-xd\n" " DBLobster https://launchpad.net/~db.lobster\n" " David Gao https://launchpad.net/~davidgao1001\n" " Dingyuan Wang https://launchpad.net/~abcdoyle888\n" " Fenghua Wang https://launchpad.net/~ycerror\n" " Fengyang Zhang https://launchpad.net/~bristlegbfly\n" " Funda Wang https://launchpad.net/~fundawang\n" " Funda Wang https://launchpad.net/~fundawang-gmail\n" " Funda Wang https://launchpad.net/~fundawang0zheng\n" " Heling Yao https://launchpad.net/~hyao\n" " Herry https://launchpad.net/~herrywood\n" " Hu YingJian https://launchpad.net/~penhu2011-u\n" " Justin Yang https://launchpad.net/~yzmsq\n" " Liu Qishuai https://launchpad.net/~lqs\n" " Lix Xu https://launchpad.net/~xuzenglin\n" " Lorz https://launchpad.net/~lorz\n" " Phil https://launchpad.net/~yalongbay\n" " Qiu Haoyu https://launchpad.net/~timothyqiu\n" " Tao Wei https://launchpad.net/~weitao1979\n" " WangZhenyan https://launchpad.net/~zhenyanwang1\n" " Wylmer Wang https://launchpad.net/~wantinghard\n" " Zeta-GSY https://launchpad.net/~msa0011\n" " Zhang YANG https://launchpad.net/~zyang\n" " antipro https://launchpad.net/~antipro-126\n" " dhcxx https://launchpad.net/~dlutxx\n" " fangfangtu https://launchpad.net/~gaoyukun54-deactivatedaccount\n" " marsteel https://launchpad.net/~magang\n" " mike2718 https://launchpad.net/~mike2718\n" " prongs https://launchpad.net/~zgzzx10\n" " sk https://launchpad.net/~skquan\n" " sxdhaoren https://launchpad.net/~hupengnihao\n" " wangwei https://launchpad.net/~313791415-163\n" " zhangmiao https://launchpad.net/~mymzhang\n" " 李炜 https://launchpad.net/~lw124124" #: ../shell/e-shell-window-actions.c:85 msgid "Evolution Website" msgstr "Evolution 网站" #: ../shell/e-shell-window-actions.c:341 msgid "Categories Editor" msgstr "类别编辑器" #: ../shell/e-shell-window-actions.c:672 msgid "Bug Buddy is not installed." msgstr "未安装 Bug Buddy。" #: ../shell/e-shell-window-actions.c:673 msgid "Bug Buddy could not be run." msgstr "无法运行 Bug Buddy。" #: ../shell/e-shell-window-actions.c:853 msgid "Show information about Evolution" msgstr "显示关于 Evolution 的信息" #: ../shell/e-shell-window-actions.c:858 ../shell/e-shell-window-actions.c:872 msgid "_Close Window" msgstr "关闭窗口(_C)" #: ../shell/e-shell-window-actions.c:879 msgid "_Contents" msgstr "目录(_C)" #: ../shell/e-shell-window-actions.c:881 msgid "Open the Evolution User Guide" msgstr "打开 Evolution 用户指南" #: ../shell/e-shell-window-actions.c:907 msgid "I_mport..." msgstr "导入(_M)..." #: ../shell/e-shell-window-actions.c:909 msgid "Import data from other programs" msgstr "从其它程序导入数据" #: ../shell/e-shell-window-actions.c:914 msgid "New _Window" msgstr "新建窗口(_W)" #: ../shell/e-shell-window-actions.c:916 msgid "Create a new window displaying this view" msgstr "创建一个新窗口来显示这个视图" #: ../shell/e-shell-window-actions.c:928 msgid "Available Cate_gories" msgstr "可用类别(_G)" #: ../shell/e-shell-window-actions.c:930 msgid "Manage available categories" msgstr "管理可用类别" #: ../shell/e-shell-window-actions.c:942 msgid "_Quick Reference" msgstr "快速首选项(_Q)" #: ../shell/e-shell-window-actions.c:944 msgid "Show Evolution's shortcut keys" msgstr "显示 Evolution 的快捷键" #: ../shell/e-shell-window-actions.c:951 msgid "Exit the program" msgstr "退出程序" #: ../shell/e-shell-window-actions.c:956 msgid "_Advanced Search..." msgstr "高级搜索(_A)..." #: ../shell/e-shell-window-actions.c:958 msgid "Construct a more advanced search" msgstr "构造一个更高级的搜索" #: ../shell/e-shell-window-actions.c:965 msgid "Clear the current search parameters" msgstr "清楚当前搜索参数" #: ../shell/e-shell-window-actions.c:970 msgid "_Edit Saved Searches..." msgstr "编辑保存的搜索(_E)..." #: ../shell/e-shell-window-actions.c:972 msgid "Manage your saved searches" msgstr "管理您保存的搜索" #: ../shell/e-shell-window-actions.c:979 msgid "Click here to change the search type" msgstr "单击此处更改搜索类型" #: ../shell/e-shell-window-actions.c:984 msgid "_Find Now" msgstr "立即查找(_F)" #. Block the default Ctrl+F. #: ../shell/e-shell-window-actions.c:986 msgid "Execute the current search parameters" msgstr "执行当前搜索参数" #: ../shell/e-shell-window-actions.c:991 msgid "_Save Search..." msgstr "保存搜索(_S)..." #: ../shell/e-shell-window-actions.c:993 msgid "Save the current search parameters" msgstr "保存当前搜索参数" #: ../shell/e-shell-window-actions.c:1005 msgid "Submit _Bug Report..." msgstr "提交错误报告(_B)..." #: ../shell/e-shell-window-actions.c:1007 msgid "Submit a bug report using Bug Buddy" msgstr "用 Bug Buddy 提交错误报告" #: ../shell/e-shell-window-actions.c:1012 msgid "_Work Offline" msgstr "离线工作(_W)" #: ../shell/e-shell-window-actions.c:1014 msgid "Put Evolution into offline mode" msgstr "将 Evolution 转入离线模式" #: ../shell/e-shell-window-actions.c:1019 msgid "_Work Online" msgstr "在线工作(_W)" #: ../shell/e-shell-window-actions.c:1021 msgid "Put Evolution into online mode" msgstr "将 Evolution 转入在线模式" #: ../shell/e-shell-window-actions.c:1049 msgid "Lay_out" msgstr "布局(_O)" #: ../shell/e-shell-window-actions.c:1056 msgid "_New" msgstr "新建(_N)" #: ../shell/e-shell-window-actions.c:1063 msgid "_Search" msgstr "搜索(_S)" #: ../shell/e-shell-window-actions.c:1070 msgid "_Switcher Appearance" msgstr "切换器外观(_S)" #: ../shell/e-shell-window-actions.c:1084 msgid "_Window" msgstr "窗口(_W)" #: ../shell/e-shell-window-actions.c:1113 msgid "Show Side _Bar" msgstr "显示侧边栏(_B)" #: ../shell/e-shell-window-actions.c:1115 msgid "Show the side bar" msgstr "显示侧边栏" #: ../shell/e-shell-window-actions.c:1121 msgid "Show _Buttons" msgstr "显示按钮(_B)" #: ../shell/e-shell-window-actions.c:1123 msgid "Show the switcher buttons" msgstr "显示切换器按钮" #: ../shell/e-shell-window-actions.c:1129 msgid "Show _Status Bar" msgstr "显示状态栏(_S)" #: ../shell/e-shell-window-actions.c:1131 msgid "Show the status bar" msgstr "显示状态栏" #: ../shell/e-shell-window-actions.c:1137 msgid "Show _Tool Bar" msgstr "显示工具栏(_T)" #: ../shell/e-shell-window-actions.c:1139 msgid "Show the tool bar" msgstr "显示工具栏" #: ../shell/e-shell-window-actions.c:1161 msgid "_Icons Only" msgstr "只有图标(_I)" #: ../shell/e-shell-window-actions.c:1163 msgid "Display window buttons with icons only" msgstr "显示只有图标的窗口按钮" #: ../shell/e-shell-window-actions.c:1168 msgid "_Text Only" msgstr "只有文字(_T)" #: ../shell/e-shell-window-actions.c:1170 msgid "Display window buttons with text only" msgstr "显示只有文字的窗口按钮" #: ../shell/e-shell-window-actions.c:1175 msgid "Icons _and Text" msgstr "图标和文字(_A)" #: ../shell/e-shell-window-actions.c:1177 msgid "Display window buttons with icons and text" msgstr "显示带图标和文字的窗口按钮" #: ../shell/e-shell-window-actions.c:1182 msgid "Tool_bar Style" msgstr "工具栏样式(_B)" #: ../shell/e-shell-window-actions.c:1184 msgid "Display window buttons using the desktop toolbar setting" msgstr "使用桌面工具栏设置显示窗口按钮" #: ../shell/e-shell-window-actions.c:1192 msgid "Delete Current View" msgstr "删除当前视图" #: ../shell/e-shell-window-actions.c:1199 msgid "Save Custom View..." msgstr "保存当前视图..." #: ../shell/e-shell-window-actions.c:1201 msgid "Save current custom view" msgstr "保存当前自定义视图" #: ../shell/e-shell-window-actions.c:1208 msgid "C_urrent View" msgstr "当前视图(_U)" #: ../shell/e-shell-window-actions.c:1218 msgid "Custom View" msgstr "当前视图" #: ../shell/e-shell-window-actions.c:1220 msgid "Current view is a customized view" msgstr "当前视图为自定义视图" #: ../shell/e-shell-window-actions.c:1230 msgid "Change the page settings for your current printer" msgstr "更改当前打印机的页面设置" #: ../shell/e-shell-window-actions.c:1591 #, c-format msgid "Switch to %s" msgstr "切换到 %s" #: ../shell/e-shell-window-actions.c:1714 #, c-format msgid "Select view: %s" msgstr "选择视图:%s" #: ../shell/e-shell-window-actions.c:1731 #, c-format msgid "Delete view: %s" msgstr "删除视图:%s" #: ../shell/e-shell-window-actions.c:1825 msgid "Execute these search parameters" msgstr "执行这些搜索参数" #: ../shell/e-shell-window.c:504 msgid "New" msgstr "新建" #. Translators: This is used for the main window title. #: ../shell/e-shell-window-private.c:580 #, c-format msgid "%s - Evolution" msgstr "%s - Evolution" #. Preview/Alpha/Beta version warning message #: ../shell/main.c:183 #, no-c-format msgid "" "Hi. Thanks for taking the time to download this preview release\n" "of the Evolution groupware suite.\n" "\n" "This version of Evolution is not yet complete. It is getting close,\n" "but some features are either unfinished or do not work properly.\n" "\n" "If you want a stable version of Evolution, we urge you to uninstall\n" "this version, and install version %s instead.\n" "\n" "If you find bugs, please report them to us at bugzilla.gnome.org.\n" "This product comes with no warranty and is not intended for\n" "individuals prone to violent fits of anger.\n" "\n" "We hope that you enjoy the results of our hard work, and we\n" "eagerly await your contributions!\n" msgstr "" "您好。感谢您花时间此 Evolution 群件套件的预览版本。\n" "\n" "此版本的 Evolution 尚未完成。我们离最终版本很近了,但是某些特性尚\n" "未完成或者暂不能正常工作。\n" "\n" "如果您希望使用 Evolution 的稳定版本,我们推荐您卸载此版本,然后安\n" "装 %s 版本。\n" "\n" "如果您发现了错误,请在 bugzilla.gnome.org 向我们报告。\n" "此产品没有任何保证,也不推荐个人或对安全有较高要求的部门使用。\n" "\n" "我们希望您尽情享受我们努力工作的成果,我们也热切盼望着您的意见!\n" #: ../shell/main.c:207 msgid "" "Thanks\n" "The Evolution Team\n" msgstr "" "感谢\n" "Evolution 团队\n" #: ../shell/main.c:213 msgid "Do not tell me again" msgstr "不要再通知我" #. Translators: Do NOT translate the five component #. * names, they MUST remain in English! #: ../shell/main.c:302 msgid "" "Start Evolution showing the specified component. Available options are " "'mail', 'calendar', 'contacts', 'tasks', and 'memos'" msgstr "" "启动 Evolution 后显示特定组件。可用的选项有“mail”、“calendar”、“contacts”、“tasks”和“memos”" #: ../shell/main.c:306 msgid "Apply the given geometry to the main window" msgstr "应用给定的几何参数到主窗口" #: ../shell/main.c:310 msgid "Start in online mode" msgstr "以在线模式启动" #: ../shell/main.c:312 msgid "Ignore network availability" msgstr "忽略网络是否可用" #: ../shell/main.c:315 msgid "Forcibly shut down Evolution" msgstr "强制关闭所有 Evolution" #: ../shell/main.c:318 msgid "Disable loading of any plugins." msgstr "禁止载入任何插件。" #: ../shell/main.c:320 msgid "Disable preview pane of Mail, Contacts and Tasks." msgstr "禁用邮件、联系人和任务的预览面板。" #: ../shell/main.c:324 msgid "Import URIs or filenames given as rest of arguments." msgstr "导入 URI 或参数剩余部分文件名" #: ../shell/main.c:326 msgid "Request a running Evolution process to quit" msgstr "请求正在运行的 Evolution 进程退出" #: ../shell/main.c:403 #, c-format msgid "" "Cannot start Evolution. Another Evolution instance may be unresponsive. " "System error: %s" msgstr "无法启动 Evolution,可能由于另一个 Evolution 实例处于无响应状态。系统错误:%s" #: ../shell/main.c:499 ../shell/main.c:504 msgid "- The Evolution PIM and Email Client" msgstr "- Evolution 个人信息管理和邮件客户" #: ../shell/main.c:571 #, c-format msgid "" "%s: --online and --offline cannot be used together.\n" " Run '%s --help' for more information.\n" msgstr "" "%s:不能同时使用 --online 和 --offline。\n" " 运行 %s --help 了解更多信息。\n" #: ../shell/main.c:577 #, c-format msgid "" "%s: --force-online and --offline cannot be used together.\n" " Run '%s --help' for more information.\n" msgstr "" "%s:不能同时使用 --force-online 和 --offline。\n" " 运行 %s --help 了解更多信息。\n" #: ../shell/shell.error.xml.h:2 msgid "Upgrade from previous version failed:" msgstr "从先前版本升级失败:" #: ../shell/shell.error.xml.h:3 msgid "" "{0}\n" "\n" "If you choose to continue, you may not have access to some of your old " "data.\n" msgstr "" "{0}\n" "\n" "如果您选择继续,您可能无法访问您的某些旧数据。\n" #: ../shell/shell.error.xml.h:7 msgid "Continue Anyway" msgstr "无论如何,继续" #: ../shell/shell.error.xml.h:8 msgid "Quit Now" msgstr "现在离开" #: ../shell/shell.error.xml.h:9 msgid "Cannot upgrade directly from version {0}" msgstr "无法直接从 {0} 版本升级?" #: ../shell/shell.error.xml.h:10 msgid "" "Evolution no longer supports upgrading directly from version {0}. However as " "a workaround you might try first upgrading to Evolution 2, and then " "upgrading to Evolution 3." msgstr "Evolution不再支持从版本{0}直接升级。然而您可以尝试先升级到Evolution 2,然后再升级到Evolution 3。" #: ../smime/gui/ca-trust-dialog.c:109 #, c-format msgid "" "Certificate '%s' is a CA certificate.\n" "\n" "Edit trust settings:" msgstr "" "证书“%s”是 CA 证书。\n" "\n" "编辑信任设置:" #: ../smime/gui/certificate-manager.c:73 ../smime/gui/certificate-manager.c:92 #: ../smime/gui/certificate-manager.c:112 msgid "Certificate Name" msgstr "证书名称" #: ../smime/gui/certificate-manager.c:74 ../smime/gui/certificate-manager.c:94 msgid "Issued To Organization" msgstr "授予组织" #: ../smime/gui/certificate-manager.c:75 ../smime/gui/certificate-manager.c:95 msgid "Issued To Organizational Unit" msgstr "授予组织单元" #: ../smime/gui/certificate-manager.c:76 ../smime/gui/certificate-manager.c:96 #: ../smime/gui/certificate-manager.c:114 #: ../smime/gui/certificate-viewer.c:638 ../smime/lib/e-asn1-object.c:134 msgid "Serial Number" msgstr "序列号" #: ../smime/gui/certificate-manager.c:77 ../smime/gui/certificate-manager.c:97 #: ../smime/gui/certificate-manager.c:115 msgid "Purposes" msgstr "用途" #: ../smime/gui/certificate-manager.c:78 ../smime/gui/certificate-manager.c:98 #: ../smime/gui/certificate-manager.c:116 #: ../smime/gui/certificate-viewer.c:640 msgid "Issued By" msgstr "颁发者" #: ../smime/gui/certificate-manager.c:79 ../smime/gui/certificate-manager.c:99 #: ../smime/gui/certificate-manager.c:117 msgid "Issued By Organization" msgstr "颁发组织" #: ../smime/gui/certificate-manager.c:80 #: ../smime/gui/certificate-manager.c:100 #: ../smime/gui/certificate-manager.c:118 msgid "Issued By Organizational Unit" msgstr "颁发组织单元" #: ../smime/gui/certificate-manager.c:81 #: ../smime/gui/certificate-manager.c:101 #: ../smime/gui/certificate-manager.c:119 msgid "Issued" msgstr "已颁发" #: ../smime/gui/certificate-manager.c:82 #: ../smime/gui/certificate-manager.c:102 #: ../smime/gui/certificate-manager.c:120 msgid "Expires" msgstr "到期时间" #: ../smime/gui/certificate-manager.c:83 #: ../smime/gui/certificate-manager.c:103 #: ../smime/gui/certificate-manager.c:121 #: ../smime/gui/certificate-viewer.c:650 msgid "SHA1 Fingerprint" msgstr "SHA1 指纹" #: ../smime/gui/certificate-manager.c:84 #: ../smime/gui/certificate-manager.c:104 #: ../smime/gui/certificate-manager.c:122 #: ../smime/gui/certificate-viewer.c:651 msgid "MD5 Fingerprint" msgstr "MD5 指纹" #: ../smime/gui/certificate-manager.c:93 #: ../smime/gui/certificate-manager.c:113 msgid "Email Address" msgstr "电子邮件地址" #: ../smime/gui/certificate-manager.c:614 msgid "Select a certificate to import..." msgstr "选择要导入的证书..." #: ../smime/gui/certificate-manager.c:628 msgid "All files" msgstr "全部文件" #: ../smime/gui/certificate-manager.c:664 msgid "Failed to import certificate" msgstr "导入证书失败" #: ../smime/gui/certificate-manager.c:1046 msgid "All PKCS12 files" msgstr "全部 PKCS12 文件" #: ../smime/gui/certificate-manager.c:1063 msgid "All email certificate files" msgstr "所有电子邮件证书文件" #: ../smime/gui/certificate-manager.c:1080 msgid "All CA certificate files" msgstr "全部颁证机构文件" #: ../smime/gui/certificate-viewer.c:292 msgid "Not part of certificate" msgstr "不是认证信息的一部分" #: ../smime/gui/certificate-viewer.c:600 msgid "This certificate has been verified for the following uses:" msgstr "此证书已经被下列用户所验证:" #: ../smime/gui/certificate-viewer.c:604 ../smime/lib/e-asn1-object.c:387 msgid "SSL Client Certificate" msgstr "SSL 客户证书" #: ../smime/gui/certificate-viewer.c:609 ../smime/lib/e-asn1-object.c:391 msgid "SSL Server Certificate" msgstr "SSL 服务器证书" #: ../smime/gui/certificate-viewer.c:614 msgid "Email Signer Certificate" msgstr "电子邮件签名者证书" #: ../smime/gui/certificate-viewer.c:619 msgid "Email Recipient Certificate" msgstr "电子邮件收件人证书" #: ../smime/gui/certificate-viewer.c:634 msgid "Issued To" msgstr "颁发给" #: ../smime/gui/certificate-viewer.c:635 ../smime/gui/certificate-viewer.c:641 msgid "Common Name (CN)" msgstr "通用名(CN)" #: ../smime/gui/certificate-viewer.c:636 ../smime/gui/certificate-viewer.c:642 msgid "Organization (O)" msgstr "组织(O)" #: ../smime/gui/certificate-viewer.c:637 ../smime/gui/certificate-viewer.c:643 msgid "Organizational Unit (OU)" msgstr "组织单元(OU)" #: ../smime/gui/certificate-viewer.c:645 msgid "Validity" msgstr "有效性" #: ../smime/gui/certificate-viewer.c:646 msgid "Issued On" msgstr "发行日期" #: ../smime/gui/certificate-viewer.c:647 msgid "Expires On" msgstr "到期" #: ../smime/gui/certificate-viewer.c:649 msgid "Fingerprints" msgstr "指纹" #: ../smime/gui/certificate-viewer.c:671 msgid "Certificate Hierarchy" msgstr "证书层次" #: ../smime/gui/certificate-viewer.c:674 msgid "Certificate Fields" msgstr "证书域" #: ../smime/gui/certificate-viewer.c:677 msgid "Field Value" msgstr "域值" #: ../smime/gui/certificate-viewer.c:679 msgid "Details" msgstr "细节" #: ../smime/gui/cert-trust-dialog.c:153 msgid "" "Because you trust the certificate authority that issued this certificate, " "then you trust the authenticity of this certificate unless otherwise " "indicated here" msgstr "由于您信任颁发此证书的机构,您就将信任此证书的权威性,除非在此声明" #: ../smime/gui/cert-trust-dialog.c:158 msgid "" "Because you do not trust the certificate authority that issued this " "certificate, then you do not trust the authenticity of this certificate " "unless otherwise indicated here" msgstr "由于您不信任颁发此证书的机构,您就将不信任此证书的权威性,除非在此声明" #: ../smime/gui/component.c:56 #, c-format msgid "Enter the password for '%s', token '%s'" msgstr "输入 '%s' 的密码,令牌 '%s'" #: ../smime/gui/component.c:58 #, c-format msgid "Enter the password for '%s'" msgstr "输入“%s”的密码" #. we're setting the password initially #: ../smime/gui/component.c:86 msgid "Enter new password for certificate database" msgstr "输入证书数据库的新密码" #: ../smime/gui/component.c:89 msgid "Enter new password" msgstr "输入新密码" #. FIXME: add serial no, validity date, uses #: ../smime/gui/e-cert-selector.c:122 #, c-format msgid "" "Issued to:\n" " Subject: %s\n" msgstr "" "发行给:\n" " 主题:%s\n" #: ../smime/gui/e-cert-selector.c:123 #, c-format msgid "" "Issued by:\n" " Subject: %s\n" msgstr "" "发行者:\n" " 主题:%s\n" #: ../smime/gui/e-cert-selector.c:176 msgid "Select certificate" msgstr "选择证书" #: ../smime/gui/smime-ui.ui.h:3 msgid "You have certificates from these organizations that identify you:" msgstr "您拥有这些组织证明您身份的证书:" #: ../smime/gui/smime-ui.ui.h:4 msgid "Certificates Table" msgstr "证书表" #. This is a verb, as in "make a backup". #: ../smime/gui/smime-ui.ui.h:7 msgid "_Backup" msgstr "备份(_B)" #: ../smime/gui/smime-ui.ui.h:8 msgid "Backup _All" msgstr "全部备份(_A)" #: ../smime/gui/smime-ui.ui.h:10 msgid "Your Certificates" msgstr "您的证书" #: ../smime/gui/smime-ui.ui.h:11 msgid "You have certificates on file that identify these people:" msgstr "您拥有证明这些人的文件型证书:" #: ../smime/gui/smime-ui.ui.h:12 msgid "Contact Certificates" msgstr "联系人证书" #: ../smime/gui/smime-ui.ui.h:13 msgid "" "You have certificates on file that identify these certificate authorities:" msgstr "您拥有证明这些颁发机构的文件型证书:" #: ../smime/gui/smime-ui.ui.h:14 msgid "Authorities" msgstr "证书颁发机构" #: ../smime/gui/smime-ui.ui.h:15 msgid "Certificate Authority Trust" msgstr "证书颁发机构信任" #: ../smime/gui/smime-ui.ui.h:16 msgid "Trust this CA to identify _websites." msgstr "信任由此 CA 签发证书的网站 (_W)" #: ../smime/gui/smime-ui.ui.h:17 msgid "Trust this CA to identify _email users." msgstr "信任由此 CA 签发证书的邮件用户 (_E)" #: ../smime/gui/smime-ui.ui.h:18 msgid "Trust this CA to identify _software developers." msgstr "信任由此 CA 签发证书的软件开发者 (_S)" #: ../smime/gui/smime-ui.ui.h:19 msgid "" "Before trusting this CA for any purpose, you should examine its certificate " "and its policy and procedures (if available)." msgstr "在信任此 CA 的任何用途之前,您应该先检查该证书及其策略和过程(若可用)。" #: ../smime/gui/smime-ui.ui.h:21 ../smime/lib/e-asn1-object.c:658 msgid "Certificate" msgstr "证书" #: ../smime/gui/smime-ui.ui.h:22 msgid "Certificate details" msgstr "证书细节" #: ../smime/gui/smime-ui.ui.h:23 msgid "Email Certificate Trust Settings" msgstr "电子邮件证书信任设置" #: ../smime/gui/smime-ui.ui.h:24 msgid "Trust the authenticity of this certificate" msgstr "信任此证书的颁发机构" #: ../smime/gui/smime-ui.ui.h:25 msgid "Do not trust the authenticity of this certificate" msgstr "不信任此证书的颁发机构" #: ../smime/gui/smime-ui.ui.h:26 msgid "_Edit CA Trust" msgstr "编辑 CA 信任(_E)" #: ../smime/lib/e-asn1-object.c:95 msgid "Version" msgstr "版本" #: ../smime/lib/e-asn1-object.c:110 msgid "Version 1" msgstr "版本 1" #: ../smime/lib/e-asn1-object.c:113 msgid "Version 2" msgstr "版本 2" #: ../smime/lib/e-asn1-object.c:116 msgid "Version 3" msgstr "版本 3" #: ../smime/lib/e-asn1-object.c:192 msgid "PKCS #1 MD2 With RSA Encryption" msgstr "带 RSA 加密的 PKCS #1 MD2" #: ../smime/lib/e-asn1-object.c:195 msgid "PKCS #1 MD5 With RSA Encryption" msgstr "带 RSA 加密的 PKCS #1 MD5" #: ../smime/lib/e-asn1-object.c:198 msgid "PKCS #1 SHA-1 With RSA Encryption" msgstr "带 RSA 加密的 PKCS #1 SHA-1" #: ../smime/lib/e-asn1-object.c:201 msgid "PKCS #1 SHA-256 With RSA Encryption" msgstr "带 RSA 加密的 PKCS #1 SHA-256" #: ../smime/lib/e-asn1-object.c:204 msgid "PKCS #1 SHA-384 With RSA Encryption" msgstr "带 RSA 加密的 PKCS #1 SHA-384" #: ../smime/lib/e-asn1-object.c:207 msgid "PKCS #1 SHA-512 With RSA Encryption" msgstr "带 RSA 加密的 PKCS #1 SHA-512" #: ../smime/lib/e-asn1-object.c:234 msgid "PKCS #1 RSA Encryption" msgstr "PKCS #1 RSA 加密" #: ../smime/lib/e-asn1-object.c:237 msgid "Certificate Key Usage" msgstr "证书密钥用途" #: ../smime/lib/e-asn1-object.c:240 msgid "Netscape Certificate Type" msgstr "Netscape 证书类型" #: ../smime/lib/e-asn1-object.c:243 msgid "Certificate Authority Key Identifier" msgstr "证书颁发密钥身份" #: ../smime/lib/e-asn1-object.c:255 #, c-format msgid "Object Identifier (%s)" msgstr "对象标识符(%s)" #: ../smime/lib/e-asn1-object.c:306 msgid "Algorithm Identifier" msgstr "算法标识符" #: ../smime/lib/e-asn1-object.c:314 msgid "Algorithm Parameters" msgstr "算法参数" #: ../smime/lib/e-asn1-object.c:336 msgid "Subject Public Key Info" msgstr "主题公钥信息" #: ../smime/lib/e-asn1-object.c:341 msgid "Subject Public Key Algorithm" msgstr "主题公钥算法" #: ../smime/lib/e-asn1-object.c:356 msgid "Subject's Public Key" msgstr "主题公钥" #: ../smime/lib/e-asn1-object.c:378 ../smime/lib/e-asn1-object.c:428 msgid "Error: Unable to process extension" msgstr "错误:无法处理扩展" #: ../smime/lib/e-asn1-object.c:399 ../smime/lib/e-asn1-object.c:411 msgid "Object Signer" msgstr "对象签名者" #: ../smime/lib/e-asn1-object.c:403 msgid "SSL Certificate Authority" msgstr "SSL 证书颁发机构" #: ../smime/lib/e-asn1-object.c:407 msgid "Email Certificate Authority" msgstr "电子邮件证书颁发机构" #: ../smime/lib/e-asn1-object.c:436 msgid "Signing" msgstr "签名" #: ../smime/lib/e-asn1-object.c:440 msgid "Non-repudiation" msgstr "不可抵赖" #: ../smime/lib/e-asn1-object.c:444 msgid "Key Encipherment" msgstr "密钥编码器" #: ../smime/lib/e-asn1-object.c:448 msgid "Data Encipherment" msgstr "数据编码器" #: ../smime/lib/e-asn1-object.c:452 msgid "Key Agreement" msgstr "密钥协议" #: ../smime/lib/e-asn1-object.c:456 msgid "Certificate Signer" msgstr "证书签名者" #: ../smime/lib/e-asn1-object.c:460 msgid "CRL Signer" msgstr "CRL 签名者" #: ../smime/lib/e-asn1-object.c:509 msgid "Critical" msgstr "关键" #: ../smime/lib/e-asn1-object.c:511 ../smime/lib/e-asn1-object.c:514 msgid "Not Critical" msgstr "非关键" #: ../smime/lib/e-asn1-object.c:535 msgid "Extensions" msgstr "扩展" #. Translators: This string is used in Certificate #. * details for fields like Issuer or Subject, which #. * shows the field name on the left and its respective #. * value on the right, both as stored in the #. * certificate itself. You probably do not need to #. * change this string, unless changing the order of #. * name and value. As a result example: #. * "OU = VeriSign Trust Network" #: ../smime/lib/e-asn1-object.c:615 #, c-format msgid "%s = %s" msgstr "%s = %s" #: ../smime/lib/e-asn1-object.c:672 ../smime/lib/e-asn1-object.c:807 msgid "Certificate Signature Algorithm" msgstr "证书签名算法" #: ../smime/lib/e-asn1-object.c:681 msgid "Issuer" msgstr "发行者" #: ../smime/lib/e-asn1-object.c:735 msgid "Issuer Unique ID" msgstr "发行者唯一 ID" #: ../smime/lib/e-asn1-object.c:754 msgid "Subject Unique ID" msgstr "主题唯一 ID" #: ../smime/lib/e-asn1-object.c:813 msgid "Certificate Signature Value" msgstr "证书签名值" #: ../smime/lib/e-cert.c:201 ../smime/lib/e-cert.c:213 msgid "%d/%m/%Y" msgstr "%Y-%m-%d" #. x509 certificate usage types #: ../smime/lib/e-cert.c:392 msgid "Sign" msgstr "签名" #: ../smime/lib/e-cert.c:393 msgid "Encrypt" msgstr "加密" #: ../smime/lib/e-cert-db.c:864 msgid "Certificate already exists" msgstr "证书已经存在" #: ../smime/lib/e-pkcs12.c:199 msgid "PKCS12 File Password" msgstr "PKCS12 文件密码" #: ../smime/lib/e-pkcs12.c:200 msgid "Enter password for PKCS12 file:" msgstr "输入 PKCS12 文件的密码:" #: ../smime/lib/e-pkcs12.c:307 msgid "Imported Certificate" msgstr "导入的证书" #: ../views/addressbook/galview.xml.h:1 msgid "_Address Cards" msgstr "地址名片(_A)" #: ../views/addressbook/galview.xml.h:2 ../views/calendar/galview.xml.h:5 msgid "_List View" msgstr "列表视图(_L)" #: ../views/addressbook/galview.xml.h:3 msgid "By _Company" msgstr "按公司(_C)" #: ../views/calendar/galview.xml.h:1 msgid "_Day View" msgstr "日视图(_D)" #: ../views/calendar/galview.xml.h:2 msgid "_Work Week View" msgstr "工作日视图(_W)" #: ../views/calendar/galview.xml.h:3 msgid "W_eek View" msgstr "周视图(_E)" #: ../views/calendar/galview.xml.h:4 msgid "_Month View" msgstr "月视图(_M)" #: ../views/mail/galview.xml.h:1 msgid "_Messages" msgstr "信息(_M)" #: ../views/mail/galview.xml.h:2 msgid "As _Sent Folder" msgstr "作为已发文件夹(_S)" #: ../views/mail/galview.xml.h:3 msgid "By Su_bject" msgstr "按主题(_B)" #: ../views/mail/galview.xml.h:4 msgid "By Se_nder" msgstr "按发件人(_N)" #: ../views/mail/galview.xml.h:5 msgid "By S_tatus" msgstr "按状态(_T)" #: ../views/mail/galview.xml.h:6 msgid "By _Follow Up Flag" msgstr "按跟随标志(_F)" #: ../views/mail/galview.xml.h:7 msgid "For _Wide View" msgstr "对宽屏视图(_W)" #: ../views/mail/galview.xml.h:8 msgid "As Sent Folder for Wi_de View" msgstr "对宽屏视图显示已发文件夹(_D)" #: ../views/memos/galview.xml.h:1 msgid "_Memos" msgstr "备忘(_M)" #: ../views/tasks/galview.xml.h:2 msgid "With _Due Date" msgstr "到期日期(_D)" #: ../views/tasks/galview.xml.h:3 msgid "With _Status" msgstr "状态(_S)" language-pack-gnome-zh-hans-base/data/zh_CN/LC_MESSAGES/evolution-data-server-3.10.po0000644000000000000000000054252412321561507024717 0ustar # Simplified Chinese translation to evolution-data-server. # Evolution-data-server 的简体中文翻译 # Copyright (C) 2003 Ximian Inc. # Copyright (C) 2009, 2010, 2011 Free Software Foundation. # This file is distributed under the same license as the evolution-data-server package. # Wang Li , 2002, 2003. # Funda Wang , 2003, 2005. # Neo Willis , 2003. # Partly comes from Sun_l10n group, 2003. # Yang Zhang , 2008. # lainme , 2010. # Tao Wang , 2010. # Dean Lee , 2010. # Lele Long , 2011. # Wylmer Wang , 2011. # YunQiang Su , 2011. # Aron Xu , 2009, 2012. # msgid "" msgstr "" "Project-Id-Version: evolution-data-server master\n" "Report-Msgid-Bugs-To: " "http://bugzilla.gnome.org/enter_bug.cgi?product=evolution-data-" "server&keywords=I18N+L10N&component=Misc.\n" "POT-Creation-Date: 2014-02-17 13:03+0000\n" "PO-Revision-Date: 2014-04-01 11:42+0000\n" "Last-Translator: Luo Lei \n" "Language-Team: Chinese (simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Launchpad-Export-Date: 2014-04-10 11:48+0000\n" "X-Generator: Launchpad (build 16976)\n" "Language: zh_CN\n" #: ../addressbook/backends/file/e-book-backend-file.c:115 #, c-format msgid "Failed to remove file '%s': %s" msgstr "删除文件“%s”失败:%s" #: ../addressbook/backends/file/e-book-backend-file.c:143 #, c-format msgid "Failed to make directory %s: %s" msgstr "创建目录“%s”失败:%s" #: ../addressbook/backends/file/e-book-backend-file.c:394 #, c-format msgid "Failed to create hardlink for resource '%s': %s" msgstr "创建资源“%s”的硬链接失败:%s" #: ../addressbook/backends/file/e-book-backend-file.c:499 #: ../addressbook/backends/file/e-book-backend-file.c:1135 msgid "No UID in the contact" msgstr "联系人没有 UID" #: ../addressbook/backends/file/e-book-backend-file.c:773 #, c-format msgid "Conflicting UIDs found in added contacts" msgstr "增加的联系人有 UID 冲突" #: ../addressbook/backends/file/e-book-backend-file.c:881 msgid "Loading..." msgstr "正在载入..." #: ../addressbook/backends/file/e-book-backend-file.c:883 #: ../addressbook/backends/ldap/e-book-backend-ldap.c:4424 msgid "Searching..." msgstr "正在搜索..." #: ../addressbook/backends/file/e-book-backend-file.c:1164 #, c-format msgid "Tried to modify contact '%s' with out of sync revision" msgstr "试图修改尚未同步的联系人“%s”" #: ../addressbook/backends/file/e-book-backend-file.c:1300 #: ../addressbook/backends/file/e-book-backend-file.c:1369 #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:2707 #, c-format msgid "Contact '%s' not found" msgstr "未找到联系人“%s”" #: ../addressbook/backends/file/e-book-backend-file.c:1411 #: ../addressbook/backends/file/e-book-backend-file.c:1478 #, c-format msgid "Query '%s' not supported" msgstr "不支持查询“%s”" #: ../addressbook/backends/file/e-book-backend-file.c:1420 #: ../addressbook/backends/file/e-book-backend-file.c:1487 #, c-format msgid "Invalid Query '%s'" msgstr "无效的查询“%s”" #: ../addressbook/backends/file/e-book-backend-file.c:1671 #, c-format msgid "Failed to rename old database from '%s' to '%s': %s" msgstr "数据库“%s”重命名为“%s”:%s失败" #: ../addressbook/backends/file/e-book-backend-file-migrate-bdb.c:149 #: ../addressbook/backends/ldap/e-book-backend-ldap.c:1245 #: ../addressbook/backends/ldap/e-book-backend-ldap.c:4319 #: ../addressbook/backends/webdav/e-book-backend-webdav.c:383 #: ../addressbook/backends/webdav/e-book-backend-webdav.c:825 #: ../addressbook/libebook-contacts/e-book-contacts-types.c:35 #: ../addressbook/libebook-contacts/e-phone-number.c:58 #: ../addressbook/libedata-book/e-book-backend-sexp.c:874 #: ../calendar/backends/caldav/e-cal-backend-caldav.c:576 #: ../calendar/backends/caldav/e-cal-backend-caldav.c:607 #: ../calendar/backends/caldav/e-cal-backend-caldav.c:619 #: ../calendar/libecal/e-cal.c:2335 ../calendar/libecal/e-cal-client.c:268 #: ../camel/camel-imapx-command.c:650 ../libedataserver/e-client.c:177 msgid "Unknown error" msgstr "未知的错误" #. Query for new contacts asynchronously #: ../addressbook/backends/google/e-book-backend-google.c:833 msgid "Querying for updated contacts…" msgstr "查询更新的联系人..." #. Run the query asynchronously #: ../addressbook/backends/google/e-book-backend-google.c:985 msgid "Querying for updated groups…" msgstr "查询更新的组..." #: ../addressbook/backends/google/e-book-backend-google.c:1673 #: ../addressbook/backends/ldap/e-book-backend-ldap.c:5055 #: ../addressbook/backends/webdav/e-book-backend-webdav.c:1299 msgid "The backend does not support bulk additions" msgstr "后端不支持批量添加" #: ../addressbook/backends/google/e-book-backend-google.c:1822 #: ../addressbook/backends/ldap/e-book-backend-ldap.c:5191 #: ../addressbook/backends/webdav/e-book-backend-webdav.c:1401 msgid "The backend does not support bulk modifications" msgstr "后端不支持批量修改" #: ../addressbook/backends/google/e-book-backend-google.c:2022 #: ../addressbook/backends/webdav/e-book-backend-webdav.c:1493 msgid "The backend does not support bulk removals" msgstr "后端不支持批量删除" #: ../addressbook/backends/google/e-book-backend-google.c:2148 msgid "Loading…" msgstr "正在载入..." #. System Group: My Contacts #: ../addressbook/backends/google/e-book-google-utils.c:1620 #: ../services/evolution-source-registry/builtin/system-address-book.source.in.h:1 #: ../services/evolution-source-registry/builtin/system-calendar.source.in.h:1 #: ../services/evolution-source-registry/builtin/system-memo-list.source.in.h:1 #: ../services/evolution-source-registry/builtin/system-task-list.source.in.h:1 msgid "Personal" msgstr "个人" #. System Group: Friends #: ../addressbook/backends/google/e-book-google-utils.c:1622 msgid "Friends" msgstr "朋友" #. System Group: Family #: ../addressbook/backends/google/e-book-google-utils.c:1624 msgid "Family" msgstr "家人" #. System Group: Coworkers #: ../addressbook/backends/google/e-book-google-utils.c:1626 msgid "Coworkers" msgstr "同事" #. Translators: An error message shown to a user when trying to do an #. * operation on the LDAP address book which is not connected to the server #: ../addressbook/backends/ldap/e-book-backend-ldap.c:174 msgid "Not connected" msgstr "未连接。" #: ../addressbook/backends/ldap/e-book-backend-ldap.c:973 msgid "Failed to bind using either v3 or v2 binds" msgstr "用 v3 或 v2 绑定失败" #: ../addressbook/backends/ldap/e-book-backend-ldap.c:1096 msgid "Reconnecting to LDAP server..." msgstr "正在重新连接 LDAP 服务器..." #: ../addressbook/backends/ldap/e-book-backend-ldap.c:1226 msgid "Invalid DN syntax" msgstr "无效 DN 语法" #: ../addressbook/backends/ldap/e-book-backend-ldap.c:1242 #: ../addressbook/backends/ldap/e-book-backend-ldap.c:4318 #, c-format msgid "LDAP error 0x%x (%s)" msgstr "LDAP 错误 0x%x (%s)" #: ../addressbook/backends/ldap/e-book-backend-ldap.c:1854 #: ../addressbook/backends/ldap/e-book-backend-ldap.c:2177 #, c-format msgid "%s: NULL returned from ldap_first_entry" msgstr "%s: ldap_first_entry 返回 NULL" #: ../addressbook/backends/ldap/e-book-backend-ldap.c:2107 #: ../addressbook/backends/ldap/e-book-backend-ldap.c:2235 #, c-format msgid "%s: Unhandled result type %d returned" msgstr "%s:返回了未处理的结果类型%d" #: ../addressbook/backends/ldap/e-book-backend-ldap.c:2368 #: ../addressbook/backends/ldap/e-book-backend-ldap.c:2495 #, c-format msgid "%s: Unhandled search result type %d returned" msgstr "%s:返回了未处理的搜索结果类型%d" #: ../addressbook/backends/ldap/e-book-backend-ldap.c:4267 msgid "Receiving LDAP search results..." msgstr "正在接收 LDAP 的搜索结果..." #: ../addressbook/backends/ldap/e-book-backend-ldap.c:4446 msgid "Error performing search" msgstr "执行搜索错误" #: ../addressbook/backends/ldap/e-book-backend-ldap.c:4574 #, c-format msgid "Downloading contacts (%d)..." msgstr "正在下载联系人(%d)..." #: ../addressbook/backends/ldap/e-book-backend-ldap.c:5138 msgid "Adding contact to LDAP server..." msgstr "正在将联系人添加到 LDAP 服务器..." #: ../addressbook/backends/ldap/e-book-backend-ldap.c:5213 msgid "Modifying contact from LDAP server..." msgstr "正在修改 LDAP 服务器上的联系人..." #: ../addressbook/backends/ldap/e-book-backend-ldap.c:5279 msgid "Removing contact from LDAP server..." msgstr "正在从 LDAP 服务器删除联系人..." #: ../addressbook/backends/ldap/e-book-backend-ldap.c:5668 #, c-format msgid "Failed to get the DN for user '%s'" msgstr "无法获取用户“%s”的 DN" #: ../addressbook/backends/webdav/e-book-backend-webdav.c:804 msgid "Loading Addressbook summary..." msgstr "正在加载地址概要..." #: ../addressbook/backends/webdav/e-book-backend-webdav.c:822 #, c-format msgid "PROPFIND on webdav failed with HTTP status %d (%s)" msgstr "Webdav 的 PROPFIND 执行失败,HTTP 状态码 %d (%s)" #: ../addressbook/backends/webdav/e-book-backend-webdav.c:841 msgid "No response body in webdav PROPFIND result" msgstr "在 webdav PROPFIND 结果中无回应的主体部分" #: ../addressbook/backends/webdav/e-book-backend-webdav.c:883 #, c-format msgid "Loading Contacts (%d%%)" msgstr "正在下载联系人 (%d%%)" #: ../addressbook/backends/webdav/e-book-backend-webdav.c:1221 msgid "Cannot transform SoupURI to string" msgstr "无法将 SoupURI 转换为字符串" #: ../addressbook/backends/webdav/e-book-backend-webdav.c:1332 #, c-format msgid "Create resource '%s' failed with HTTP status %d (%s)" msgstr "创建资源“%s”失败, HTTP 状态码 %d(%s)" #: ../addressbook/backends/webdav/e-book-backend-webdav.c:1430 msgid "Contact on server changed -> not modifying" msgstr "服务器上已经修改的联系人 -> 不再修改" #: ../addressbook/backends/webdav/e-book-backend-webdav.c:1438 #, c-format msgid "Modify contact failed with HTTP status %d (%s)" msgstr "修改联系人失败, HTTP 状态码 %d (%s)" #: ../addressbook/backends/webdav/e-book-backend-webdav.c:1514 #, c-format msgid "DELETE failed with HTTP status %d" msgstr "DELETE 失败, HTTP 状态码 (%d)" #: ../addressbook/libebook-contacts/e-book-contacts-types.c:24 msgid "No such book" msgstr "没有该地址簿" #: ../addressbook/libebook-contacts/e-book-contacts-types.c:26 #: ../addressbook/libedata-book/e-data-book.c:346 msgid "Contact not found" msgstr "找不到联系人" #: ../addressbook/libebook-contacts/e-book-contacts-types.c:28 #: ../addressbook/libedata-book/e-data-book.c:347 msgid "Contact ID already exists" msgstr "联系人 ID 已经存在" #: ../addressbook/libebook-contacts/e-book-contacts-types.c:30 msgid "No such source" msgstr "没有该源" #: ../addressbook/libebook-contacts/e-book-contacts-types.c:32 #: ../addressbook/libedata-book/e-data-book.c:363 msgid "No space" msgstr "没有空间" #. Dummy row as EContactField starts from 1 #: ../addressbook/libebook-contacts/e-contact.c:123 msgid "Unique ID" msgstr "唯一的 ID" #. FILE_AS is not really a structured field - we use a getter/setter #. * so we can generate its value if necessary in the getter #. Translators: This is an EContact field description, in this case it's a #. * preferred user's description (or display name) of the contact. Note 'File' is a verb here. #: ../addressbook/libebook-contacts/e-contact.c:128 msgid "File Under" msgstr "存档于" #. URI of the book to which the contact belongs to #: ../addressbook/libebook-contacts/e-contact.c:130 msgid "Book UID" msgstr "地址簿 UID" #. Name fields #. FN isn't really a structured field - we use a getter/setter #. * so we can set the N property (since evo 1.4 works fine with #. * vcards that don't even have a N attribute. *sigh*) #: ../addressbook/libebook-contacts/e-contact.c:136 msgid "Full Name" msgstr "全名" #: ../addressbook/libebook-contacts/e-contact.c:137 msgid "Given Name" msgstr "名" #: ../addressbook/libebook-contacts/e-contact.c:138 msgid "Family Name" msgstr "姓" #: ../addressbook/libebook-contacts/e-contact.c:139 msgid "Nickname" msgstr "昵称" #. Email fields #: ../addressbook/libebook-contacts/e-contact.c:142 msgid "Email 1" msgstr "电子邮件 1" #: ../addressbook/libebook-contacts/e-contact.c:143 msgid "Email 2" msgstr "电子邮件 2" #: ../addressbook/libebook-contacts/e-contact.c:144 msgid "Email 3" msgstr "电子邮件 3" #: ../addressbook/libebook-contacts/e-contact.c:145 msgid "Email 4" msgstr "电子邮件 4" #: ../addressbook/libebook-contacts/e-contact.c:147 msgid "Mailer" msgstr "邮件程序" #. Address Labels #: ../addressbook/libebook-contacts/e-contact.c:150 msgid "Home Address Label" msgstr "家庭地址标签" #: ../addressbook/libebook-contacts/e-contact.c:151 msgid "Work Address Label" msgstr "工作地址标签" #: ../addressbook/libebook-contacts/e-contact.c:152 msgid "Other Address Label" msgstr "其它地址标签" #. Phone fields #: ../addressbook/libebook-contacts/e-contact.c:155 msgid "Assistant Phone" msgstr "助手电话" #: ../addressbook/libebook-contacts/e-contact.c:156 msgid "Business Phone" msgstr "商务电话" #: ../addressbook/libebook-contacts/e-contact.c:157 msgid "Business Phone 2" msgstr "商务电话 2" #: ../addressbook/libebook-contacts/e-contact.c:158 msgid "Business Fax" msgstr "商务传真" #: ../addressbook/libebook-contacts/e-contact.c:159 msgid "Callback Phone" msgstr "回拨电话" #: ../addressbook/libebook-contacts/e-contact.c:160 msgid "Car Phone" msgstr "车载电话" #: ../addressbook/libebook-contacts/e-contact.c:161 msgid "Company Phone" msgstr "公司电话" #: ../addressbook/libebook-contacts/e-contact.c:162 msgid "Home Phone" msgstr "家庭电话" #: ../addressbook/libebook-contacts/e-contact.c:163 msgid "Home Phone 2" msgstr "家庭电话 2" #: ../addressbook/libebook-contacts/e-contact.c:164 msgid "Home Fax" msgstr "家庭传真" #: ../addressbook/libebook-contacts/e-contact.c:165 msgid "ISDN" msgstr "ISDN" #: ../addressbook/libebook-contacts/e-contact.c:166 msgid "Mobile Phone" msgstr "移动电话" #: ../addressbook/libebook-contacts/e-contact.c:167 msgid "Other Phone" msgstr "其它电话" #: ../addressbook/libebook-contacts/e-contact.c:168 msgid "Other Fax" msgstr "其它传真" #: ../addressbook/libebook-contacts/e-contact.c:169 msgid "Pager" msgstr "寻呼机" #: ../addressbook/libebook-contacts/e-contact.c:170 msgid "Primary Phone" msgstr "主要电话" #: ../addressbook/libebook-contacts/e-contact.c:171 msgid "Radio" msgstr "收音机" #: ../addressbook/libebook-contacts/e-contact.c:172 msgid "Telex" msgstr "电传" #. To translators: TTY is Teletypewriter #: ../addressbook/libebook-contacts/e-contact.c:174 msgid "TTY" msgstr "TTY" #. Organizational fields #: ../addressbook/libebook-contacts/e-contact.c:177 msgid "Organization" msgstr "组织" #: ../addressbook/libebook-contacts/e-contact.c:178 msgid "Organizational Unit" msgstr "组织单元" #: ../addressbook/libebook-contacts/e-contact.c:179 msgid "Office" msgstr "办公室" #: ../addressbook/libebook-contacts/e-contact.c:180 msgid "Title" msgstr "头衔" #: ../addressbook/libebook-contacts/e-contact.c:181 msgid "Role" msgstr "角色" #: ../addressbook/libebook-contacts/e-contact.c:182 msgid "Manager" msgstr "经理" #: ../addressbook/libebook-contacts/e-contact.c:183 msgid "Assistant" msgstr "助手" #. Web fields #: ../addressbook/libebook-contacts/e-contact.c:186 msgid "Homepage URL" msgstr "个人主页 URL" #: ../addressbook/libebook-contacts/e-contact.c:187 msgid "Weblog URL" msgstr "网络日记 URL" #. Contact categories #: ../addressbook/libebook-contacts/e-contact.c:190 msgid "Categories" msgstr "类别" #. Collaboration fields #: ../addressbook/libebook-contacts/e-contact.c:193 msgid "Calendar URI" msgstr "日历 URI" #: ../addressbook/libebook-contacts/e-contact.c:194 msgid "Free/Busy URL" msgstr "空闲/繁忙 URL" #: ../addressbook/libebook-contacts/e-contact.c:195 msgid "ICS Calendar" msgstr "ICS 日历" #: ../addressbook/libebook-contacts/e-contact.c:196 msgid "Video Conferencing URL" msgstr "视频会议 URL" #. Misc fields #: ../addressbook/libebook-contacts/e-contact.c:199 msgid "Spouse's Name" msgstr "配偶姓名" #: ../addressbook/libebook-contacts/e-contact.c:200 msgid "Note" msgstr "注释" #. Instant messaging fields #: ../addressbook/libebook-contacts/e-contact.c:203 msgid "AIM Home Screen Name 1" msgstr "AIM 家庭屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:204 msgid "AIM Home Screen Name 2" msgstr "AIM 家庭屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:205 msgid "AIM Home Screen Name 3" msgstr "AIM 家庭屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:206 msgid "AIM Work Screen Name 1" msgstr "AIM 工作屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:207 msgid "AIM Work Screen Name 2" msgstr "AIM 工作屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:208 msgid "AIM Work Screen Name 3" msgstr "AIM 工作屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:209 msgid "GroupWise Home Screen Name 1" msgstr "GroupWise 家庭屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:210 msgid "GroupWise Home Screen Name 2" msgstr "GroupWise 家庭屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:211 msgid "GroupWise Home Screen Name 3" msgstr "GroupWise 家庭屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:212 msgid "GroupWise Work Screen Name 1" msgstr "GroupWise 工作屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:213 msgid "GroupWise Work Screen Name 2" msgstr "GroupWise 工作屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:214 msgid "GroupWise Work Screen Name 3" msgstr "GroupWise 工作屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:215 msgid "Jabber Home ID 1" msgstr "Jabber 家庭 ID 1" #: ../addressbook/libebook-contacts/e-contact.c:216 msgid "Jabber Home ID 2" msgstr "Jabber 家庭 ID 2" #: ../addressbook/libebook-contacts/e-contact.c:217 msgid "Jabber Home ID 3" msgstr "Jabber 家庭 ID 3" #: ../addressbook/libebook-contacts/e-contact.c:218 msgid "Jabber Work ID 1" msgstr "Jabber 工作 ID 1" #: ../addressbook/libebook-contacts/e-contact.c:219 msgid "Jabber Work ID 2" msgstr "Jabber 工作 ID 2" #: ../addressbook/libebook-contacts/e-contact.c:220 msgid "Jabber Work ID 3" msgstr "Jabber 工作 ID 3" #: ../addressbook/libebook-contacts/e-contact.c:221 msgid "Yahoo! Home Screen Name 1" msgstr "Yahoo! 家庭屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:222 msgid "Yahoo! Home Screen Name 2" msgstr "Yahoo! 家庭屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:223 msgid "Yahoo! Home Screen Name 3" msgstr "Yahoo! 家庭屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:224 msgid "Yahoo! Work Screen Name 1" msgstr "Yahoo! 工作屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:225 msgid "Yahoo! Work Screen Name 2" msgstr "Yahoo! 工作屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:226 msgid "Yahoo! Work Screen Name 3" msgstr "Yahoo! 工作屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:227 msgid "MSN Home Screen Name 1" msgstr "MSN 家庭屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:228 msgid "MSN Home Screen Name 2" msgstr "MSN 家庭屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:229 msgid "MSN Home Screen Name 3" msgstr "MSN 家庭屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:230 msgid "MSN Work Screen Name 1" msgstr "MSN 工作屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:231 msgid "MSN Work Screen Name 2" msgstr "MSN 工作屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:232 msgid "MSN Work Screen Name 3" msgstr "MSN 工作屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:233 msgid "ICQ Home ID 1" msgstr "ICQ 家庭 ID 1" #: ../addressbook/libebook-contacts/e-contact.c:234 msgid "ICQ Home ID 2" msgstr "ICQ 家庭 ID 2" #: ../addressbook/libebook-contacts/e-contact.c:235 msgid "ICQ Home ID 3" msgstr "ICQ 家庭 ID 3" #: ../addressbook/libebook-contacts/e-contact.c:236 msgid "ICQ Work ID 1" msgstr "ICQ 工作 ID 1" #: ../addressbook/libebook-contacts/e-contact.c:237 msgid "ICQ Work ID 2" msgstr "ICQ 工作 ID 2" #: ../addressbook/libebook-contacts/e-contact.c:238 msgid "ICQ Work ID 3" msgstr "ICQ 工作 ID 3" #. Last modified time #: ../addressbook/libebook-contacts/e-contact.c:241 msgid "Last Revision" msgstr "上次修订" #. Translators: This is an EContact field description, in this case it's a #. * virtual field, which returns either name of the contact or the organization #. * name, recognized by multiple other fields, where the first filled is used. #: ../addressbook/libebook-contacts/e-contact.c:245 msgid "Name or Org" msgstr "名称或组织" #. Address fields #: ../addressbook/libebook-contacts/e-contact.c:248 msgid "Address List" msgstr "地址列表" #: ../addressbook/libebook-contacts/e-contact.c:249 msgid "Home Address" msgstr "家庭地址" #: ../addressbook/libebook-contacts/e-contact.c:250 msgid "Work Address" msgstr "办公地址" #: ../addressbook/libebook-contacts/e-contact.c:251 msgid "Other Address" msgstr "其它地址" #. Contact categories #: ../addressbook/libebook-contacts/e-contact.c:254 msgid "Category List" msgstr "类别列表" #. Photo/Logo #: ../addressbook/libebook-contacts/e-contact.c:257 msgid "Photo" msgstr "照片" #: ../addressbook/libebook-contacts/e-contact.c:258 msgid "Logo" msgstr "标志" #. Translators: This is an EContact field description, in this case it's a name #. * of the contact, as specified in http://tools.ietf.org/html/rfc6350#section-6.2.2 #: ../addressbook/libebook-contacts/e-contact.c:262 msgid "Name" msgstr "姓名" #: ../addressbook/libebook-contacts/e-contact.c:263 msgid "Email List" msgstr "邮件列表" #. Instant messaging fields #: ../addressbook/libebook-contacts/e-contact.c:266 msgid "AIM Screen Name List" msgstr "AIM 屏幕名列表" #: ../addressbook/libebook-contacts/e-contact.c:267 msgid "GroupWise ID List" msgstr "GroupWise ID 列表" #: ../addressbook/libebook-contacts/e-contact.c:268 msgid "Jabber ID List" msgstr "Jabber ID 列表" #: ../addressbook/libebook-contacts/e-contact.c:269 msgid "Yahoo! Screen Name List" msgstr "Yahoo! 屏幕名列表" #: ../addressbook/libebook-contacts/e-contact.c:270 msgid "MSN Screen Name List" msgstr "MSN 屏幕名列表" #: ../addressbook/libebook-contacts/e-contact.c:271 msgid "ICQ ID List" msgstr "ICQ ID 列表" #: ../addressbook/libebook-contacts/e-contact.c:273 msgid "Wants HTML Mail" msgstr "想要 HTML 邮件" #. Translators: This is an EContact field description, in this case it's a #. * field describing whether it's a Contact list (list of email addresses) or a #. * regular contact for one person/organization/... #: ../addressbook/libebook-contacts/e-contact.c:278 msgid "List" msgstr "列表" #. Translators: This is an EContact field description, in this case it's a flag #. * used to determine whether when sending to Contact lists the addresses should be #. * shown or not to other recipients - basically whether to use BCC field or CC #. * message header when sending messages to this Contact list. #: ../addressbook/libebook-contacts/e-contact.c:283 msgid "List Shows Addresses" msgstr "以列表形式显示地址" #: ../addressbook/libebook-contacts/e-contact.c:285 msgid "Birth Date" msgstr "生日" #: ../addressbook/libebook-contacts/e-contact.c:286 #: ../calendar/backends/contacts/e-cal-backend-contacts.c:887 msgid "Anniversary" msgstr "周年纪念日" #. Security fields #: ../addressbook/libebook-contacts/e-contact.c:289 msgid "X.509 Certificate" msgstr "X.509 证书" #: ../addressbook/libebook-contacts/e-contact.c:291 msgid "Gadu-Gadu Home ID 1" msgstr "Gadu-Gadu 家庭 ID 1" #: ../addressbook/libebook-contacts/e-contact.c:292 msgid "Gadu-Gadu Home ID 2" msgstr "Gadu-Gadu 家庭 ID 2" #: ../addressbook/libebook-contacts/e-contact.c:293 msgid "Gadu-Gadu Home ID 3" msgstr "Gadu-Gadu 家庭 ID 3" #: ../addressbook/libebook-contacts/e-contact.c:294 msgid "Gadu-Gadu Work ID 1" msgstr "Gadu-Gadu 工作 ID 1" #: ../addressbook/libebook-contacts/e-contact.c:295 msgid "Gadu-Gadu Work ID 2" msgstr "Gadu-Gadu 工作 ID 2" #: ../addressbook/libebook-contacts/e-contact.c:296 msgid "Gadu-Gadu Work ID 3" msgstr "Gadu-Gadu 工作 ID 3" #: ../addressbook/libebook-contacts/e-contact.c:297 msgid "Gadu-Gadu ID List" msgstr "Gadu-Gadu ID 列表" #. Geo information #: ../addressbook/libebook-contacts/e-contact.c:300 msgid "Geographic Information" msgstr "地理信息" #: ../addressbook/libebook-contacts/e-contact.c:302 msgid "Telephone" msgstr "电话" #: ../addressbook/libebook-contacts/e-contact.c:304 msgid "Skype Home Name 1" msgstr "Skype 家庭屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:305 msgid "Skype Home Name 2" msgstr "Skype 家庭屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:306 msgid "Skype Home Name 3" msgstr "Skype 家庭屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:307 msgid "Skype Work Name 1" msgstr "Skype 工作屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:308 msgid "Skype Work Name 2" msgstr "Skype 工作屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:309 msgid "Skype Work Name 3" msgstr "Skype 工作屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:310 msgid "Skype Name List" msgstr "Skype 屏幕名列表" #: ../addressbook/libebook-contacts/e-contact.c:312 msgid "SIP address" msgstr "SIP 地址" #: ../addressbook/libebook-contacts/e-contact.c:314 msgid "Google Talk Home Name 1" msgstr "Google Talk 家庭屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:315 msgid "Google Talk Home Name 2" msgstr "Google Talk 家庭屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:316 msgid "Google Talk Home Name 3" msgstr "Google Talk 家庭屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:317 msgid "Google Talk Work Name 1" msgstr "Google Talk 工作屏幕名 1" #: ../addressbook/libebook-contacts/e-contact.c:318 msgid "Google Talk Work Name 2" msgstr "Google Talk 工作屏幕名 2" #: ../addressbook/libebook-contacts/e-contact.c:319 msgid "Google Talk Work Name 3" msgstr "Google Talk 工作屏幕名 3" #: ../addressbook/libebook-contacts/e-contact.c:320 msgid "Google Talk Name List" msgstr "Google Talk 屏幕名列表" #: ../addressbook/libebook-contacts/e-contact.c:322 msgid "Twitter Name List" msgstr "Twitter 名称列表" #: ../addressbook/libebook-contacts/e-contact.c:1627 #: ../addressbook/libebook/e-destination.c:883 msgid "Unnamed List" msgstr "未命名的列表" #: ../addressbook/libebook-contacts/e-phone-number.c:43 msgid "The library was built without phone number support." msgstr "编译此库时没有启用电话号码支持。" #: ../addressbook/libebook-contacts/e-phone-number.c:45 msgid "The phone number parser reported an yet unkown error code." msgstr "电话号码解析器报出一个未知错误代码。" #: ../addressbook/libebook-contacts/e-phone-number.c:47 msgid "Not a phone number" msgstr "不是电话号码" #: ../addressbook/libebook-contacts/e-phone-number.c:49 msgid "Invalid country calling code" msgstr "无效的国家电话代码" #: ../addressbook/libebook-contacts/e-phone-number.c:51 msgid "" "Remaining text after the country calling code is too short for a phone number" msgstr "国家区号之后的数字太短,肯定不是一个电话号码" #: ../addressbook/libebook-contacts/e-phone-number.c:53 msgid "Text is too short for a phone number" msgstr "号码太短" #: ../addressbook/libebook-contacts/e-phone-number.c:55 msgid "Text is too long for a phone number" msgstr "号码太长" #: ../addressbook/libebook/e-book-client.c:749 #, c-format msgid "Unknown book property '%s'" msgstr "未知的地址簿属性“%s”" #: ../addressbook/libebook/e-book-client.c:764 #, c-format msgid "Cannot change value of book property '%s'" msgstr "无法更改地址簿属性“%s”的值" #: ../addressbook/libebook/e-book-client.c:1099 #: ../addressbook/libebook/e-book-client.c:1274 #: ../calendar/libecal/e-cal-client.c:1522 #: ../calendar/libecal/e-cal-client.c:1704 #, c-format msgid "Unable to connect to '%s': " msgstr "无法连接到“%s”: " #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:796 #, c-format msgid "Error introspecting unknown summary field '%s'" msgstr "解析未知概要信息域“%s”错误" #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:1295 msgid "Error parsing regular expression" msgstr "正则表达式解析错误" #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:1340 #: ../camel/camel-db.c:544 #, c-format msgid "Insufficient memory" msgstr "内存不足" #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:1473 #, c-format msgid "Invalid contact field '%d' specified in summary" msgstr "摘要中指定的联系人域 “%d” 无效" #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:1507 #, c-format msgid "" "Contact field '%s' of type '%s' specified in summary, but only boolean, " "string and string list field types are supported" msgstr "概要中定义了“%2$s”类型的联系人域“%1$s”,但是只持布尔值、字符串和字符串列表类型。" #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:2695 #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:3772 #, c-format msgid "" "Full search_contacts are not stored in cache. vcards cannot be returned." msgstr "缓存中没有保存完整的 search_contacts,无法返回电子名片。" #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:3898 #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:3979 #, c-format msgid "Query contained unsupported elements" msgstr "查询中包含不支持的元素" #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:3902 #, c-format msgid "Invalid Query" msgstr "无效的查询" #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:3926 #, c-format msgid "" "Full search_contacts are not stored in cache. Hence only summary query is " "supported." msgstr "缓存中没有保存完整的 search_contacts,所以只支持摘要查询。" #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:3983 #: ../addressbook/libedata-book/e-data-book.c:358 #: ../addressbook/libedata-book/e-data-book.c:993 #: ../calendar/libedata-cal/e-data-cal.c:412 #: ../calendar/libedata-cal/e-data-cal.c:1299 ../libedataserver/e-client.c:164 #, c-format msgid "Invalid query" msgstr "无效的查询" #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:4026 #, c-format msgid "" "Full vcards are not stored in cache. Hence only summary query is supported." msgstr "缓存中没有保存完整的电子名片,所以只支持摘要查询。" #: ../addressbook/libedata-book/e-book-backend-sqlitedb.c:4729 #, c-format msgid "Unable to remove the db file: errno %d" msgstr "无法删除 db 文件:错误代码 %d" #: ../addressbook/libedata-book/e-data-book.c:342 #: ../calendar/libedata-cal/e-data-cal.c:393 msgid "Success" msgstr "成功" #: ../addressbook/libedata-book/e-data-book.c:343 #: ../calendar/libecal/e-cal.c:2303 ../calendar/libedata-cal/e-data-cal.c:394 #: ../libedataserver/e-client.c:131 msgid "Backend is busy" msgstr "后端繁忙" #: ../addressbook/libedata-book/e-data-book.c:344 #: ../calendar/libedata-cal/e-data-cal.c:395 ../libedataserver/e-client.c:141 msgid "Repository offline" msgstr "仓库离线" #: ../addressbook/libedata-book/e-data-book.c:345 #: ../calendar/libecal/e-cal.c:2317 ../calendar/libedata-cal/e-data-cal.c:396 #: ../libedataserver/e-client.c:148 msgid "Permission denied" msgstr "没有权限" #: ../addressbook/libedata-book/e-data-book.c:348 #: ../calendar/libedata-cal/e-data-cal.c:401 msgid "Authentication Failed" msgstr "认证失败" #: ../addressbook/libedata-book/e-data-book.c:349 #: ../calendar/libedata-cal/e-data-cal.c:402 msgid "Authentication Required" msgstr "需要认证" #: ../addressbook/libedata-book/e-data-book.c:350 #: ../calendar/libedata-cal/e-data-cal.c:403 msgid "Unsupported field" msgstr "不支持的字段" #: ../addressbook/libedata-book/e-data-book.c:351 #: ../calendar/libedata-cal/e-data-cal.c:405 ../libedataserver/e-client.c:156 msgid "Unsupported authentication method" msgstr "不支持的身份认证方式" #: ../addressbook/libedata-book/e-data-book.c:352 #: ../calendar/libedata-cal/e-data-cal.c:406 ../libedataserver/e-client.c:158 msgid "TLS not available" msgstr "TLS 不可用" #: ../addressbook/libedata-book/e-data-book.c:353 msgid "Address book does not exist" msgstr "地址簿不存在" #: ../addressbook/libedata-book/e-data-book.c:354 msgid "Book removed" msgstr "地址簿已删除" #: ../addressbook/libedata-book/e-data-book.c:355 #: ../calendar/libedata-cal/e-data-cal.c:409 msgid "Not available in offline mode" msgstr "在脱机模式中无法使用" #: ../addressbook/libedata-book/e-data-book.c:356 #: ../calendar/libedata-cal/e-data-cal.c:410 ../libedataserver/e-client.c:160 msgid "Search size limit exceeded" msgstr "超过搜索大小限制" #: ../addressbook/libedata-book/e-data-book.c:357 #: ../calendar/libedata-cal/e-data-cal.c:411 ../libedataserver/e-client.c:162 msgid "Search time limit exceeded" msgstr "超过搜索时间限制" #: ../addressbook/libedata-book/e-data-book.c:359 #: ../calendar/libedata-cal/e-data-cal.c:413 ../libedataserver/e-client.c:166 msgid "Query refused" msgstr "查询被拒绝" #: ../addressbook/libedata-book/e-data-book.c:360 #: ../calendar/libedata-cal/e-data-cal.c:414 ../libedataserver/e-client.c:152 msgid "Could not cancel" msgstr "无法取消" #. { E_DATA_BOOK_STATUS_OTHER_ERROR, N_("Other error") }, #. { OtherError, N_("Other error") }, #: ../addressbook/libedata-book/e-data-book.c:362 #: ../calendar/libedata-cal/e-data-cal.c:416 msgid "Invalid server version" msgstr "无效的服务器版本" #: ../addressbook/libedata-book/e-data-book.c:364 #: ../calendar/libecal/e-cal.c:2301 ../calendar/libedata-cal/e-data-cal.c:417 #: ../libedataserver/e-client.c:129 msgid "Invalid argument" msgstr "无效参数" #. Translators: The string for NOT_SUPPORTED error #: ../addressbook/libedata-book/e-data-book.c:366 #: ../calendar/libecal/e-cal.c:1060 ../calendar/libecal/e-cal.c:1428 #: ../calendar/libecal/e-cal.c:1908 ../calendar/libecal/e-cal.c:2340 #: ../calendar/libedata-cal/e-data-cal.c:419 ../libedataserver/e-client.c:154 #, c-format msgid "Not supported" msgstr "不支持" #: ../addressbook/libedata-book/e-data-book.c:367 #: ../calendar/libedata-cal/e-data-cal.c:420 ../libedataserver/e-client.c:172 msgid "Backend is not opened yet" msgstr "后端尚未打开" #: ../addressbook/libedata-book/e-data-book.c:368 #: ../libedataserver/e-client.c:174 msgid "Object is out of sync" msgstr "对象未同步" #: ../addressbook/libedata-book/e-data-book.c:376 #: ../calendar/libedata-cal/e-data-cal.c:428 ../libedataserver/e-client.c:170 msgid "Other error" msgstr "其他错误" #: ../addressbook/libedata-book/e-data-book.c:1018 #: ../calendar/libedata-cal/e-data-cal.c:1324 msgid "Invalid query: " msgstr "无效的查询: " #. Translators: This is prefix to a detailed error message #: ../addressbook/libedata-book/e-data-book.c:1070 msgid "Cannot open book: " msgstr "无法打开地址簿: " #. Translators: This is prefix to a detailed error message #: ../addressbook/libedata-book/e-data-book.c:1107 msgid "Cannot refresh address book: " msgstr "无法刷新地址薄: " #. Translators: This is prefix to a detailed error message #: ../addressbook/libedata-book/e-data-book.c:1138 msgid "Cannot get contact: " msgstr "无法获取联系人: " #. Translators: This is prefix to a detailed error message #: ../addressbook/libedata-book/e-data-book.c:1176 msgid "Cannot get contact list: " msgstr "无法获取联系人列表: " #. Translators: This is prefix to a detailed error message #: ../addressbook/libedata-book/e-data-book.c:1228 msgid "Cannot get contact list uids: " msgstr "无法获取联系人列表 UID: " #. Translators: This is prefix to a detailed error message #: ../addressbook/libedata-book/e-data-book.c:1275 msgid "Cannot add contact: " msgstr "无法添加联系人: " #. Translators: This is prefix to a detailed error message #: ../addressbook/libedata-book/e-data-book.c:1324 msgid "Cannot modify contacts: " msgstr "无法修改联系人: " #. Translators: This is prefix to a detailed error message #: ../addressbook/libedata-book/e-data-book.c:1366 msgid "Cannot remove contacts: " msgstr "无法移除联系人: " #: ../addressbook/libedata-book/e-data-book-factory.c:273 #: ../calendar/libedata-cal/e-data-cal-factory.c:276 #, c-format msgid "No backend name in source '%s'" msgstr "源 '%s' 中无后端名称" #: ../addressbook/libedata-book/e-data-book-factory.c:324 #: ../calendar/libedata-cal/e-data-cal-factory.c:330 #, c-format msgid "Missing source UID" msgstr "缺少源 UID" #: ../addressbook/libedata-book/e-data-book-factory.c:335 #: ../calendar/libedata-cal/e-data-cal-factory.c:340 #, c-format msgid "No such source for UID '%s'" msgstr "没有 UID “%s”的源" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:574 #, c-format msgid "Server is unreachable (%s)" msgstr "服务器不可用 (%s)" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:605 #, c-format msgid "Failed to connect to a server using SSL: %s" msgstr "用 SSL 协议连接服务器失败:%s" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:616 #, c-format msgid "Unexpected HTTP status code %d returned (%s)" msgstr "返回了意外的 HTTP 状态代码 %d(%s)" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:635 msgid "CalDAV backend is not loaded yet" msgstr "CalDAV 后端尚未加载" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:1072 msgid "Invalid Redirect URL" msgstr "无效的重定向 URL" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:2563 #: ../calendar/backends/caldav/e-cal-backend-caldav.c:2955 #, c-format msgid "" "Server is unreachable, calendar is opened in read-only mode.\n" "Error message: %s" msgstr "" "服务器不可用,日历将以只读模式打开。\n" "错误消息:%s" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:2907 #, c-format msgid "Cannot create local cache folder '%s'" msgstr "无法创建本地缓存文件夹“%s”" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:3995 msgid "CalDAV does not support bulk additions" msgstr "CalDAV 不支持批量添加" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:4098 msgid "CalDAV does not support bulk modifications" msgstr "CalDAV 不支持批量修改" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:4274 msgid "CalDAV does not support bulk removals" msgstr "CalDAV 不支持批量删除" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:4941 msgid "Calendar doesn't support Free/Busy" msgstr "日历不支持空闲/繁忙" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:4950 msgid "Schedule outbox url not found" msgstr "定时发件箱 url 未找到" #: ../calendar/backends/caldav/e-cal-backend-caldav.c:5047 msgid "Unexpected result in schedule-response" msgstr "定时响应的结果异常" #: ../calendar/backends/contacts/e-cal-backend-contacts.c:889 msgid "Birthday" msgstr "生日" #: ../calendar/backends/contacts/e-cal-backend-contacts.c:925 #, c-format msgid "Birthday: %s" msgstr "生日:%s" #: ../calendar/backends/contacts/e-cal-backend-contacts.c:956 #, c-format msgid "Anniversary: %s" msgstr "周年:%s" #: ../calendar/backends/file/e-cal-backend-file.c:245 msgid "Cannot save calendar data: Malformed URI." msgstr "无法保存日历数据:URI 格式错误。" #: ../calendar/backends/file/e-cal-backend-file.c:252 #: ../calendar/backends/file/e-cal-backend-file.c:258 msgid "Cannot save calendar data" msgstr "无法保存日历数据" #: ../calendar/backends/http/e-cal-backend-http.c:479 #, c-format msgid "Malformed URI: %s" msgstr "URI 格式错误: %s" #: ../calendar/backends/http/e-cal-backend-http.c:570 #, c-format msgid "Redirected to Invalid URI" msgstr "已重定向到无效 URI" #: ../calendar/backends/http/e-cal-backend-http.c:613 #, c-format msgid "Bad file format." msgstr "无效的文件格式。" #: ../calendar/backends/http/e-cal-backend-http.c:623 #, c-format msgid "Not a calendar." msgstr "不是日历。" #: ../calendar/backends/http/e-cal-backend-http.c:927 #: ../calendar/backends/weather/e-cal-backend-weather.c:494 msgid "Could not create cache file" msgstr "无法创建缓存文件" #: ../calendar/backends/weather/e-cal-backend-weather.c:170 msgid "Could not retrieve weather data" msgstr "无法获取天气数据" #: ../calendar/backends/weather/e-cal-backend-weather.c:281 msgid "Weather: Fog" msgstr "天气:雾" #: ../calendar/backends/weather/e-cal-backend-weather.c:282 msgid "Weather: Cloudy Night" msgstr "天气:多云夜晚" #: ../calendar/backends/weather/e-cal-backend-weather.c:283 msgid "Weather: Cloudy" msgstr "天气:多云" #: ../calendar/backends/weather/e-cal-backend-weather.c:284 msgid "Weather: Overcast" msgstr "天气:阴天" #: ../calendar/backends/weather/e-cal-backend-weather.c:285 msgid "Weather: Showers" msgstr "天气:阵雨" #: ../calendar/backends/weather/e-cal-backend-weather.c:286 msgid "Weather: Snow" msgstr "天气:雪" #: ../calendar/backends/weather/e-cal-backend-weather.c:287 msgid "Weather: Clear Night" msgstr "天气:晴朗夜晚" #: ../calendar/backends/weather/e-cal-backend-weather.c:288 msgid "Weather: Sunny" msgstr "天气:晴" #: ../calendar/backends/weather/e-cal-backend-weather.c:289 msgid "Weather: Thunderstorms" msgstr "天气:暴风雨" #: ../calendar/backends/weather/e-cal-backend-weather.c:410 msgid "Forecast" msgstr "天气预报" #: ../calendar/libecal/e-cal.c:2305 msgid "Repository is offline" msgstr "仓库离线" #: ../calendar/libecal/e-cal.c:2307 ../calendar/libecal/e-cal-client.c:255 msgid "No such calendar" msgstr "没有这样的日历" #: ../calendar/libecal/e-cal.c:2309 ../calendar/libecal/e-cal-client.c:257 #: ../calendar/libedata-cal/e-data-cal.c:398 msgid "Object not found" msgstr "找不到对象" #: ../calendar/libecal/e-cal.c:2311 ../calendar/libecal/e-cal-client.c:259 #: ../calendar/libedata-cal/e-data-cal.c:399 msgid "Invalid object" msgstr "无效对象" #: ../calendar/libecal/e-cal.c:2313 msgid "URI not loaded" msgstr "URI 未载入" #: ../calendar/libecal/e-cal.c:2315 msgid "URI already loaded" msgstr "URI 已经载入" #: ../calendar/libecal/e-cal.c:2319 msgid "Unknown User" msgstr "未知用户" #: ../calendar/libecal/e-cal.c:2321 ../calendar/libecal/e-cal-client.c:263 #: ../calendar/libedata-cal/e-data-cal.c:400 msgid "Object ID already exists" msgstr "对象 ID 已经存在" #: ../calendar/libecal/e-cal.c:2323 msgid "Protocol not supported" msgstr "不支持的协议" #: ../calendar/libecal/e-cal.c:2325 msgid "Operation has been canceled" msgstr "操作已取消" #: ../calendar/libecal/e-cal.c:2327 msgid "Could not cancel operation" msgstr "无法取消操作" #: ../calendar/libecal/e-cal.c:2329 ../libedataserver/e-client.c:137 msgid "Authentication failed" msgstr "认证失败" #: ../calendar/libecal/e-cal.c:2331 #: ../camel/providers/smtp/camel-smtp-transport.c:911 #: ../libedataserver/e-client.c:139 msgid "Authentication required" msgstr "必须认证" #: ../calendar/libecal/e-cal.c:2333 msgid "A D-Bus exception has occurred" msgstr "发生了一个 D-Bus 异常" #: ../calendar/libecal/e-cal.c:2337 msgid "No error" msgstr "无错误" #: ../calendar/libecal/e-cal-client.c:261 #: ../calendar/libedata-cal/e-data-cal.c:408 msgid "Unknown user" msgstr "未知用户" #: ../calendar/libecal/e-cal-client.c:265 #: ../calendar/libedata-cal/e-data-cal.c:397 msgid "Invalid range" msgstr "无效范围" #: ../calendar/libecal/e-cal-client.c:928 #, c-format msgid "Unknown calendar property '%s'" msgstr "未知的日历属性“%s”" #: ../calendar/libecal/e-cal-client.c:943 #, c-format msgid "Cannot change value of calendar property '%s'" msgstr "无法更改日历属性的值“%s”" #: ../calendar/libecal/e-cal-component.c:1340 msgid "Untitled appointment" msgstr "无标题约会" #: ../calendar/libecal/e-cal-recur.c:4038 msgid "1st" msgstr "1日" #: ../calendar/libecal/e-cal-recur.c:4039 msgid "2nd" msgstr "2日" #: ../calendar/libecal/e-cal-recur.c:4040 msgid "3rd" msgstr "3日" #: ../calendar/libecal/e-cal-recur.c:4041 msgid "4th" msgstr "4日" #: ../calendar/libecal/e-cal-recur.c:4042 msgid "5th" msgstr "5日" #: ../calendar/libecal/e-cal-recur.c:4043 msgid "6th" msgstr "6日" #: ../calendar/libecal/e-cal-recur.c:4044 msgid "7th" msgstr "7日" #: ../calendar/libecal/e-cal-recur.c:4045 msgid "8th" msgstr "8日" #: ../calendar/libecal/e-cal-recur.c:4046 msgid "9th" msgstr "9日" #: ../calendar/libecal/e-cal-recur.c:4047 msgid "10th" msgstr "10日" #: ../calendar/libecal/e-cal-recur.c:4048 msgid "11th" msgstr "11日" #: ../calendar/libecal/e-cal-recur.c:4049 msgid "12th" msgstr "12日" #: ../calendar/libecal/e-cal-recur.c:4050 msgid "13th" msgstr "13日" #: ../calendar/libecal/e-cal-recur.c:4051 msgid "14th" msgstr "14日" #: ../calendar/libecal/e-cal-recur.c:4052 msgid "15th" msgstr "15日" #: ../calendar/libecal/e-cal-recur.c:4053 msgid "16th" msgstr "16日" #: ../calendar/libecal/e-cal-recur.c:4054 msgid "17th" msgstr "17日" #: ../calendar/libecal/e-cal-recur.c:4055 msgid "18th" msgstr "18八日" #: ../calendar/libecal/e-cal-recur.c:4056 msgid "19th" msgstr "19日" #: ../calendar/libecal/e-cal-recur.c:4057 msgid "20th" msgstr "20日" #: ../calendar/libecal/e-cal-recur.c:4058 msgid "21st" msgstr "21日" #: ../calendar/libecal/e-cal-recur.c:4059 msgid "22nd" msgstr "22日" #: ../calendar/libecal/e-cal-recur.c:4060 msgid "23rd" msgstr "23日" #: ../calendar/libecal/e-cal-recur.c:4061 msgid "24th" msgstr "24日" #: ../calendar/libecal/e-cal-recur.c:4062 msgid "25th" msgstr "25日" #: ../calendar/libecal/e-cal-recur.c:4063 msgid "26th" msgstr "26日" #: ../calendar/libecal/e-cal-recur.c:4064 msgid "27th" msgstr "27日" #: ../calendar/libecal/e-cal-recur.c:4065 msgid "28th" msgstr "28日" #: ../calendar/libecal/e-cal-recur.c:4066 msgid "29th" msgstr "29日" #: ../calendar/libecal/e-cal-recur.c:4067 msgid "30th" msgstr "30日" #: ../calendar/libecal/e-cal-recur.c:4068 msgid "31st" msgstr "31日" #: ../calendar/libecal/e-cal-util.c:707 ../calendar/libecal/e-cal-util.c:734 msgctxt "Priority" msgid "High" msgstr "高" #: ../calendar/libecal/e-cal-util.c:709 ../calendar/libecal/e-cal-util.c:736 msgctxt "Priority" msgid "Normal" msgstr "中" #: ../calendar/libecal/e-cal-util.c:711 ../calendar/libecal/e-cal-util.c:738 msgctxt "Priority" msgid "Low" msgstr "低" #. An empty string is the same as 'None'. #: ../calendar/libecal/e-cal-util.c:732 msgctxt "Priority" msgid "Undefined" msgstr "未定义" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:78 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1056 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1365 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1492 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1541 #, c-format msgid "\"%s\" expects one argument" msgstr "“%s”需要一个参数" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:85 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:667 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1372 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1380 #, c-format msgid "\"%s\" expects the first argument to be a string" msgstr "“%s”需要第一个参数是字符串" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:160 #, c-format #| msgid "\"%s\" expects two arguments" msgid "\"%s\" expects two or three arguments" msgstr "“%s”需要两个或三个参数" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:167 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:256 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:318 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:817 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1063 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1441 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1499 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1548 #, c-format msgid "\"%s\" expects the first argument to be a time_t" msgstr "“%s”的第一个参数应该是 time_t" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:176 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:264 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:328 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:826 #, c-format msgid "\"%s\" expects the second argument to be a time_t" msgstr "“%s”的第一个参数应该是 time_t" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:186 #, c-format #| msgid "\"%s\" expects the first argument to be a string" msgid "\"%s\" expects the third argument to be a string" msgstr "“%s”需要第三个参数是字符串" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:248 #, c-format msgid "\"%s\" expects none or two arguments" msgstr "“%s”需要零个或两个参数" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:311 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:660 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:810 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1434 #, c-format msgid "\"%s\" expects two arguments" msgstr "“%s”需要两个参数" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:596 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:619 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:742 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:774 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:981 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1014 #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1326 #, c-format msgid "\"%s\" expects no arguments" msgstr "“%s”不需要参数" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:676 #, c-format msgid "\"%s\" expects the second argument to be a string" msgstr "“%s”的第二个参数应该是字符串" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:707 #, c-format msgid "" "\"%s\" expects the first argument to be either \"any\", \"summary\", or " "\"description\", or \"location\", or \"attendee\", or \"organizer\", or " "\"classification\"" msgstr "" "“%s”的第一个参数必须是“any”、“summary”、“description”、“location”、“attendee”、“organizer”、" "“classification”之一" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:878 #, c-format msgid "\"%s\" expects at least one argument" msgstr "“%s”至少需要一个参数" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:893 #, c-format msgid "" "\"%s\" expects all arguments to be strings or one and only one argument to " "be a boolean false (#f)" msgstr "“%s”的所有参数都应该为字符串或者它唯一的参数为布尔假 (#f)" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1389 #, c-format msgid "\"%s\" expects the first argument to be an ISO 8601 date/time string" msgstr "“%s”的第一个参数必须是 ISO 8601 日期/时间字符串" #: ../calendar/libedata-cal/e-cal-backend-sexp.c:1450 #, c-format msgid "\"%s\" expects the second argument to be an integer" msgstr "“%s”的第二个参数应该是整数" #: ../calendar/libedata-cal/e-data-cal.c:404 msgid "Unsupported method" msgstr "不支持的方式" #: ../calendar/libedata-cal/e-data-cal.c:407 msgid "Calendar does not exist" msgstr "日历不存在" #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:1495 msgid "Cannot open calendar: " msgstr "无法打开日历: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:1532 msgid "Cannot refresh calendar: " msgstr "无法刷新日历: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:1573 msgid "Cannot retrieve calendar object path: " msgstr "无法获取日历对象的路径: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:1625 msgid "Cannot retrieve calendar object list: " msgstr "无法获取日历对象的列表: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:1676 msgid "Cannot retrieve calendar free/busy list: " msgstr "无法获取日历空闲/繁忙列表: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:1719 msgid "Cannot create calendar object: " msgstr "无法创建日历对象: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:1787 msgid "Cannot modify calendar object: " msgstr "无法修改日历对象: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:1865 msgid "Cannot remove calendar object: " msgstr "无法移除日历对象: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:1951 msgid "Cannot receive calendar objects: " msgstr "无法接收日历对象: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:1994 msgid "Cannot send calendar objects: " msgstr "无法发送日历对象: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:2046 msgid "Could not retrieve attachment uris: " msgstr "无法获取附件 URI: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:2091 msgid "Could not discard reminder: " msgstr "无法取消提醒: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:2132 msgid "Could not retrieve calendar time zone: " msgstr "无法获取日历时区: " #. Translators: This is prefix to a detailed error message #: ../calendar/libedata-cal/e-data-cal.c:2172 msgid "Could not add calendar time zone: " msgstr "无法添加日历时区: " #: ../camel/camel-cipher-context.c:208 #, c-format msgid "Signing is not supported by this cipher" msgstr "该密码不支持签名" #: ../camel/camel-cipher-context.c:221 #, c-format msgid "Verifying is not supported by this cipher" msgstr "该密码不支持验证" #: ../camel/camel-cipher-context.c:237 #, c-format msgid "Encryption is not supported by this cipher" msgstr "该密码不支持加密" #: ../camel/camel-cipher-context.c:251 #, c-format msgid "Decryption is not supported by this cipher" msgstr "该密码不支持解密" #: ../camel/camel-cipher-context.c:264 #, c-format msgid "You may not import keys with this cipher" msgstr "您不能用此密码导入密钥" #: ../camel/camel-cipher-context.c:278 #, c-format msgid "You may not export keys with this cipher" msgstr "您不能用此密码导出密钥" #: ../camel/camel-cipher-context.c:819 msgid "Signing message" msgstr "签名消息" #: ../camel/camel-cipher-context.c:1060 msgid "Encrypting message" msgstr "加密消息" #: ../camel/camel-cipher-context.c:1187 msgid "Decrypting message" msgstr "解密消息" #: ../camel/camel-data-cache.c:181 #, c-format msgid "Unable to create cache path" msgstr "无法创建缓存路径" #: ../camel/camel-data-cache.c:442 msgid "Empty cache file" msgstr "清空缓存文件" #: ../camel/camel-data-cache.c:511 #, c-format msgid "Could not remove cache entry: %s: %s" msgstr "无法删除缓存条目:%s:%s" #: ../camel/camel-disco-diary.c:207 #, c-format msgid "" "Could not write log entry: %s\n" "Further operations on this server will not be replayed when you\n" "reconnect to the network." msgstr "" "无法写入日志条目:%s\n" "当您重新连接到网络时本服务器\n" "上进一步的操作不会重做。" #: ../camel/camel-disco-diary.c:279 #, c-format msgid "" "Could not open '%s':\n" "%s\n" "Changes made to this folder will not be resynchronized." msgstr "" "无法打开“%s”:\n" "%s\n" "对该文件夹的修改不会被重新同步。" #: ../camel/camel-disco-diary.c:326 msgid "Resynchronizing with server" msgstr "重新与服务器同步" #: ../camel/camel-disco-folder.c:76 ../camel/camel-offline-folder.c:93 msgid "Downloading new messages for offline mode" msgstr "下载新消息以进行脱机操作" #: ../camel/camel-disco-folder.c:422 #, c-format msgid "Preparing folder '%s' for offline" msgstr "准备脱机文件夹“%s”" #: ../camel/camel-disco-folder.c:489 ../camel/camel-offline-folder.c:336 msgid "Copy folder content locally for _offline operation" msgstr "将文件夹内容复制到本地以进行脱机操作(_O)" #: ../camel/camel-disco-store.c:518 ../camel/camel-imapx-store.c:618 #: ../camel/camel-imapx-store.c:2242 #: ../camel/providers/pop3/camel-pop3-folder.c:596 #: ../camel/providers/pop3/camel-pop3-folder.c:746 #: ../camel/providers/pop3/camel-pop3-folder.c:987 #: ../camel/providers/pop3/camel-pop3-folder.c:1216 #: ../camel/providers/pop3/camel-pop3-store.c:291 #: ../camel/providers/pop3/camel-pop3-store.c:519 #: ../camel/providers/pop3/camel-pop3-store.c:567 #: ../camel/providers/pop3/camel-pop3-store.c:659 #: ../camel/providers/pop3/camel-pop3-store.c:1063 #, c-format msgid "You must be working online to complete this operation" msgstr "您必须在线工作以便完成该操作" #: ../camel/camel-file-utils.c:732 #, c-format msgid "Canceled" msgstr "已取消" #: ../camel/camel-filter-driver.c:916 ../camel/camel-filter-search.c:797 #, c-format msgid "Failed to create child process '%s': %s" msgstr "创建子进程“%s”失败:%s" #: ../camel/camel-filter-driver.c:964 #, c-format msgid "Invalid message stream received from %s: %s" msgstr "收到 %s 发来的无效消息流:%s" #: ../camel/camel-filter-driver.c:1171 ../camel/camel-filter-driver.c:1180 msgid "Syncing folders" msgstr "同步文件夹" #: ../camel/camel-filter-driver.c:1278 #, c-format msgid "Error parsing filter: %s: %s" msgstr "解析过滤规则出错:%s:%s" #: ../camel/camel-filter-driver.c:1289 #, c-format msgid "Error executing filter: %s: %s" msgstr "执行过滤规则错误:%s:%s" #: ../camel/camel-filter-driver.c:1385 #, c-format msgid "Unable to open spool folder" msgstr "无法打开脱机文件夹" #: ../camel/camel-filter-driver.c:1397 #, c-format msgid "Unable to process spool folder" msgstr "无法处理脱机文件夹" #: ../camel/camel-filter-driver.c:1420 #, c-format msgid "Getting message %d (%d%%)" msgstr "获取第%d封信(%d%%)" #: ../camel/camel-filter-driver.c:1429 ../camel/camel-filter-driver.c:1451 #, c-format msgid "Failed on message %d" msgstr "在第%d封信失败" #: ../camel/camel-filter-driver.c:1470 ../camel/camel-filter-driver.c:1584 msgid "Syncing folder" msgstr "同步文件夹" #: ../camel/camel-filter-driver.c:1475 ../camel/camel-filter-driver.c:1592 msgid "Complete" msgstr "完成" #: ../camel/camel-filter-driver.c:1538 #, c-format msgid "Getting message %d of %d" msgstr "获取第%d封信,共%d封" #: ../camel/camel-filter-driver.c:1556 #, c-format msgid "Failed at message %d of %d" msgstr "在第%d封信失败,共%d封" #: ../camel/camel-filter-driver.c:1752 ../camel/camel-filter-driver.c:1779 #, c-format msgid "Execution of filter '%s' failed: " msgstr "过滤规则执行“%s”失败: " #: ../camel/camel-filter-driver.c:1769 #, c-format msgid "Error parsing filter '%s': %s: %s" msgstr "解析过滤规则“%s”出错:%s:%s" #: ../camel/camel-filter-driver.c:1788 #, c-format msgid "Error executing filter '%s': %s: %s" msgstr "执行过滤规则“%s”错误:%s:%s" #: ../camel/camel-filter-search.c:138 msgid "Failed to retrieve message" msgstr "获取消息失败" #: ../camel/camel-filter-search.c:537 msgid "Invalid arguments to (system-flag)" msgstr "(system-flag)参数无效" #: ../camel/camel-filter-search.c:555 msgid "Invalid arguments to (user-tag)" msgstr "(user-tag)参数无效" #: ../camel/camel-filter-search.c:1046 ../camel/camel-filter-search.c:1055 #, c-format msgid "Error executing filter search: %s: %s" msgstr "执行过滤规则搜索错误:%s:%s" #: ../camel/camel-folder.c:311 #, c-format msgid "Learning new spam message in '%s'" msgid_plural "Learning new spam messages in '%s'" msgstr[0] "在“%s”中学习新的垃圾邮件" #: ../camel/camel-folder.c:351 #, c-format msgid "Learning new ham message in '%s'" msgid_plural "Learning new ham messages in '%s'" msgstr[0] "在“%s”中学习新的有害邮件" #: ../camel/camel-folder.c:399 #, c-format msgid "Filtering new message in '%s'" msgid_plural "Filtering new messages in '%s'" msgstr[0] "在“%s”中过滤新消息" #: ../camel/camel-folder.c:1009 #: ../camel/providers/local/camel-maildir-folder.c:321 msgid "Moving messages" msgstr "移动消息" #: ../camel/camel-folder.c:1012 msgid "Copying messages" msgstr "复制消息" #: ../camel/camel-folder.c:1332 #, c-format msgid "Quota information not supported for folder '%s'" msgstr "文件夹“%s”不支持配额信息" #: ../camel/camel-folder.c:3578 #, c-format msgid "Expunging folder '%s'" msgstr "正在删除文件夹“%s”" #: ../camel/camel-folder.c:3810 #, c-format msgid "Retrieving message '%s' in %s" msgstr "正在获取 %2$s 中的消息“%1$s”" #: ../camel/camel-folder.c:3965 #, c-format msgid "Retrieving quota information for '%s'" msgstr "正在获取“%s”的配额信息" #: ../camel/camel-folder.c:4205 #, c-format msgid "Refreshing folder '%s'" msgstr "正在刷新文件夹“%s”" #. Translators: The '%s' is an element type name, part of an expressing language #: ../camel/camel-folder-search.c:888 ../camel/camel-folder-search.c:931 #, c-format msgid "(%s) requires a single bool result" msgstr "(%s) 需要一个布尔结果" #. Translators: Each '%s' is an element type name, part of an expressing language #: ../camel/camel-folder-search.c:966 #, c-format msgid "(%s) not allowed inside %s" msgstr "(%s) 不允许在 %s 中使用" #. Translators: The '%s' is an element type name, part of an expressing language #: ../camel/camel-folder-search.c:973 ../camel/camel-folder-search.c:981 #, c-format msgid "(%s) requires a match type string" msgstr "(%s) 需要一个匹配类型字符串" #. Translators: The '%s' is an element type name, part of an expressing language #: ../camel/camel-folder-search.c:1009 #, c-format msgid "(%s) expects an array result" msgstr "(%s) 需要一个数组结果" #. Translators: The '%s' is an element type name, part of an expressing language #: ../camel/camel-folder-search.c:1019 #, c-format msgid "(%s) requires the folder set" msgstr "(%s) 需要文件夹集" #: ../camel/camel-folder-search.c:1932 ../camel/camel-folder-search.c:2098 #, c-format msgid "" "Cannot parse search expression: %s:\n" "%s" msgstr "" "无法解析搜索表达式:%s:\n" "%s" #: ../camel/camel-folder-search.c:1944 ../camel/camel-folder-search.c:2110 #, c-format msgid "" "Error executing search expression: %s:\n" "%s" msgstr "" "执行搜索表达式错误:%s:\n" "%s" #: ../camel/camel-gpg-context.c:730 ../camel/camel-gpg-context.c:735 #: ../camel/camel-gpg-context.c:1398 #, c-format msgid "Failed to execute gpg: %s" msgstr "执行 gpg 失败:%s" #: ../camel/camel-gpg-context.c:735 #: ../camel/providers/smtp/camel-smtp-transport.c:914 msgid "Unknown" msgstr "未知" #: ../camel/camel-gpg-context.c:800 #, c-format msgid "" "Unexpected GnuPG status message encountered:\n" "\n" "%s" msgstr "" "遇到了意外的 GnuPG 状态消息:\n" "\n" "%s" #: ../camel/camel-gpg-context.c:836 #, c-format msgid "Failed to parse gpg userid hint." msgstr "解析 gpg userid 提示失败。" #: ../camel/camel-gpg-context.c:861 ../camel/camel-gpg-context.c:876 #, c-format msgid "Failed to parse gpg passphrase request." msgstr "解析 gpg 密码句请求失败。" #: ../camel/camel-gpg-context.c:897 #, c-format msgid "" "You need a PIN to unlock the key for your\n" "SmartCard: \"%s\"" msgstr "" "您需要一个 PIN 用来解锁您的智能卡:\n" "“%s”" #: ../camel/camel-gpg-context.c:901 #, c-format msgid "" "You need a passphrase to unlock the key for\n" "user: \"%s\"" msgstr "" "您需要一个密码句用来解锁以下用户:\n" "“%s”" #: ../camel/camel-gpg-context.c:907 #, c-format msgid "Unexpected request from GnuPG for '%s'" msgstr "GnuPG 对“%s”的意外响应" #: ../camel/camel-gpg-context.c:919 msgid "" "Note the encrypted content doesn't contain information about a recipient, " "thus there will be a password prompt for each of stored private key." msgstr "请注意加密的内容里不包含收件人信息,因此可能会请求输出每个私钥的口令。" #: ../camel/camel-gpg-context.c:950 ../camel/camel-net-utils.c:524 #: ../camel/camel-tcp-stream-raw.c:268 #: ../camel/providers/nntp/camel-nntp-summary.c:402 #: ../libedataserver/e-client.c:150 #, c-format msgid "Cancelled" msgstr "已取消" #: ../camel/camel-gpg-context.c:971 #, c-format msgid "Failed to unlock secret key: 3 bad passphrases given." msgstr "解锁密钥失败:给出了 3 个错误的密码句。" #: ../camel/camel-gpg-context.c:984 #, c-format msgid "Unexpected response from GnuPG: %s" msgstr "来自 GnuPG 的意外应答:%s" #: ../camel/camel-gpg-context.c:1115 #, c-format msgid "Failed to encrypt: No valid recipients specified." msgstr "加密失败:没有指定有效的收件人。" #: ../camel/camel-gpg-context.c:1665 ../camel/camel-smime-context.c:846 msgid "Could not generate signing data: " msgstr "无法生成签名数据: " #: ../camel/camel-gpg-context.c:1715 ../camel/camel-gpg-context.c:1923 #: ../camel/camel-gpg-context.c:2033 ../camel/camel-gpg-context.c:2184 #: ../camel/camel-gpg-context.c:2284 ../camel/camel-gpg-context.c:2332 msgid "Failed to execute gpg." msgstr "执行 gpg 失败。" #: ../camel/camel-gpg-context.c:1794 ../camel/camel-gpg-context.c:1802 #: ../camel/camel-gpg-context.c:1810 ../camel/camel-gpg-context.c:1830 #: ../camel/camel-smime-context.c:973 ../camel/camel-smime-context.c:987 #: ../camel/camel-smime-context.c:996 #, c-format msgid "Cannot verify message signature: Incorrect message format" msgstr "无法校验消息签名:消息格式不对" #: ../camel/camel-gpg-context.c:1876 msgid "Cannot verify message signature: " msgstr "无法校验消息签名: " #: ../camel/camel-gpg-context.c:1999 msgid "Could not generate encrypting data: " msgstr "无法生成加密数据: " #: ../camel/camel-gpg-context.c:2052 msgid "This is a digitally encrypted message part" msgstr "这是消息的数字加密部分" #: ../camel/camel-gpg-context.c:2110 ../camel/camel-gpg-context.c:2119 #: ../camel/camel-gpg-context.c:2142 #, c-format msgid "Cannot decrypt message: Incorrect message format" msgstr "无法解密消息:消息格式不对" #: ../camel/camel-gpg-context.c:2130 #, c-format msgid "Failed to decrypt MIME part: protocol error" msgstr "解密 MIME 部分失败:协议错误" #: ../camel/camel-gpg-context.c:2225 ../camel/camel-smime-context.c:1287 msgid "Encrypted content" msgstr "加密内容" #: ../camel/camel-imapx-folder.c:643 #, c-format msgid "No quota information available for folder '%s'" msgstr "文件夹“%s”没有配额信息" #: ../camel/camel-imapx-folder.c:727 ../camel/camel-imapx-folder.c:801 #, c-format msgid "No destination folder specified" msgstr "未指定目标文件夹" #: ../camel/camel-imapx-folder.c:747 msgid "Unable to move junk messages" msgstr "无法移动垃圾信息" #: ../camel/camel-imapx-folder.c:821 msgid "Unable to move deleted messages" msgstr "无法移动已删除信息" #: ../camel/camel-imapx-folder.c:1008 #: ../camel/providers/nntp/camel-nntp-folder.c:800 msgid "Apply message _filters to this folder" msgstr "对这个文件夹应用消息过滤器(_F)" #: ../camel/camel-imapx-folder.c:1114 #, c-format msgid "Could not create folder summary for %s" msgstr "无法为 %s 创建文件夹概要" #: ../camel/camel-imapx-folder.c:1123 #, c-format msgid "Could not create cache for %s: " msgstr "无法为 %s 创建缓存: " #: ../camel/camel-imapx-server.c:1333 msgid "Server disconnected" msgstr "服务器断开连接" #: ../camel/camel-imapx-server.c:1772 msgid "Error writing to cache stream" msgstr "写入缓存流错误" #: ../camel/camel-imapx-server.c:2457 #, c-format msgid "" "Alert from IMAP server %s:\n" "%s" msgstr "" "来自 IMAP 服务器 %s 的提醒:\n" "%s" #: ../camel/camel-imapx-server.c:3053 #, c-format msgid "Not authenticated" msgstr "没有验证" #: ../camel/camel-imapx-server.c:3131 msgid "Error performing IDLE" msgstr "执行 IDLE 命令出错" #: ../camel/camel-imapx-server.c:4030 #, c-format msgid "Failed to connect to IMAP server %s in secure mode: %s" msgstr "以安全模式连接到 IMAP 服务器 %s 失败:%s" #: ../camel/camel-imapx-server.c:4031 #: ../camel/providers/smtp/camel-smtp-transport.c:203 msgid "STARTTLS not supported" msgstr "不支持 STARTTLS" #: ../camel/camel-imapx-server.c:4072 #, c-format msgid "Failed to connect to IMAP server %s in secure mode: " msgstr "以安全模式连接到 IMAP 服务器 %s 失败: " #: ../camel/camel-imapx-server.c:4150 #, c-format msgid "IMAP server %s does not support %s authentication" msgstr "IMAP 服务器 %s 不支持 %s 认证" #: ../camel/camel-imapx-server.c:4161 ../camel/camel-session.c:494 #: ../camel/providers/pop3/camel-pop3-store.c:303 #: ../camel/providers/pop3/camel-pop3-store.c:748 #: ../camel/providers/smtp/camel-smtp-transport.c:505 #, c-format msgid "No support for %s authentication" msgstr "不支持 %s 认证" #: ../camel/camel-imapx-server.c:4180 #: ../camel/providers/nntp/camel-nntp-store.c:409 #: ../camel/providers/nntp/camel-nntp-store.c:595 msgid "Cannot authenticate without a username" msgstr "无法进行无用户名的认证" #: ../camel/camel-imapx-server.c:4189 #: ../camel/providers/nntp/camel-nntp-store.c:604 #: ../camel/providers/pop3/camel-pop3-store.c:669 #: ../camel/providers/pop3/camel-pop3-store.c:690 msgid "Authentication password not available" msgstr "密码认证不可用" #: ../camel/camel-imapx-server.c:4402 msgid "Error fetching message" msgstr "取回消息出错" #: ../camel/camel-imapx-server.c:4451 ../camel/camel-imapx-server.c:4458 msgid "Failed to close the tmp stream" msgstr "无法关闭临时流" #: ../camel/camel-imapx-server.c:4487 msgid "Failed to copy the tmp file" msgstr "无法复制临时文件" #: ../camel/camel-imapx-server.c:4612 msgid "Error moving messages" msgstr "移动信息时出错" #: ../camel/camel-imapx-server.c:4616 msgid "Error copying messages" msgstr "复制消息出错" #: ../camel/camel-imapx-server.c:4783 msgid "Error appending message" msgstr "追加消息出错" #: ../camel/camel-imapx-server.c:4980 msgid "Error fetching message headers" msgstr "取回消息头出错" #: ../camel/camel-imapx-server.c:5143 msgid "Error retrieving message" msgstr "收取消息出错" #: ../camel/camel-imapx-server.c:5274 ../camel/camel-imapx-server.c:5495 #, c-format msgid "Fetching summary information for new messages in '%s'" msgstr "获取“%s”中新消息的概要信息" #: ../camel/camel-imapx-server.c:5334 #, c-format msgid "Scanning for changed messages in '%s'" msgstr "正在扫描“%s”中已更改的消息" #: ../camel/camel-imapx-server.c:5389 msgid "Error fetching new messages" msgstr "取回新消息出错" #: ../camel/camel-imapx-server.c:5601 msgid "Error while fetching messages" msgstr "取回消息出错" #: ../camel/camel-imapx-server.c:5609 ../camel/camel-imapx-server.c:5642 #, c-format msgid "Fetching summary information for %d message in '%s'" msgid_plural "Fetching summary information for %d messages in '%s'" msgstr[0] "获取“%2$s”中“%1$d”条消息的摘要信息" #: ../camel/camel-imapx-server.c:5776 ../camel/camel-imapx-server.c:5806 msgid "Error refreshing folder" msgstr "刷新文件夹出错" #: ../camel/camel-imapx-server.c:5928 msgid "Error expunging message" msgstr "销毁消息出错" #: ../camel/camel-imapx-server.c:6036 msgid "Error fetching folders" msgstr "取回文件夹出错" #: ../camel/camel-imapx-server.c:6119 msgid "Error subscribing to folder" msgstr "订阅文件夹出错" #: ../camel/camel-imapx-server.c:6181 msgid "Error creating folder" msgstr "创建文件夹出错" #: ../camel/camel-imapx-server.c:6234 msgid "Error deleting folder" msgstr "删除文件夹出错" #: ../camel/camel-imapx-server.c:6305 msgid "Error renaming folder" msgstr "重命名文件夹出错" #: ../camel/camel-imapx-server.c:6379 msgid "Error retrieving quota information" msgstr "获取配额信息出错" #: ../camel/camel-imapx-server.c:6437 msgid "Search failed" msgstr "搜索失败" #: ../camel/camel-imapx-server.c:6499 msgid "Error performing NOOP" msgstr "执行 NOOP 出错" #: ../camel/camel-imapx-server.c:6607 msgid "Error syncing changes" msgstr "同步变更出错" #: ../camel/camel-imapx-server.c:6912 msgid "Lost connection to IMAP server" msgstr "与 IMAP 服务器失去连接" #: ../camel/camel-imapx-server.c:7359 #, c-format msgid "Cannot get message with message ID %s: %s" msgstr "无法获取消息 ID %s:%s" #: ../camel/camel-imapx-server.c:7360 msgid "No such message available." msgstr "没有该消息。" #: ../camel/camel-imapx-server.c:7521 ../camel/camel-imapx-server.c:7536 msgid "Cannot create spool file: " msgstr "无法创建脱机文件: " #: ../camel/camel-imapx-server.c:8276 msgid "IMAP server does not support quotas" msgstr "IMAP 服务器不支持配额" #. create a dummy "." parent inbox, use to scan, then put back at the top level #: ../camel/camel-imapx-store.c:203 ../camel/camel-imapx-store.c:1143 #: ../camel/providers/local/camel-maildir-folder.c:473 #: ../camel/providers/local/camel-maildir-store.c:316 #: ../camel/providers/local/camel-maildir-store.c:752 #: ../camel/providers/local/camel-maildir-store.c:758 #: ../camel/providers/local/camel-maildir-store.c:842 #: ../camel/providers/local/camel-spool-store.c:395 msgid "Inbox" msgstr "收件箱" #: ../camel/camel-imapx-store.c:487 #, c-format msgid "IMAP server %s" msgstr "IMAP 服务器 %s" #: ../camel/camel-imapx-store.c:490 #, c-format msgid "IMAP service for %s on %s" msgstr "%2$s 为 %1$s 提供的 IMAP 服务" #: ../camel/camel-imapx-store.c:591 #: ../camel/providers/nntp/camel-nntp-provider.c:95 #: ../camel/providers/pop3/camel-pop3-provider.c:83 msgid "Password" msgstr "密码" #: ../camel/camel-imapx-store.c:593 msgid "" "This option will connect to the IMAP server using a plaintext password." msgstr "该选项将使用纯文本密码连接到 IMAP 服务器。" #: ../camel/camel-imapx-store.c:687 #, c-format msgid "No such folder %s" msgstr "没有文件夹 %s" #: ../camel/camel-imapx-store.c:1413 #, c-format msgid "Retrieving folder list for %s" msgstr "正在获取“%s”的文件夹列表" #: ../camel/camel-imapx-store.c:1783 #, c-format msgid "" "The folder name \"%s\" is invalid because it contains the character \"%c\"" msgstr "文件夹名“%s”无效,原因是其中含有字符“%c”" #: ../camel/camel-imapx-store.c:1794 #, c-format msgid "Unknown parent folder: %s" msgstr "未知的父文件夹:%s" #: ../camel/camel-imapx-store.c:1804 #, c-format msgid "The parent folder is not allowed to contain subfolders" msgstr "父文件夹不允许含有子文件夹" #: ../camel/camel-imapx-stream.c:98 #, c-format msgid "Source stream returned no data" msgstr "源流没返回数据" #: ../camel/camel-imapx-stream.c:107 #, c-format msgid "Source stream unavailable" msgstr "源流不可用" #: ../camel/camel-junk-filter.c:168 msgid "Synchronizing junk database" msgstr "正在同步垃圾邮件数据库" #: ../camel/camel-lock.c:106 #, c-format msgid "Could not create lock file for %s: %s" msgstr "无法为 %s 创建锁定文件:%s" #: ../camel/camel-lock.c:149 #, c-format msgid "Timed out trying to get lock file on %s. Try again later." msgstr "对 %s 获取锁文件的尝试超时。请稍后再试。" #: ../camel/camel-lock.c:211 #, c-format msgid "Failed to get lock using fcntl(2): %s" msgstr "用 fcntl(2) 获取锁失败:%s" #: ../camel/camel-lock.c:278 #, c-format msgid "Failed to get lock using flock(2): %s" msgstr "用 flock(2) 获取锁失败:%s" #: ../camel/camel-lock-client.c:106 #, c-format msgid "Cannot build locking helper pipe: %s" msgstr "无法创建锁定助手管道:%s" #: ../camel/camel-lock-client.c:130 #, c-format msgid "Cannot fork locking helper: %s" msgstr "无法创建锁定助手进程:%s" #: ../camel/camel-lock-client.c:211 ../camel/camel-lock-client.c:239 #, c-format msgid "Could not lock '%s': protocol error with lock-helper" msgstr "无法锁定“%s”:lock-helper 协议错误" #: ../camel/camel-lock-client.c:227 #, c-format msgid "Could not lock '%s'" msgstr "无法锁定“%s”" #: ../camel/camel-movemail.c:105 #, c-format msgid "Could not check mail file %s: %s" msgstr "无法检查邮件文件 %s:%s" #: ../camel/camel-movemail.c:119 #, c-format msgid "Could not open mail file %s: %s" msgstr "无法打开邮件文件 %s:%s" #: ../camel/camel-movemail.c:129 #, c-format msgid "Could not open temporary mail file %s: %s" msgstr "无法打开临时邮件文件 %s:%s" #: ../camel/camel-movemail.c:159 #, c-format msgid "Failed to store mail in temp file %s: %s" msgstr "将邮件存储到临时文件 %s 失败:%s" #: ../camel/camel-movemail.c:193 #, c-format msgid "Could not create pipe: %s" msgstr "无法创建管道:%s" #: ../camel/camel-movemail.c:207 #, c-format msgid "Could not fork: %s" msgstr "无法创建进程:%s" #: ../camel/camel-movemail.c:245 #, c-format msgid "Movemail program failed: %s" msgstr "移动邮件程序失败:%s" #: ../camel/camel-movemail.c:246 msgid "(Unknown error)" msgstr "(未知的错误)" #: ../camel/camel-movemail.c:273 #, c-format msgid "Error reading mail file: %s" msgstr "阅读邮件文件错误:%s" #: ../camel/camel-movemail.c:286 #, c-format msgid "Error writing mail temp file: %s" msgstr "写入邮件临时文件错误:%s" #: ../camel/camel-movemail.c:493 ../camel/camel-movemail.c:562 #, c-format msgid "Error copying mail temp file: %s" msgstr "复制邮件临时文件错误:%s" #: ../camel/camel-multipart-signed.c:297 #, c-format msgid "No content available" msgstr "没有可用的内容" #: ../camel/camel-multipart-signed.c:305 #, c-format msgid "No signature available" msgstr "没有可用的签名" #: ../camel/camel-multipart-signed.c:689 #, c-format msgid "parse error" msgstr "解析错误" #: ../camel/camel-net-utils.c:704 #, c-format msgid "Resolving: %s" msgstr "解析:%s" #: ../camel/camel-net-utils.c:727 msgid "Host lookup failed" msgstr "主机查阅失败" #: ../camel/camel-net-utils.c:733 #, c-format msgid "Host lookup '%s' failed. Check your host name for spelling errors." msgstr "主机查找 '%s' 名称失败。检查主机名是否拼写错误。" #: ../camel/camel-net-utils.c:737 #, c-format msgid "Host lookup '%s' failed: %s" msgstr "主机查找 '%s' 名称失败:%s" #: ../camel/camel-net-utils.c:858 msgid "Resolving address" msgstr "解析地址" #: ../camel/camel-net-utils.c:879 msgid "Name lookup failed" msgstr "名称查阅失败" #: ../camel/camel-net-utils.c:886 msgid "Name lookup failed. Check your host name for spelling errors." msgstr "名称查找失败。检查主机名是否拼写错误。" #: ../camel/camel-net-utils.c:890 #, c-format msgid "Name lookup failed: %s" msgstr "名称查阅失败:%s" #: ../camel/camel-network-service.c:354 #, c-format msgid "Could not connect to '%s:%s': " msgstr "无法连接到 '%s:%s': " #: ../camel/camel-offline-folder.c:212 #, c-format msgid "Syncing messages in folder '%s' to disk" msgstr "正在将文件夹“%s”中的消息同步到磁盘" #: ../camel/camel-provider.c:58 msgid "Virtual folder email provider" msgstr "虚拟文件夹电子邮件提供者" #: ../camel/camel-provider.c:60 msgid "For reading mail as a query of another set of folders" msgstr "关于将读入邮件作为对另一组文件夹的查询" #: ../camel/camel-provider.c:263 #, c-format msgid "Could not load %s: Module loading not supported on this system." msgstr "无法载入 %s:本系统不支持模块载入。" #: ../camel/camel-provider.c:272 #, c-format msgid "Could not load %s: %s" msgstr "无法载入 %s:%s" #: ../camel/camel-provider.c:281 #, c-format msgid "Could not load %s: No initialization code in module." msgstr "无法载入 %s:模块中没有初始化代码。" #: ../camel/camel-provider.c:429 ../camel/camel-session.c:406 #, c-format msgid "No provider available for protocol '%s'" msgstr "协议“%s”没有可用的提供者" #: ../camel/camel-sasl-anonymous.c:35 #: ../camel/providers/nntp/camel-nntp-provider.c:85 msgid "Anonymous" msgstr "匿名" #: ../camel/camel-sasl-anonymous.c:37 msgid "This option will connect to the server using an anonymous login." msgstr "该选项将连接到匿名登录的服务器上。" #: ../camel/camel-sasl-anonymous.c:70 #, c-format msgid "Authentication failed." msgstr "认证失败。" #: ../camel/camel-sasl-anonymous.c:81 #, c-format msgid "" "Invalid email address trace information:\n" "%s" msgstr "" "无效的电子邮件跟踪信息:\n" "%s" #: ../camel/camel-sasl-anonymous.c:95 #, c-format msgid "" "Invalid opaque trace information:\n" "%s" msgstr "" "无效的诲涩跟踪信息:\n" "%s" #: ../camel/camel-sasl-anonymous.c:109 #, c-format msgid "" "Invalid trace information:\n" "%s" msgstr "" "无效的跟踪信息:\n" "%s" #: ../camel/camel-sasl-cram-md5.c:46 msgid "CRAM-MD5" msgstr "CRAM-MD5" #: ../camel/camel-sasl-cram-md5.c:48 msgid "" "This option will connect to the server using a secure CRAM-MD5 password, if " "the server supports it." msgstr "如果服务器支持的话,该选项将用安全 CRAM-MD5 密码连接到服务器。" #: ../camel/camel-sasl-digest-md5.c:59 msgid "DIGEST-MD5" msgstr "DIGEST-MD5" #: ../camel/camel-sasl-digest-md5.c:61 msgid "" "This option will connect to the server using a secure DIGEST-MD5 password, " "if the server supports it." msgstr "如果服务器支持的话,该选项将用安全 DIGEST-MD5 密码连接到服务器。" #: ../camel/camel-sasl-digest-md5.c:855 #, c-format msgid "Server challenge too long (>2048 octets)" msgstr "服务器质询过长 (>2048 字节)" #: ../camel/camel-sasl-digest-md5.c:866 #, c-format msgid "Server challenge invalid\n" msgstr "服务器质询无效\n" #: ../camel/camel-sasl-digest-md5.c:874 #, c-format msgid "Server challenge contained invalid \"Quality of Protection\" token" msgstr "服务器质询含有无效的“品质保护”标志" #: ../camel/camel-sasl-digest-md5.c:907 #, c-format msgid "Server response did not contain authorization data" msgstr "服务器应答不含有认证数据" #: ../camel/camel-sasl-digest-md5.c:928 #, c-format msgid "Server response contained incomplete authorization data" msgstr "服务器应达含有不完整的认证数据" #: ../camel/camel-sasl-digest-md5.c:941 #, c-format msgid "Server response does not match" msgstr "服务器应答不匹配" #: ../camel/camel-sasl-gssapi.c:91 msgid "GSSAPI" msgstr "GSSAPI" #: ../camel/camel-sasl-gssapi.c:93 msgid "" "This option will connect to the server using Kerberos 5 authentication." msgstr "该选项将用 Kerberos 5 认证连接到服务器。" #: ../camel/camel-sasl-gssapi.c:134 msgid "" "The specified mechanism is not supported by the provided credential, or is " "unrecognized by the implementation." msgstr "所提供的证书不支持指定的机制,或者无法被实现所识别。" #: ../camel/camel-sasl-gssapi.c:139 msgid "The provided target_name parameter was ill-formed." msgstr "提供的 target_name 参数格式不对。" #: ../camel/camel-sasl-gssapi.c:142 msgid "" "The provided target_name parameter contained an invalid or unsupported type " "of name." msgstr "提供的 target_name 参数包含无效或不支持的名称类型。" #: ../camel/camel-sasl-gssapi.c:146 msgid "" "The input_token contains different channel bindings to those specified via " "the input_chan_bindings parameter." msgstr "input_token 包含的通道绑定与通过 input_chan_bindings 参数指定的通道不同。" #: ../camel/camel-sasl-gssapi.c:151 msgid "" "The input_token contains an invalid signature, or a signature that could not " "be verified." msgstr "input_token 包含无效的签名,或者无法验证签名。" #: ../camel/camel-sasl-gssapi.c:155 msgid "" "The supplied credentials were not valid for context initiation, or the " "credential handle did not reference any credentials." msgstr "提供的证书由于上下文的原因无效,或者证书句柄没有引用证书。" #: ../camel/camel-sasl-gssapi.c:160 msgid "The supplied context handle did not refer to a valid context." msgstr "提供的上下文句柄所引用的上下文无效。" #: ../camel/camel-sasl-gssapi.c:163 msgid "The consistency checks performed on the input_token failed." msgstr "对 input_token 执行完整性检查失败。" #: ../camel/camel-sasl-gssapi.c:166 msgid "The consistency checks performed on the credential failed." msgstr "对证书执行完整性检查失败。" #: ../camel/camel-sasl-gssapi.c:169 msgid "The referenced credentials have expired." msgstr "引用的证书已过期。" #: ../camel/camel-sasl-gssapi.c:175 ../camel/camel-sasl-gssapi.c:340 #: ../camel/camel-sasl-gssapi.c:388 ../camel/camel-sasl-gssapi.c:405 #: ../camel/providers/smtp/camel-smtp-transport.c:612 #, c-format msgid "Bad authentication response from server." msgstr "来自服务器的无效认证应答。" #: ../camel/camel-sasl-gssapi.c:417 #, c-format msgid "Unsupported security layer." msgstr "不支持的安全层。" #: ../camel/camel-sasl-login.c:40 msgid "Login" msgstr "Login" #: ../camel/camel-sasl-login.c:42 ../camel/camel-sasl-plain.c:46 msgid "This option will connect to the server using a simple password." msgstr "该选项将以普通密码连接到服务器。" #: ../camel/camel-sasl-login.c:110 #, c-format msgid "Unknown authentication state." msgstr "未知的认证状态。" #: ../camel/camel-sasl-ntlm.c:48 msgid "NTLM / SPA" msgstr "NTLM / SPA" #: ../camel/camel-sasl-ntlm.c:50 msgid "" "This option will connect to a Windows-based server using NTLM / Secure " "Password Authentication." msgstr "该选项将使用 NTLM / Secure 口令认证连接到基于 Windows 的服务器。" #: ../camel/camel-sasl-plain.c:44 msgid "PLAIN" msgstr "PLAIN" #: ../camel/camel-sasl-popb4smtp.c:46 msgid "POP before SMTP" msgstr "在 SMTP 之前 POP" #: ../camel/camel-sasl-popb4smtp.c:48 msgid "This option will authorise a POP connection before attempting SMTP" msgstr "该选项将在尝试 SMTP 之前允许 POP 连接" #: ../camel/camel-sasl-popb4smtp.c:84 msgid "POP Source UID" msgstr "POP 源 UID" #: ../camel/camel-sasl-popb4smtp.c:98 #, c-format msgid "POP Before SMTP authentication using an unknown transport" msgstr "以未知的传输进行 SMTP 认证授权之前的 POP" #: ../camel/camel-sasl-popb4smtp.c:110 ../camel/camel-sasl-popb4smtp.c:119 #, c-format #| msgid "POP Before SMTP authentication using a non-POP source" msgid "POP Before SMTP authentication attempted with a %s service" msgstr "试图通过 %s 服务在 SMTP 认证之前进行 POP" #: ../camel/camel-search-private.c:116 #, c-format msgid "Regular expression compilation failed: %s: %s" msgstr "常规表达式编译失败:%s:%s" #: ../camel/camel-session.c:415 #, c-format msgid "Invalid GType registered for protocol '%s'" msgstr "为协议“%s”注册的 GType 无效" #: ../camel/camel-session.c:509 #, c-format msgid "%s authentication failed" msgstr "%s 认证失败" #: ../camel/camel-session.c:645 msgid "Forwarding messages is not supported" msgstr "不支持转发消息" #. Translators: The first argument is the account type #. * (e.g. "IMAP"), the second is the user name, and the #. * third is the host name. #: ../camel/camel-session.c:1420 #, c-format msgid "Please enter the %s password for %s on host %s." msgstr "请输入 %2$s@%3$s 的 %1$s 密码" #: ../camel/camel-smime-context.c:351 ../camel/camel-smime-context.c:1074 #, c-format msgid "Cannot find certificate for '%s'" msgstr "无法找到‘%s’的证书" #: ../camel/camel-smime-context.c:379 msgid "Cannot create CMS message" msgstr "无法创建 CMS 消息" #: ../camel/camel-smime-context.c:384 msgid "Cannot create CMS signed data" msgstr "无法创建 CMS 签名数据" #: ../camel/camel-smime-context.c:390 msgid "Cannot attach CMS signed data" msgstr "无法附加 CMS 签名数据" #: ../camel/camel-smime-context.c:397 msgid "Cannot attach CMS data" msgstr "无法附加 CMS 数据" #: ../camel/camel-smime-context.c:403 msgid "Cannot create CMS Signer information" msgstr "无法创建 CMS 签名者信息" #: ../camel/camel-smime-context.c:409 msgid "Cannot find certificate chain" msgstr "找不到证书链" #: ../camel/camel-smime-context.c:415 msgid "Cannot add CMS Signing time" msgstr "无法添加 CMS 签名时间" #: ../camel/camel-smime-context.c:439 ../camel/camel-smime-context.c:454 #, c-format msgid "Encryption certificate for '%s' does not exist" msgstr "“%s”的加密证书不存在" #: ../camel/camel-smime-context.c:461 msgid "Cannot add SMIMEEncKeyPrefs attribute" msgstr "无法添加 SMIMEEncKeyPrefs 属性" #: ../camel/camel-smime-context.c:466 msgid "Cannot add MS SMIMEEncKeyPrefs attribute" msgstr "无法添加 MS SMIMEEncKeyPrefs 属性" #: ../camel/camel-smime-context.c:471 msgid "Cannot add encryption certificate" msgstr "无法添加加密证书" #: ../camel/camel-smime-context.c:477 msgid "Cannot add CMS Signer information" msgstr "无法添加 CMS 签名者信息" #. Translators: A fallback message when couldn't verify an SMIME signature #: ../camel/camel-smime-context.c:510 msgid "Unverified" msgstr "未校验" #: ../camel/camel-smime-context.c:512 msgid "Good signature" msgstr "完好签名" #: ../camel/camel-smime-context.c:514 msgid "Bad signature" msgstr "无效签名" #: ../camel/camel-smime-context.c:516 msgid "Content tampered with or altered in transit" msgstr "内容在传送过程中被篡改" #: ../camel/camel-smime-context.c:518 msgid "Signing certificate not found" msgstr "签名证书找不到" #: ../camel/camel-smime-context.c:520 msgid "Signing certificate not trusted" msgstr "签名证书不可信" #: ../camel/camel-smime-context.c:522 msgid "Signature algorithm unknown" msgstr "签名算法未知" #: ../camel/camel-smime-context.c:524 msgid "Signature algorithm unsupported" msgstr "签名算法不支持" #: ../camel/camel-smime-context.c:526 msgid "Malformed signature" msgstr "签名格式不对" #: ../camel/camel-smime-context.c:528 msgid "Processing error" msgstr "处理错误" #: ../camel/camel-smime-context.c:573 msgid "No signed data in signature" msgstr "签名中没有签名数据" #: ../camel/camel-smime-context.c:578 msgid "Digests missing from enveloped data" msgstr "信封数据缺少摘要" #: ../camel/camel-smime-context.c:591 ../camel/camel-smime-context.c:602 msgid "Cannot calculate digests" msgstr "无法计算摘要" #: ../camel/camel-smime-context.c:609 ../camel/camel-smime-context.c:613 msgid "Cannot set message digests" msgstr "无法设置消息摘要" #: ../camel/camel-smime-context.c:623 ../camel/camel-smime-context.c:628 msgid "Certificate import failed" msgstr "证书导入失败" #: ../camel/camel-smime-context.c:638 #, c-format msgid "Certificate is the only message, cannot verify certificates" msgstr "只有证书的消息,无法校验证书" #: ../camel/camel-smime-context.c:641 #, c-format msgid "Certificate is the only message, certificates imported and verified" msgstr "只有证书的消息,证书已导入并校验" #: ../camel/camel-smime-context.c:645 msgid "Cannot find signature digests" msgstr "找不到签名摘要" #: ../camel/camel-smime-context.c:662 #, c-format msgid "Signer: %s <%s>: %s\n" msgstr "签名者:%s <%s>:%s\n" #: ../camel/camel-smime-context.c:858 ../camel/camel-smime-context.c:1148 msgid "Cannot create encoder context" msgstr "无法创建编码器上下文" #: ../camel/camel-smime-context.c:864 msgid "Failed to add data to CMS encoder" msgstr "将数据添加到 CMS 编码器失败" #: ../camel/camel-smime-context.c:869 ../camel/camel-smime-context.c:1165 msgid "Failed to encode data" msgstr "编码数据失败" #: ../camel/camel-smime-context.c:1013 ../camel/camel-smime-context.c:1262 msgid "Decoder failed" msgstr "解码器失败" #: ../camel/camel-smime-context.c:1082 msgid "Cannot find common bulk encryption algorithm" msgstr "找不到公共批量加密算法" #: ../camel/camel-smime-context.c:1090 msgid "Cannot allocate slot for encryption bulk key" msgstr "无法为加密批量密钥分配密钥槽" #: ../camel/camel-smime-context.c:1101 msgid "Cannot create CMS Message" msgstr "无法创建 CMS 消息" #: ../camel/camel-smime-context.c:1107 msgid "Cannot create CMS Enveloped data" msgstr "无法创建 CMS 信封数据" #: ../camel/camel-smime-context.c:1113 msgid "Cannot attach CMS Enveloped data" msgstr "无法附加 CMS 信封数据" #: ../camel/camel-smime-context.c:1119 msgid "Cannot attach CMS data object" msgstr "无法附加 CMS 数据对象" #: ../camel/camel-smime-context.c:1128 msgid "Cannot create CMS Recipient information" msgstr "无法创建 CMS 收件人信息" #: ../camel/camel-smime-context.c:1133 msgid "Cannot add CMS Recipient information" msgstr "无法添加 CMS 收件人信息" #: ../camel/camel-smime-context.c:1159 msgid "Failed to add data to encoder" msgstr "将数据添加到编码器失败" #: ../camel/camel-smime-context.c:1269 msgid "S/MIME Decrypt: No encrypted content found" msgstr "S/MIME 解密:没有找到加密内容" #: ../camel/camel-store.c:1999 #, c-format msgid "Cannot create folder '%s': folder exists" msgstr "无法创建文件夹“%s”文件夹已存在" #: ../camel/camel-store.c:2042 #, c-format msgid "Opening folder '%s'" msgstr "打开文件夹“%s”" #: ../camel/camel-store.c:2231 #, c-format msgid "Scanning folders in '%s'" msgstr "扫描“%s”中的文件夹" #: ../camel/camel-store.c:2259 ../camel/camel-store.c:2304 #: ../camel/camel-vtrash-folder.c:48 msgid "Trash" msgstr "回收站" #: ../camel/camel-store.c:2273 ../camel/camel-store.c:2321 #: ../camel/camel-vtrash-folder.c:50 msgid "Junk" msgstr "垃圾" #: ../camel/camel-store.c:2774 #, c-format msgid "Cannot create folder: %s: folder exists" msgstr "无法创建文件夹:%s:文件夹已存在" #: ../camel/camel-store.c:2788 #, c-format msgid "Creating folder '%s'" msgstr "创建文件夹“%s”" #: ../camel/camel-store.c:2906 ../camel/camel-vee-store.c:418 #: ../camel/providers/local/camel-maildir-store.c:315 #, c-format msgid "Cannot delete folder: %s: Invalid operation" msgstr "无法删除文件夹:%s:无效操作" #: ../camel/camel-store.c:3049 ../camel/camel-vee-store.c:469 #: ../camel/providers/local/camel-maildir-store.c:841 #, c-format msgid "Cannot rename folder: %s: Invalid operation" msgstr "无法重命名文件夹:%s:无效操作" #: ../camel/camel-stream-filter.c:346 msgid "Only reset to beginning is supported with CamelStreamFilter" msgstr "CamelStreamFilter 只支持重设到开始" #: ../camel/camel-stream-null.c:78 msgid "Only reset to beginning is supported with CamelHttpStream" msgstr "CamelHttpStream 只支持重设到开始" #: ../camel/camel-stream-process.c:275 #, c-format msgid "Connection cancelled" msgstr "连接已取消" #: ../camel/camel-stream-process.c:280 #, c-format msgid "Could not connect with command \"%s\": %s" msgstr "无法使用命令“%s”连接:%s" #: ../camel/camel-subscribable.c:395 #, c-format msgid "Subscribing to folder '%s'" msgstr "正在订阅文件夹 '%s'" #: ../camel/camel-subscribable.c:527 #, c-format msgid "Unsubscribing from folder '%s'" msgstr "正在取消订阅文件夹 '%s'" #: ../camel/camel-tcp-stream-raw.c:310 #, c-format msgid "NSPR error code %d" msgstr "NSPR 错误代码 %d" #: ../camel/camel-tcp-stream-raw.c:649 ../camel/camel-tcp-stream-raw.c:662 #, c-format msgid "The proxy host does not support SOCKS4" msgstr "代理主机不支持 SOCKS4" #: ../camel/camel-tcp-stream-raw.c:675 #, c-format msgid "The proxy host denied our request: code %d" msgstr "代理主机拒绝了已方的请求:代码 %d" #: ../camel/camel-tcp-stream-raw.c:773 ../camel/camel-tcp-stream-raw.c:781 #, c-format msgid "The proxy host does not support SOCKS5" msgstr "代理主机不支持 SOCKS5" #: ../camel/camel-tcp-stream-raw.c:789 #, c-format msgid "Could not find a suitable authentication type: code 0x%x" msgstr "无法找到合适的认证类型: 代码 0x%x" #: ../camel/camel-tcp-stream-raw.c:801 msgid "General SOCKS server failure" msgstr "通用 SOCKS 服务器失败" #: ../camel/camel-tcp-stream-raw.c:802 msgid "SOCKS server's rules do not allow connection" msgstr "SOCKS 服务器的策略不允许连接" #: ../camel/camel-tcp-stream-raw.c:803 msgid "Network is unreachable from SOCKS server" msgstr "SOCKS 服务器网络不可及" #: ../camel/camel-tcp-stream-raw.c:804 msgid "Host is unreachable from SOCKS server" msgstr "SOCKS 服务器主机不可及" #: ../camel/camel-tcp-stream-raw.c:805 msgid "Connection refused" msgstr "连接被拒绝" #: ../camel/camel-tcp-stream-raw.c:806 msgid "Time-to-live expired" msgstr "连通时间过期" #: ../camel/camel-tcp-stream-raw.c:807 msgid "Command not supported by SOCKS server" msgstr "SOCKS 服务器不支持该命令" #: ../camel/camel-tcp-stream-raw.c:808 msgid "Address type not supported by SOCKS server" msgstr "SOCKS 服务器不支持该地址类型" #: ../camel/camel-tcp-stream-raw.c:809 msgid "Unknown error from SOCKS server" msgstr "SOCKS 服务器发生未知错误" #: ../camel/camel-tcp-stream-raw.c:842 #, c-format msgid "Got unknown address type from SOCKS server" msgstr "从 SOCKS 服务器获取的地址类型未知" #: ../camel/camel-tcp-stream-raw.c:860 #, c-format msgid "Incomplete reply from SOCKS server" msgstr "SOCKS 服务器的响应不完整" #: ../camel/camel-tcp-stream-raw.c:880 #, c-format msgid "Hostname is too long (maximum is 255 characters)" msgstr "主机名太长 (最长 255 字符)" #. SOCKS5 #. reserved - must be 0 #: ../camel/camel-tcp-stream-raw.c:912 ../camel/camel-tcp-stream-raw.c:922 #, c-format msgid "Invalid reply from proxy server" msgstr "代理服务器的响应无效" #: ../camel/camel-url.c:331 #, c-format msgid "Could not parse URL '%s'" msgstr "无法解析 URL“%s”" #: ../camel/camel-vee-folder.c:494 #, c-format msgid "Updating folder '%s'" msgstr "更新文件夹 '%s'" #: ../camel/camel-vee-folder.c:855 ../camel/camel-vee-folder.c:965 #, c-format msgid "Cannot copy or move messages into a Virtual Folder" msgstr "无法将消息移动或复制到虚拟文件夹中" #: ../camel/camel-vee-folder.c:888 #, c-format msgid "No such message %s in %s" msgstr "在 %2$s 中没有消息 %1$s" #: ../camel/camel-vee-folder.c:941 #, c-format msgid "Error storing '%s': " msgstr "存储“%s”出错: " #: ../camel/camel-vee-folder.c:1171 msgid "Automatically _update on change in source folders" msgstr "源文件夹变更时自动更新" #. Translators: 'Unmatched' is a folder name under Search folders where are shown #. * all messages not belonging into any other configured search folder #: ../camel/camel-vee-store.c:42 msgid "Unmatched" msgstr "无匹配" #: ../camel/camel-vee-store.c:444 #, c-format msgid "Cannot delete folder: %s: No such folder" msgstr "无法删除文件夹:%s:没有该文件夹" #: ../camel/camel-vee-store.c:479 #, c-format msgid "Cannot rename folder: %s: No such folder" msgstr "无法重命名文件夹:%s:没有该文件夹" #: ../camel/camel-vee-store.c:542 msgid "Enable _Unmatched folder" msgstr "启用无匹配的文件夹(_U)" #: ../camel/camel-vtrash-folder.c:49 msgid "Cannot copy messages to the Trash folder" msgstr "无法将消息复制到回收站文件夹" #: ../camel/camel-vtrash-folder.c:51 msgid "Cannot copy messages to the Junk folder" msgstr "无法将消息复制到垃圾邮件文件夹" #: ../camel/providers/imapx/camel-imapx-provider.c:38 msgid "Checking for New Mail" msgstr "检查新邮件" #: ../camel/providers/imapx/camel-imapx-provider.c:40 msgid "C_heck for new messages in all folders" msgstr "在所有文件夹中检查新消息(_H)" #: ../camel/providers/imapx/camel-imapx-provider.c:42 msgid "Ch_eck for new messages in subscribed folders" msgstr "在订阅的文件夹中检查新消息(_E)" #: ../camel/providers/imapx/camel-imapx-provider.c:44 msgid "Use _Quick Resync if the server supports it" msgstr "如果服务器支持则使用快速重新同步(_Q)" #: ../camel/providers/imapx/camel-imapx-provider.c:46 msgid "_Listen for server change notifications" msgstr "监听服务器变化提醒(_L)" #: ../camel/providers/imapx/camel-imapx-provider.c:49 #: ../camel/providers/nntp/camel-nntp-provider.c:46 msgid "Folders" msgstr "文件夹" #: ../camel/providers/imapx/camel-imapx-provider.c:51 msgid "_Show only subscribed folders" msgstr "只显示订阅了的文件夹(_S)" #: ../camel/providers/imapx/camel-imapx-provider.c:54 msgid "O_verride server-supplied folder namespace" msgstr "覆盖服务器提供的文件夹命名空间(_V)" #: ../camel/providers/imapx/camel-imapx-provider.c:56 msgid "Namespace:" msgstr "命名空间:" #: ../camel/providers/imapx/camel-imapx-provider.c:59 #: ../camel/providers/local/camel-local-provider.c:41 #: ../camel/providers/local/camel-local-provider.c:81 #: ../camel/providers/local/camel-local-provider.c:101 #: ../camel/providers/nntp/camel-nntp-provider.c:41 msgid "Options" msgstr "选项" #: ../camel/providers/imapx/camel-imapx-provider.c:61 #: ../camel/providers/nntp/camel-nntp-provider.c:43 msgid "Apply _filters to new messages in all folders" msgstr "对所有文件夹中的新消息应用过滤规则(_F)" #: ../camel/providers/imapx/camel-imapx-provider.c:63 msgid "_Apply filters to new messages in Inbox on this server" msgstr "应用过滤规则到此服务器上收件箱中的新消息(_A)" #: ../camel/providers/imapx/camel-imapx-provider.c:65 msgid "Check new messages for _Junk contents" msgstr "检查新消息的垃圾内容(_J)" #: ../camel/providers/imapx/camel-imapx-provider.c:67 msgid "Only check for Junk messages in the IN_BOX folder" msgstr "仅在收件箱中检查垃圾邮件(_B)" #: ../camel/providers/imapx/camel-imapx-provider.c:69 msgid "Automatically synchroni_ze remote mail locally" msgstr "自动将远程邮件同步到本地(_Z)" #: ../camel/providers/imapx/camel-imapx-provider.c:75 msgid "Default IMAP port" msgstr "默认的 IMAP 端口" #: ../camel/providers/imapx/camel-imapx-provider.c:76 msgid "IMAP over SSL" msgstr "IMAP (SSL 加密)" #: ../camel/providers/imapx/camel-imapx-provider.c:83 msgid "IMAP+" msgstr "IMAP+" #: ../camel/providers/imapx/camel-imapx-provider.c:85 msgid "For reading and storing mail on IMAP servers." msgstr "IMAP 服务器上的邮件的读写。" #: ../camel/providers/local/camel-local-folder.c:194 #, c-format msgid "~%s (%s)" msgstr "~%s (%s)" #: ../camel/providers/local/camel-local-folder.c:204 #: ../camel/providers/local/camel-local-folder.c:213 #, c-format msgid "mailbox: %s (%s)" msgstr "邮件箱:%s (%s)" #: ../camel/providers/local/camel-local-folder.c:222 #, c-format msgid "%s (%s)" msgstr "%s (%s)" #: ../camel/providers/local/camel-local-folder.c:499 msgid "_Index message body data" msgstr "索引消息正文(_I)" #: ../camel/providers/local/camel-local-folder.c:727 #, c-format msgid "" "Cannot get message %s from folder %s\n" "%s" msgstr "" "无法从文件夹 %2$s 获取消息 %1$s\n" "%3$s" #: ../camel/providers/local/camel-local-provider.c:43 msgid "_Use the '.folders' folder summary file (exmh)" msgstr "使用“.folders”文件夹概览文件(exmh)(_U)" #: ../camel/providers/local/camel-local-provider.c:50 msgid "MH-format mail directories" msgstr "MH-格式的邮件目录" #: ../camel/providers/local/camel-local-provider.c:51 msgid "For storing local mail in MH-like mail directories." msgstr "在类似于 MH 的邮件目录中存储本地邮件。" #: ../camel/providers/local/camel-local-provider.c:68 msgid "Local delivery" msgstr "本地发送" #: ../camel/providers/local/camel-local-provider.c:69 msgid "" "For retrieving (moving) local mail from standard mbox-formatted spools into " "folders managed by Evolution." msgstr "对于将本地邮件从标准 mbox 格式脱机文件夹获取(移动)到由 Evolution 管理的文件夹。" #: ../camel/providers/local/camel-local-provider.c:83 #: ../camel/providers/local/camel-local-provider.c:103 msgid "_Apply filters to new messages in Inbox" msgstr "对收件箱中的新消息应用过滤规则(_A)" #: ../camel/providers/local/camel-local-provider.c:90 msgid "Maildir-format mail directories" msgstr "Maildir 格式的邮件目录" #: ../camel/providers/local/camel-local-provider.c:91 msgid "For storing local mail in maildir directories." msgstr "在 maildir 邮件目录中存储本地邮件。" #: ../camel/providers/local/camel-local-provider.c:104 msgid "_Store status headers in Elm/Pine/Mutt format" msgstr "以 Elm/Pine/Mutt 格式存储状态头(_S)" #: ../camel/providers/local/camel-local-provider.c:111 msgid "Standard Unix mbox spool file" msgstr "标准 Unix mbox 脱机文件" #: ../camel/providers/local/camel-local-provider.c:112 #: ../camel/providers/local/camel-local-provider.c:126 msgid "" "For reading and storing local mail in external standard mbox spool files.\n" "May also be used to read a tree of Elm, Pine, or Mutt style folders." msgstr "" "对于读取和存储外部标准 mbox 脱机文件中的本地邮件。\n" "也可用于读取 Elm、Pine 或 Mutt 风格的文件夹树。" #: ../camel/providers/local/camel-local-provider.c:125 msgid "Standard Unix mbox spool directory" msgstr "标准 Unix mbox 脱机目录" #: ../camel/providers/local/camel-local-store.c:98 #, c-format msgid "Could not rename folder %s to %s: %s" msgstr "无法将文件夹 %s 改名为 %s:%s" #: ../camel/providers/local/camel-local-store.c:180 #, c-format msgid "Local mail file %s" msgstr "本地邮件文件 %s" #: ../camel/providers/local/camel-local-store.c:223 #: ../camel/providers/local/camel-local-store.c:383 #: ../camel/providers/local/camel-maildir-store.c:117 #: ../camel/providers/local/camel-mbox-store.c:581 #: ../camel/providers/local/camel-spool-store.c:89 #, c-format msgid "Store root %s is not an absolute path" msgstr "存储根目录 %s 不是绝对路径" #: ../camel/providers/local/camel-local-store.c:232 #, c-format msgid "Store root %s is not a regular directory" msgstr "存储根目录 %s 不是普通目录" #: ../camel/providers/local/camel-local-store.c:244 #: ../camel/providers/local/camel-local-store.c:254 #: ../camel/providers/local/camel-local-store.c:396 #: ../camel/providers/local/camel-maildir-store.c:145 #, c-format msgid "Cannot get folder: %s: %s" msgstr "无法获取文件夹:%s:%s" #: ../camel/providers/local/camel-local-store.c:291 #, c-format msgid "Local stores do not have an inbox" msgstr "本地存储没有收件箱" #: ../camel/providers/local/camel-local-store.c:456 #: ../camel/providers/local/camel-mbox-store.c:748 #, c-format msgid "Could not delete folder index file '%s': %s" msgstr "无法删除文件夹索引文件“%s”:%s" #: ../camel/providers/local/camel-local-store.c:484 #: ../camel/providers/local/camel-mbox-store.c:778 #, c-format msgid "Could not delete folder meta file '%s': %s" msgstr "无法删除文件夹元文件“%s”:%s" #: ../camel/providers/local/camel-local-store.c:596 #, c-format msgid "Could not rename '%s': %s" msgstr "无法重命名“%s”:%s" #: ../camel/providers/local/camel-local-summary.c:567 #, c-format msgid "Unable to add message to summary: unknown reason" msgstr "无法将消息添加到概要中:未知的原因" #: ../camel/providers/local/camel-maildir-folder.c:100 #: ../camel/providers/local/camel-maildir-folder.c:335 #: ../camel/providers/local/camel-mbox-folder.c:117 #: ../camel/providers/local/camel-mbox-folder.c:329 #: ../camel/providers/local/camel-mh-folder.c:159 msgid "No such message" msgstr "没有该消息" #: ../camel/providers/local/camel-maildir-folder.c:225 #, c-format msgid "Cannot append message to maildir folder: %s: " msgstr "无法将消息附加到邮件目录文件夹:%s: " #: ../camel/providers/local/camel-maildir-folder.c:273 #: ../camel/providers/local/camel-maildir-folder.c:283 #: ../camel/providers/local/camel-mbox-folder.c:390 #: ../camel/providers/local/camel-mh-folder.c:171 #: ../camel/providers/local/camel-mh-folder.c:181 #, c-format msgid "Cannot get message %s from folder %s: " msgstr "无法从文件夹 %2$s 获取消息 %1$s: " #: ../camel/providers/local/camel-maildir-folder.c:353 #, c-format msgid "Cannot transfer message to destination folder: %s" msgstr "无法将消息转移到目标文件夹:%s" #: ../camel/providers/local/camel-maildir-store.c:125 #: ../camel/providers/local/camel-maildir-store.c:850 #, c-format msgid "Folder %s already exists" msgstr "文件夹 %s 已经存在" #: ../camel/providers/local/camel-maildir-store.c:230 #: ../camel/providers/local/camel-maildir-store.c:261 #: ../camel/providers/local/camel-mbox-store.c:403 #: ../camel/providers/local/camel-mbox-store.c:424 #, c-format msgid "Cannot create folder '%s': %s" msgstr "无法创建文件夹“%s”:%s" #: ../camel/providers/local/camel-maildir-store.c:245 #: ../camel/providers/local/camel-mbox-store.c:369 #: ../camel/providers/local/camel-mh-store.c:524 #, c-format msgid "Cannot get folder '%s': %s" msgstr "无法获取文件夹“%s”:%s" #: ../camel/providers/local/camel-maildir-store.c:251 #: ../camel/providers/local/camel-mbox-store.c:379 #: ../camel/providers/local/camel-mh-store.c:533 #, c-format msgid "Cannot get folder '%s': folder does not exist." msgstr "无法获得文件夹“%s”:文件夹不存在。" #: ../camel/providers/local/camel-maildir-store.c:278 #, c-format msgid "Cannot get folder '%s': not a maildir directory." msgstr "无法获取文件夹“%s”:不是 maildir 目录。" #: ../camel/providers/local/camel-maildir-store.c:283 #: ../camel/providers/local/camel-mbox-store.c:442 #: ../camel/providers/local/camel-mh-store.c:566 #, c-format msgid "Cannot create folder '%s': folder exists." msgstr "无法创建文件夹“%s”:文件夹已存在。" #: ../camel/providers/local/camel-maildir-store.c:347 #: ../camel/providers/local/camel-maildir-store.c:387 #: ../camel/providers/local/camel-mh-store.c:684 #, c-format msgid "Could not delete folder '%s': %s" msgstr "无法删除文件夹“%s”:%s" #: ../camel/providers/local/camel-maildir-store.c:349 msgid "not a maildir directory" msgstr "不是 maildir 目录" #: ../camel/providers/local/camel-maildir-store.c:630 #: ../camel/providers/local/camel-maildir-store.c:1065 #: ../camel/providers/local/camel-spool-store.c:214 #: ../camel/providers/local/camel-spool-store.c:233 #, c-format msgid "Could not scan folder '%s': %s" msgstr "无法扫描文件夹“%s”:%s" #: ../camel/providers/local/camel-maildir-summary.c:458 #: ../camel/providers/local/camel-maildir-summary.c:591 #, c-format msgid "Cannot open maildir directory path: %s: %s" msgstr "无法打开邮件目录路径:%s:%s" #: ../camel/providers/local/camel-maildir-summary.c:582 msgid "Checking folder consistency" msgstr "检查文件夹一致性" #: ../camel/providers/local/camel-maildir-summary.c:675 msgid "Checking for new messages" msgstr "检查新消息" #: ../camel/providers/local/camel-maildir-summary.c:770 #: ../camel/providers/local/camel-mbox-summary.c:450 #: ../camel/providers/local/camel-mbox-summary.c:683 #: ../camel/providers/local/camel-mbox-summary.c:832 #: ../camel/providers/local/camel-spool-summary.c:141 msgid "Storing folder" msgstr "存储文件夹" #: ../camel/providers/local/camel-mbox-folder.c:187 #, c-format msgid "Cannot open mailbox: %s: " msgstr "无法打开邮件箱:%s: " #: ../camel/providers/local/camel-mbox-folder.c:253 #, c-format msgid "Cannot append message to mbox file: %s: " msgstr "无法将消息附加到邮件箱文件:%s: " #: ../camel/providers/local/camel-mbox-folder.c:382 msgid "The folder appears to be irrecoverably corrupted." msgstr "文件夹好像已经被不可恢复地破坏了。" #: ../camel/providers/local/camel-mbox-folder.c:439 #: ../camel/providers/local/camel-spool-folder.c:69 #, c-format msgid "Cannot create folder lock on %s: %s" msgstr "无法在 %s 创建文件夹锁:%s" #: ../camel/providers/local/camel-mbox-store.c:391 #: ../camel/providers/local/camel-mbox-store.c:589 #, c-format msgid "Cannot create a folder by this name." msgstr "无法以此名称创建文件夹。" #: ../camel/providers/local/camel-mbox-store.c:435 #, c-format msgid "Cannot get folder '%s': not a regular file." msgstr "无法获取文件夹“%s”:不是普通文件" #: ../camel/providers/local/camel-mbox-store.c:605 #, c-format msgid "Cannot create directory '%s': %s." msgstr "无法创建目录“%s”:%s" #: ../camel/providers/local/camel-mbox-store.c:617 #, c-format msgid "Cannot create folder: %s: %s" msgstr "无法创建文件夹:%s:%s" #: ../camel/providers/local/camel-mbox-store.c:619 msgid "Folder already exists" msgstr "文件夹已经存在" #: ../camel/providers/local/camel-mbox-store.c:659 #: ../camel/providers/local/camel-mbox-store.c:672 #: ../camel/providers/local/camel-mbox-store.c:701 #, c-format msgid "" "Could not delete folder '%s':\n" "%s" msgstr "" "无法删除文件夹“%s”:\n" "%s" #: ../camel/providers/local/camel-mbox-store.c:682 #, c-format msgid "'%s' is not a regular file." msgstr "“%s”并不是普通文件。" #: ../camel/providers/local/camel-mbox-store.c:691 #, c-format msgid "Folder '%s' is not empty. Not deleted." msgstr "文件夹“%s”非空。没有删除。" #: ../camel/providers/local/camel-mbox-store.c:718 #: ../camel/providers/local/camel-mbox-store.c:733 #, c-format msgid "Could not delete folder summary file '%s': %s" msgstr "无法删除文件夹概要文件“%s”:%s" #: ../camel/providers/local/camel-mbox-store.c:815 #, c-format msgid "The new folder name is illegal." msgstr "指定的文件夹名称不合法。" #: ../camel/providers/local/camel-mbox-store.c:831 #, c-format msgid "Could not rename '%s': '%s': %s" msgstr "无法重命名“%s”:“%s”:%s" #: ../camel/providers/local/camel-mbox-store.c:915 #, c-format msgid "Could not rename '%s' to %s: %s" msgstr "无法将“%s”重命名为 %s:%s" #: ../camel/providers/local/camel-mbox-summary.c:460 #, c-format msgid "Could not open folder: %s: %s" msgstr "无法打开文件夹:%s:%s" #: ../camel/providers/local/camel-mbox-summary.c:522 #, c-format msgid "Fatal mail parser error near position %s in folder %s" msgstr "邮件解析发生致命错误,位于 %s (文件夹 %s)" #: ../camel/providers/local/camel-mbox-summary.c:607 #, c-format msgid "Cannot check folder: %s: %s" msgstr "无法检查文件夹:%s:%s" #: ../camel/providers/local/camel-mbox-summary.c:696 #: ../camel/providers/local/camel-mbox-summary.c:841 #: ../camel/providers/local/camel-spool-summary.c:148 #, c-format msgid "Could not open file: %s: %s" msgstr "无法打开文件:%s:%s" #: ../camel/providers/local/camel-mbox-summary.c:711 #: ../camel/providers/local/camel-spool-summary.c:163 #, c-format msgid "Cannot open temporary mailbox: %s" msgstr "无法打开临时邮件箱:%s" #: ../camel/providers/local/camel-mbox-summary.c:728 #: ../camel/providers/local/camel-mbox-summary.c:958 #, c-format msgid "Could not close source folder %s: %s" msgstr "无法关闭来源文件夹 %s:%s" #: ../camel/providers/local/camel-mbox-summary.c:741 #, c-format msgid "Could not close temporary folder: %s" msgstr "无法关闭临时文件夹:%s" #: ../camel/providers/local/camel-mbox-summary.c:760 #, c-format msgid "Could not rename folder: %s" msgstr "无法重命名文件夹:%s" #: ../camel/providers/local/camel-mbox-summary.c:855 #: ../camel/providers/local/camel-mbox-summary.c:1124 #, c-format msgid "Could not store folder: %s" msgstr "无法存储文件夹:%s" #: ../camel/providers/local/camel-mbox-summary.c:894 #: ../camel/providers/local/camel-mbox-summary.c:1164 #, c-format msgid "" "MBOX file is corrupted, please fix it. (Expected a From line, but didn't get " "it.)" msgstr "MBOX 文件损坏,请修复。(应该有 From 行,但未找到。)" #: ../camel/providers/local/camel-mbox-summary.c:904 #: ../camel/providers/local/camel-mbox-summary.c:1176 #, c-format msgid "Summary and folder mismatch, even after a sync" msgstr "即使同步后,概要和文件夹仍然不匹配" #: ../camel/providers/local/camel-mbox-summary.c:1069 #: ../camel/providers/local/camel-spool-summary.c:356 #, c-format msgid "Unknown error: %s" msgstr "未知的错误:%s" #: ../camel/providers/local/camel-mbox-summary.c:1234 #: ../camel/providers/local/camel-mbox-summary.c:1264 #, c-format msgid "Writing to temporary mailbox failed: %s" msgstr "写入临时 mailbox 失败:%s" #: ../camel/providers/local/camel-mbox-summary.c:1253 #, c-format msgid "Writing to temporary mailbox failed: %s: %s" msgstr "写入临时 mailbox 失败:%s:%s" #: ../camel/providers/local/camel-mh-folder.c:118 #, c-format msgid "Cannot append message to mh folder: %s: " msgstr "无法将消息附加到 mh 文件夹:%s: " #: ../camel/providers/local/camel-mh-store.c:543 #, c-format msgid "Could not create folder '%s': %s" msgstr "无法创建文件夹“%s”:%s" #: ../camel/providers/local/camel-mh-store.c:559 #, c-format msgid "Cannot get folder '%s': not a directory." msgstr "无法获取文件夹“%s”:不是目录。" #: ../camel/providers/local/camel-mh-summary.c:232 #, c-format msgid "Cannot open MH directory path: %s: %s" msgstr "无法打开 MH 目录:%s:%s" #: ../camel/providers/local/camel-spool-store.c:97 #, c-format msgid "Spool '%s' cannot be opened: %s" msgstr "无法打开脱机文件“%s”:%s" #: ../camel/providers/local/camel-spool-store.c:111 #, c-format msgid "Spool '%s' is not a regular file or directory" msgstr "脱机文件“%s”不是普通文件或目录" #: ../camel/providers/local/camel-spool-store.c:427 #, c-format msgid "Spool mail file %s" msgstr "脱机邮件文件 %s" #: ../camel/providers/local/camel-spool-store.c:431 #, c-format msgid "Spool folder tree %s" msgstr "脱机文件夹树 %s" #: ../camel/providers/local/camel-spool-store.c:434 msgid "Invalid spool" msgstr "无效的本地文件" #: ../camel/providers/local/camel-spool-store.c:494 #, c-format msgid "Folder '%s/%s' does not exist." msgstr "文件夹“%s/%s”不存在。" #: ../camel/providers/local/camel-spool-store.c:507 #, c-format msgid "" "Could not open folder '%s':\n" "%s" msgstr "" "无法打开文件夹“%s”:\n" "%s" #: ../camel/providers/local/camel-spool-store.c:513 #, c-format msgid "Folder '%s' does not exist." msgstr "文件夹“%s”不存在。" #: ../camel/providers/local/camel-spool-store.c:521 #, c-format msgid "" "Could not create folder '%s':\n" "%s" msgstr "" "无法创建文件夹“%s”:\n" "%s" #: ../camel/providers/local/camel-spool-store.c:534 #, c-format msgid "'%s' is not a mailbox file." msgstr "“%s”不是邮件箱文件。" #: ../camel/providers/local/camel-spool-store.c:598 #, c-format msgid "Store does not support an INBOX" msgstr "存储并不支持收件箱" #: ../camel/providers/local/camel-spool-store.c:617 #, c-format msgid "Spool folders cannot be deleted" msgstr "脱机文件夹无法删除" #: ../camel/providers/local/camel-spool-store.c:632 #, c-format msgid "Spool folders cannot be renamed" msgstr "脱机文件夹无法改名" #: ../camel/providers/local/camel-spool-summary.c:179 #: ../camel/providers/local/camel-spool-summary.c:191 #: ../camel/providers/local/camel-spool-summary.c:203 #, c-format msgid "Could not synchronize temporary folder %s: %s" msgstr "无法同步临时文件夹 %s: %s" #: ../camel/providers/local/camel-spool-summary.c:221 #, c-format msgid "Could not synchronize spool folder %s: %s" msgstr "无法同步脱机文件夹 %s: %s" #: ../camel/providers/local/camel-spool-summary.c:253 #: ../camel/providers/local/camel-spool-summary.c:272 #: ../camel/providers/local/camel-spool-summary.c:285 #, c-format msgid "" "Could not synchronize spool folder %s: %s\n" "Folder may be corrupt, copy saved in '%s'" msgstr "" "无法同步脱机文件夹 %s: %s\n" "文件夹可能已损坏,副本已存放在 '%s'" #: ../camel/providers/nntp/camel-nntp-folder.c:287 #: ../camel/providers/nntp/camel-nntp-folder.c:392 #: ../camel/providers/nntp/camel-nntp-folder.c:516 #, c-format msgid "Internal error: UID in invalid format: %s" msgstr "内部错误:UID 的格式无效:%s" #: ../camel/providers/nntp/camel-nntp-folder.c:351 #: ../camel/providers/nntp/camel-nntp-folder.c:356 #: ../camel/providers/pop3/camel-pop3-folder.c:698 #: ../camel/providers/pop3/camel-pop3-folder.c:1173 #, c-format msgid "Cannot get message %s: %s" msgstr "无法获取消息 %s:%s" #: ../camel/providers/nntp/camel-nntp-folder.c:363 #: ../camel/providers/nntp/camel-nntp-folder.c:542 #: ../camel/providers/pop3/camel-pop3-folder.c:623 #: ../camel/providers/pop3/camel-pop3-folder.c:688 #: ../camel/providers/pop3/camel-pop3-folder.c:707 #, c-format msgid "Cannot get message %s: " msgstr "无法获取消息 %s: " #: ../camel/providers/nntp/camel-nntp-folder.c:531 #, c-format msgid "This message is not currently available" msgstr "该消息目前不可用" #: ../camel/providers/nntp/camel-nntp-folder.c:599 #: ../camel/providers/nntp/camel-nntp-folder.c:605 #, c-format msgid "Posting failed: %s" msgstr "发表失败:%s" #: ../camel/providers/nntp/camel-nntp-folder.c:670 msgid "Posting failed: " msgstr "发表失败: " #: ../camel/providers/nntp/camel-nntp-folder.c:695 #, c-format msgid "You cannot post NNTP messages while working offline!" msgstr "您离线时无法投递 NNTP 消息!" #: ../camel/providers/nntp/camel-nntp-folder.c:715 #, c-format msgid "You cannot copy messages from a NNTP folder!" msgstr "您无法从 NNTP 文件夹复制消息!" #: ../camel/providers/nntp/camel-nntp-provider.c:48 msgid "" "_Show folders in short notation (e.g. c.o.linux rather than comp.os.linux)" msgstr "以短格式显示文件夹(如 c.o.linux 而不是 comp.os.linux)(_S)" #: ../camel/providers/nntp/camel-nntp-provider.c:51 msgid "In the subscription _dialog, show relative folder names" msgstr "在订阅对话框中显示相对文件夹名称(_D)" #: ../camel/providers/nntp/camel-nntp-provider.c:57 msgid "Default NNTP port" msgstr "默认的 NNTP 端口" #: ../camel/providers/nntp/camel-nntp-provider.c:58 msgid "NNTP over SSL" msgstr "NNTP (SSL 加密)" #: ../camel/providers/nntp/camel-nntp-provider.c:64 msgid "USENET news" msgstr "USENET 新闻" #: ../camel/providers/nntp/camel-nntp-provider.c:66 msgid "This is a provider for reading from and posting to USENET newsgroups." msgstr "这是一个读取 USENET 新闻组和向 USENET 新闻组发布邮件的提供者。" #: ../camel/providers/nntp/camel-nntp-provider.c:87 msgid "" "This option will connect to the NNTP server anonymously, without " "authentication." msgstr "此选项将无认证地自动匿名连接 NNTP 服务器。" #: ../camel/providers/nntp/camel-nntp-provider.c:97 msgid "" "This option will authenticate with the NNTP server using a plaintext " "password." msgstr "该选项将以明文密码向进行 NNTP 服务器进行认证。" #: ../camel/providers/nntp/camel-nntp-store.c:386 #, c-format msgid "Could not read greeting from %s: " msgstr "无法阅读来自 %s 的欢迎信息: " #: ../camel/providers/nntp/camel-nntp-store.c:394 #, c-format msgid "NNTP server %s returned error code %d: %s" msgstr "NNTP 服务器 %s 返回错误码 %d:%s" #: ../camel/providers/nntp/camel-nntp-store.c:555 #, c-format msgid "USENET News via %s" msgstr "USENET 新闻 %s" #: ../camel/providers/nntp/camel-nntp-store.c:1227 #, c-format msgid "" "Error retrieving newsgroups:\n" "\n" "%s" msgstr "" "收取新闻组出错:\n" "\n" "%s" #: ../camel/providers/nntp/camel-nntp-store.c:1339 #, c-format msgid "You cannot create a folder in a News store: subscribe instead." msgstr "您无法在新闻存储中创建文件夹:应该订阅。" #: ../camel/providers/nntp/camel-nntp-store.c:1355 #, c-format msgid "You cannot rename a folder in a News store." msgstr "您无法在新闻存储中重命名文件夹。" #: ../camel/providers/nntp/camel-nntp-store.c:1378 #, c-format msgid "You cannot remove a folder in a News store: unsubscribe instead." msgstr "您无法在新闻存储中删除文件夹:应该退订。" #: ../camel/providers/nntp/camel-nntp-store.c:1597 #, c-format msgid "" "You cannot subscribe to this newsgroup:\n" "\n" "No such newsgroup. The selected item is a probably a parent folder." msgstr "" "您无法订阅此新闻组:\n" "\n" "没有这样的新闻组。选中项目可能是父文件夹。" #: ../camel/providers/nntp/camel-nntp-store.c:1664 #, c-format msgid "" "You cannot unsubscribe to this newsgroup:\n" "\n" "newsgroup does not exist!" msgstr "" "您无法订阅此新闻组:\n" "\n" "新闻组不存在!" #: ../camel/providers/nntp/camel-nntp-store.c:2101 msgid "NNTP Command failed: " msgstr "NNTP 命令失败: " #: ../camel/providers/nntp/camel-nntp-store.c:2198 #, c-format msgid "Not connected." msgstr "未连接。" #: ../camel/providers/nntp/camel-nntp-store.c:2292 #, c-format msgid "No such folder: %s" msgstr "没有文件夹:%s" #: ../camel/providers/nntp/camel-nntp-summary.c:200 #: ../camel/providers/nntp/camel-nntp-summary.c:339 #, c-format msgid "%s: Scanning new messages" msgstr "%s:正在扫描新消息" #: ../camel/providers/nntp/camel-nntp-summary.c:222 #, c-format msgid "Unexpected server response from xover: %s" msgstr "来自 xover 的意外服务器应答:%s" #: ../camel/providers/nntp/camel-nntp-summary.c:360 #, c-format msgid "Unexpected server response from head: %s" msgstr "来自 head 的意外服务器应答:%s" #: ../camel/providers/nntp/camel-nntp-summary.c:407 #, c-format msgid "Operation failed: %s" msgstr "操作失败:%s" #: ../camel/providers/pop3/camel-pop3-folder.c:509 #: ../camel/providers/pop3/camel-pop3-folder.c:588 #, c-format msgid "No message with UID %s" msgstr "没有 UID 为 %s 的消息" #: ../camel/providers/pop3/camel-pop3-folder.c:604 #, c-format msgid "Retrieving POP message %d" msgstr "正在获取 POP 消息 %d" #: ../camel/providers/pop3/camel-pop3-folder.c:699 msgid "Unknown reason" msgstr "未知原因" #: ../camel/providers/pop3/camel-pop3-folder.c:751 msgid "Retrieving POP summary" msgstr "正在获取 POP 概要" #: ../camel/providers/pop3/camel-pop3-folder.c:812 #: ../camel/providers/pop3/camel-pop3-folder.c:815 #: ../camel/providers/pop3/camel-pop3-folder.c:828 #: ../camel/providers/pop3/camel-pop3-folder.c:841 #: ../camel/providers/pop3/camel-pop3-folder.c:855 msgid "Cannot get POP summary: " msgstr "无法获取 POP 概要: " #: ../camel/providers/pop3/camel-pop3-folder.c:966 msgid "Expunging old messages" msgstr "销毁旧消息" #: ../camel/providers/pop3/camel-pop3-folder.c:992 msgid "Expunging deleted messages" msgstr "彻底销毁已删除的消息" #: ../camel/providers/pop3/camel-pop3-provider.c:39 msgid "Message Storage" msgstr "消息存储" #: ../camel/providers/pop3/camel-pop3-provider.c:41 msgid "_Leave messages on server" msgstr "在服务器上保留消息(_L)" #. Translators: '%s' is replaced with a widget, where user can #. * select how many days can be message left on the server. #: ../camel/providers/pop3/camel-pop3-provider.c:45 #, c-format msgid "_Delete after %s day(s)" msgstr "%s 天之后删除(_D)" #: ../camel/providers/pop3/camel-pop3-provider.c:47 msgid "Delete _expunged from local Inbox" msgstr "从本地的收件箱中删除已在远端清除的邮件(_E)" #: ../camel/providers/pop3/camel-pop3-provider.c:49 msgid "Disable _support for all POP3 extensions" msgstr "禁用所有 POP3 扩展的支持(_S)" #: ../camel/providers/pop3/camel-pop3-provider.c:55 msgid "Default POP3 port" msgstr "默认的 POP3 端口" #: ../camel/providers/pop3/camel-pop3-provider.c:56 msgid "POP3 over SSL" msgstr "POP3 (SSL 加密)" #: ../camel/providers/pop3/camel-pop3-provider.c:63 msgid "POP" msgstr "POP" #: ../camel/providers/pop3/camel-pop3-provider.c:65 msgid "For connecting to and downloading mail from POP servers." msgstr "关于连接到 POP 服务器和从 POP 服务器下载邮件。" #: ../camel/providers/pop3/camel-pop3-provider.c:85 msgid "" "This option will connect to the POP server using a plaintext password. This " "is the only option supported by many POP servers." msgstr "该选项使 Evolution 在连接到 POP 服务器时使用明文密码。这是许多 POP 服务器唯一支持的选项。" #: ../camel/providers/pop3/camel-pop3-provider.c:95 msgid "" "This option will connect to the POP server using an encrypted password via " "the APOP protocol. This may not work for all users even on servers that " "claim to support it." msgstr "该选项使 Evolution 在连接到 POP 服务器时使用 APOP 协议。即使是声称支持这一功能的服务器,也不一定能使所有用户工作。" #. Translators: This is the separator between an error and an explanation #: ../camel/providers/pop3/camel-pop3-store.c:99 msgid ": " msgstr ": " #: ../camel/providers/pop3/camel-pop3-store.c:161 #, c-format msgid "Failed to read a valid greeting from POP server %s" msgstr "从 POP 服务器 %s 读取欢迎词失败" #: ../camel/providers/pop3/camel-pop3-store.c:176 #, c-format msgid "Failed to connect to POP server %s in secure mode: %s" msgstr "以安全模式连接到 POP 服务器 %s 失败:%s" #: ../camel/providers/pop3/camel-pop3-store.c:177 msgid "STLS not supported by server" msgstr "服务器不支持 STLS" #. Translators: Last %s is an optional #. * explanation beginning with ": " separator. #: ../camel/providers/pop3/camel-pop3-store.c:198 #, c-format msgid "Failed to connect to POP server %s in secure mode%s" msgstr "以安全模式连接到 POP 服务器 %s 失败%s" #: ../camel/providers/pop3/camel-pop3-store.c:211 #, c-format msgid "Failed to connect to POP server %s in secure mode: " msgstr "以安全模式连接到 POP 服务器 %s 失败: " #: ../camel/providers/pop3/camel-pop3-store.c:351 #, c-format msgid "Cannot login to POP server %s: SASL Protocol error" msgstr "无法登录到 POP 服务器 %s:SASL 协议错误" #: ../camel/providers/pop3/camel-pop3-store.c:373 #, c-format msgid "Failed to authenticate on POP server %s: " msgstr "认证到 POP 服务器 %s 失败: " #: ../camel/providers/pop3/camel-pop3-store.c:481 #, c-format msgid "POP3 server %s" msgstr "POP3 服务器 %s" #: ../camel/providers/pop3/camel-pop3-store.c:484 #, c-format msgid "POP3 server for %s on %s" msgstr "%2$s 为 %1$s 提供的 POP 服务" #: ../camel/providers/pop3/camel-pop3-store.c:704 #, c-format msgid "" "Unable to connect to POP server %s:\tInvalid APOP ID received. Impersonation " "attack suspected. Please contact your admin." msgstr "无法连接到 POP 服务器 %s:\t接收到非法的 APOP ID。可能是冒名攻击。请联系您的管理员。" #: ../camel/providers/pop3/camel-pop3-store.c:759 #, c-format msgid "" "Unable to connect to POP server %s.\n" "Error sending password: " msgstr "" "无法连接到 POP 服务器 %s。\n" "发送密码错误: " #. Translators: Last %s is an optional explanation #. * beginning with ": " separator. #: ../camel/providers/pop3/camel-pop3-store.c:774 #, c-format msgid "" "Unable to connect to POP server %s.\n" "Error sending username%s" msgstr "" "无法连接到 POP 服务器 %s。\n" "发送用户名错误%s" #: ../camel/providers/pop3/camel-pop3-store.c:856 #, c-format msgid "No such folder '%s'." msgstr "没有文件夹“%s”。" #: ../camel/providers/pop3/camel-pop3-store.c:873 #, c-format msgid "POP3 stores have no folder hierarchy" msgstr "POP3 的存储没有文件夹结构" #: ../camel/providers/sendmail/camel-sendmail-provider.c:36 #: ../services/evolution-source-registry/builtin/sendmail.source.in.h:1 msgid "Sendmail" msgstr "Sendmail" #: ../camel/providers/sendmail/camel-sendmail-provider.c:38 msgid "" "For delivering mail by passing it to the \"sendmail\" program on the local " "system." msgstr "将邮件传递到本地系统的“sendmail”来发送邮件。" #: ../camel/providers/sendmail/camel-sendmail-transport.c:50 msgid "sendmail" msgstr "sendmail" #: ../camel/providers/sendmail/camel-sendmail-transport.c:52 msgid "Mail delivery via the sendmail program" msgstr "通过 sendmail 程序发送邮件" #: ../camel/providers/sendmail/camel-sendmail-transport.c:140 #, c-format msgid "Failed to read From address" msgstr "读取发件人地址失败" #: ../camel/providers/sendmail/camel-sendmail-transport.c:157 #, c-format msgid "Message send in offline mode is disabled" msgstr "离线模式下无法发送信息" #: ../camel/providers/sendmail/camel-sendmail-transport.c:185 #, c-format msgid "Could not parse recipient list" msgstr "无法解析收件人列表" #: ../camel/providers/sendmail/camel-sendmail-transport.c:202 #, c-format msgid "Could not parse arguments" msgstr "无法解析参数" #: ../camel/providers/sendmail/camel-sendmail-transport.c:233 #, c-format msgid "Could not create pipe to '%s': %s: mail not sent" msgstr "无法创建到 '%s' 地管道:%s: mail not sent" #: ../camel/providers/sendmail/camel-sendmail-transport.c:258 #, c-format msgid "Could not fork '%s': %s: mail not sent" msgstr "无法以子进程启动 '%s':%s:邮件未发出" #: ../camel/providers/sendmail/camel-sendmail-transport.c:307 msgid "Could not send message: " msgstr "无法发送消息: " #: ../camel/providers/sendmail/camel-sendmail-transport.c:337 #, c-format msgid "'%s' exited with signal %s: mail not sent." msgstr "'%s' 因 信号 %s 而退出:邮件未发送。" #: ../camel/providers/sendmail/camel-sendmail-transport.c:347 #, c-format msgid "Could not execute '%s': mail not sent." msgstr "无法执行 '%s':邮件未发出。" #: ../camel/providers/sendmail/camel-sendmail-transport.c:352 #, c-format msgid "'%s' exited with status %d: mail not sent." msgstr "'%s' 退出状态 %d:邮件未发出。" #: ../camel/providers/smtp/camel-smtp-provider.c:42 msgid "Default SMTP port" msgstr "默认的 SMTP 端口" #: ../camel/providers/smtp/camel-smtp-provider.c:43 msgid "SMTP over SSL" msgstr "SMTP (SSL 加密)" #: ../camel/providers/smtp/camel-smtp-provider.c:44 msgid "Message submission port" msgstr "消息提交端口" #: ../camel/providers/smtp/camel-smtp-provider.c:50 msgid "SMTP" msgstr "SMTP" #: ../camel/providers/smtp/camel-smtp-provider.c:52 msgid "For delivering mail by connecting to a remote mailhub using SMTP." msgstr "要投递邮件,应该使用 SMTP 连接到远程的邮件交换服务器。" #: ../camel/providers/smtp/camel-smtp-transport.c:158 #: ../camel/providers/smtp/camel-smtp-transport.c:166 msgid "Welcome response error: " msgstr "欢迎应答错误: " #: ../camel/providers/smtp/camel-smtp-transport.c:202 #, c-format msgid "Failed to connect to SMTP server %s in secure mode: %s" msgstr "以安全模式连接 SMTP 服务器 %s 失败:%s" #: ../camel/providers/smtp/camel-smtp-transport.c:212 #: ../camel/providers/smtp/camel-smtp-transport.c:226 #: ../camel/providers/smtp/camel-smtp-transport.c:234 msgid "STARTTLS command failed: " msgstr "STARTTLS 命令失败: " #: ../camel/providers/smtp/camel-smtp-transport.c:246 #, c-format msgid "Failed to connect to SMTP server %s in secure mode: " msgstr "以安全模式连接 SMTP 服务器 %s 失败: " #: ../camel/providers/smtp/camel-smtp-transport.c:338 #, c-format msgid "SMTP server %s" msgstr "SMTP 服务器 %s" #: ../camel/providers/smtp/camel-smtp-transport.c:341 #, c-format msgid "SMTP mail delivery via %s" msgstr "通过 %s 发送 SMTP 邮件" #: ../camel/providers/smtp/camel-smtp-transport.c:415 #, c-format msgid "SMTP server %s does not support %s authentication" msgstr "SMTP 服务器 %s 不支持 %s 认证。" #: ../camel/providers/smtp/camel-smtp-transport.c:496 #, c-format msgid "No SASL mechanism was specified" msgstr "未指定 SASL 机制" #: ../camel/providers/smtp/camel-smtp-transport.c:526 #: ../camel/providers/smtp/camel-smtp-transport.c:537 #: ../camel/providers/smtp/camel-smtp-transport.c:550 msgid "AUTH command failed: " msgstr "AUTH 命令失败: " #: ../camel/providers/smtp/camel-smtp-transport.c:691 #, c-format msgid "Cannot send message: service not connected." msgstr "无法发送消息:服务未连接。" #: ../camel/providers/smtp/camel-smtp-transport.c:698 #, c-format msgid "Cannot send message: sender address not valid." msgstr "无法发送消息:发件人地址不合法。" #: ../camel/providers/smtp/camel-smtp-transport.c:702 msgid "Sending message" msgstr "发送消息" #: ../camel/providers/smtp/camel-smtp-transport.c:727 #, c-format msgid "Cannot send message: no recipients defined." msgstr "无法发送消息:没有定义收件人。" #: ../camel/providers/smtp/camel-smtp-transport.c:740 #, c-format msgid "Cannot send message: one or more invalid recipients" msgstr "无法发送消息:一个或多个非法收件人" #: ../camel/providers/smtp/camel-smtp-transport.c:861 msgid "Syntax error, command unrecognized" msgstr "语法错误,无法识别的命令" #: ../camel/providers/smtp/camel-smtp-transport.c:863 msgid "Syntax error in parameters or arguments" msgstr "参数语法错误" #: ../camel/providers/smtp/camel-smtp-transport.c:865 msgid "Command not implemented" msgstr "命令尚未实现" #: ../camel/providers/smtp/camel-smtp-transport.c:867 msgid "Command parameter not implemented" msgstr "命令参数尚未实现" #: ../camel/providers/smtp/camel-smtp-transport.c:869 msgid "System status, or system help reply" msgstr "系统状态,或系统求助就绪" #: ../camel/providers/smtp/camel-smtp-transport.c:871 msgid "Help message" msgstr "帮助消息" #: ../camel/providers/smtp/camel-smtp-transport.c:873 msgid "Service ready" msgstr "服务就绪" #: ../camel/providers/smtp/camel-smtp-transport.c:875 msgid "Service closing transmission channel" msgstr "服务正在关闭传输通道" #: ../camel/providers/smtp/camel-smtp-transport.c:877 msgid "Service not available, closing transmission channel" msgstr "服务不可用,正在关闭传输通道" #: ../camel/providers/smtp/camel-smtp-transport.c:879 msgid "Requested mail action okay, completed" msgstr "邮件动作请求确认,已完成" #: ../camel/providers/smtp/camel-smtp-transport.c:881 msgid "User not local; will forward to " msgstr "用户不在本地;将转发到 <转发路径>" #: ../camel/providers/smtp/camel-smtp-transport.c:883 msgid "Requested mail action not taken: mailbox unavailable" msgstr "邮件动作请求未发生:邮件箱无效" #: ../camel/providers/smtp/camel-smtp-transport.c:885 msgid "Requested action not taken: mailbox unavailable" msgstr "动作请求未发生:邮件箱无效" #: ../camel/providers/smtp/camel-smtp-transport.c:887 msgid "Requested action aborted: error in processing" msgstr "动作请求已放弃:处理中出错" #: ../camel/providers/smtp/camel-smtp-transport.c:889 msgid "User not local; please try " msgstr "用户不在本地;请尝试 <转发路径>" #: ../camel/providers/smtp/camel-smtp-transport.c:891 msgid "Requested action not taken: insufficient system storage" msgstr "动作请求未发生:系统存储空间不足" #: ../camel/providers/smtp/camel-smtp-transport.c:893 msgid "Requested mail action aborted: exceeded storage allocation" msgstr "邮件动作请求已放弃:超定额德存储分配" #: ../camel/providers/smtp/camel-smtp-transport.c:895 msgid "Requested action not taken: mailbox name not allowed" msgstr "动作请求未发生:不允许的邮件箱名称" #: ../camel/providers/smtp/camel-smtp-transport.c:897 msgid "Start mail input; end with ." msgstr "开始输入邮件;以 . 结束" #: ../camel/providers/smtp/camel-smtp-transport.c:899 msgid "Transaction failed" msgstr "事务失败" #: ../camel/providers/smtp/camel-smtp-transport.c:903 msgid "A password transition is needed" msgstr "必须传输密码" #: ../camel/providers/smtp/camel-smtp-transport.c:905 msgid "Authentication mechanism is too weak" msgstr "认证机制太弱" #: ../camel/providers/smtp/camel-smtp-transport.c:907 msgid "Encryption required for requested authentication mechanism" msgstr "请求的认证机制必须加密" #: ../camel/providers/smtp/camel-smtp-transport.c:909 msgid "Temporary authentication failure" msgstr "临时认证失败" #: ../camel/providers/smtp/camel-smtp-transport.c:1166 msgid "SMTP Greeting" msgstr "SMTP 欢迎" #: ../camel/providers/smtp/camel-smtp-transport.c:1193 #: ../camel/providers/smtp/camel-smtp-transport.c:1207 #: ../camel/providers/smtp/camel-smtp-transport.c:1215 msgid "HELO command failed: " msgstr "HELO 命令失败:%s\\ " #: ../camel/providers/smtp/camel-smtp-transport.c:1290 #: ../camel/providers/smtp/camel-smtp-transport.c:1305 #: ../camel/providers/smtp/camel-smtp-transport.c:1315 msgid "MAIL FROM command failed: " msgstr "MAIL FROM 命令失败: " #: ../camel/providers/smtp/camel-smtp-transport.c:1342 msgid "RCPT TO command failed: " msgstr "RSET 命令失败: " #: ../camel/providers/smtp/camel-smtp-transport.c:1359 #: ../camel/providers/smtp/camel-smtp-transport.c:1369 #, c-format msgid "RCPT TO <%s> failed: " msgstr "RCPT TO <%s> 失败: " #: ../camel/providers/smtp/camel-smtp-transport.c:1412 #: ../camel/providers/smtp/camel-smtp-transport.c:1423 #: ../camel/providers/smtp/camel-smtp-transport.c:1434 #: ../camel/providers/smtp/camel-smtp-transport.c:1493 #: ../camel/providers/smtp/camel-smtp-transport.c:1513 #: ../camel/providers/smtp/camel-smtp-transport.c:1527 #: ../camel/providers/smtp/camel-smtp-transport.c:1536 msgid "DATA command failed: " msgstr "DATP 命令失败: " #: ../camel/providers/smtp/camel-smtp-transport.c:1561 #: ../camel/providers/smtp/camel-smtp-transport.c:1576 #: ../camel/providers/smtp/camel-smtp-transport.c:1585 msgid "RSET command failed: " msgstr "RSET 命令失败: " #: ../camel/providers/smtp/camel-smtp-transport.c:1610 #: ../camel/providers/smtp/camel-smtp-transport.c:1624 #: ../camel/providers/smtp/camel-smtp-transport.c:1631 msgid "QUIT command failed: " msgstr "QUIT 命令失败: " #: ../data/org.gnome.evolution-data-server.addressbook.gschema.xml.in.h:1 msgid "Contact UID of a user" msgstr "用户的联系人 UID" #: ../data/org.gnome.evolution-data-server.calendar.gschema.xml.in.h:1 msgid "Birthday and anniversary reminder" msgstr "生日和纪念日提醒" #: ../data/org.gnome.evolution-data-server.calendar.gschema.xml.in.h:2 msgid "Whether to set a reminder for birthdays and anniversaries" msgstr "是否设置生日和周年纪念日?" #: ../data/org.gnome.evolution-data-server.calendar.gschema.xml.in.h:3 msgid "Birthday and anniversary reminder value" msgstr "生日和纪念日提醒值" #: ../data/org.gnome.evolution-data-server.calendar.gschema.xml.in.h:4 msgid "Number of units for determining a birthday or anniversary reminder" msgstr "将提醒设为生日或周年纪念日的单位" #: ../data/org.gnome.evolution-data-server.calendar.gschema.xml.in.h:5 msgid "Birthday and anniversary reminder units" msgstr "生日和纪念日提醒单位" #: ../data/org.gnome.evolution-data-server.calendar.gschema.xml.in.h:6 msgid "" "Units for a birthday or anniversary reminder, \"minutes\", \"hours\" or " "\"days\"" msgstr "生日或纪念日提醒地单位:\"minutes\"(分钟), \"hours\"(小时) 或 \"days\" (天)" #: ../libebackend/e-authentication-mediator.c:205 #: ../libebackend/e-authentication-mediator.c:216 #: ../libebackend/e-authentication-mediator.c:862 #: ../libebackend/e-authentication-mediator.c:1198 msgid "Bus name vanished (client terminated?)" msgstr "总线名不可见(客户端已关闭?)" #: ../libebackend/e-authentication-mediator.c:264 msgid "No response from client" msgstr "客户端无反馈" #: ../libebackend/e-authentication-mediator.c:334 #: ../libebackend/e-authentication-mediator.c:345 #: ../libebackend/e-authentication-mediator.c:856 #: ../libebackend/e-authentication-mediator.c:1192 msgid "Client cancelled the operation" msgstr "客户端取消了操作" #: ../libebackend/e-authentication-mediator.c:416 msgid "Client reports password was rejected" msgstr "客户端报告密码被拒绝" #: ../libebackend/e-authentication-session.c:569 msgid "Add this password to your keyring" msgstr "将此密码加入密钥环" #: ../libebackend/e-authentication-session.c:674 msgid "Password was incorrect" msgstr "密码不正确" #: ../libebackend/e-backend.c:428 #, c-format msgid "%s does not support authentication" msgstr "%s 不支持认证" #: ../libebackend/e-collection-backend.c:800 #, c-format msgid "%s does not support creating remote resources" msgstr "%s 不支持创建远程资源" #: ../libebackend/e-collection-backend.c:859 #, c-format msgid "%s does not support deleting remote resources" msgstr "%s 不支持删除远程资源" #: ../libebackend/e-data-factory.c:304 #, c-format msgid "No backend factory for hash key '%s'" msgstr "散列码“%s”没有对应的后台工厂对象" #: ../libebackend/e-server-side-source.c:134 #, c-format msgid "Data source is missing a [%s] group" msgstr "数据源丢失 [%s] 组" #: ../libebackend/e-server-side-source.c:1008 #: ../libedataserver/e-source.c:1138 #, c-format msgid "Data source '%s' does not support creating remote resources" msgstr "数据源“%s”不支持创建远程资源" #: ../libebackend/e-server-side-source.c:1022 #, c-format msgid "" "Data source '%s' has no collection backend to create the remote resource" msgstr "数据源“%s”没有对应的后台委托程序来创建远程资源" #: ../libebackend/e-server-side-source.c:1050 #: ../libedataserver/e-source.c:1251 #, c-format msgid "Data source '%s' does not support deleting remote resources" msgstr "数据源“%s”不支持删除远程资源" #: ../libebackend/e-server-side-source.c:1064 #, c-format msgid "" "Data source '%s' has no collection backend to delete the remote resource" msgstr "数据源“%s”没有对应的后台委托程序来删除远程资源" #: ../libebackend/e-server-side-source.c:1095 #: ../libedataserver/e-source.c:1347 #: ../modules/ubuntu-online-accounts/module-ubuntu-online-accounts.c:1028 #, c-format msgid "Data source '%s' does not support OAuth 2.0 authentication" msgstr "数据源“%s”不支持 OAuth 2.0 认证" #: ../libebackend/e-server-side-source.c:1438 #, c-format msgid "File must have a '.source' extension" msgstr "文件扩展名必须是“.source”" #: ../libebackend/e-source-registry-server.c:532 #: ../libedataserver/e-source-registry.c:1876 msgid "The user declined to authenticate" msgstr "用户拒绝认证" #: ../libebackend/e-source-registry-server.c:801 #, c-format msgid "UID '%s' is already in use" msgstr "UID '%s' 已被使用" #: ../libebackend/e-user-prompter-server.c:306 #, c-format msgid "Extension dialog '%s' not found." msgstr "未找到扩展对话框 '%s'" #: ../libedataserver/e-categories.c:46 msgctxt "CategoryName" msgid "Anniversary" msgstr "周年纪念日" #: ../libedataserver/e-categories.c:47 msgctxt "CategoryName" msgid "Birthday" msgstr "生日" #: ../libedataserver/e-categories.c:48 msgctxt "CategoryName" msgid "Business" msgstr "商务" #: ../libedataserver/e-categories.c:49 msgctxt "CategoryName" msgid "Competition" msgstr "完成" #: ../libedataserver/e-categories.c:50 msgctxt "CategoryName" msgid "Favorites" msgstr "最爱" #: ../libedataserver/e-categories.c:51 msgctxt "CategoryName" msgid "Gifts" msgstr "礼物" #: ../libedataserver/e-categories.c:52 msgctxt "CategoryName" msgid "Goals/Objectives" msgstr "目标" #: ../libedataserver/e-categories.c:53 msgctxt "CategoryName" msgid "Holiday" msgstr "假日" #: ../libedataserver/e-categories.c:54 msgctxt "CategoryName" msgid "Holiday Cards" msgstr "假日卡" #. important people (e.g. new business partners) #: ../libedataserver/e-categories.c:56 msgctxt "CategoryName" msgid "Hot Contacts" msgstr "亲密联系人" #: ../libedataserver/e-categories.c:57 msgctxt "CategoryName" msgid "Ideas" msgstr "想法" #: ../libedataserver/e-categories.c:58 msgctxt "CategoryName" msgid "International" msgstr "国际" #: ../libedataserver/e-categories.c:59 msgctxt "CategoryName" msgid "Key Customer" msgstr "关键客户" #: ../libedataserver/e-categories.c:60 msgctxt "CategoryName" msgid "Miscellaneous" msgstr "杂类" #: ../libedataserver/e-categories.c:61 msgctxt "CategoryName" msgid "Personal" msgstr "个人" #: ../libedataserver/e-categories.c:62 msgctxt "CategoryName" msgid "Phone Calls" msgstr "通电话" #. Translators: "Status" is a category name; it can mean anything user wants to #: ../libedataserver/e-categories.c:64 msgctxt "CategoryName" msgid "Status" msgstr "状态" #: ../libedataserver/e-categories.c:65 msgctxt "CategoryName" msgid "Strategies" msgstr "策略" #: ../libedataserver/e-categories.c:66 msgctxt "CategoryName" msgid "Suppliers" msgstr "供应商" #: ../libedataserver/e-categories.c:67 msgctxt "CategoryName" msgid "Time & Expenses" msgstr "时间和花费" #: ../libedataserver/e-categories.c:68 msgctxt "CategoryName" msgid "VIP" msgstr "VIP" #: ../libedataserver/e-categories.c:69 msgctxt "CategoryName" msgid "Waiting" msgstr "等候" #: ../libedataserver/e-client.c:133 msgid "Source not loaded" msgstr "源尚未加载" #: ../libedataserver/e-client.c:135 msgid "Source already loaded" msgstr "源已经加载" #. Translators: This means that the EClient does not #. * support offline mode, or it's not set to by a user, #. * thus it is unavailable while user is not connected. #: ../libedataserver/e-client.c:146 msgid "Offline unavailable" msgstr "离线不可用" #: ../libedataserver/e-client.c:168 msgid "D-Bus error" msgstr "D-Bus 错误" #: ../libedataserver/e-source-authenticator.c:166 msgid "Address book authentication request" msgstr "地址簿认证请求" #: ../libedataserver/e-source-authenticator.c:171 msgid "Calendar authentication request" msgstr "日历认证请求" #: ../libedataserver/e-source-authenticator.c:175 msgid "Mail authentication request" msgstr "邮件认证请求" #. generic account prompt #: ../libedataserver/e-source-authenticator.c:178 msgid "Authentication request" msgstr "认证请求" #: ../libedataserver/e-source-authenticator.c:188 #, c-format msgid "Please enter the password for address book \"%s\"." msgstr "请输入地址簿“%s”地密码。" #: ../libedataserver/e-source-authenticator.c:194 #, c-format msgid "Please enter the password for calendar \"%s\"." msgstr "请输入日历“%s”地密码。" #: ../libedataserver/e-source-authenticator.c:200 #, c-format msgid "Please enter the password for mail account \"%s\"." msgstr "请输入邮件账号“%s”的密码。" #: ../libedataserver/e-source-authenticator.c:206 #, c-format msgid "Please enter the password for mail transport \"%s\"." msgstr "为邮件传输“%s”输入密码:" #: ../libedataserver/e-source-authenticator.c:212 #, c-format msgid "Please enter the password for memo list \"%s\"." msgstr "请为备忘录列表“%s”输入密码。" #: ../libedataserver/e-source-authenticator.c:218 #, c-format msgid "Please enter the password for task list \"%s\"." msgstr "请为任务列表“%s”输入密码。" #: ../libedataserver/e-source-authenticator.c:224 #, c-format msgid "Please enter the password for account \"%s\"." msgstr "请为账户“%s”输入密码。" #: ../libedataserver/e-source.c:627 #, c-format msgid "Source file is missing a [%s] group" msgstr "源文件丢失 [%s] 组" #: ../libedataserver/e-source.c:949 #, c-format msgid "Data source '%s' is not removable" msgstr "数据源“%s”不可移除" #: ../libedataserver/e-source.c:1041 #, c-format msgid "Data source '%s' is not writable" msgstr "数据源“%s”不可写" #: ../libedataserver/e-source.c:1559 msgid "Unnamed" msgstr "未命名" #: ../libedataserver/e-source-mail-signature.c:487 #, c-format msgid "Signature script must be a local file" msgstr "签名脚本不是本地文件" #: ../libedataserver/e-source-webdav.c:1553 #, c-format msgid "" "SSL certificate for host '%s', used by address book '%s', is not trusted. Do " "you wish to accept it?" msgstr "地址簿“%2$s”使用的主机“%1$s”的证书不被信任。想要接受它吗?" #: ../libedataserver/e-source-webdav.c:1562 #, c-format msgid "" "SSL certificate for host '%s', used by calendar '%s', is not trusted. Do you " "wish to accept it?" msgstr "主机“%s”用于“%s”的 SSL 证书不受信任。要接受它吗?" #: ../libedataserver/e-source-webdav.c:1571 #, c-format msgid "" "SSL certificate for host '%s', used by memo list '%s', is not trusted. Do " "you wish to accept it?" msgstr "主机“%s”用于备忘录列表“%s”的 SSL 证书不受信任。要接受它吗?" #: ../libedataserver/e-source-webdav.c:1580 #, c-format msgid "" "SSL certificate for host '%s', used by task list '%s', is not trusted. Do " "you wish to accept it?" msgstr "主机“%s”用于任务列表“%s”的 SSL 证书不受信任。要接受它吗?" #. strptime format of a weekday, a date and a time, #. * in 12-hour format. #. strftime format of a weekday, a date and a #. * time, in 12-hour format. #: ../libedataserver/e-time-utils.c:1663 ../libedataserver/e-time-utils.c:1962 msgid "%a %m/%d/%Y %I:%M:%S %p" msgstr "%Y-%m-%d %A%p%I:%M:%S" #. strptime format of a weekday, a date and a time, #. * in 24-hour format. #. strftime format of a weekday, a date and a #. * time, in 24-hour format. #: ../libedataserver/e-time-utils.c:1668 ../libedataserver/e-time-utils.c:1953 msgid "%a %m/%d/%Y %H:%M:%S" msgstr "%Y-%m-%d %A %H:%M:%S" #. strptime format of a weekday, a date and a time, #. * in 12-hour format, without seconds. #. strftime format of a weekday, a date and a #. * time, in 12-hour format, without seconds. #: ../libedataserver/e-time-utils.c:1673 ../libedataserver/e-time-utils.c:1958 msgid "%a %m/%d/%Y %I:%M %p" msgstr "%Y-%m-%d %A%p%I:%M" #. strptime format of a weekday, a date and a time, #. * in 24-hour format, without seconds. #. strftime format of a weekday, a date and a #. * time, in 24-hour format, without seconds. #: ../libedataserver/e-time-utils.c:1678 ../libedataserver/e-time-utils.c:1949 msgid "%a %m/%d/%Y %H:%M" msgstr "%Y-%m-%d %A %H:%M" #. strptime format of a weekday, a date and a time, #. * in 12-hour format, without minutes or seconds. #: ../libedataserver/e-time-utils.c:1683 msgid "%a %m/%d/%Y %I %p" msgstr "%Y-%m-%d %A%p%I" #. strptime format of a weekday, a date and a time, #. * in 24-hour format, without minutes or seconds. #: ../libedataserver/e-time-utils.c:1688 msgid "%a %m/%d/%Y %H" msgstr "%Y-%m-%d %A %H" #. strptime format of a weekday and a date. #. strftime format of a weekday and a date. #: ../libedataserver/e-time-utils.c:1691 ../libedataserver/e-time-utils.c:1811 #: ../libedataserver/e-time-utils.c:1944 msgid "%a %m/%d/%Y" msgstr "%Y-%m-%d %A" #. strptime format of a date and a time, in 12-hour format. #: ../libedataserver/e-time-utils.c:1698 msgid "%m/%d/%Y %I:%M:%S %p" msgstr "%Y-%m-%d%p%I:%M:%S" #. strptime format of a date and a time, in 24-hour format. #: ../libedataserver/e-time-utils.c:1702 msgid "%m/%d/%Y %H:%M:%S" msgstr "%Y-%m-%d %H:%M:%S" #. strptime format of a date and a time, in 12-hour format, #. * without seconds. #: ../libedataserver/e-time-utils.c:1707 msgid "%m/%d/%Y %I:%M %p" msgstr "%Y-%m-%d%p%I:%M" #. strptime format of a date and a time, in 24-hour format, #. * without seconds. #: ../libedataserver/e-time-utils.c:1712 msgid "%m/%d/%Y %H:%M" msgstr "%Y-%m-%d %H:%M" #. strptime format of a date and a time, in 12-hour format, #. * without minutes or seconds. #: ../libedataserver/e-time-utils.c:1717 msgid "%m/%d/%Y %I %p" msgstr "%Y-%m-%d%p%I" #. strptime format of a date and a time, in 24-hour format, #. * without minutes or seconds. #: ../libedataserver/e-time-utils.c:1722 msgid "%m/%d/%Y %H" msgstr "%Y-%m-%d %H" #. strptime format of a weekday and a date. #. This is the preferred date format for the locale. #: ../libedataserver/e-time-utils.c:1725 ../libedataserver/e-time-utils.c:1814 msgid "%m/%d/%Y" msgstr "%Y-%m-%d" #. strptime format for a time of day, in 12-hour format. #. strftime format of a time in 12-hour format. #: ../libedataserver/e-time-utils.c:1885 ../libedataserver/e-time-utils.c:2006 msgid "%I:%M:%S %p" msgstr "%p%I:%M:%S" #. strptime format for a time of day, in 24-hour format. #. strftime format of a time in 24-hour format. #: ../libedataserver/e-time-utils.c:1889 ../libedataserver/e-time-utils.c:1998 msgid "%H:%M:%S" msgstr "%H:%M:%S" #. strptime format for time of day, without seconds, #. * in 12-hour format. #. strftime format of a time in 12-hour format, #. * without seconds. #: ../libedataserver/e-time-utils.c:1894 ../libedataserver/e-time-utils.c:2003 msgid "%I:%M %p" msgstr "%p%I:%M" #. strptime format for time of day, without seconds 24-hour format. #. strftime format of a time in 24-hour format, #. * without seconds. #: ../libedataserver/e-time-utils.c:1898 ../libedataserver/e-time-utils.c:1995 msgid "%H:%M" msgstr "%H:%M" #. strptime format for time of day, without seconds 24-hour format, #. * and no colon. #: ../libedataserver/e-time-utils.c:1902 msgid "%H%M" msgstr "%H%M" #. strptime format for hour and AM/PM, 12-hour format. #: ../libedataserver/e-time-utils.c:1906 msgid "%I %p" msgstr "%p%I" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:1 msgid "Proxy type to use" msgstr "代理类型" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:2 msgid "" "What proxy type to use. \"0\" means system, \"1\" means no proxy, \"2\" " "means manual proxy." msgstr "使用何种类型的代理。0 代表使用系统代理设置、1 代表不使用代理、2 代表手动设置代理。" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:3 msgid "Whether to use http-proxy" msgstr "是否使用 HTTP 代理" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:4 msgid "Whether to use proxy for HTTP requests." msgstr "HTTP 请求是否使用代理。" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:5 msgid "Whether proxy server requires authentication" msgstr "代理服务器是否需要认证" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:6 #| msgid "Bad authentication response from server." msgid "Whether authentication is required to access proxy server." msgstr "访问代理服务器是否需要认证。" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:7 msgid "Host name for HTTP requests" msgstr "HTTP 请求的主机名" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:8 msgid "Host name to use for HTTP requests." msgstr "HTTP 请求使用的主机名" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:9 msgid "Port number for HTTP requests" msgstr "HTTP 请求端口" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:10 msgid "Port number to use for HTTP requests." msgstr "HTTP 请求使用的端口。" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:11 msgid "Proxy authentication user name" msgstr "代理认证用户名" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:12 msgid "User name to use to authenticate against proxy server." msgstr "认证到代理服务器时使用的用户名。" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:13 msgid "Proxy authentication password" msgstr "代理认证密码" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:14 msgid "Password to use to authenticate against proxy server." msgstr "认证到代理服务器时使用的密码。" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:15 msgid "List of hosts to connect to without proxy" msgstr "不使用代理连接的主机列表" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:16 msgid "List of hosts for which do not use proxy." msgstr "不使用代理的主机列表。" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:17 msgid "Host name for HTTPS requests" msgstr "HTTPS 请求的主机名" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:18 msgid "Host name to use for HTTPS requests." msgstr "HTTPS 请求使用的主机名。" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:19 msgid "Port number for HTTPS requests" msgstr "HTTPS 请求端口" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:20 msgid "Port number to use for HTTPS requests." msgstr "HTTPS 请求使用的端口。" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:21 msgid "Host name for SOCKS requests" msgstr "SOCKS 请求的主机名" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:22 msgid "Host name to use for SOCKS requests." msgstr "SOCKS 请求使用的主机名。" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:23 msgid "Port number for SOCKS requests" msgstr "SOCKS 请求端口" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:24 msgid "Port number to use for SOCKS requests." msgstr "SOCKS 请求使用的端口。" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:25 msgid "Automatic proxy configuration URL" msgstr "自动代理配置 URL" #: ../libedataserver/org.gnome.evolution.shell.network-config.gschema.xml.in.h:26 msgid "Where to read automatic proxy configuration from." msgstr "从何处读取自动代理配置信息。" #: ../modules/gnome-online-accounts/e-goa-password-based.c:131 #: ../modules/ubuntu-online-accounts/e-signon-session-password.c:365 #, c-format msgid "No such data source for UID '%s'" msgstr "UID“%s”无此数据源" #: ../modules/gnome-online-accounts/e-goa-password-based.c:143 #, c-format msgid "" "Cannot find a corresponding account in the org.gnome.OnlineAccounts service " "from which to obtain a password for '%s'" msgstr "无法通过 org.gnome.OnlineAccounts 服务找到“%s”对应的帐号并获取密码" #: ../modules/gnome-online-accounts/e-goa-password-based.c:219 #, c-format msgid "Invalid password for '%s'" msgstr "“%s”的无效密码" #. TODO: more specific #: ../modules/gnome-online-accounts/goaewsclient.c:222 #, c-format msgid "Code: %u - Unexpected response from server" msgstr "代码:%u - 服务器响应非预期" #. TODO: more specific #: ../modules/gnome-online-accounts/goaewsclient.c:243 #, c-format msgid "Failed to parse autodiscover response XML" msgstr "解析自动发现 XML 失败" #. TODO: more specific #: ../modules/gnome-online-accounts/goaewsclient.c:252 #, c-format msgid "Failed to find Autodiscover element" msgstr "无法找到 Autodiscover 元素" #. TODO: more specific #: ../modules/gnome-online-accounts/goaewsclient.c:264 #, c-format msgid "Failed to find Response element" msgstr "无法找到 Response 元素" #. TODO: more specific #: ../modules/gnome-online-accounts/goaewsclient.c:276 #, c-format msgid "Failed to find Account element" msgstr "无法找到 Account 元素" #. TODO: more specific #: ../modules/gnome-online-accounts/goaewsclient.c:290 #, c-format msgid "Failed to find ASUrl and OABUrl in autodiscover response" msgstr "在自动发现的回应中无法找到 ASUrl 和 OABUrl" #: ../modules/gnome-online-accounts/module-gnome-online-accounts.c:1241 #, c-format msgid "" "Cannot find a corresponding account in the org.gnome.OnlineAccounts service " "from which to obtain an access token for '%s'" msgstr "无法在 org.gnome.OnlineAccounts 服务找到对应的账号,以从其中为“%s”获取访问令牌。" #: ../modules/gnome-online-accounts/module-gnome-online-accounts.c:1268 #, c-format msgid "Failed to obtain an access token for '%s': " msgstr "为“%s”获取访问令牌失败: " #: ../modules/google-backend/module-google-backend.c:192 #: ../modules/ubuntu-online-accounts/calendar.service-type.in.in.h:1 #: ../modules/yahoo-backend/module-yahoo-backend.c:200 msgid "Calendar" msgstr "日历" #: ../modules/google-backend/module-google-backend.c:261 #: ../modules/ubuntu-online-accounts/contacts.service-type.in.in.h:1 #: ../services/evolution-source-registry/builtin/contacts-stub.source.in.h:1 msgid "Contacts" msgstr "联系人" #: ../modules/trust-prompt/certificate-viewer.c:292 msgid "Not part of certificate" msgstr "不是证书的一部分" #: ../modules/trust-prompt/certificate-viewer.c:575 msgid "_Close" msgstr "关闭(_C)" #: ../modules/trust-prompt/certificate-viewer.c:600 msgid "This certificate has been verified for the following uses:" msgstr "此证书已通过验证可用于以下用途:" #: ../modules/trust-prompt/certificate-viewer.c:604 #: ../modules/trust-prompt/e-asn1-object.c:387 msgid "SSL Client Certificate" msgstr "SSL 客户端证书" #: ../modules/trust-prompt/certificate-viewer.c:609 #: ../modules/trust-prompt/e-asn1-object.c:391 msgid "SSL Server Certificate" msgstr "SSL 服务器证书" #: ../modules/trust-prompt/certificate-viewer.c:614 msgid "Email Signer Certificate" msgstr "电子邮件签名人证书" #: ../modules/trust-prompt/certificate-viewer.c:619 msgid "Email Recipient Certificate" msgstr "电子邮件接收人证书" #: ../modules/trust-prompt/certificate-viewer.c:634 msgid "Issued To" msgstr "发布给" #: ../modules/trust-prompt/certificate-viewer.c:635 #: ../modules/trust-prompt/certificate-viewer.c:641 msgid "Common Name (CN)" msgstr "通用名(CN)" #: ../modules/trust-prompt/certificate-viewer.c:636 #: ../modules/trust-prompt/certificate-viewer.c:642 msgid "Organization (O)" msgstr "组织(O)" #: ../modules/trust-prompt/certificate-viewer.c:637 #: ../modules/trust-prompt/certificate-viewer.c:643 msgid "Organizational Unit (OU)" msgstr "组织单位(OU)" #: ../modules/trust-prompt/certificate-viewer.c:638 #: ../modules/trust-prompt/e-asn1-object.c:134 msgid "Serial Number" msgstr "串号" #: ../modules/trust-prompt/certificate-viewer.c:640 msgid "Issued By" msgstr "发布者" #: ../modules/trust-prompt/certificate-viewer.c:645 msgid "Validity" msgstr "有效期" #: ../modules/trust-prompt/certificate-viewer.c:646 msgid "Issued On" msgstr "发布于" #: ../modules/trust-prompt/certificate-viewer.c:647 msgid "Expires On" msgstr "过期时间" #: ../modules/trust-prompt/certificate-viewer.c:649 msgid "Fingerprints" msgstr "指纹" #: ../modules/trust-prompt/certificate-viewer.c:650 msgid "SHA1 Fingerprint" msgstr "SHA1 指纹" #: ../modules/trust-prompt/certificate-viewer.c:651 msgid "MD5 Fingerprint" msgstr "MD5 指纹" #: ../modules/trust-prompt/certificate-viewer.c:653 msgid "General" msgstr "常规" #: ../modules/trust-prompt/certificate-viewer.c:672 msgid "Certificate Hierarchy" msgstr "证书层次结构" #: ../modules/trust-prompt/certificate-viewer.c:676 msgid "Certificate Fields" msgstr "证书字段" #: ../modules/trust-prompt/certificate-viewer.c:680 msgid "Field Value" msgstr "字段值" #: ../modules/trust-prompt/certificate-viewer.c:682 msgid "Details" msgstr "细节" #: ../modules/trust-prompt/e-asn1-object.c:95 msgid "Version" msgstr "版本" #: ../modules/trust-prompt/e-asn1-object.c:110 msgid "Version 1" msgstr "版本 1" #: ../modules/trust-prompt/e-asn1-object.c:113 msgid "Version 2" msgstr "版本 2" #: ../modules/trust-prompt/e-asn1-object.c:116 msgid "Version 3" msgstr "版本 3" #: ../modules/trust-prompt/e-asn1-object.c:192 msgid "PKCS #1 MD2 With RSA Encryption" msgstr "RSA 加密的 PKCS #1 MD2" #: ../modules/trust-prompt/e-asn1-object.c:195 msgid "PKCS #1 MD5 With RSA Encryption" msgstr "RSA 加密的 PKCS #1 MD5" #: ../modules/trust-prompt/e-asn1-object.c:198 msgid "PKCS #1 SHA-1 With RSA Encryption" msgstr "RSA 加密的 PKCS #1 SHA-1" #: ../modules/trust-prompt/e-asn1-object.c:201 msgid "PKCS #1 SHA-256 With RSA Encryption" msgstr "RSA 加密的 PKCS #1 SHA-256" #: ../modules/trust-prompt/e-asn1-object.c:204 msgid "PKCS #1 SHA-384 With RSA Encryption" msgstr "RSA 加密的 PKCS #1 SHA-384" #: ../modules/trust-prompt/e-asn1-object.c:207 msgid "PKCS #1 SHA-512 With RSA Encryption" msgstr "RSA 加密的 PKCS #1 SHA-512" #: ../modules/trust-prompt/e-asn1-object.c:234 msgid "PKCS #1 RSA Encryption" msgstr "PKCS #1 加密" #: ../modules/trust-prompt/e-asn1-object.c:237 msgid "Certificate Key Usage" msgstr "证书密钥用法" #: ../modules/trust-prompt/e-asn1-object.c:240 msgid "Netscape Certificate Type" msgstr "Netscape 证书类型" #: ../modules/trust-prompt/e-asn1-object.c:243 msgid "Certificate Authority Key Identifier" msgstr "证书颁发机构密钥标识符" #: ../modules/trust-prompt/e-asn1-object.c:255 #, c-format msgid "Object Identifier (%s)" msgstr "对象标识符(%s)" #: ../modules/trust-prompt/e-asn1-object.c:306 msgid "Algorithm Identifier" msgstr "算法标识符" #: ../modules/trust-prompt/e-asn1-object.c:314 msgid "Algorithm Parameters" msgstr "算法参数" #: ../modules/trust-prompt/e-asn1-object.c:336 msgid "Subject Public Key Info" msgstr "证书持有者公钥信息" #: ../modules/trust-prompt/e-asn1-object.c:341 msgid "Subject Public Key Algorithm" msgstr "证书持有者的公钥算法" #: ../modules/trust-prompt/e-asn1-object.c:356 msgid "Subject's Public Key" msgstr "证书持有者的公钥" #: ../modules/trust-prompt/e-asn1-object.c:378 #: ../modules/trust-prompt/e-asn1-object.c:428 msgid "Error: Unable to process extension" msgstr "错误:无法处理扩展" #: ../modules/trust-prompt/e-asn1-object.c:395 msgid "Email" msgstr "电子邮件" #: ../modules/trust-prompt/e-asn1-object.c:399 #: ../modules/trust-prompt/e-asn1-object.c:411 msgid "Object Signer" msgstr "签名者对象" #: ../modules/trust-prompt/e-asn1-object.c:403 msgid "SSL Certificate Authority" msgstr "SSL 证书机构" #: ../modules/trust-prompt/e-asn1-object.c:407 msgid "Email Certificate Authority" msgstr "电子邮件证书机构" #: ../modules/trust-prompt/e-asn1-object.c:436 msgid "Signing" msgstr "签名" #: ../modules/trust-prompt/e-asn1-object.c:440 msgid "Non-repudiation" msgstr "不可否认" #: ../modules/trust-prompt/e-asn1-object.c:444 msgid "Key Encipherment" msgstr "密钥加密" #: ../modules/trust-prompt/e-asn1-object.c:448 msgid "Data Encipherment" msgstr "数据加密" #: ../modules/trust-prompt/e-asn1-object.c:452 msgid "Key Agreement" msgstr "密钥协商" #: ../modules/trust-prompt/e-asn1-object.c:456 msgid "Certificate Signer" msgstr "证书签名" #: ../modules/trust-prompt/e-asn1-object.c:460 msgid "CRL Signer" msgstr "CRL 签署者" #: ../modules/trust-prompt/e-asn1-object.c:509 msgid "Critical" msgstr "致命" #: ../modules/trust-prompt/e-asn1-object.c:511 #: ../modules/trust-prompt/e-asn1-object.c:514 msgid "Not Critical" msgstr "非致命" #: ../modules/trust-prompt/e-asn1-object.c:535 msgid "Extensions" msgstr "扩展" #. Translators: This string is used in Certificate #. * details for fields like Issuer or Subject, which #. * shows the field name on the left and its respective #. * value on the right, both as stored in the #. * certificate itself. You probably do not need to #. * change this string, unless changing the order of #. * name and value. As a result example: #. * "OU = VeriSign Trust Network" #: ../modules/trust-prompt/e-asn1-object.c:615 #, c-format msgid "%s = %s" msgstr "%s = %s" #: ../modules/trust-prompt/e-asn1-object.c:658 msgid "Certificate" msgstr "证书" #: ../modules/trust-prompt/e-asn1-object.c:674 #: ../modules/trust-prompt/e-asn1-object.c:812 msgid "Certificate Signature Algorithm" msgstr "证书签名算法" #: ../modules/trust-prompt/e-asn1-object.c:683 msgid "Issuer" msgstr "发布者" #: ../modules/trust-prompt/e-asn1-object.c:714 msgid "Subject" msgstr "证书持有者" #: ../modules/trust-prompt/e-asn1-object.c:738 msgid "Issuer Unique ID" msgstr "发布者唯一(Unique) ID" #: ../modules/trust-prompt/e-asn1-object.c:757 msgid "Subject Unique ID" msgstr "持有者唯一标识(Unique ID)" #: ../modules/trust-prompt/e-asn1-object.c:818 msgid "Certificate Signature Value" msgstr "证书签名值" #: ../modules/trust-prompt/module-trust-prompt.c:201 msgid "The signing certificate authority is not known." msgstr "证书签署机构未知。" #: ../modules/trust-prompt/module-trust-prompt.c:203 msgid "" "The certificate does not match the expected identity of the site that it was " "retrieved from." msgstr "此证书与取得证书的站点标识不匹配。" #: ../modules/trust-prompt/module-trust-prompt.c:205 msgid "The certificate's activation time is still in the future." msgstr "证书的激活日期仍然时未来。" #: ../modules/trust-prompt/module-trust-prompt.c:207 msgid "The certificate has expired." msgstr "证书已经过期" #: ../modules/trust-prompt/module-trust-prompt.c:209 msgid "" "The certificate has been revoked according to the connection's certificate " "revocation list." msgstr "根据本连接的证书吊销列表,该证书已被撤销。" #: ../modules/trust-prompt/module-trust-prompt.c:211 msgid "The certificate's algorithm is considered insecure." msgstr "证书算分被认为是不安全的。" #: ../modules/trust-prompt/trust-prompt-gtk.c:162 msgid "Certificate trust..." msgstr "证书信任" #: ../modules/trust-prompt/trust-prompt-gtk.c:163 msgid "_View Certificate" msgstr "查看证书" #: ../modules/trust-prompt/trust-prompt-gtk.c:164 msgid "_Reject" msgstr "拒绝(_R)" #: ../modules/trust-prompt/trust-prompt-gtk.c:165 msgid "Accept _Temporarily" msgstr "临时接受(_T)" #: ../modules/trust-prompt/trust-prompt-gtk.c:166 msgid "_Accept Permanently" msgstr "永久接受(_A)" #: ../modules/trust-prompt/trust-prompt-gtk.c:203 #, c-format msgid "SSL certificate for '%s' is not trusted. Do you wish to accept it?" msgstr "“%s” 的 SSL 证书不受信任。您是否仍要接受它?" #: ../modules/trust-prompt/trust-prompt-gtk.c:209 msgid "Detailed information about the certificate:" msgstr "此证书的详细信息:" #: ../modules/trust-prompt/trust-prompt-gtk.c:223 msgid "Issuer:" msgstr "发布者:" #: ../modules/trust-prompt/trust-prompt-gtk.c:224 msgid "Subject:" msgstr "持有者:" #: ../modules/trust-prompt/trust-prompt-gtk.c:225 msgid "Fingerprint:" msgstr "指纹:" #: ../modules/trust-prompt/trust-prompt-gtk.c:226 msgid "Reason:" msgstr "原因:" #: ../modules/ubuntu-online-accounts/calendar.service-type.in.in.h:2 msgid "Integrate your calendars" msgstr "集成到日历" #: ../modules/ubuntu-online-accounts/contacts.service-type.in.in.h:2 msgid "Integrate your contacts" msgstr "集成您的账号" #: ../modules/ubuntu-online-accounts/e-signon-session-password.c:257 msgid "Signon service did not return a secret" msgstr "签名服务没有返回密钥" #: ../modules/ubuntu-online-accounts/evolution-data-server-uoa.desktop.in.in.h:1 msgid "Evolution Data Server" msgstr "Evolution 数据服务器" #: ../modules/ubuntu-online-accounts/evolution-data-server-uoa.desktop.in.in.h:2 msgid "Required to have EDS appear in UOA" msgstr "将 Evolution 数据服务端整合到 Ubuntu 在线账号时需要" #: ../modules/ubuntu-online-accounts/google-calendar.service.in.in.h:1 msgid "Google Calendar" msgstr "Google 日历" #: ../modules/ubuntu-online-accounts/google-contacts.service.in.in.h:1 msgid "Google Contacts" msgstr "Google 联系人" #: ../modules/ubuntu-online-accounts/google-gmail.service.in.in.h:1 msgid "GMail" msgstr "GMail" #: ../modules/ubuntu-online-accounts/mail.service-type.in.in.h:1 msgid "Mail" msgstr "邮件" #: ../modules/ubuntu-online-accounts/mail.service-type.in.in.h:2 msgid "Integrate your mailboxes" msgstr "集成到邮箱" #: ../modules/ubuntu-online-accounts/module-ubuntu-online-accounts.c:1009 #, c-format msgid "" "Cannot find a corresponding account service in the accounts database from " "which to obtain an access token for '%s'" msgstr "无法在账户数据库中找到对应的账号,以从其中为“%s”获取访问令牌。" #: ../modules/ubuntu-online-accounts/uoa-utils.c:85 #, c-format msgid "Expected status 200 when requesting guid, instead got status %d (%s)" msgstr "请求 guid 时期望获取状态为 200,可是获取到了状态 %d (%s)" #: ../modules/ubuntu-online-accounts/uoa-utils.c:102 #: ../modules/ubuntu-online-accounts/uoa-utils.c:299 msgid "Error parsing response as JSON: " msgstr "当作 JSON 解析出错: " #: ../modules/ubuntu-online-accounts/uoa-utils.c:120 msgid "Didn't find email member in JSON data" msgstr "无法在 JSON 数据中找到邮件成员" #: ../modules/ubuntu-online-accounts/uoa-utils.c:282 #, c-format msgid "" "Expected status 200 when requesting your identity, instead got status %d (%s)" msgstr "请求验证您的身份时,期望的状态为 200,实际获得状态为 %d (%s)" #: ../modules/ubuntu-online-accounts/uoa-utils.c:317 msgid "Didn't find 'id' in JSON data" msgstr "JSON 数据中没有找到“ID”" #: ../modules/ubuntu-online-accounts/uoa-utils.c:322 msgid "Didn't find 'emails.account' in JSON data" msgstr "JSON 数据中没有找到“emails.account“" #: ../modules/ubuntu-online-accounts/windows-live-mail.service.in.in.h:1 msgid "Windows Live Mail" msgstr "Windows Live Mail" #: ../modules/ubuntu-online-accounts/yahoo-calendar.service.in.in.h:1 msgid "Yahoo! Calendar" msgstr "雅虎日历" #: ../modules/ubuntu-online-accounts/yahoo-mail.service.in.in.h:1 msgid "Yahoo! Mail" msgstr "雅虎邮件" #: ../modules/yahoo-backend/module-yahoo-backend.c:227 msgid "Tasks" msgstr "任务" #: ../services/evolution-addressbook-factory/evolution-addressbook-factory.c:47 #: ../services/evolution-calendar-factory/evolution-calendar-factory.c:51 #: ../services/evolution-user-prompter/evolution-user-prompter.c:31 msgid "Keep running after the last client is closed" msgstr "客户端推出后继续运行" #: ../services/evolution-addressbook-factory/evolution-addressbook-factory.c:49 #: ../services/evolution-calendar-factory/evolution-calendar-factory.c:53 msgid "Wait running until at least one client is connected" msgstr "等待到至少有一个客户端连接" #: ../services/evolution-source-registry/builtin/birthdays.source.in.h:1 msgid "Birthdays & Anniversaries" msgstr "生日 & 纪念日" #: ../services/evolution-source-registry/builtin/caldav-stub.source.in.h:1 msgid "CalDAV" msgstr "CalDAV" #: ../services/evolution-source-registry/builtin/google-stub.source.in.h:1 msgid "Google" msgstr "Google" #: ../services/evolution-source-registry/builtin/ldap-stub.source.in.h:1 msgid "On LDAP Servers" msgstr "在 LDAP 服务器上" #: ../services/evolution-source-registry/builtin/local.source.in.h:1 #: ../services/evolution-source-registry/builtin/local-stub.source.in.h:1 msgid "On This Computer" msgstr "在此计算机中" #: ../services/evolution-source-registry/builtin/vfolder.source.in.h:1 msgid "Search Folders" msgstr "搜索文件夹" #: ../services/evolution-source-registry/builtin/weather-stub.source.in.h:1 msgid "Weather" msgstr "天气" #: ../services/evolution-source-registry/builtin/webcal-stub.source.in.h:1 msgid "On The Web" msgstr "在网络上" #: ../services/evolution-source-registry/builtin/webdav-stub.source.in.h:1 msgid "WebDAV" msgstr "WebDAV" #: ../services/evolution-user-prompter/prompt-user-gtk.c:122 msgid "_Dismiss" msgstr "解除(_D)" language-pack-gnome-zh-hans-base/data/zh_CN/LC_MESSAGES/file-roller.po0000644000000000000000000011351712321561507022311 0ustar # zh_CN translation for file-roller ui. # Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the file-roller package. # Funda Wang , 2003-2006. # 甘露(Gan Lu) , 2008, 2009. # Fan Qijiang , 2010. # Aron Xu , 2010. # liu zhen , 2011. # chiachen , 2012. # EL8LatSPQ , 2012. # Wylmer Wang , 2012. # YunQiang Su , 2012. # msgid "" msgstr "" "Project-Id-Version: file-roller master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=file-" "roller&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2014-02-27 16:23+0000\n" "PO-Revision-Date: 2014-02-28 14:30+0000\n" "Last-Translator: 甘露 (Lu Gan) \n" "Language-Team: Chinese (simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Launchpad-Export-Date: 2014-04-10 11:49+0000\n" "X-Generator: Launchpad (build 16976)\n" "Language: zh_CN\n" #: ../copy-n-paste/eggdesktopfile.c:165 #, c-format msgid "File is not a valid .desktop file" msgstr "不是一个有效的 .desktop 文件" #: ../copy-n-paste/eggdesktopfile.c:190 #, c-format msgid "Unrecognized desktop file Version '%s'" msgstr "不能识别的桌面文件版本“%s”" #: ../copy-n-paste/eggdesktopfile.c:973 #, c-format msgid "Starting %s" msgstr "正在启动 %s" #: ../copy-n-paste/eggdesktopfile.c:1115 #, c-format msgid "Application does not accept documents on command line" msgstr "程序在命令行中不接收文档" #: ../copy-n-paste/eggdesktopfile.c:1183 #, c-format msgid "Unrecognized launch option: %d" msgstr "不能识别的启动选项:%d" #: ../copy-n-paste/eggdesktopfile.c:1388 #, c-format msgid "Can't pass documents to this desktop element" msgstr "无法传递文档到此桌面元素" #: ../copy-n-paste/eggdesktopfile.c:1409 #, c-format msgid "Not a launchable item" msgstr "不是一个可启动项目" #: ../copy-n-paste/eggsmclient.c:226 msgid "Disable connection to session manager" msgstr "禁止连接到会话管理器" #: ../copy-n-paste/eggsmclient.c:229 msgid "Specify file containing saved configuration" msgstr "指定包含有已保存配置的文件" #: ../copy-n-paste/eggsmclient.c:229 msgid "FILE" msgstr "文件" #: ../copy-n-paste/eggsmclient.c:232 msgid "Specify session management ID" msgstr "指定会话管理 ID" #: ../copy-n-paste/eggsmclient.c:232 msgid "ID" msgstr "ID" #: ../copy-n-paste/eggsmclient.c:253 msgid "Session management options:" msgstr "会话管理选项:" #: ../copy-n-paste/eggsmclient.c:254 msgid "Show session management options" msgstr "显示会话管理选项" #: ../data/file-roller.desktop.in.in.h:1 ../src/fr-window.c:2052 #: ../src/fr-window.c:5441 msgid "Archive Manager" msgstr "归档管理器" #: ../data/file-roller.desktop.in.in.h:2 msgid "Create and modify an archive" msgstr "创建并修改归档文件" #: ../data/file-roller.desktop.in.in.h:3 msgid "zip;tar;extract;unpack;" msgstr "zip;tar;extract;unpack;提取;解包;压缩;归档;" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:1 msgid "How to sort files" msgstr "如何排列文件" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:2 msgid "" "What criteria must be used to arrange files. Possible values: name, size, " "type, time, path." msgstr "文件排列规则的标准。可取的值:名称、大小、类型、时间、路径。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:3 msgid "Sort type" msgstr "排序类型" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:4 msgid "" "Whether to sort in ascending or descending direction. Possible values: " "ascending, descending." msgstr "升序或是降序排列。可取的值:升序、降序。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:5 ../src/ui/app-menu.ui.h:2 msgid "List Mode" msgstr "列表模式" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:6 msgid "" "Use 'all-files' to view all the files in the archive in a single list, use " "'as-folder' to navigate the archive as a folder." msgstr "使用“所有文件”在单个列表中查看归档中的所有文件,使用“作为文件夹”以文件夹方式查看归档。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:7 msgid "Display type" msgstr "显示类型" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:8 msgid "Display the type column in the main window." msgstr "在主窗口中显示类型列。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:9 msgid "Display size" msgstr "显示大小" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:10 msgid "Display the size column in the main window." msgstr "在主窗口中显示大小列。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:11 msgid "Display time" msgstr "显示时间" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:12 msgid "Display the time column in the main window." msgstr "在主窗口中显示时间列。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:13 msgid "Display path" msgstr "显示路径" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:14 msgid "Display the path column in the main window." msgstr "在主窗口中显示路径列。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:15 msgid "Name column width" msgstr "名称列宽度" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:16 msgid "The default width of the name column in the file list." msgstr "文件列表中名称列的默认宽度。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:17 msgid "Max history length" msgstr "最大历史数目" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:18 msgid "Max number of items in the 'Open Recents' submenu." msgstr "“打开最近”子菜单中的最大条目数。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:19 msgid "View toolbar" msgstr "查看工具栏" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:20 msgid "Whether to display the toolbar." msgstr "是否显示工具栏。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:21 msgid "View statusbar" msgstr "查看状态栏" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:22 msgid "Whether to display the statusbar." msgstr "是否显示状态栏。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:23 ../src/ui.h:208 msgid "View the folders pane" msgstr "查看文件夹面板" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:24 msgid "Whether to display the folders pane." msgstr "是否显示文件夹面板。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:25 msgid "Editors" msgstr "编辑器" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:26 msgid "" "List of applications entered in the 'Open File' dialog and not associated " "with the file type." msgstr "进入“打开文件”对话框但未与该文件类型关联的应用程序的列表。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:27 msgid "Compression level" msgstr "压缩率:" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:28 msgid "" "Compression level used when adding files to an archive. Possible values: " "very-fast, fast, normal, maximum." msgstr "向归档添加文件时使用的压缩率。可取的值:很快、快、正常、最大。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:29 msgid "Encrypt the archive header" msgstr "加密归档头" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:30 msgid "" "Whether to encrypt the archive header. If the header is encrypted the " "password will be required to list the archive content as well." msgstr "是否加密归档头。如果头部加密,在列出归档内容时也会要求密码。" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:31 msgid "Do not overwrite newer files" msgstr "不覆盖较新的文件" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:32 msgid "Recreate the folders stored in the archive" msgstr "更新归档中的文件夹" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:33 msgid "Default volume size" msgstr "默认卷大小" #: ../data/org.gnome.FileRoller.gschema.xml.in.h:34 msgid "The default size for volumes." msgstr "卷的默认大小。" #: ../nautilus/nautilus-fileroller.c:327 msgid "Extract Here" msgstr "提取到此处" #. Translators: the current position is the current folder #: ../nautilus/nautilus-fileroller.c:329 msgid "Extract the selected archive to the current position" msgstr "将选中的归档文件提取到当前位置" #: ../nautilus/nautilus-fileroller.c:346 msgid "Extract To..." msgstr "提取到..." #: ../nautilus/nautilus-fileroller.c:347 msgid "Extract the selected archive" msgstr "提取选中的归档文件" #: ../nautilus/nautilus-fileroller.c:366 msgid "Compress..." msgstr "压缩..." #: ../nautilus/nautilus-fileroller.c:367 msgid "Create a compressed archive with the selected objects" msgstr "使用选择的对象创建一个压缩的归档" #: ../src/actions.c:112 ../src/fr-window.c:5735 ../src/fr-window.c:6262 msgid "Open" msgstr "打开" #: ../src/actions.c:125 ../src/fr-window.c:5291 msgid "All archives" msgstr "全部归档文件" #: ../src/actions.c:132 msgid "All files" msgstr "全部文件" #: ../src/actions.c:499 msgid "Copyright © 2001–2010 Free Software Foundation, Inc." msgstr "版权所有 © 2001-2010 自由软件基金会" #: ../src/actions.c:500 msgid "An archive manager for GNOME." msgstr "GNOME 的归档管理器。" #: ../src/actions.c:503 msgid "translator-credits" msgstr "" "GNOME 简体中文翻译 \n" "Yang Zhang 2007.\n" "甘露(Gan Lu) ,2008, 2009\n" "Fan Qijiang , 2010\n" "Aron Xu , 2010\n" "tuhaihe <1132321739qq@gmail.com>, 2012, 2013\n" "\n" "Launchpad Contributions:\n" " Aron Xu https://launchpad.net/~happyaron\n" " EL8LatSPQ https://launchpad.net/~el8latspq\n" " Fan Qijiang https://launchpad.net/~fqj1994-linux\n" " Feng Chao https://launchpad.net/~chaofeng\n" " Funda Wang https://launchpad.net/~fundawang-gmail\n" " Liu Qishuai https://launchpad.net/~lqs\n" " Tao Wei https://launchpad.net/~weitao1979\n" " Wang Dianjin https://launchpad.net/~tuhaihe\n" " Wylmer Wang https://launchpad.net/~wantinghard\n" " YunQiang Su https://launchpad.net/~wzssyqa\n" " chiachen https://launchpad.net/~luojiazhen\n" " myopia.D.Q https://launchpad.net/~qduan\n" " 甘露 (Lu Gan) https://launchpad.net/~rhythm-gan" #: ../src/dlg-add.c:116 msgid "Could not add the files to the archive" msgstr "无法将文件添加到归档文件中" #: ../src/dlg-add.c:117 #, c-format msgid "You don't have the right permissions to read files from folder \"%s\"" msgstr "您没有读取文件夹“%s”内文件的权限" #: ../src/dlg-add.c:182 ../src/ui.h:47 msgid "Add Files" msgstr "添加文件" #: ../src/dlg-add.c:193 msgid "_Options" msgstr "选项(_O)" #. load options #: ../src/dlg-add.c:202 ../src/ui/add-options.ui.h:1 msgid "Load Options" msgstr "载入选项" #. save options #: ../src/dlg-add.c:209 ../src/dlg-add.c:827 msgid "Save Options" msgstr "保存选项" #. clear options #: ../src/dlg-add.c:216 msgid "Reset Options" msgstr "重置选项" #: ../src/dlg-add.c:828 msgid "_Options Name:" msgstr "选项名称(_O):" #. Translators: %s is a filename #: ../src/dlg-ask-password.c:132 #, c-format msgid "Password required for \"%s\"" msgstr "“%s”需要密码" #: ../src/dlg-ask-password.c:141 msgid "Wrong password." msgstr "密码错误。" #: ../src/dlg-batch-add.c:87 ../src/fr-application.c:329 #: ../src/fr-application.c:683 msgid "Compress" msgstr "压缩" #: ../src/dlg-extract.c:96 ../src/fr-window.c:6820 #, c-format msgid "" "Destination folder \"%s\" does not exist.\n" "\n" "Do you want to create it?" msgstr "" "目标文件夹“%s”不存在。\n" "\n" "您是否想要创建?" #: ../src/dlg-extract.c:105 ../src/fr-window.c:6829 msgid "Create _Folder" msgstr "创建文件夹(_F)" #: ../src/dlg-extract.c:124 ../src/dlg-extract.c:142 ../src/dlg-extract.c:169 #: ../src/fr-window.c:4241 ../src/fr-window.c:6724 ../src/fr-window.c:6729 #: ../src/fr-window.c:6850 ../src/fr-window.c:6869 ../src/fr-window.c:6874 msgid "Extraction not performed" msgstr "提取操作未执行" #: ../src/dlg-extract.c:125 ../src/fr-window.c:6846 #, c-format msgid "Could not create the destination folder: %s." msgstr "无法创建目标文件夹:%s。" #: ../src/dlg-extract.c:170 ../src/fr-window.c:4410 ../src/fr-window.c:4494 #, c-format msgid "" "You don't have the right permissions to extract archives in the folder \"%s\"" msgstr "您没有权限将归档文件提取到文件夹“%s”中" #: ../src/dlg-extract.c:283 ../src/ui/extract-dialog-options.ui.h:1 #: ../src/ui.h:114 msgid "Extract" msgstr "提取" #: ../src/dlg-package-installer.c:112 ../src/dlg-package-installer.c:225 msgid "There was an internal error trying to search for applications:" msgstr "在试图搜索应用程序时出现了一个内部错误:" #: ../src/dlg-package-installer.c:294 ../src/dlg-package-installer.c:303 #: ../src/dlg-package-installer.c:331 ../src/fr-archive.c:744 #: ../src/fr-window.c:3970 ../src/fr-window.c:7453 ../src/fr-window.c:7810 #: ../src/fr-window.c:9357 msgid "Archive type not supported." msgstr "不支持的归档文件类型。" #: ../src/dlg-package-installer.c:313 #, c-format msgid "" "There is no command installed for %s files.\n" "Do you want to search for a command to open this file?" msgstr "" "没有为 %s 文件安装的命令。\n" "您想搜索一个命令来打开这个文件吗?" #: ../src/dlg-package-installer.c:318 msgid "Could not open this file type" msgstr "无法打开该文件类型" #: ../src/dlg-package-installer.c:321 msgid "_Search Command" msgstr "搜索命令(_S)" #: ../src/dlg-password.c:91 #, c-format msgid "Enter a password for \"%s\"" msgstr "输入归档文件“%s”的密码" #: ../src/dlg-prop.c:96 #, c-format msgid "%s Properties" msgstr "%s 的属性" #: ../src/dlg-update.c:163 #, c-format msgid "Update the file \"%s\" in the archive \"%s\"?" msgstr "更新归档“%2$s”中的文件“%1$s”?" #. secondary text #: ../src/dlg-update.c:174 ../src/dlg-update.c:199 ../src/ui/update.ui.h:2 #, c-format msgid "" "The file has been modified with an external application. If you don't update " "the file in the archive, all of your changes will be lost." msgid_plural "" "%d files have been modified with an external application. If you don't " "update the files in the archive, all of your changes will be lost." msgstr[0] "%d 个文件已被外部应用程序修改。如果您不更新归档中的文件,您的所有更改将会丢失。" #: ../src/dlg-update.c:189 #, c-format msgid "Update the files in the archive \"%s\"?" msgstr "更新归档“%s”中的文件?" #: ../src/fr-application.c:65 msgid "Add files to the specified archive and quit the program" msgstr "将文件添加到指定归档文件,然后退出程序" #: ../src/fr-application.c:66 msgid "ARCHIVE" msgstr "归档文件" #: ../src/fr-application.c:69 msgid "Add files asking the name of the archive and quit the program" msgstr "添加文件,询问归档文件的名称,然后退出程序" #: ../src/fr-application.c:73 msgid "Extract archives to the specified folder and quit the program" msgstr "将归档文件提取到指定文件夹,然后退出程序" #: ../src/fr-application.c:74 ../src/fr-application.c:86 msgid "FOLDER" msgstr "文件夹" #: ../src/fr-application.c:77 msgid "Extract archives asking the destination folder and quit the program" msgstr "提取文件,询问目标文件夹的名称,然后退出程序" #: ../src/fr-application.c:81 msgid "" "Extract the contents of the archives in the archive folder and quit the " "program" msgstr "提取归档文件夹中的归档文件内容,然后退出程序" #: ../src/fr-application.c:85 msgid "Default folder to use for the '--add' and '--extract' commands" msgstr "“--add”和“--extract”命令所使用的默认文件夹" #: ../src/fr-application.c:89 msgid "Create destination folder without asking confirmation" msgstr "不请求确认就创建目标文件夹" #: ../src/fr-application.c:93 msgid "Use the notification system to notify the operation completion" msgstr "使用通知系统来提示操作完成" #: ../src/fr-application.c:96 msgid "Start as a service" msgstr "以服务启动" #: ../src/fr-application.c:99 msgid "Show version" msgstr "显示版本" #: ../src/fr-application.c:365 ../src/fr-application.c:401 #: ../src/fr-application.c:427 ../src/fr-application.c:707 #: ../src/fr-window.c:9420 msgid "Extract archive" msgstr "提取文件" #: ../src/fr-application.c:565 msgid "- Create and modify an archive" msgstr "- 创建并修改归档文件" #. manually set name and icon #: ../src/fr-application.c:833 msgid "File Roller" msgstr "文件打包器" #: ../src/fr-archive.c:1845 msgid "You don't have the right permissions." msgstr "您没有正确的权限。" #: ../src/fr-archive.c:1845 msgid "This archive type cannot be modified" msgstr "此归档文件类型无法修改" #: ../src/fr-archive.c:1859 msgid "You can't add an archive to itself." msgstr "您无法将归档文件添加到其自身。" #. Translators: %s is a filename. #: ../src/fr-command-7z.c:297 ../src/fr-command-rar.c:422 #: ../src/fr-command-tar.c:304 #, c-format msgid "Adding \"%s\"" msgstr "正在添加“%s”" #. Translators: %s is a filename. #: ../src/fr-command-7z.c:447 ../src/fr-command-rar.c:554 #: ../src/fr-command-tar.c:425 #, c-format #| msgid "Starting %s" msgid "Extracting \"%s\"" msgstr "正在提取“%s”" #: ../src/fr-command.c:597 #, c-format msgid "Archive not found" msgstr "未找到归档" #. Translators: %s is a filename. #: ../src/fr-command-rar.c:503 ../src/fr-command-tar.c:370 #, c-format #| msgid "Removing file: " msgid "Removing \"%s\"" msgstr "正在移除“%s”" #: ../src/fr-command-rar.c:685 #, c-format msgid "Could not find the volume: %s" msgstr "找不到卷:%s" #: ../src/fr-command-tar.c:380 msgid "Deleting files from archive" msgstr "从归档文件中删除文件" #: ../src/fr-command-tar.c:485 msgid "Recompressing archive" msgstr "重新归档文件" #: ../src/fr-command-tar.c:744 msgid "Decompressing archive" msgstr "解压缩文件" #: ../src/fr-file-selector-dialog.c:772 ../src/fr-file-selector-dialog.c:817 msgid "Could not load the location" msgstr "无法加载该位置" #: ../src/fr-new-archive-dialog.c:344 ../src/fr-new-archive-dialog.c:363 #: ../src/fr-new-archive-dialog.c:379 ../src/fr-new-archive-dialog.c:427 #: ../src/fr-new-archive-dialog.c:445 ../src/fr-window.c:2915 msgid "Could not create the archive" msgstr "无法创建归档文件" #: ../src/fr-new-archive-dialog.c:346 ../src/fr-new-archive-dialog.c:365 msgid "You have to specify an archive name." msgstr "您必须指定归档文件名称。" #: ../src/fr-new-archive-dialog.c:429 msgid "You don't have permission to create an archive in this folder" msgstr "您没有在此文件夹中创建归档文件的权限" #. Translators: the name references to a filename. This message can appear when renaming a file. #: ../src/fr-new-archive-dialog.c:447 ../src/fr-window.c:8123 msgid "New name is the same as old one, please type other name." msgstr "新文件名与旧文件名相同,请输入一个其他的名称。" #: ../src/fr-new-archive-dialog.c:466 #, c-format msgid "A file named \"%s\" already exists. Do you want to replace it?" msgstr "文件“%s”已经存在。您要替换它吗?" #: ../src/fr-new-archive-dialog.c:467 #, c-format msgid "" "The file already exists in \"%s\". Replacing it will overwrite its contents." msgstr "“%s”中已有该文件。替换它将覆盖其内容。" #: ../src/fr-new-archive-dialog.c:474 ../src/fr-window.c:6652 msgid "_Replace" msgstr "替换(_R)" #: ../src/fr-new-archive-dialog.c:489 msgid "Could not delete the old archive." msgstr "无法删除旧归档文件。" #: ../src/fr-stock.c:41 msgid "C_reate" msgstr "创建(_R)" #: ../src/fr-stock.c:42 ../src/fr-stock.c:43 msgid "_Add" msgstr "添加(_A)" #: ../src/fr-stock.c:44 msgid "_Extract" msgstr "提取(_E)" #: ../src/fr-window.c:1173 msgid "Operation completed" msgstr "操作完成" #: ../src/fr-window.c:1290 #, c-format msgid "%d object (%s)" msgid_plural "%d objects (%s)" msgstr[0] "%d 个对象(%s)" #: ../src/fr-window.c:1295 #, c-format msgid "%d object selected (%s)" msgid_plural "%d objects selected (%s)" msgstr[0] "选中了 %d 个对象(%s)" #: ../src/fr-window.c:1680 msgid "Folder" msgstr "文件夹" #: ../src/fr-window.c:2060 msgid "[read only]" msgstr "[只读]" #: ../src/fr-window.c:2179 #, c-format msgid "Could not display the folder \"%s\"" msgstr "无法显示文件夹“%s”" #. Translators: %s is a filename #: ../src/fr-window.c:2270 ../src/fr-window.c:2308 #, c-format #| msgid "Starting %s" msgid "Creating \"%s\"" msgstr "正在创建“%s”" #. Translators: %s is a filename #: ../src/fr-window.c:2274 #, c-format #| msgid "Starting %s" msgid "Loading \"%s\"" msgstr "正在加载“%s”" #. Translators: %s is a filename #: ../src/fr-window.c:2278 #, c-format #| msgid "Starting %s" msgid "Reading \"%s\"" msgstr "正在读取“%s”" #. Translators: %s is a filename #: ../src/fr-window.c:2282 #, c-format msgid "Deleting the files from \"%s\"" msgstr "正在删除“%s”中的文件" #. Translators: %s is a filename #: ../src/fr-window.c:2286 #, c-format #| msgid "Starting %s" msgid "Testing \"%s\"" msgstr "正在测试“%s”" #: ../src/fr-window.c:2289 msgid "Getting the file list" msgstr "正在获取文件列表" #. Translators: %s is a filename #: ../src/fr-window.c:2293 #, c-format #| msgid "Copying the file list" msgid "Copying the files to add to \"%s\"" msgstr "正在复制要添加到“%s”的文件" #. Translators: %s is a filename #: ../src/fr-window.c:2297 #, c-format msgid "Adding the files to \"%s\"" msgstr "正在向“%s”添加文件" #. Translators: %s is a filename #: ../src/fr-window.c:2301 #, c-format msgid "Extracting the files from \"%s\"" msgstr "正在提取“%s”中的文件" #: ../src/fr-window.c:2304 msgid "Copying the extracted files to the destination" msgstr "正在将提取的文件复制到目标位置" #. Translators: %s is a filename #: ../src/fr-window.c:2313 #, c-format #| msgid "Starting %s" msgid "Saving \"%s\"" msgstr "正在保存“%s”" #. Translators: %s is a filename #: ../src/fr-window.c:2320 #, c-format msgid "Renaming the files in \"%s\"" msgstr "正在重命名“%s”中的文件" #. Translators: %s is a filename #: ../src/fr-window.c:2324 #, c-format msgid "Updating the files in \"%s\"" msgstr "正在更新“%s”中的文件" #: ../src/fr-window.c:2499 msgid "_Open the Archive" msgstr "打开归档文件(_O)" #: ../src/fr-window.c:2500 msgid "_Show the Files" msgstr "显示文件(_S)" #: ../src/fr-window.c:2617 #, c-format msgid "%d file remaining" msgid_plural "%'d files remaining" msgstr[0] "剩余 %'d 个文件" #: ../src/fr-window.c:2621 ../src/fr-window.c:3196 #| msgid "please wait…" msgid "Please wait…" msgstr "请稍候..." #: ../src/fr-window.c:2677 msgid "Extraction completed successfully" msgstr "提取成功完成" #. Translators: %s is a filename #: ../src/fr-window.c:2709 ../src/fr-window.c:6248 #, c-format msgid "\"%s\" created successfully" msgstr "成功创建“%s”" #: ../src/fr-window.c:2799 ../src/fr-window.c:2971 msgid "Command exited abnormally." msgstr "命令异常退出。" #: ../src/fr-window.c:2920 msgid "An error occurred while extracting files." msgstr "提取文件时发生了错误。" #: ../src/fr-window.c:2926 #, c-format msgid "Could not open \"%s\"" msgstr "无法打开“%s”" #: ../src/fr-window.c:2931 msgid "An error occurred while loading the archive." msgstr "装入归档文件时出现了一个错误。" #: ../src/fr-window.c:2935 msgid "An error occurred while deleting files from the archive." msgstr "从归档文件中删除文件时出现了一个错误。" #: ../src/fr-window.c:2941 msgid "An error occurred while adding files to the archive." msgstr "将文件添加到归档文件时出现了一个错误。" #: ../src/fr-window.c:2945 msgid "An error occurred while testing archive." msgstr "测试归档文件时出现了一个错误。" #: ../src/fr-window.c:2950 msgid "An error occurred while saving the archive." msgstr "保存归档文件时出现了一个错误。" #: ../src/fr-window.c:2954 msgid "An error occurred while renaming the files." msgstr "重命名文件时发生了错误。" #: ../src/fr-window.c:2958 msgid "An error occurred while updating the files." msgstr "更新文件时发生了错误。" #: ../src/fr-window.c:2962 msgid "An error occurred." msgstr "出现了一个错误。" #: ../src/fr-window.c:2968 msgid "Command not found." msgstr "命令没有找到。" #: ../src/fr-window.c:3124 msgid "Test Result" msgstr "测试结果" #: ../src/fr-window.c:4088 ../src/fr-window.c:8803 ../src/fr-window.c:8837 #: ../src/fr-window.c:9116 msgid "Could not perform the operation" msgstr "无法执行这个操作" #: ../src/fr-window.c:4114 msgid "" "Do you want to add this file to the current archive or open it as a new " "archive?" msgstr "您想要将此文件添加到当前归档文件还是打开为新归档文件?" #: ../src/fr-window.c:4144 msgid "Do you want to create a new archive with these files?" msgstr "您是否想要创建包含这些文件在内的新归档文件?" #: ../src/fr-window.c:4147 msgid "Create _Archive" msgstr "创建归档文件(_A)" #: ../src/fr-window.c:4176 ../src/fr-window.c:7261 msgid "New Archive" msgstr "新建归档文件" #: ../src/fr-window.c:4750 msgid "Folders" msgstr "文件夹" #: ../src/fr-window.c:4788 ../src/ui/file-selector.ui.h:7 msgctxt "File" msgid "Size" msgstr "大小" #: ../src/fr-window.c:4789 msgctxt "File" msgid "Type" msgstr "类型" #: ../src/fr-window.c:4790 ../src/ui/file-selector.ui.h:8 msgctxt "File" msgid "Modified" msgstr "已修改" #: ../src/fr-window.c:4791 msgctxt "File" msgid "Location" msgstr "位置" #: ../src/fr-window.c:4800 ../src/ui/file-selector.ui.h:6 msgctxt "File" msgid "Name" msgstr "名称" #. Translators: this is the label for the "open recent file" sub-menu. #: ../src/fr-window.c:5723 msgid "Open _Recent" msgstr "打开最近访问的(_R)" #: ../src/fr-window.c:5724 ../src/fr-window.c:5736 msgid "Open a recently used archive" msgstr "打开最近使用的归档文件" #: ../src/fr-window.c:5752 msgid "_Other Actions" msgstr "其它动作(_O)" #: ../src/fr-window.c:5753 msgid "Other actions" msgstr "其它动作" #. Translators: after the colon there is a folder name. #: ../src/fr-window.c:5821 ../src/ui/file-selector.ui.h:4 #: ../src/ui/new-archive-dialog.ui.h:2 msgid "_Location:" msgstr "位置(_L):" #: ../src/fr-window.c:6640 #, c-format msgid "Replace file \"%s\"?" msgstr "替换文件“%s”?" #: ../src/fr-window.c:6643 #, c-format msgid "Another file with the same name already exists in \"%s\"." msgstr "在“%s”中已存在另一个相同文件名的文件。" #: ../src/fr-window.c:6650 msgid "Replace _All" msgstr "全部替换(_A)" #: ../src/fr-window.c:6651 msgid "_Skip" msgstr "跳过(_S)" #: ../src/fr-window.c:7445 ../src/fr-window.c:7802 #, c-format msgid "Could not save the archive \"%s\"" msgstr "无法保存归档文件“%s”" #: ../src/fr-window.c:7572 msgid "Save" msgstr "保存" #: ../src/fr-window.c:7896 msgid "Last Output" msgstr "上次的输出" #. Translators: the name references to a filename. This message can appear when renaming a file. #: ../src/fr-window.c:8118 msgid "New name is void, please type a name." msgstr "新文件名为空,请输入一个名称。" #. Translators: the %s references to a filename. This message can appear when renaming a file. #: ../src/fr-window.c:8128 #, c-format msgid "" "Name \"%s\" is not valid because it contains at least one of the following " "characters: %s, please type other name." msgstr "文件名“%s”是非法的,因为它不能含有字符:%s,请再输入一个文件名。" #: ../src/fr-window.c:8164 #, c-format msgid "" "A folder named \"%s\" already exists.\n" "\n" "%s" msgstr "" "已经存在名为“%s”的文件夹。\n" "\n" "%s" #: ../src/fr-window.c:8164 ../src/fr-window.c:8166 msgid "Please use a different name." msgstr "请使用其它不同的文件名。" #: ../src/fr-window.c:8166 #, c-format msgid "" "A file named \"%s\" already exists.\n" "\n" "%s" msgstr "" "已经存在名为“%s”的文件。\n" "\n" "%s" #: ../src/fr-window.c:8236 msgid "Rename" msgstr "重命名" #: ../src/fr-window.c:8237 msgid "_New folder name:" msgstr "新文件夹名(_N):" #: ../src/fr-window.c:8237 msgid "_New file name:" msgstr "新文件名(_N):" #: ../src/fr-window.c:8241 msgid "_Rename" msgstr "重命名(_R)" #: ../src/fr-window.c:8258 ../src/fr-window.c:8277 msgid "Could not rename the folder" msgstr "无法重命名文件夹" #: ../src/fr-window.c:8258 ../src/fr-window.c:8277 msgid "Could not rename the file" msgstr "无法重命名文件" #. Translators: %s are archive filenames #: ../src/fr-window.c:8710 #, c-format msgid "Moving the files from \"%s\" to \"%s\"" msgstr "正在将“%s”中的文件移动到“%s”" #. Translators: %s are archive filenames #: ../src/fr-window.c:8713 #, c-format msgid "Copying the files from \"%s\" to \"%s\"" msgstr "正在将“%s”中的文件复制到“%s”" #: ../src/fr-window.c:8764 msgid "Paste Selection" msgstr "粘贴选中内容" #: ../src/fr-window.c:8765 msgid "_Destination folder:" msgstr "目标文件夹(_D):" #: ../src/fr-window.c:9375 msgid "Add files to an archive" msgstr "向归档文件中添加文件" #. This is the time format used in the "Date Modified" column and #. * in the Properties dialog. See the man page of strftime for an #. * explanation of the values. #: ../src/glib-utils.c:769 msgid "%d %B %Y, %H:%M" msgstr "%Y年%-m月%-d日 %H:%M" #: ../src/gtk-utils.c:557 msgid "Could not display help" msgstr "无法显示帮助" #: ../src/gtk-utils.c:651 msgid "Change password visibility" msgstr "改变密码可见性" #: ../src/ui/add-dialog-options.ui.h:1 msgid "Add" msgstr "添加" #: ../src/ui/add-dialog-options.ui.h:2 msgid "Include _files:" msgstr "包含文件(_F):" #: ../src/ui/add-dialog-options.ui.h:3 msgid "E_xclude files:" msgstr "排除文件(_X):" #: ../src/ui/add-dialog-options.ui.h:4 msgid "_Exclude folders:" msgstr "排除文件夹(_E):" #: ../src/ui/add-dialog-options.ui.h:5 ../src/ui/extract-dialog-options.ui.h:5 msgid "example: *.o; *.bak" msgstr "例:*.o; *.bak" #: ../src/ui/add-dialog-options.ui.h:6 ../src/ui/extract-dialog-options.ui.h:6 msgid "Actions" msgstr "操作" #: ../src/ui/add-dialog-options.ui.h:7 msgid "Add only if _newer" msgstr "仅添加新文件(_N)" #: ../src/ui/add-dialog-options.ui.h:8 msgid "_Follow symbolic links" msgstr "跟踪符号链接(_F)" #: ../src/ui/app-menu.ui.h:1 msgid "_New Archive" msgstr "新建归档文件(_N)" #: ../src/ui/app-menu.ui.h:3 ../src/ui.h:223 msgid "View All _Files" msgstr "查看全部文件(_F)" #: ../src/ui/app-menu.ui.h:4 ../src/ui.h:226 msgid "View as a F_older" msgstr "以文件夹查看(_O)" #: ../src/ui/app-menu.ui.h:5 ../src/ui.h:207 msgid "_Folders" msgstr "文件夹(_F)" #: ../src/ui/app-menu.ui.h:6 ../src/ui.h:34 msgid "_Help" msgstr "帮助(_H)" #: ../src/ui/app-menu.ui.h:7 #| msgid "Archive Manager" msgid "_About Archive Manager" msgstr "关于归档管理器(_A)" #: ../src/ui/app-menu.ui.h:8 #| msgid "_Edit" msgid "_Quit" msgstr "退出(_Q)" #: ../src/ui/ask-password.ui.h:1 ../src/ui/new-archive-dialog.ui.h:4 msgid "_Password:" msgstr "密码(_P):" #: ../src/ui/delete.ui.h:1 msgid "Delete" msgstr "删除" #: ../src/ui/delete.ui.h:2 ../src/ui/extract-dialog-options.ui.h:4 msgid "_Files:" msgstr "文件(_F):" #: ../src/ui/delete.ui.h:3 msgid "example: *.txt; *.doc" msgstr "例:*.txt; *.doc" #: ../src/ui/delete.ui.h:4 ../src/ui/extract-dialog-options.ui.h:2 msgid "_All files" msgstr "全部文件(_A)" #: ../src/ui/delete.ui.h:5 ../src/ui/extract-dialog-options.ui.h:3 msgid "_Selected files" msgstr "已选定文件(_S)" #: ../src/ui/error-dialog.ui.h:1 #| msgid "Command _Line Output" msgid "C_ommand Line Output:" msgstr "命令行输出(_O):" #: ../src/ui/extract-dialog-options.ui.h:7 msgid "_Keep directory structure" msgstr "保持目录结构(_K)" #: ../src/ui/extract-dialog-options.ui.h:8 msgid "Do not _overwrite newer files" msgstr "不覆盖较新的文件(_O)" #: ../src/ui/file-selector.ui.h:1 msgid "_Select All" msgstr "选择全部(_S)" #: ../src/ui/file-selector.ui.h:2 ../src/ui.h:102 msgid "Dese_lect All" msgstr "全部不选(_L)" #: ../src/ui/file-selector.ui.h:3 msgid "Show Hidden Files" msgstr "显示隐藏文件" #: ../src/ui/file-selector.ui.h:5 ../src/ui.h:184 msgid "Go up one level" msgstr "转到上一层" #: ../src/ui.h:31 msgid "_Archive" msgstr "归档文件(_A)" #: ../src/ui.h:32 msgid "_Edit" msgstr "编辑(_E)" #: ../src/ui.h:33 msgid "_View" msgstr "查看(_V)" #: ../src/ui.h:35 msgid "_Arrange Files" msgstr "排列文件(_A)" #: ../src/ui.h:40 msgid "Information about the program" msgstr "关于程序的信息" #: ../src/ui.h:43 msgid "_Add Files…" msgstr "添加文件(_A)..." #: ../src/ui.h:44 ../src/ui.h:48 msgid "Add files to the archive" msgstr "向归档文件中添加文件" #: ../src/ui.h:52 msgid "Close the current archive" msgstr "关闭当前归档文件" #: ../src/ui.h:55 msgid "Contents" msgstr "目录" #: ../src/ui.h:56 msgid "Display the File Roller Manual" msgstr "显示文件打包器的手册" #: ../src/ui.h:61 ../src/ui.h:82 msgid "Copy the selection" msgstr "复制选中内容" #: ../src/ui.h:65 ../src/ui.h:86 msgid "Cut the selection" msgstr "剪切选中内容" #: ../src/ui.h:69 ../src/ui.h:90 msgid "Paste the clipboard" msgstr "粘贴剪贴板中的内容" #: ../src/ui.h:72 ../src/ui.h:93 msgid "_Rename…" msgstr "重命名(_R)..." #: ../src/ui.h:73 ../src/ui.h:94 msgid "Rename the selection" msgstr "重命名选中内容" #: ../src/ui.h:77 ../src/ui.h:98 msgid "Delete the selection from the archive" msgstr "从归档文件中删除选中内容" #: ../src/ui.h:103 msgid "Deselect all files" msgstr "不选任何文件" #: ../src/ui.h:106 ../src/ui.h:110 msgid "_Extract…" msgstr "提取(_E)..." #: ../src/ui.h:107 ../src/ui.h:111 ../src/ui.h:115 msgid "Extract files from the archive" msgstr "从归档文件中提取文件" #: ../src/ui.h:118 msgid "New…" msgstr "新建..." #: ../src/ui.h:119 msgid "Create a new archive" msgstr "创建新归档文件" #: ../src/ui.h:122 msgid "Open…" msgstr "打开..." #: ../src/ui.h:123 ../src/ui.h:127 msgid "Open archive" msgstr "打开归档文件" #: ../src/ui.h:130 msgid "_Open With…" msgstr "打开方式(_O)..." #: ../src/ui.h:131 msgid "Open selected files with an application" msgstr "用应用程序打开选中文件" #: ../src/ui.h:134 msgid "Pass_word…" msgstr "密码(_W)..." #: ../src/ui.h:135 msgid "Specify a password for this archive" msgstr "为此归档文件指定密码" #: ../src/ui.h:139 msgid "Show archive properties" msgstr "显示归档文件属性" #: ../src/ui.h:143 msgid "Reload current archive" msgstr "重新装入当前归档文件" #: ../src/ui.h:146 msgid "Save As…" msgstr "另存为..." #: ../src/ui.h:147 msgid "Save the current archive with a different name" msgstr "将当前归档文件以不同的名称保存" #: ../src/ui.h:151 msgid "Select all files" msgstr "选中全部文件" #: ../src/ui.h:154 msgid "_Test Integrity" msgstr "测试完整性(_T)" #: ../src/ui.h:155 msgid "Test whether the archive contains errors" msgstr "测试归档文件是否有错" #: ../src/ui.h:159 ../src/ui.h:163 msgid "Open the selected file" msgstr "打开选中文件" #: ../src/ui.h:167 ../src/ui.h:171 msgid "Open the selected folder" msgstr "打开选中文件夹" #: ../src/ui.h:176 msgid "Go to the previous visited location" msgstr "转到上一次访问的位置" #: ../src/ui.h:180 msgid "Go to the next visited location" msgstr "转到下一次访问的位置" #. Translators: the home location is the home folder. #: ../src/ui.h:189 msgid "Go to the home location" msgstr "转到起始位置" #: ../src/ui.h:197 msgid "_Toolbar" msgstr "工具栏(_T)" #: ../src/ui.h:198 msgid "View the main toolbar" msgstr "查看主工具栏" #: ../src/ui.h:202 msgid "Stat_usbar" msgstr "状态栏(_U)" #: ../src/ui.h:203 msgid "View the statusbar" msgstr "查看状态栏" #: ../src/ui.h:212 msgid "Find…" msgstr "查找..." #: ../src/ui.h:213 msgid "Find files by name" msgstr "按名称查找文件" #: ../src/ui/new-archive-dialog.ui.h:1 msgid "_Filename:" msgstr "文件名(_F):" #: ../src/ui/new-archive-dialog.ui.h:3 msgid "Location" msgstr "位置" #: ../src/ui/new-archive-dialog.ui.h:5 msgid "_Encrypt the file list too" msgstr "文件列表也加密(_E)" #. this is part of a sentence, for example "split into volumes of 10.0 MB", where MB stands for megabyte. #: ../src/ui/new-archive-dialog.ui.h:7 msgid "Split into _volumes of" msgstr "将归档文件拆分为(_V)" #. MB means megabytes #: ../src/ui/new-archive-dialog.ui.h:9 msgid "MB" msgstr "MB" #: ../src/ui/new-archive-dialog.ui.h:10 msgid "_Other Options" msgstr "其它选项(_O)" #: ../src/ui/password.ui.h:1 msgid "Password" msgstr "密码" #: ../src/ui/password.ui.h:2 msgid "_Encrypt the file list" msgstr "加密文件列表(_E)" #: ../src/ui/properties.ui.h:1 msgctxt "File" msgid "Name:" msgstr "名称:" #: ../src/ui/properties.ui.h:2 msgid "Archive size:" msgstr "归档文件大小:" #. after the colon there is a folder name. #: ../src/ui/properties.ui.h:4 msgid "Location:" msgstr "位置:" #: ../src/ui/properties.ui.h:5 msgid "Compression ratio:" msgstr "压缩率:" #: ../src/ui/properties.ui.h:6 msgid "Last modified:" msgstr "修改日期:" #: ../src/ui/properties.ui.h:7 msgid "Content size:" msgstr "目录大小:" #: ../src/ui/properties.ui.h:8 msgid "Number of files:" msgstr "文件数:" #. after the colon there is a file type. #: ../src/ui/properties.ui.h:10 msgid "Type:" msgstr "类型:" #: ../src/ui/update.ui.h:1 msgid "_Update" msgstr "更新(_U)" #: ../src/ui/update.ui.h:3 msgid "S_elect the files you want to update:" msgstr "选择您要更新的文件(_E):" language-pack-gnome-zh-hans-base/data/zh_CN/LC_MESSAGES/GConf2.po0000644000000000000000000023173012321561510021143 0ustar # Translation of gconf.po to zh_CN # Copyright (C) 2001-2009 Free Software Foundation, Inc. # Wang Jian , 2001. # Xiong Jiang , 2003. # Funda Wang , 2003, 2004. # LoneStar , 2004. # Yang Zhang , 2009. # Ray Wang , 2009. # # msgid "" msgstr "" "Project-Id-Version: gconf HEAD\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-03-27 18:19+0000\n" "PO-Revision-Date: 2010-12-26 21:21+0000\n" "Last-Translator: Hinker Liu \n" "Language-Team: Chinese/Simplified \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2014-04-10 11:56+0000\n" "X-Generator: Launchpad (build 16976)\n" #: ../backends/evoldap-backend.c:162 #, c-format msgid "Failed to get configuration file path from '%s'" msgstr "从“%s”获得配置文件路径失败" #: ../backends/evoldap-backend.c:173 #, c-format msgid "Created Evolution/LDAP source using configuration file '%s'" msgstr "已使用配置文件“%s”创建了 Evolution/LDAP 源" #: ../backends/evoldap-backend.c:447 #, c-format msgid "Unable to parse XML file '%s'" msgstr "无法分析 XML 文件“%s”" #: ../backends/evoldap-backend.c:456 #, c-format msgid "Config file '%s' is empty" msgstr "配置文件“%s”是空的" #: ../backends/evoldap-backend.c:467 #, c-format msgid "Root node of '%s' must be , not <%s>" msgstr "“%s”的根节点必须是 ,不是 <%s>" #: ../backends/evoldap-backend.c:505 #, c-format msgid "No