# Chinese (simplified) translation for gst-plugins-bad.
# Copyright (C) 2007 Free Software Foundation, Inc.
# This file is distributed under the same license as the gst-plugins-bad package.
# Wenzheng Hu <db_lobster@163.com>, 2007.
# LI Daobing <lidaobing@gmail.com>, 2008.
# Ji ZhengYu <zhengyuji@gmail.com>, 2008, 2009
#
msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.16.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2014-06-22 17:56+0200\n"
"PO-Revision-Date: 2009-11-20 18:12中国标准时间\n"
"Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

msgid "Could not read title information for DVD."
msgstr "无法读取 DVD 的标题信息。"

#, c-format
msgid "Failed to open DVD device '%s'."
msgstr "无法打开 DVD 设备“%s”。"

msgid "Failed to set PGC based seeking."
msgstr "无法设置基于 PGC 的检索。"

msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
"decryption library is not installed."
msgstr ""

#, fuzzy
msgid "Could not read DVD."
msgstr "无法读取 DVD 的标题信息。"

msgid "This file contains no playable streams."
msgstr ""

msgid "Couldn't get the Manifest's URI"
msgstr ""

msgid "Failed to get fragment URL."
msgstr ""

msgid "Internal data stream error."
msgstr "内部数据流错误。"

msgid "Couldn't download fragments"
msgstr ""

#, fuzzy
msgid "Could not open sndfile stream for reading."
msgstr "无法以读方式打开文件“%s”。"

msgid "No file name specified for writing."
msgstr "未指定写入文件名。"

#, c-format
msgid "Could not open file \"%s\" for writing."
msgstr "无法以写方式打开文件“%s”。"

#, c-format
msgid "Could not write to file \"%s\"."
msgstr "无法写入文件“%s”。"

msgid "Could not establish connection to sndio"
msgstr ""

msgid "Failed to query sndio capabilities"
msgstr ""

#, fuzzy
msgid "Could not configure sndio"
msgstr "无法以读方式打开文件“%s”。"

#, fuzzy
msgid "Could not start sndio"
msgstr "无法读取 DVD 的标题信息。"

msgid "Internal data flow error."
msgstr "内部数据流错误。"

msgid "Generated file has a larger preroll time than its streams duration"
msgstr ""

#, c-format
msgid "Missing element '%s' - check your GStreamer installation."
msgstr ""

msgid "File location is set to NULL, please set it to a valid filename"
msgstr ""

msgid "Subpicture format was not configured before data flow"
msgstr ""

#, c-format
msgid "Given file name \"%s\" can't be converted to local file name encoding."
msgstr ""

#, c-format
msgid "Device \"%s\" does not exist."
msgstr "不存在设备“%s”。"

#, c-format
msgid "Could not open frontend device \"%s\"."
msgstr "无法打开前端设备“%s”。"

#, c-format
msgid "Could not get settings from frontend device \"%s\"."
msgstr "无法从前端设备“%s”获取设置。"

#, fuzzy, c-format
msgid "Cannot enumerate delivery systems from frontend device \"%s\"."
msgstr "无法从前端设备“%s”获取设置。"

#, c-format
msgid "Could not open file \"%s\" for reading."
msgstr "无法以读方式打开文件“%s”。"

#, fuzzy
msgid "Couldn't find DVB channel configuration file"
msgstr "模拟混音器设置"

#, fuzzy, c-format
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "模拟混音器设置"

msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""

#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr ""

#~ msgid "%s %d"
#~ msgstr "%s %d"

#~ msgid "Internal clock error."
#~ msgstr "内部时钟错误。"

#~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
#~ msgstr "无法配置 TwoLAME 编码器。请检查您的编码参数。"

#~ msgid ""
#~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The "
#~ "bitrate was changed to %d kbit/s."
#~ msgstr "不允许使用“%2$s”所请求的码率 %1$d kbit/s。码率改为 %3$d kbit/s。"

#~ msgid "PCM 1"
#~ msgstr "PCM 1"

#~ msgid "PCM 2"
#~ msgstr "PCM 2"

#~ msgid "PCM 3"
#~ msgstr "PCM 3"

#~ msgid "PCM 4"
#~ msgstr "PCM 4"

#~ msgid "Green connector function"
#~ msgstr "线路输出音效"

#~ msgid "Green front panel connector function"
#~ msgstr "线路输出音效面板"

#~ msgid "Pink connector function"
#~ msgstr "话筒输出音效"

#~ msgid "Pink front panel connector function"
#~ msgstr "话筒输出音效面板"

#~ msgid "Blue connector function"
#~ msgstr "立体声输入音效"

#~ msgid "Blue front panel connector function"
#~ msgstr "立体声输入音效面板"

#~ msgid "Orange connector function"
#~ msgstr "低音炮输出音效"

#~ msgid "Orange front panel connector function"
#~ msgstr "低音炮输出音效面板"

#~ msgid "Black connector function"
#~ msgstr "后置声道输出音效"

#~ msgid "Black front panel connector function"
#~ msgstr "后置声道输出音效面板"

#~ msgid "Gray connector function"
#~ msgstr "中置声道输出音效"

#~ msgid "Gray front panel connector function"
#~ msgstr "中置声道输出音效面板"

#~ msgid "White connector function"
#~ msgstr "左/单声道输出音效"

#~ msgid "White front panel connector function"
#~ msgstr "左/单声道输出音效面板"

#~ msgid "Red connector function"
#~ msgstr "右声道输出音效"

#~ msgid "Red front panel connector function"
#~ msgstr "右声道输出音效面板"

#, fuzzy
#~ msgid "Yellow connector function"
#~ msgstr "MIDI 输出音效"

#, fuzzy
#~ msgid "Yellow front panel connector function"
#~ msgstr "MIDI 输出音效面板"
