diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/audio_mapping.cc | 32 | ||||
| -rw-r--r-- | src/lib/digester.cc | 37 | ||||
| -rw-r--r-- | src/lib/digester.h | 22 | ||||
| -rw-r--r-- | src/lib/film.cc | 30 | ||||
| -rw-r--r-- | src/lib/film.h | 2 | ||||
| -rw-r--r-- | src/lib/image.cc | 26 | ||||
| -rw-r--r-- | src/lib/memory_util.cc | 46 | ||||
| -rw-r--r-- | src/lib/memory_util.h | 7 | ||||
| -rw-r--r-- | src/lib/player.cc | 21 | ||||
| -rw-r--r-- | src/lib/player.h | 9 | ||||
| -rw-r--r-- | src/lib/po/ja_JP.po | 367 | ||||
| -rw-r--r-- | src/lib/po/zh_CN.po | 63 | ||||
| -rw-r--r-- | src/lib/raw_image_proxy.cc | 3 | ||||
| -rw-r--r-- | src/lib/reel_writer.cc | 30 |
14 files changed, 351 insertions, 344 deletions
diff --git a/src/lib/audio_mapping.cc b/src/lib/audio_mapping.cc index 4e13d1adb..c926437ea 100644 --- a/src/lib/audio_mapping.cc +++ b/src/lib/audio_mapping.cc @@ -85,13 +85,13 @@ AudioMapping::make_zero() struct ChannelRegex { - ChannelRegex(string regex_, int channel_) + ChannelRegex(string regex_, dcp::Channel channel_) : regex(regex_) , channel(channel_) {} string regex; - int channel; + dcp::Channel channel; }; @@ -99,19 +99,19 @@ void AudioMapping::make_default(AudioProcessor const * processor, optional<boost::filesystem::path> filename) { static ChannelRegex const regex[] = { - ChannelRegex(".*[\\._-]L[\\._-].*", 0), - ChannelRegex(".*[\\._-]R[\\._-].*", 1), - ChannelRegex(".*[\\._-]C[\\._-].*", 2), - ChannelRegex(".*[\\._-]Lfe[\\._-].*", 3), - ChannelRegex(".*[\\._-]LFE[\\._-].*", 3), - ChannelRegex(".*[\\._-]Lss[\\._-].*", 4), - ChannelRegex(".*[\\._-]Lsr[\\._-].*", 6), - ChannelRegex(".*[\\._-]Lrs[\\._-].*", 6), - ChannelRegex(".*[\\._-]Ls[\\._-].*", 4), - ChannelRegex(".*[\\._-]Rss[\\._-].*", 5), - ChannelRegex(".*[\\._-]Rsr[\\._-].*", 7), - ChannelRegex(".*[\\._-]Rrs[\\._-].*", 7), - ChannelRegex(".*[\\._-]Rs[\\._-].*", 5), + ChannelRegex(".*[\\._-]L[\\._-].*", dcp::Channel::LEFT), + ChannelRegex(".*[\\._-]R[\\._-].*", dcp::Channel::RIGHT), + ChannelRegex(".*[\\._-]C[\\._-].*", dcp::Channel::CENTRE), + ChannelRegex(".*[\\._-]Lfe[\\._-].*", dcp::Channel::LFE), + ChannelRegex(".*[\\._-]LFE[\\._-].*", dcp::Channel::LFE), + ChannelRegex(".*[\\._-]Lss[\\._-].*", dcp::Channel::LS), + ChannelRegex(".*[\\._-]Lsr[\\._-].*", dcp::Channel::BSL), + ChannelRegex(".*[\\._-]Lrs[\\._-].*", dcp::Channel::BSL), + ChannelRegex(".*[\\._-]Ls[\\._-].*", dcp::Channel::LS), + ChannelRegex(".*[\\._-]Rss[\\._-].*", dcp::Channel::RS), + ChannelRegex(".*[\\._-]Rsr[\\._-].*", dcp::Channel::BSR), + ChannelRegex(".*[\\._-]Rrs[\\._-].*", dcp::Channel::BSR), + ChannelRegex(".*[\\._-]Rs[\\._-].*", dcp::Channel::RS), }; static int const regexes = sizeof(regex) / sizeof(*regex); @@ -127,7 +127,7 @@ AudioMapping::make_default(AudioProcessor const * processor, optional<boost::fil if (filename) { for (int i = 0; i < regexes; ++i) { boost::regex e(regex[i].regex, boost::regex::icase); - if (boost::regex_match(filename->filename().string(), e) && regex[i].channel < output_channels()) { + if (boost::regex_match(filename->filename().string(), e) && static_cast<int>(regex[i].channel) < output_channels()) { set(0, regex[i].channel, 1); guessed = true; } diff --git a/src/lib/digester.cc b/src/lib/digester.cc index 67a3e2398..bbcad5478 100644 --- a/src/lib/digester.cc +++ b/src/lib/digester.cc @@ -22,6 +22,7 @@ #include "digester.h" #include "dcpomatic_assert.h" #include <nettle/md5.h> +#include <nettle/version.h> #include <iomanip> #include <cstdio> @@ -32,38 +33,42 @@ using std::setfill; using std::setw; -Digester::Digester () +Digester::Digester() { - md5_init (&_context); + md5_init(&_context); } -Digester::~Digester () +Digester::~Digester() { - get (); + get(); } void -Digester::add (void const * data, size_t size) +Digester::add(void const * data, size_t size) { - md5_update (&_context, size, reinterpret_cast<uint8_t const *>(data)); + md5_update(&_context, size, reinterpret_cast<uint8_t const *>(data)); } void -Digester::add (string const & s) +Digester::add(string const & s) { - add (s.c_str(), s.length()); + add(s.c_str(), s.length()); } string -Digester::get () const +Digester::get() const { if (!_digest) { unsigned char digest[MD5_DIGEST_SIZE]; - md5_digest (&_context, MD5_DIGEST_SIZE, digest); +#if NETTLE_VERSION_MAJOR >= 4 + md5_digest(&_context, digest); +#else + md5_digest(&_context, MD5_DIGEST_SIZE, digest); +#endif char hex[MD5_DIGEST_SIZE * 2 + 1]; for (int i = 0; i < MD5_DIGEST_SIZE; ++i) { @@ -73,19 +78,23 @@ Digester::get () const _digest = hex; } - return _digest.get (); + return _digest.get(); } void -Digester::get (uint8_t* buffer) const +Digester::get(uint8_t* buffer) const { - md5_digest (&_context, MD5_DIGEST_SIZE, buffer); +#if NETTLE_VERSION_MAJOR >= 4 + md5_digest(&_context, buffer); +#else + md5_digest(&_context, MD5_DIGEST_SIZE, buffer); +#endif } int -Digester::size () const +Digester::size() const { return MD5_DIGEST_SIZE; } diff --git a/src/lib/digester.h b/src/lib/digester.h index e4daabd68..5ff50f363 100644 --- a/src/lib/digester.h +++ b/src/lib/digester.h @@ -27,26 +27,26 @@ class Digester { public: - Digester (); - ~Digester (); + Digester(); + ~Digester(); - Digester (Digester const&) = delete; - Digester& operator= (Digester const&) = delete; + Digester(Digester const&) = delete; + Digester& operator=(Digester const&) = delete; - void add (void const * data, size_t size); + void add(void const * data, size_t size); template <class T> - void add (T data) { - add (&data, sizeof (T)); + void add(T data) { + add(&data, sizeof(T)); } - void add (std::string const & s); + void add(std::string const & s); - std::string get () const; + std::string get() const; - void get (uint8_t* buffer) const; + void get(uint8_t* buffer) const; - int size () const; + int size() const; private: mutable md5_ctx _context; diff --git a/src/lib/film.cc b/src/lib/film.cc index b0276086a..de6343b9c 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -113,6 +113,7 @@ using namespace dcpomatic; static constexpr char metadata_file[] = "metadata.xml"; static constexpr char ui_state_file[] = "ui.xml"; static constexpr char assets_file[] = "assets.xml"; +static constexpr char info_dir[] = "info"; /* 5 -> 6 @@ -289,7 +290,7 @@ boost::filesystem::path Film::info_file(DCPTimePeriod period) const { boost::filesystem::path p; - p /= "info"; + p /= info_dir; p /= video_identifier() + "_" + fmt::to_string(period.from.get()) + "_" + fmt::to_string(period.to.get()); return file(p); } @@ -1440,7 +1441,7 @@ Film::cpls() const for (auto const& item: dcp::filesystem::directory_iterator(dir)) { if ( dcp::filesystem::is_directory(item) && - item.path().filename() != "j2c" && item.path().filename() != "video" && item.path().filename() != "info" && item.path().filename() != "analysis" + item.path().filename() != "j2c" && item.path().filename() != "video" && item.path().filename() != info_dir && item.path().filename() != "analysis" ) { try { @@ -2204,12 +2205,35 @@ Film::speed_up_range(int dcp_frame_rate) const return _playlist->speed_up_range(dcp_frame_rate); } + void -Film::copy_from(shared_ptr<const Film> film) +Film::copy_from(shared_ptr<const Film> film, std::function<void (float)> set_progress) { read_metadata(film->file(metadata_file)); + + auto old_assets = film->read_remembered_assets(); + auto new_assets = std::vector<RememberedAsset>{}; + + /* Find source film's remembered assets that still exist and copy them to our new film */ + for (auto path: dcp::filesystem::recursive_directory_iterator(*film->directory())) { + auto iter = std::find_if(old_assets.begin(), old_assets.end(), [path](RememberedAsset const& asset) { + return asset.filename() == path.path().filename(); + }); + if (iter != old_assets.end()) { + copy_in_bits(path, assets_path() / path.path().filename(), set_progress); + new_assets.push_back({path.path().filename(), iter->period(), iter->identifier()}); + } + } + + write_remembered_assets(new_assets); + + /* To use the assets we also need the info files */ + for (auto path: dcp::filesystem::directory_iterator(film->dir(info_dir))) { + dcp::filesystem::copy_file(path.path(), dir(info_dir) / path.path().filename()); + } } + bool Film::references_dcp_video() const { diff --git a/src/lib/film.h b/src/lib/film.h index ae812f6d4..09b51202c 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -122,7 +122,7 @@ public: void write_template(boost::filesystem::path path) const; std::shared_ptr<xmlpp::Document> metadata(bool with_content_paths = true) const; - void copy_from(std::shared_ptr<const Film> film); + void copy_from(std::shared_ptr<const Film> film, std::function<void (float)> set_progress); std::string isdcf_name(bool if_created_now) const; std::string dcp_name(bool if_created_now = false) const; diff --git a/src/lib/image.cc b/src/lib/image.cc index 0810fbbea..3a2e99c23 100644 --- a/src/lib/image.cc +++ b/src/lib/image.cc @@ -190,7 +190,8 @@ Image::crop_source_pointers(Crop crop) const corrected_crop.bottom = size().height - 4; } - std::vector<uint8_t*> pointers(planes()); + /* FFmpeg memcpy()s this array and assumes it has 4 entries */ + std::vector<uint8_t*> pointers(4); for (int c = 0; c < planes(); ++c) { int const x = lrintf(bytes_per_pixel(c) * corrected_crop.left); pointers[c] = data()[c] + x + stride()[c] * (corrected_crop.top / vertical_factor(c)); @@ -286,7 +287,8 @@ Image::crop_scale_window( round_height_for_subsampling((out_size.height - inter_size.height) / 2, out_desc) ); - std::vector<uint8_t*> scale_out_data(out->planes()); + /* FFmpeg memcpy()s this array and assumes it has 4 entries */ + std::vector<uint8_t*> scale_out_data(4); for (int c = 0; c < out->planes(); ++c) { int const x = lrintf(out->bytes_per_pixel(c) * corner.x); scale_out_data[c] = out->data()[c] + x + out->stride()[c] * (corner.y / out->vertical_factor(c)); @@ -610,17 +612,15 @@ Image::make_black() case AV_PIX_FMT_UYVY422: { - int const Y = sample_size(0).height; - int const X = line_size()[0]; - uint8_t* p = data()[0]; - for (int y = 0; y < Y; ++y) { - for (int x = 0; x < X / 4; ++x) { - *p++ = eight_bit_uv; // Cb - *p++ = 0; // Y0 - *p++ = eight_bit_uv; // Cr - *p++ = 0; // Y1 - } - } + fill_memory( + data()[0], + sample_size(0).height * line_size()[0], + /* Cb/Cr is eight_bit_uv, Y0/Y1 is 0 */ + static_cast<uint64_t>(eight_bit_uv) | + (static_cast<uint64_t>(eight_bit_uv) << 16) | + (static_cast<uint64_t>(eight_bit_uv) << 32) | + (static_cast<uint64_t>(eight_bit_uv) << 48) + ); break; } diff --git a/src/lib/memory_util.cc b/src/lib/memory_util.cc index 00117855d..cf8842615 100644 --- a/src/lib/memory_util.cc +++ b/src/lib/memory_util.cc @@ -30,12 +30,52 @@ LIBDCP_ENABLE_WARNINGS void * -wrapped_av_malloc (size_t s) +wrapped_av_malloc(size_t s) { - auto p = av_malloc (s); + auto p = av_malloc(s); if (!p) { - throw std::bad_alloc (); + throw std::bad_alloc(); } return p; } + +void +fill_memory(void* ptr, size_t bytes, uint64_t value) +{ + if (bytes == 0) { + return; + } + + auto const start = std::min(bytes, sizeof(value) - reinterpret_cast<uintptr_t>(ptr) % sizeof(value)); + auto start_ptr = reinterpret_cast<uint8_t*>(ptr); + if (start < 8) { + for (auto i = 0UL; i < start; ++i) { + *start_ptr++ = value & 0xff; + value = (value >> 8) | ((value & 0xff) << 56); + } + + bytes -= start; + if (bytes == 0) { + return; + } + } + + auto const main = (bytes - (bytes % sizeof(value))) / 8; + auto main_ptr = reinterpret_cast<uint64_t*>(start_ptr); + for (auto i = 0UL; i < main; ++i) { + *main_ptr++ = value; + } + + bytes -= main * 8; + if (bytes == 0) { + return; + } + + auto end_ptr = reinterpret_cast<uint8_t*>(main_ptr); + for (auto i = 0UL; i < bytes; ++i) { + *end_ptr++ = value & 0xff; + value = (value >> 8) | ((value & 0xff) << 56); + } +} + diff --git a/src/lib/memory_util.h b/src/lib/memory_util.h index eccc4a857..f6bbe0621 100644 --- a/src/lib/memory_util.h +++ b/src/lib/memory_util.h @@ -19,4 +19,9 @@ */ -extern void* wrapped_av_malloc (size_t); +#include <cstddef> +#include <cstdint> + + +extern void* wrapped_av_malloc(size_t); +extern void fill_memory(void* ptr, size_t bytes, uint64_t value); diff --git a/src/lib/player.cc b/src/lib/player.cc index f93327495..cf5429fd5 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -86,6 +86,7 @@ using namespace dcpomatic; Player::Player(shared_ptr<const Film> film, Image::Alignment subtitle_alignment, bool tolerant) : _film(film) , _suspended(0) + , _video_container_size(dcp::Size{}) , _ignore_video(false) , _ignore_audio(false) , _ignore_text(false) @@ -94,6 +95,7 @@ Player::Player(shared_ptr<const Film> film, Image::Alignment subtitle_alignment, , _tolerant(tolerant) , _play_referenced(false) , _audio_merger(film->audio_frame_rate()) + , _playback_length(dcpomatic::DCPTime{}) , _subtitle_alignment(subtitle_alignment) { construct(); @@ -104,6 +106,7 @@ Player::Player(shared_ptr<const Film> film, shared_ptr<const Playlist> playlist_ : _film(film) , _playlist(playlist_) , _suspended(0) + , _video_container_size(dcp::Size{}) , _ignore_video(false) , _ignore_audio(false) , _ignore_text(false) @@ -112,6 +115,7 @@ Player::Player(shared_ptr<const Film> film, shared_ptr<const Playlist> playlist_ , _tolerant(tolerant) , _play_referenced(false) , _audio_merger(film->audio_frame_rate()) + , _playback_length(dcpomatic::DCPTime{}) { construct(); } @@ -164,7 +168,7 @@ Player::Player(Player&& other) , _play_referenced(other._play_referenced.load()) , _next_video_time(other._next_video_time) , _next_audio_time(other._next_audio_time) - , _dcp_decode_reduction(other._dcp_decode_reduction.load()) + , _dcp_decode_reduction(other._dcp_decode_reduction) , _last_video(std::move(other._last_video)) , _audio_merger(std::move(other._audio_merger)) , _shuffler(std::move(other._shuffler)) @@ -204,7 +208,7 @@ Player::operator=(Player&& other) _play_referenced = other._play_referenced.load(); _next_video_time = other._next_video_time; _next_audio_time = other._next_audio_time; - _dcp_decode_reduction = other._dcp_decode_reduction.load(); + _dcp_decode_reduction = other._dcp_decode_reduction; _last_video = std::move(other._last_video); _audio_merger = std::move(other._audio_merger); _shuffler = std::move(other._shuffler); @@ -1554,12 +1558,17 @@ Player::set_dcp_decode_reduction(optional<int> reduction) { ChangeSignaller<Player, int> cc(this, PlayerProperty::DCP_DECODE_REDUCTION); - if (reduction == _dcp_decode_reduction.load()) { - cc.abort(); - return; + { + boost::mutex::scoped_lock lm(_mutex); + + if (reduction == _dcp_decode_reduction) { + cc.abort(); + return; + } + + _dcp_decode_reduction = reduction; } - _dcp_decode_reduction = reduction; setup_pieces(); } diff --git a/src/lib/player.h b/src/lib/player.h index df5db28f0..2ae60c287 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -181,9 +181,10 @@ private: std::weak_ptr<Piece> weak_piece, std::weak_ptr<const TextContent> weak_content, dcpomatic::ContentTime subtitle_from ) const; - /** Mutex to protect the most of the Player state. When it's used for the preview we have - seek() and pass() called from the Butler thread and lots of other stuff called - from the GUI thread. + /** Mutex to protect the player state that is not using std::atomic. + * When the player is used for the preview we have seek() and pass() + * called from the Butler thread and lots of other stuff called + * from the GUI thread. */ mutable boost::mutex _mutex; @@ -221,7 +222,7 @@ private: /** Time of the next audio that we will emit, or the time of the last accurate seek */ boost::optional<dcpomatic::DCPTime> _next_audio_time; - std::atomic<boost::optional<int>> _dcp_decode_reduction; + boost::optional<int> _dcp_decode_reduction; EnumIndexedVector<std::pair<std::shared_ptr<PlayerVideo>, dcpomatic::DCPTime>, Eyes> _last_video; diff --git a/src/lib/po/ja_JP.po b/src/lib/po/ja_JP.po index 804a2f259..6ec5315d1 100644 --- a/src/lib/po/ja_JP.po +++ b/src/lib/po/ja_JP.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-04-19 23:03+0200\n" -"PO-Revision-Date: 2026-04-07 19:21+0900\n" +"POT-Creation-Date: 2026-02-15 21:03+0100\n" +"PO-Revision-Date: 2026-04-25 20:27+0900\n" "Last-Translator: \n" "Language-Team: \n" "Language: ja_JP\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.8\n" -#: src/lib/video_content.cc:515 +#: src/lib/video_content.cc:513 #, c-format msgid "" "\n" @@ -27,8 +27,7 @@ msgstr "" "\n" "コンテンツのフレームレート %.4f\n" -#: src/lib/video_content.cc:479 -#, c++-format +#: src/lib/video_content.cc:477 msgid "" "\n" "Cropped to {}x{}" @@ -36,7 +35,7 @@ msgstr "" "\n" "切り抜きサイズ: {}x{}" -#: src/lib/video_content.cc:469 +#: src/lib/video_content.cc:467 #, c-format msgid "" "\n" @@ -45,8 +44,7 @@ msgstr "" "\n" "画面アスペクト比= %.2f:1" -#: src/lib/video_content.cc:503 -#, c++-format +#: src/lib/video_content.cc:501 msgid "" "\n" "Padded with black to fit container {} ({}x{})" @@ -54,8 +52,7 @@ msgstr "" "\n" "画角に合う黒地入りアクセクト比= {} ({}x{})" -#: src/lib/video_content.cc:493 -#, c++-format +#: src/lib/video_content.cc:491 msgid "" "\n" "Scaled to {}x{}" @@ -63,7 +60,7 @@ msgstr "" "\n" "スケール= {}x{}" -#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 +#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -71,11 +68,10 @@ msgstr " (%.2f:1)" #. TRANSLATORS: the {} in this string will be filled in with a day of the week #. to say what day a job will finish. #: src/lib/job.cc:628 -#, c++-format msgid " on {}" msgstr "" -#: src/lib/config.cc:1270 +#: src/lib/config.cc:1266 msgid "" "$CPL_NAME\n" "\n" @@ -99,11 +95,11 @@ msgstr "" "長さ: $LENGTH\n" "サイズ: $SIZE\n" -#: src/lib/config.cc:1248 +#: src/lib/config.cc:1244 msgid "$JOB_NAME: $JOB_STATUS" msgstr "$処理名: $処理状況" -#: src/lib/video_content.cc:464 +#: src/lib/video_content.cc:462 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", ピクセルアスペクト比= %.2f:1" @@ -148,11 +144,11 @@ msgstr "1.85 (Flat)" msgid "1.90 (Full frame)" msgstr "1.90 (Full frame)" -#: src/lib/util.cc:622 +#: src/lib/util.cc:628 msgid "10" msgstr "10" -#: src/lib/util.cc:628 +#: src/lib/util.cc:634 msgid "16" msgstr "16" @@ -176,7 +172,7 @@ msgstr "2.39 (Scope)" msgid "3D denoiser" msgstr "3Dノイズ除去" -#: src/lib/hints.cc:222 +#: src/lib/hints.cc:219 msgid "" "4K 3D is only supported by a very limited number of projectors. Unless you " "know that you will play this DCP back on a capable projector, it is " @@ -186,25 +182,23 @@ msgstr "" "クターで再生する予定がない場合は「DCP→動画」タブでDCPを2Kに設定することをお勧" "めします。" -#: src/lib/util.cc:621 +#: src/lib/util.cc:627 msgid "9" msgstr "9" #. TRANSLATORS: fps here is an abbreviation for frames per second #: src/lib/transcode_job.cc:184 -#, c++-format msgid "; {} fps" msgstr "; {} fps" #: src/lib/job.cc:633 -#, c++-format msgid "; {} remaining; finishing at {}{}" msgstr "; 残り時間 {} ; 終了予定 {}{}" #: src/lib/analytics.cc:58 -#, fuzzy, c++-format +#, c-format msgid "" -"<h2>You have made {} DCPs with {}!</h2><img width=\"150\" height=\"193\" " +"<h2>You have made {} DCPs with {}!</h2><img width=\"20%%\" " "src=\"memory:me.jpg\" align=\"center\"><font size=\"+1\"><p>Hello. I'm Carl " "and I'm the developer of {}. I work on it in my spare time (with the help of " "a volunteer team of testers and translators) and I release it as free " @@ -228,7 +222,7 @@ msgstr "" "donate_amount?amount=10\">Paypal で €10 を寄付</a></ul><p>ありがとうございま" "す。</font>" -#: src/lib/hints.cc:179 +#: src/lib/hints.cc:176 msgid "" "A few projectors have problems playing back very high bit-rate DCPs. It is " "a good idea to drop the video bit rate down to about 200Mbit/s; this is " @@ -239,7 +233,6 @@ msgstr "" "画像の目に見える影響が出る可能性は低いと思います。" #: src/lib/text_content.cc:230 -#, c++-format msgid "" "A subtitle or closed caption file in this project is marked with the " "language '{}', which {} does not recognise. The file's language has been " @@ -256,7 +249,7 @@ msgstr "ARIB STD-B67(ハイブリッドログガンマ/HLG)" msgid "Advertisement" msgstr "広告(ADV)" -#: src/lib/hints.cc:156 +#: src/lib/hints.cc:153 msgid "" "All of your content is in Scope (2.39:1) but your DCP's container is Flat " "(1.85:1). This will letter-box your content inside a Flat (1.85:1) frame. " @@ -268,7 +261,7 @@ msgstr "" "レターボックス表示されます。「DCP」タブで、DCPのコンテナをスコープ(2.39:1)" "に設定することをお勧めします。" -#: src/lib/hints.cc:160 +#: src/lib/hints.cc:157 msgid "" "All of your content narrower than 1.90:1 but your DCP's container is Scope " "(2.39:1). This will pillar-box your content. You may prefer to set your " @@ -279,7 +272,6 @@ msgstr "" "ペクト比をコンテンツと同じ比率に設定することをお勧めします。" #: src/lib/job.cc:115 -#, c++-format msgid "An error occurred whilst handling the file {}." msgstr "ファイル {} の処理中にエラーが発生しました。" @@ -291,28 +283,28 @@ msgstr "音声解析中" msgid "Analysing subtitles" msgstr "字幕解析中" -#: src/lib/hints.cc:379 +#: src/lib/hints.cc:384 #, fuzzy msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "最低1つのマーカーがプロジェクトの終了後に出現しますが、無視されます。" -#: src/lib/hints.cc:526 +#: src/lib/hints.cc:523 msgid "At least one of your closed caption files is larger than " msgstr "最低1つの「クローズドキャプション」ファイルが次のサイズより大きいです" -#: src/lib/hints.cc:520 +#: src/lib/hints.cc:516 #, fuzzy msgid "At least one of your closed caption files' XML part is larger than " msgstr "" "最低1つの「クローズドキャプション」ファイルのXML部分が次のサイズより大きいで" "す" -#: src/lib/hints.cc:532 +#: src/lib/hints.cc:531 msgid "At least one of your subtitle files is larger than " msgstr "最低1つの字幕はサイズが大きいです" -#: src/lib/hints.cc:490 +#: src/lib/hints.cc:495 msgid "" "At least one of your subtitle lines has more than 52 characters. It is " "recommended to make each line 52 characters at most in length." @@ -320,7 +312,7 @@ msgstr "" "最低1つの字幕は1行が52文字を超えています。各行の長さは52文字以下にすることを" "お勧めします。" -#: src/lib/hints.cc:492 +#: src/lib/hints.cc:497 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." @@ -328,13 +320,13 @@ msgstr "" "最低1つの字幕は1行が79文字を超えています。各行の長さを79文字以下にしてくださ" "い。" -#: src/lib/hints.cc:681 +#: src/lib/hints.cc:664 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." msgstr "最低1つの字幕は3行を超えています。3行以内に収めることをお勧めします。" -#: src/lib/hints.cc:648 +#: src/lib/hints.cc:631 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -342,7 +334,7 @@ msgstr "" "最低1つの字幕は15フレーム未満です。各字幕は最低15フレーム以上にすることをお勧" "めします。" -#: src/lib/hints.cc:653 +#: src/lib/hints.cc:636 msgid "" "At least one of your subtitles starts less than 2 frames after the previous " "one. It is advisable to make the gap between subtitles at least 2 frames." @@ -350,7 +342,7 @@ msgstr "" "最低1つの字幕は少なくとも前の字幕から2フレーム以内に始まります。字幕の間隔を2" "フレーム以上あけることをお勧めします。" -#: src/lib/hints.cc:724 +#: src/lib/hints.cc:707 msgid "" "At least one piece of subtitle content has no specified language. It is " "advisable to set the language for each piece of subtitle content in the " @@ -361,12 +353,10 @@ msgstr "" "定することをお勧めします。" #: src/lib/audio_content.cc:264 -#, c++-format msgid "Audio will be resampled from {}Hz to {}Hz" msgstr "音声は {}Hz から {}Hz に再サンプリングされます" #: src/lib/audio_content.cc:266 -#, c++-format msgid "Audio will be resampled to {}Hz" msgstr "オーディオは {}Hz に再サンプリングされます" @@ -427,20 +417,19 @@ msgstr "ピクセルあたりのビット数" msgid "Bob Weaver Deinterlacing Filter" msgstr "" -#: src/lib/util.cc:623 +#: src/lib/util.cc:629 msgid "BsL" msgstr "BsL" -#: src/lib/util.cc:624 +#: src/lib/util.cc:630 msgid "BsR" msgstr "BsR" -#: src/lib/util.cc:615 +#: src/lib/util.cc:621 msgid "C" msgstr "C" #: src/lib/exceptions.cc:196 -#, c++-format msgid "CPL {} not found" msgstr "CPL {} が見つかりません" @@ -453,15 +442,15 @@ msgid "Cannot contain slashes" msgstr "スラッシュを含めることはできません" #: src/lib/exceptions.cc:78 -#, fuzzy, c++-format +#, fuzzy msgid "Cannot handle pixel format {} during {}" msgstr "{} 中にピクセル形式 {} を処理できません" -#: src/lib/film.cc:1940 +#: src/lib/film.cc:1938 msgid "Cannot make a KDM as this project is not encrypted." msgstr "このプロジェクトは暗号化されていない為、KDM を作成できません。" -#: src/lib/util.cc:584 +#: src/lib/util.cc:590 msgid "Centre" msgstr "Centre" @@ -544,7 +533,7 @@ msgstr "カラースペース" msgid "Combine DCPs" msgstr "複数のDCPを結合" -#: src/lib/writer.cc:525 +#: src/lib/writer.cc:522 #, fuzzy msgid "Computing digests" msgstr "ダイジェストの計算" @@ -700,8 +689,7 @@ msgstr "結合するコンテンツは同じ字幕ストリームを使用する msgid "Content to be joined must use the same text language." msgstr "結合するコンテンツは同じ言語文字を使用する必要があります。" -#: src/lib/video_content.cc:455 -#, c++-format +#: src/lib/video_content.cc:453 msgid "Content video is {}x{}" msgstr "コンテンツ動画=: {}x{}" @@ -714,7 +702,6 @@ msgid "Copying DCP" msgstr "DCPのコピー" #: src/lib/copy_to_drive_job.cc:61 -#, c++-format msgid "Copying DCPs to {}" msgstr "DCPを{}にコピーしています" @@ -723,39 +710,35 @@ msgid "Copying existing asset" msgstr "既存のassetをコピーする" #: src/lib/copy_to_drive_job.cc:58 -#, c++-format msgid "" "Copying {}\n" "to {}" msgstr "{} を {} へコピーしています" #: src/lib/scp_uploader.cc:56 -#, c++-format msgid "Could not connect to server {} ({})" msgstr "サーバー {} ({}) に接続できませんでした" #: src/lib/scp_uploader.cc:105 -#, fuzzy, c++-format +#, fuzzy msgid "Could not create remote directory {} ({})" msgstr "リモート ディレクトリ {} ({}) を作成できませんでした" #: src/lib/image_examiner.cc:64 -#, fuzzy, c++-format +#, fuzzy msgid "Could not decode JPEG2000 file {} ({})" msgstr "JPEG2000 ファイル {} ({}) をデコードできませんでした" #: src/lib/ffmpeg_image_proxy.cc:163 -#, fuzzy, c++-format +#, fuzzy msgid "Could not decode image ({})" msgstr "画像をデコードできませんでした ({})" #: src/lib/unzipper.cc:77 -#, c++-format msgid "Could not find file {} in ZIP file" msgstr "ZIPファイル内にファイル「 {} 」が見つかりませんでした" #: src/lib/encode_server_finder.cc:197 -#, c++-format msgid "" "Could not listen for remote encode servers. Perhaps another instance of {} " "is running." @@ -768,31 +751,26 @@ msgid "Could not open downloaded ZIP file" msgstr "ダウンロードしたZIPファイルを開けませんでした" #: src/lib/internet.cc:178 -#, c++-format msgid "Could not open downloaded ZIP file ({}:{}: {})" msgstr "ダウンロードしたZIPファイルを開けませんでした ({}:{}: {})" -#: src/lib/config.cc:1172 +#: src/lib/config.cc:1168 msgid "Could not open file for writing" msgstr "書き込み用のファイルを開けませんでした" #: src/lib/ffmpeg_file_encoder.cc:282 -#, c++-format msgid "Could not open output file {} ({})" msgstr "出力ファイル{}を開けませんでした({})" #: src/lib/job.cc:179 src/lib/job.cc:194 -#, c++-format msgid "Could not open {}" msgstr "{} を開けませんでした" #: src/lib/curl_uploader.cc:101 src/lib/scp_uploader.cc:121 -#, c++-format msgid "Could not open {} to send" msgstr "{} を開き送信できませんでした" #: src/lib/dcp_subtitle.cc:59 -#, c++-format msgid "Could not read subtitles ({} / {})" msgstr "字幕を読み取れませんでした({} / {})" @@ -801,23 +779,22 @@ msgid "Could not start transfer" msgstr "転送を開始できませんでした" #: src/lib/curl_uploader.cc:109 src/lib/scp_uploader.cc:137 -#, c++-format msgid "Could not write to remote file ({})" msgstr "リモートファイルへの書き込みができませんでした ({})" -#: src/lib/util.cc:594 +#: src/lib/util.cc:600 msgid "D-BOX primary" msgstr "D-BOXプライマリ" -#: src/lib/util.cc:595 +#: src/lib/util.cc:601 msgid "D-BOX secondary" msgstr "D-BOX セカンダリ" -#: src/lib/audio_processor.cc:144 src/lib/util.cc:625 +#: src/lib/audio_processor.cc:144 src/lib/util.cc:631 msgid "DBP" msgstr "DBP" -#: src/lib/audio_processor.cc:145 src/lib/util.cc:626 +#: src/lib/audio_processor.cc:145 src/lib/util.cc:632 msgid "DBS" msgstr "DBS" @@ -829,16 +806,15 @@ msgstr "DCI Flat" msgid "DCI Scope" msgstr "DCI Scope" -#: src/lib/film.cc:2048 +#: src/lib/film.cc:2046 msgid "DCP" msgstr "DCP" -#: src/lib/film.cc:2045 -#, c++-format +#: src/lib/film.cc:2043 msgid "DCP (via {})" msgstr "DCP ({}経由)" -#: src/lib/dcp_subtitle_content.cc:138 +#: src/lib/dcp_subtitle_content.cc:139 msgid "DCP XML subtitles" msgstr "DCP XML字幕" @@ -846,12 +822,7 @@ msgstr "DCP XML字幕" msgid "DCP sample rate" msgstr "DCPサンプルレート" -#: src/lib/frame_rate_change.cc:93 -#, fuzzy, c++-format -msgid "DCP will contain 1 out of every {} frames of the content.\n" -msgstr "DCP はコンテンツのフレームを 1 つおきに使用します。\n" - -#: src/lib/frame_rate_change.cc:103 +#: src/lib/frame_rate_change.cc:101 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "" @@ -862,7 +833,7 @@ msgstr "" msgid "DCP will use every other frame of the content.\n" msgstr "DCP はコンテンツのフレームを 1 つおきに使用します。\n" -#: src/lib/film.cc:1857 +#: src/lib/film.cc:1855 msgid "" "DCP-o-matic had to set your container to 1920x1080 as it's the only one that " "can be used with MPEG2 encoding." @@ -870,7 +841,7 @@ msgstr "" "DCP-o-matic では MPEG2 エンコーディングに使用できるのは 1920x1080 のみです。" "その為アスペクト比と解像度を 1920x1080 に変更しましした。" -#: src/lib/film.cc:1861 +#: src/lib/film.cc:1859 #, fuzzy msgid "" "DCP-o-matic had to set your film to 2D as 3D is not yet supported with MPEG2 " @@ -879,7 +850,7 @@ msgstr "" "DCP-o-matic では、MPEG2 エンコーディングではまだ 3D がサポートされていないた" "め、プロジェクトを 2D に設定する必要がありました。" -#: src/lib/film.cc:1865 +#: src/lib/film.cc:1863 msgid "" "DCP-o-matic set your container to DCI Flat as it was previously 1920x1080 " "and that is not a standard ratio with JPEG2000 encoding." @@ -897,8 +868,7 @@ msgstr "Datasat AP20 or AP25" msgid "De-interlacing" msgstr "インターレース解除" -#: src/lib/config.cc:1233 -#, c++-format +#: src/lib/config.cc:1229 msgid "" "Dear Projectionist\n" "\n" @@ -925,12 +895,10 @@ msgstr "" "{}" #: src/lib/exceptions.cc:178 -#, c++-format msgid "Disk full when writing {}" msgstr "書込みディスクが一杯です {}" #: src/lib/job.cc:268 -#, c++-format msgid "Disk full while writing {}" msgstr "書込み中のディスクが一杯です {}" @@ -939,7 +907,6 @@ msgid "Dolby CP650 or CP750" msgstr "Dolby CP650 or CP750" #: src/lib/internet.cc:124 -#, c++-format msgid "Download failed ({} error {})" msgstr "ダウンロードに失敗しました ({} エラー {})" @@ -949,13 +916,13 @@ msgstr "ダウンロードに失敗しました ({} エラー {})" msgid "EC" msgstr "EC" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:93 #, fuzzy msgid "Each content frame will be doubled in the DCP.\n" msgstr "各コンテンツ フレームは DCP で 2 倍になります。\n" -#: src/lib/frame_rate_change.cc:97 -#, fuzzy, c++-format +#: src/lib/frame_rate_change.cc:95 +#, fuzzy msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "各コンテンツ フレームは DCP 内で {} 回以上繰り返されます。\n" @@ -964,7 +931,6 @@ msgid "Email KDMs" msgstr "KDMをメール" #: src/lib/send_kdm_email_job.cc:96 -#, c++-format msgid "Email KDMs for {}" msgstr "{}にKDMを送信" @@ -977,7 +943,6 @@ msgid "Email problem report" msgstr "問題レポートをEmailで報告" #: src/lib/send_problem_report_job.cc:71 -#, c++-format msgid "Email problem report for {}" msgstr "{} の問題レポートをメールで送信" @@ -990,12 +955,11 @@ msgid "Episode" msgstr "エピソード・物語(EPS)" #: src/lib/exceptions.cc:85 -#, fuzzy, c++-format +#, fuzzy msgid "Error in subtitle file: saw {} while expecting {}" msgstr "字幕ファイルエラー:saw {} while expecting {}" #: src/lib/job.cc:655 -#, c++-format msgid "Error: {}" msgstr "エラー: {}" @@ -1003,11 +967,11 @@ msgstr "エラー: {}" msgid "Event" msgstr "イベント・行事(EVT)" -#: src/lib/hints.cc:410 +#: src/lib/hints.cc:415 msgid "Examining audio" msgstr "音声の検査" -#: src/lib/hints.cc:412 +#: src/lib/hints.cc:417 msgid "Examining audio, subtitles and closed captions" msgstr "音声、字幕、クローズドキャプションの検査" @@ -1019,7 +983,7 @@ msgstr "コンテンツの検査" msgid "Examining subtitles" msgstr "字幕の検査" -#: src/lib/hints.cc:408 +#: src/lib/hints.cc:413 msgid "Examining subtitles and closed captions" msgstr "字幕とクローズドキャプションの検査" @@ -1036,7 +1000,7 @@ msgid "FCP XML subtitles" msgstr "FCP XML字幕" #: src/lib/scp_uploader.cc:68 -#, fuzzy, c++-format +#, fuzzy msgid "Failed to authenticate with server ({})" msgstr "サーバーとの認証に失敗しました({})" @@ -1090,7 +1054,6 @@ msgid "Full" msgstr "" #: src/lib/ffmpeg_content.cc:562 -#, c++-format msgid "Full (0-{})" msgstr "" @@ -1137,11 +1100,11 @@ msgstr "Gamma 28 (BT470BG)" msgid "Gradient debander" msgstr "" -#: src/lib/audio_processor.cc:142 src/lib/util.cc:619 +#: src/lib/audio_processor.cc:142 src/lib/util.cc:625 msgid "HI" msgstr "HI" -#: src/lib/util.cc:588 +#: src/lib/util.cc:594 msgid "Hearing impaired" msgstr "聴覚障害(HI)" @@ -1175,11 +1138,11 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:198 +#: src/lib/hints.cc:195 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "25fpsを使用する場合、DCP規格をSMPTEに変更する必要があります。" -#: src/lib/hints.cc:261 +#: src/lib/hints.cc:258 msgid "" "In general it is now advisable to make SMPTE DCPs unless you have a " "particular reason to use Interop. It is advisable to set your DCP to use " @@ -1189,7 +1152,7 @@ msgstr "" "勧めします。「DCP」タブで、SMPTE規格を使用するようにDCPを設定することをお勧め" "します。" -#: src/lib/hints.cc:641 +#: src/lib/hints.cc:624 msgid "" "It is advisable to put your first subtitle at least 4 seconds after the " "start of the DCP to make sure it is seen." @@ -1198,7 +1161,6 @@ msgstr "" "することをお勧めします。" #: src/lib/job.cc:169 src/lib/job.cc:204 src/lib/job.cc:295 src/lib/job.cc:305 -#, c++-format msgid "It is not known what caused this error. {}" msgstr "このエラーの原因は不明です。{}" @@ -1206,7 +1168,7 @@ msgstr "このエラーの原因は不明です。{}" msgid "JEDEC P22" msgstr "JEDEC P22" -#: src/lib/config.cc:422 src/lib/config.cc:1230 +#: src/lib/config.cc:421 src/lib/config.cc:1226 msgid "KDM delivery: $CPL_NAME" msgstr "KDM配信: $CPL_NAME" @@ -1216,35 +1178,35 @@ msgid "Kernel deinterlacer" msgstr "カーネルデインターレース" #. TRANSLATORS: L here is an abbreviation for "left", to indicate the left-eye part of a 3D export -#: src/lib/ffmpeg_film_encoder.cc:265 src/lib/util.cc:613 +#: src/lib/ffmpeg_film_encoder.cc:265 src/lib/util.cc:619 msgid "L" msgstr "L" -#: src/lib/mid_side_decoder.cc:106 src/lib/util.cc:582 +#: src/lib/mid_side_decoder.cc:106 src/lib/util.cc:588 msgid "Left" msgstr "Left" -#: src/lib/util.cc:590 +#: src/lib/util.cc:596 msgid "Left centre" msgstr "Left centre" -#: src/lib/util.cc:592 +#: src/lib/util.cc:598 msgid "Left rear surround" msgstr "Left rear surround" -#: src/lib/util.cc:586 +#: src/lib/util.cc:592 msgid "Left surround" msgstr "Left surround" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:526 msgid "Length" msgstr "長さ" -#: src/lib/util.cc:616 +#: src/lib/util.cc:622 msgid "Lfe" msgstr "Lfe" -#: src/lib/util.cc:585 +#: src/lib/util.cc:591 msgid "Lfe (sub)" msgstr "Lfe (sub)" @@ -1254,7 +1216,7 @@ msgid "Limited" msgstr "限定" #: src/lib/ffmpeg_content.cc:555 -#, fuzzy, c++-format +#, fuzzy msgid "Limited / video ({}-{})" msgstr "限定 / ビデオ ({}-{})" @@ -1276,7 +1238,7 @@ msgstr "対数(316:1 range)" msgid "Lost communication between main and writer processes" msgstr "メインプロセスとライタープロセス間の通信が失われました" -#: src/lib/util.cc:617 +#: src/lib/util.cc:623 msgid "Ls" msgstr "Ls" @@ -1315,7 +1277,6 @@ msgid "Mismatched video sizes in DCP" msgstr "DCP のビデオ サイズの不一致" #: src/lib/exceptions.cc:71 -#, c++-format msgid "Missing required setting {}" msgstr "必要な設定 {} がありません" @@ -1371,12 +1332,10 @@ msgid "OK" msgstr "OK" #: src/lib/job.cc:652 -#, c++-format msgid "OK (ran for {} from {} to {})" -msgstr "" +msgstr "OK ( 処理時間 {} 、 開始時刻 {} 、 終了時刻 {} )" #: src/lib/job.cc:650 -#, c++-format msgid "OK (ran for {})" msgstr "" @@ -1398,7 +1357,6 @@ msgid "Open subtitles" msgstr "字幕を開く" #: src/lib/transcode_job.cc:113 -#, c++-format msgid "" "Open the project in {}, check the settings, then save it before trying again." msgstr "" @@ -1431,8 +1389,7 @@ msgstr "P3 D65 (~6500K)" msgid "P3 DCI (~6300K)" msgstr "P3 DCI (~6300K)" -#: src/lib/util.cc:1111 -#, c++-format +#: src/lib/util.cc:1137 msgid "" "Please report this problem by using Help -> Report a problem or via email to " "{}" @@ -1454,7 +1411,6 @@ msgid "Prepared for video frame rate" msgstr "動画フレームレートの準備" #: src/lib/exceptions.cc:106 -#, c++-format msgid "Programming error at {}:{} {}" msgstr "プログラミングエラー({}:{} {})" @@ -1467,7 +1423,7 @@ msgid "Public Service Announcement" msgstr "公共広告(PSA)" #. TRANSLATORS: R here is an abbreviation for "right", to indicate the right-eye part of a 3D export -#: src/lib/ffmpeg_film_encoder.cc:270 src/lib/util.cc:614 +#: src/lib/ffmpeg_film_encoder.cc:270 src/lib/util.cc:620 msgid "R" msgstr "R" @@ -1501,19 +1457,19 @@ msgstr "Rec. 601" msgid "Rec. 709" msgstr "Rec. 709" -#: src/lib/mid_side_decoder.cc:107 src/lib/util.cc:583 +#: src/lib/mid_side_decoder.cc:107 src/lib/util.cc:589 msgid "Right" msgstr "Right" -#: src/lib/util.cc:591 +#: src/lib/util.cc:597 msgid "Right centre" msgstr "Right centre" -#: src/lib/util.cc:593 +#: src/lib/util.cc:599 msgid "Right rear surround" msgstr "Right rear surround" -#: src/lib/util.cc:587 +#: src/lib/util.cc:593 msgid "Right surround" msgstr "Right surround" @@ -1525,7 +1481,7 @@ msgstr "反時計回りに90度回転" msgid "Rotate 90 degrees clockwise" msgstr "時計回りに90度回転" -#: src/lib/util.cc:618 +#: src/lib/util.cc:624 msgid "Rs" msgstr "Rs" @@ -1550,7 +1506,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:706 +#: src/lib/hints.cc:689 msgid "" "SMPTE DCPs with the type FTR (feature) should have markers for the first " "frame of end credits (FFEC) and the first frame of moving credits (FFMC). " @@ -1585,13 +1541,11 @@ msgid "SMPTE ST 432-1 D65 (2010)" msgstr "SMPTE ST 432-1 D65 (2010)" #: src/lib/scp_uploader.cc:46 -#, c++-format msgid "SSH error [{}]" msgstr "SSH エラー [{}]" #: src/lib/scp_uploader.cc:62 src/lib/scp_uploader.cc:75 #: src/lib/scp_uploader.cc:82 -#, c++-format msgid "SSH error [{}] ({})" msgstr "SSH エラー [{}] ({})" @@ -1611,17 +1565,16 @@ msgstr "メールを送信する" msgid "Short" msgstr "短編(SHR)" -#: src/lib/audio_processor.cc:146 src/lib/util.cc:627 +#: src/lib/audio_processor.cc:146 src/lib/util.cc:633 #, fuzzy msgid "Sign" msgstr "サイン" -#: src/lib/video_content.cc:530 +#: src/lib/video_content.cc:528 msgid "Size" msgstr "サイズ" #: src/lib/audio_content.cc:259 -#, c++-format msgid "Some audio will be resampled to {}Hz" msgstr "一部の音声は {}Hz に再サンプリングされます" @@ -1660,14 +1613,13 @@ msgstr "" "DCP-o-maticのバグ修正により、一部のファイルの再調査が必要です。設定の確認が必" "要になる場合があります。" -#: src/lib/hints.cc:622 -#, c++-format +#: src/lib/hints.cc:605 msgid "" "Some of your closed captions span more than {} lines, so they will be " "truncated." msgstr "字幕の中には{}行を超えるものがある為、途中が途切れて表示されます。" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:727 msgid "" "Some of your content has audio but you have not set the audio language. It " "is advisable to set the audio language in the \"DCP\" tab unless your audio " @@ -1677,7 +1629,7 @@ msgstr "" "ナレーションが含まれていない場合を除き「DCP」タブで音声言語を設定することをお" "勧めします。" -#: src/lib/hints.cc:815 +#: src/lib/hints.cc:798 msgid "" "Some of your content is encrypted, and some not. Though some distributors " "(e.g. Netflix) require subtitles not to be encrypted (even if picture and " @@ -1703,8 +1655,7 @@ msgstr "コンテンツの一部にはKDMが必要です" msgid "Some of your content needs an OV" msgstr "コンテンツの一部にはOVが必要です" -#: src/lib/hints.cc:798 -#, c++-format +#: src/lib/hints.cc:781 msgid "" "Some of your video content contains an alpha channel, and {} cannot be " "certain how to process it. Check that your video looks correct in the " @@ -1767,12 +1718,10 @@ msgid "The certificate chain for signing is invalid" msgstr "署名用の証明書チェーンが無効です" #: src/lib/exceptions.cc:99 -#, c++-format msgid "The certificate chain for signing is invalid ({})" msgstr "署名用の証明書チェーンが無効です ({})" -#: src/lib/hints.cc:761 -#, c++-format +#: src/lib/hints.cc:744 msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " "small error which will prevent DCPs from being validated correctly on some " @@ -1785,8 +1734,7 @@ msgstr "" "「秘密鍵」ページで「証明書と秘密鍵を再作成する」ボタンをクリックして、署名証" "明書チェーンを再作成することをお勧めします。" -#: src/lib/hints.cc:769 -#, c++-format +#: src/lib/hints.cc:752 msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " "period that is too long. This will cause problems playing back DCPs on some " @@ -1800,7 +1748,6 @@ msgstr "" "名証明書チェーンを再作成することをお勧めします。" #: src/lib/video_decoder.cc:69 -#, c++-format msgid "" "The content file {} is set as 3D but does not appear to contain 3D images. " "Please set it to 2D. You can still make a 3D DCP from this content by " @@ -1819,26 +1766,22 @@ msgstr "" "てからもう一度お試しください。" #: src/lib/playlist.cc:244 -#, c++-format msgid "The file {} has been moved {} milliseconds earlier." msgstr "{}は{}ms前に移動されました。" #: src/lib/playlist.cc:239 -#, c++-format msgid "The file {} has been moved {} milliseconds later." msgstr "{}は{}ms後に移動されました。" #: src/lib/playlist.cc:264 -#, c++-format msgid "The file {} has been trimmed by {} milliseconds less." msgstr "{}は{}ms短縮されました。" #: src/lib/playlist.cc:259 -#, c++-format msgid "The file {} has been trimmed by {} milliseconds more." msgstr "{}はさらにに{}ms短縮されました。" -#: src/lib/hints.cc:270 +#: src/lib/hints.cc:267 msgid "" "The vast majority of cinemas in Europe, Australasia and North America expect " "DCPs encoded with JPEG2000 rather than MPEG2. Make sure that your cinema " @@ -1859,7 +1802,7 @@ msgstr "" "うになりました。プロジェクト内の字幕が意図した位置に配置されているか、必ず確" "認してください。" -#: src/lib/hints.cc:251 +#: src/lib/hints.cc:248 msgid "" "There is a large difference between the frame rate of your DCP and that of " "some of your content. This will cause your audio to play back at a much " @@ -1885,20 +1828,17 @@ msgstr "" "メモリが不足しています。32ビットオペレーティングシステムを使用している場合、" "環境設定の「一般」タブでエンコードスレッドの数を減らしてみてください。" -#: src/lib/util.cc:961 -#, c++-format +#: src/lib/util.cc:987 msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" "このKDMは{}のために作成されたものです。リーフ証明書のために作成されたものでは" "ありません。" -#: src/lib/util.cc:959 -#, c++-format +#: src/lib/util.cc:985 msgid "This KDM was not made for {}'s decryption certificate." msgstr "このKDMは{}の復号のために作成された証明書ではありません。" #: src/lib/job.cc:141 -#, c++-format msgid "" "This error has probably occurred because you are running the 32-bit version " "of {} and trying to use too many encoding threads. Please reduce the " @@ -1910,7 +1850,6 @@ msgstr "" "を減らして、もう一度お試しください。" #: src/lib/job.cc:155 -#, c++-format msgid "" "This error has probably occurred because you are running the 32-bit version " "of {}. Please re-install {} with the 64-bit installer and try again." @@ -1927,7 +1866,6 @@ msgstr "" "して「KDMを追加」を選択してください。" #: src/lib/film.cc:556 -#, c++-format msgid "" "This film was created with a newer version of {}, and it cannot be loaded " "into this version. Sorry!" @@ -1936,7 +1874,6 @@ msgstr "" "ができません。" #: src/lib/film.cc:537 -#, c++-format msgid "" "This film was created with an older version of {}, and unfortunately it " "cannot be loaded into this version. You will need to create a new Film, re-" @@ -1964,7 +1901,6 @@ msgid "Trailer" msgstr "予告(TLR)" #: src/lib/transcode_job.cc:74 -#, c++-format msgid "Transcoding {}" msgstr "トランスコーディング {}" @@ -1997,8 +1933,7 @@ msgstr "不明" msgid "Unknown error" msgstr "不明なエラー" -#: src/lib/ffmpeg_decoder.cc:384 -#, c++-format +#: src/lib/ffmpeg_decoder.cc:377 msgid "Unrecognised audio sample format ({})" msgstr "認識されていない音声サンプル形式 ({})" @@ -2019,7 +1954,7 @@ msgstr "未指定" msgid "Untitled" msgstr "未使用" -#: src/lib/util.cc:596 src/lib/util.cc:597 +#: src/lib/util.cc:602 src/lib/util.cc:603 msgid "Unused" msgstr "未使用" @@ -2031,7 +1966,7 @@ msgstr "Upmix L" msgid "Upmix R" msgstr "Upmix R" -#: src/lib/audio_processor.cc:143 src/lib/util.cc:620 +#: src/lib/audio_processor.cc:143 src/lib/util.cc:626 msgid "VI" msgstr "VI" @@ -2048,11 +1983,10 @@ msgid "Vertical flip" msgstr "垂直反転" #: src/lib/fcpxml.cc:69 -#, c++-format msgid "Video refers to missing asset {}" msgstr "" -#: src/lib/util.cc:589 +#: src/lib/util.cc:595 msgid "Visually impaired" msgstr "視覚障害者" @@ -2085,8 +2019,7 @@ msgstr "YCgCo-R, 奇数追加" msgid "Yet Another Deinterlacing Filter" msgstr "" -#: src/lib/hints.cc:211 -#, c++-format +#: src/lib/hints.cc:208 msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " "supported by all projectors. It is advisable to change the DCP frame rate " @@ -2096,8 +2029,7 @@ msgstr "" "ロジェクターで対応している訳ではりません。DCPのフレームレートを{} fpsに変更す" "ることをお勧めします。" -#: src/lib/hints.cc:195 -#, c++-format +#: src/lib/hints.cc:192 msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " "supported by all projectors. You may want to consider changing your frame " @@ -2107,7 +2039,7 @@ msgstr "" "ロジェクターで対応している訳ではりません。DCPのフレームレートを{} fpsに変更す" "ることをお勧めします。" -#: src/lib/hints.cc:205 +#: src/lib/hints.cc:202 msgid "" "You are set up for a DCP frame rate of 30fps, which is not supported by all " "projectors. Be aware that you may have compatibility problems." @@ -2116,7 +2048,7 @@ msgstr "" "トされているわけではありません。互換性の問題が発生する可能性がありますのでご" "注意ください。" -#: src/lib/hints.cc:325 +#: src/lib/hints.cc:322 msgid "" "You are using 3D content but your DCP is set to 2D. Set the DCP to 3D if " "you want to play it back on a 3D system (e.g. Real-D, MasterImage etc.)" @@ -2124,8 +2056,7 @@ msgstr "" "3Dコンテンツを使用していますがDCP設定が2Dになっています。RealD・MasterImageな" "どの3Dシステムで再生する場合はDCP設定を3Dに設定してください。" -#: src/lib/hints.cc:128 -#, c++-format +#: src/lib/hints.cc:125 msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " "result in poor-quality audio. If you continue, you should listen to the " @@ -2135,7 +2066,7 @@ msgstr "" "的な機能であり音質が低下する可能性があります。続行する場合、生成されたDCPを映" "画館で試聴して音質が良好であることを確認してください。" -#: src/lib/film.cc:1794 +#: src/lib/film.cc:1792 #, fuzzy msgid "" "You have more than one piece of Atmos content, and they do not have the same " @@ -2144,7 +2075,7 @@ msgstr "" "Atmosコンテンツが複数存在し、それらのフレームレートが異なっています。Atmosコ" "ンテンツの一部を削除する必要があります。" -#: src/lib/hints.cc:629 +#: src/lib/hints.cc:612 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2152,7 +2083,7 @@ msgstr "" "字幕が重複していますが、これはInterop DCPでは許可されていません。DCP規格を" "SMPTEに変更してください。" -#: src/lib/hints.cc:293 +#: src/lib/hints.cc:290 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2160,8 +2091,8 @@ msgstr "" "640KBを超えるフォントファイルが指定されました。再生時に問題が発生する可能性が" "高くなります。" -#: src/lib/hints.cc:309 -#, fuzzy, c++-format +#: src/lib/hints.cc:306 +#, fuzzy msgid "" "You have {} files that look like they are VOB files from DVD. You should " "join them to ensure smooth joins between the files." @@ -2173,8 +2104,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "DCPを作成する前にコンテンツを追加する必要があります" -#: src/lib/hints.cc:113 -#, c++-format +#: src/lib/hints.cc:110 msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " "projectors. You may want to set the DCP to have 6 channels. It does not " @@ -2185,8 +2115,7 @@ msgstr "" "があります。DCP音声を6チャンネルに設定することをおすすめします。コンテンツの" "音声チャンネル数は6未満でも問題ありませんが{}は余分な部分を無音で埋めます。" -#: src/lib/hints.cc:787 -#, c++-format +#: src/lib/hints.cc:770 msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " "distributors to raise QC errors when they check your DCP. To avoid this, " @@ -2196,7 +2125,7 @@ msgstr "" "給会社がDCPチェック時に品質エラーを報告する可能性があります。これを回避するに" "は、DCPの音声チャンネルを8chまたは16chに設定してください。" -#: src/lib/hints.cc:170 +#: src/lib/hints.cc:167 msgid "" "Your DCP uses an unusual container ratio. This may cause problems on some " "projectors. If possible, use Flat or Scope for the DCP container ratio." @@ -2205,8 +2134,7 @@ msgstr "" "性があります。可能であれば、DCPのコンテナ比率をフラットまたはスコープに設定し" "てください。" -#: src/lib/hints.cc:359 -#, c++-format +#: src/lib/hints.cc:356 msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " "audio content." @@ -2237,7 +2165,7 @@ msgstr "" msgid "[still]" msgstr "" -#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "" @@ -2245,7 +2173,7 @@ msgstr "" #. TRANSLATORS: _reel{} here is to be added to an export filename to indicate #. which reel it is. Preserve the {}; it will be replaced with the reel number. #: src/lib/ffmpeg_film_encoder.cc:151 -#, fuzzy, c++-format +#, fuzzy msgid "_reel{}" msgstr "_リール{}" @@ -2254,7 +2182,7 @@ msgstr "_リール{}" msgid "bits" msgstr "ビット" -#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 +#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 #, fuzzy msgid "connect timed out" msgstr "接続時間超過" @@ -2269,7 +2197,6 @@ msgid "content type" msgstr "コンテンツ種類" #: src/lib/uploader.cc:79 -#, c++-format msgid "copying {}" msgstr "" @@ -2278,57 +2205,47 @@ msgid "could not find stream information" msgstr "ストリーム情報が見つかりませんでした" #: src/lib/reel_writer.cc:408 -#, fuzzy, c++-format +#, fuzzy msgid "could not move atmos asset into the DCP ({})" msgstr "atmosアセットをDCPに移動できませんでした ({})" #: src/lib/reel_writer.cc:391 -#, c++-format msgid "could not move audio asset into the DCP ({})" msgstr "音声AssetをDCPに移動できませんでした({})" #: src/lib/exceptions.cc:38 -#, c++-format msgid "could not open file {} for read ({})" msgstr "{} を読込み用に開けませんでした ({})" #: src/lib/exceptions.cc:37 -#, c++-format msgid "could not open file {} for read/write ({})" msgstr "{} を読書き用に開けませんでした ({})" #: src/lib/exceptions.cc:38 -#, c++-format msgid "could not open file {} for write ({})" msgstr "{} を書込み用に開けませんでした ({})" #: src/lib/exceptions.cc:57 -#, c++-format msgid "could not read from file {} ({})" msgstr "ファイル {} ({}) から読み取れませんでした" #: src/lib/exceptions.cc:64 -#, c++-format msgid "could not write to file {} ({})" msgstr "{} への書き込みができませんでした ({})" -#: src/lib/dcpomatic_socket.cc:112 -#, c++-format +#: src/lib/dcpomatic_socket.cc:108 msgid "error during async_connect ({})" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 -#, c++-format +#: src/lib/dcpomatic_socket.cc:78 msgid "error during async_connect: ({})" msgstr "" -#: src/lib/dcpomatic_socket.cc:204 -#, c++-format +#: src/lib/dcpomatic_socket.cc:200 msgid "error during async_read ({})" msgstr "" -#: src/lib/dcpomatic_socket.cc:163 -#, c++-format +#: src/lib/dcpomatic_socket.cc:159 msgid "error during async_write ({})" msgstr "" @@ -2348,7 +2265,6 @@ msgid "it has a different frame rate to the film." msgstr "filmとはフレームレートが異なります。" #: src/lib/dcp_content.cc:799 -#, c++-format msgid "" "it has a different number of audio channels than the project; set the " "project to have {} channels." @@ -2462,42 +2378,38 @@ msgstr "" msgid "unknown" msgstr "不明" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:526 msgid "video frames" msgstr "動画フレーム" #: src/lib/cross_common.cc:106 -#, c++-format msgid "{} ({} GB) [{}]" msgstr "{} ({} GB) [{}]" #: src/lib/atmos_mxf_content.cc:95 -#, c++-format msgid "{} [Atmos]" msgstr "{} [Atmos]" #: src/lib/dcp_content.cc:381 -#, c++-format msgid "{} [DCP]" msgstr "{} [DCP]" #: src/lib/ffmpeg_content.cc:345 -#, fuzzy, c++-format +#, fuzzy msgid "{} [audio]" msgstr "{} [音声]" #: src/lib/ffmpeg_content.cc:341 -#, fuzzy, c++-format +#, fuzzy msgid "{} [movie]" msgstr "{} [ムービー]" #: src/lib/ffmpeg_content.cc:343 src/lib/video_mxf_content.cc:105 -#, fuzzy, c++-format +#, fuzzy msgid "{} [video]" msgstr "{} [ビデオ]" #: src/lib/job.cc:180 src/lib/job.cc:195 -#, c++-format msgid "" "{} could not open the file {} ({}). Perhaps it does not exist or is in an " "unexpected format." @@ -2505,8 +2417,7 @@ msgstr "" "{} はファイル {} ({}) を開けませんでした。ファイルが存在しないか、予期しない" "形式の可能性があります。" -#: src/lib/film.cc:1831 -#, c++-format +#: src/lib/film.cc:1829 msgid "" "{} had to change your settings for referring to DCPs as OV. Please review " "those settings to make sure they are what you want." @@ -2514,8 +2425,8 @@ msgstr "" "{}はDCPをOVとして参照するために設定を変更する必要がありました。設定を確認し、" "正しいことを確認してください。" -#: src/lib/film.cc:1797 -#, fuzzy, c++-format +#: src/lib/film.cc:1795 +#, fuzzy msgid "" "{} had to change your settings so that the film's frame rate is the same as " "that of your Atmos content." @@ -2523,8 +2434,8 @@ msgstr "" "{} は、映画のフレームレートが Atmos コンテンツのフレームレートと同じになるよ" "うに設定を変更する必要がありました。" -#: src/lib/film.cc:1844 -#, fuzzy, c++-format +#: src/lib/film.cc:1842 +#, fuzzy msgid "" "{} had to remove one of your custom reel boundaries as it no longer lies " "within the film." @@ -2532,8 +2443,8 @@ msgstr "" "{} は、カスタム リール境界の 1 つがフィルム内に収まらなくなったため、削除する" "必要がありました。" -#: src/lib/film.cc:1842 -#, fuzzy, c++-format +#: src/lib/film.cc:1840 +#, fuzzy msgid "" "{} had to remove some of your custom reel boundaries as they no longer lie " "within the film." @@ -2542,16 +2453,14 @@ msgstr "" "それらを削除する必要がありました。" #: src/lib/ffmpeg_content.cc:114 -#, fuzzy, c++-format +#, fuzzy msgid "{} no longer supports the `{}' filter, so it has been turned off." msgstr "{} は `{}' フィルターをサポートしなくなったため、オフになりました。" -#: src/lib/config.cc:432 src/lib/config.cc:1245 -#, c++-format +#: src/lib/config.cc:431 src/lib/config.cc:1241 msgid "{} notification" msgstr "{} 通知" #: src/lib/transcode_job.cc:181 -#, c++-format msgid "{}; {}/{} frames" msgstr "{}; {}/{} フレーム" diff --git a/src/lib/po/zh_CN.po b/src/lib/po/zh_CN.po index a575f752b..db2ab4731 100644 --- a/src/lib/po/zh_CN.po +++ b/src/lib/po/zh_CN.po @@ -13,15 +13,15 @@ msgstr "" "Project-Id-Version: LIBDCPOMATIC\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-04-19 23:03+0200\n" -"PO-Revision-Date: 2025-10-05 13:31+0800\n" +"PO-Revision-Date: 2026-05-17 10:45+0800\n" "Last-Translator: Dian Li <xslidian@gmail.com>\n" -"Language-Team: Chinese Simplified (Rov8 branch)\n" +"Language-Team: Chinese Simplified (Hanyuan branch)\n" "Language: zh_CN\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-Generator: Poedit 3.7\n" +"X-Generator: Poedit 3.9\n" "X-Poedit-SourceCharset: UTF-8\n" #: src/lib/video_content.cc:515 @@ -207,7 +207,7 @@ msgid "; {} remaining; finishing at {}{}" msgstr "; 剩余 {} ; 完成于 {}{}" #: src/lib/analytics.cc:58 -#, fuzzy, c++-format +#, c++-format msgid "" "<h2>You have made {} DCPs with {}!</h2><img width=\"150\" height=\"193\" " "src=\"memory:me.jpg\" align=\"center\"><font size=\"+1\"><p>Hello. I'm Carl " @@ -429,7 +429,7 @@ msgstr "中置" #: src/lib/exceptions.cc:196 #, c++-format msgid "CPL {} not found" -msgstr "" +msgstr "未找到CPL {}" #: src/lib/job.cc:657 msgid "Cancelled" @@ -461,6 +461,8 @@ msgid "" "Check the server settings in the TMS tab of preferences, or un-tick \"Upload " "DCP to TMS after creation\" if you do not want to upload your DCP." msgstr "" +"在首选项的TMS页面中检查服务器设置,或者您不想要上传DCP的话,则取消选中“制作" +"DCP后上传到TMS)复选框" #: src/lib/transcode_job.cc:106 msgid "Check their new settings, then try again." @@ -682,9 +684,8 @@ msgid "Copying DCPs to {}" msgstr "复制DCP到 {}" #: src/lib/reel_writer.cc:194 -#, fuzzy msgid "Copying existing asset" -msgstr "检查现有的图像数据" +msgstr "正在拷贝已经存在的资产" #: src/lib/copy_to_drive_job.cc:58 #, c++-format @@ -811,9 +812,9 @@ msgid "DCP sample rate" msgstr "DCP 采样率" #: src/lib/frame_rate_change.cc:93 -#, fuzzy, c++-format +#, c++-format msgid "DCP will contain 1 out of every {} frames of the content.\n" -msgstr "将使用隔帧打包DCP。\n" +msgstr "DCP 将包含内容中每 {} 帧中的 1 帧。\n" #: src/lib/frame_rate_change.cc:103 #, c-format @@ -904,9 +905,8 @@ msgstr "下载失败 ({} error {})" #. TRANSLATORS: this is an abbreviation for "end credits", shown next to the pair of markers #. "FFEC" and "LFEC" ({First, Last} Frame of End Credits) #: src/lib/layout_markers.cc:145 -#, fuzzy msgid "EC" -msgstr "中置" +msgstr "片尾字幕" #: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" @@ -1128,7 +1128,7 @@ msgstr "IEC61966-2-4" #. "FFOI" and "LFOI" ({First, Last} Frame of Intermission) #: src/lib/layout_markers.cc:142 msgid "IN" -msgstr "" +msgstr "幕间休息" #: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." @@ -1231,9 +1231,8 @@ msgstr "左环绕" #. TRANSLATORS: this is an abbreviation for "moving credits", shown next to the pair of markers #. "FFMC" and "LFMC" ({First, Last} Frame of Moving Credits) #: src/lib/layout_markers.cc:148 -#, fuzzy msgid "MC" -msgstr "中置" +msgstr "滚动字幕" #: src/lib/mid_side_decoder.cc:39 msgid "Mid-side decoder" @@ -1279,12 +1278,11 @@ msgstr "动态隔行补偿" #: src/lib/dcp_content.cc:212 msgid "No ASSETMAP or ASSETMAP.xml file found: is this a DCP?" -msgstr "" +msgstr "未找到ASSETMAP或ASSETMAP.xml文件,这是一个DCP吗?" #: src/lib/dcp_examiner.cc:115 -#, fuzzy msgid "No CPLs found in DCP" -msgstr "DCP中没有找到CPL文件。" +msgstr "DCP中没有找到CPL文件" #: src/lib/dcp_decoder.cc:114 msgid "No CPLs found in DCP." @@ -1362,15 +1360,15 @@ msgstr "小波降噪" #: src/lib/colour_conversion.cc:293 msgid "P3 D60 (~6000K)" -msgstr "" +msgstr "P3 D60 (~6000K)" #: src/lib/colour_conversion.cc:292 msgid "P3 D65 (~6500K)" -msgstr "" +msgstr "P3 D65 (~6500K)" #: src/lib/colour_conversion.cc:291 msgid "P3 DCI (~6300K)" -msgstr "" +msgstr "P3 DCI (~6300K)" #: src/lib/util.cc:1111 #, c++-format @@ -1412,9 +1410,8 @@ msgstr "右声道" #. TRANSLATORS: this is an abbreviation for "ratings band", shown next to the pair of markers #. "FFOB" and "LFOB" ({First, Last} Frame of Band) #: src/lib/layout_markers.cc:136 -#, fuzzy msgid "RB" -msgstr "右声道" +msgstr "评级" #: src/lib/ffmpeg_content.cc:644 msgid "RGB / sRGB (IEC61966-2-1)" @@ -1503,9 +1500,8 @@ msgid "SMPTE ST 2084 for 10, 12, 14 and 16 bit systems" msgstr "SMPTE ST 2084 10, 12, 14和16 bit" #: src/lib/ffmpeg_content.cc:660 -#, fuzzy msgid "SMPTE ST 2128, IPT-C2" -msgstr "SMPTE ST 428-1" +msgstr "SMPTE ST 2128, IPT-C2" #: src/lib/ffmpeg_content.cc:636 msgid "SMPTE ST 428-1" @@ -1589,14 +1585,12 @@ msgstr "" "这些文件现在将被重新检查,因此您可能需要检查它们的设置。" #: src/lib/check_content_job.cc:94 -#, fuzzy msgid "" "Some files must be re-examined due to a bug fix in DCP-o-matic. You may " "need to check their settings." msgstr "" -"有些文件在添加到项目后发生了更改\n" -"\n" -"这些文件现在将被重新检查,因此您可能需要检查它们的设置。" +"由于 DCP-o-matic 中的一个漏洞修复,某些文件必须重新检查。您可能需要检查它们的" +"设置。" #: src/lib/hints.cc:622 #, c++-format @@ -1622,6 +1616,9 @@ msgid "" "in doubt, set everything (picture, sound and text) to be either encrypted or " "not." msgstr "" +"你的一些内容是加密的,而有些则不是。虽然一些分销商(例如 Netflix)要求字幕不" +"能加密(即使画面和声音可以加密),但其他分销商会对由此项目生成的 DCP 标记错" +"误。如果不确定,请将所有内容(画面、声音和文字)设置为加密或不加密。" #: src/lib/make_dcp.cc:69 msgid "Some of your content is missing" @@ -1670,9 +1667,8 @@ msgstr "星期日" #. TRANSLATORS: this is an abbreviation for "title credits", shown next to the pair of markers #. "FFTC" and "LFTC" ({First, Last} Frame of Title Credits) #: src/lib/layout_markers.cc:139 -#, fuzzy msgid "TC" -msgstr "中置" +msgstr "标题字幕" #: src/lib/dcp_content_type.cc:60 msgid "Teaser" @@ -1987,11 +1983,11 @@ msgstr "YCOCG" #: src/lib/ffmpeg_content.cc:661 msgid "YCgCo-R, even addition" -msgstr "" +msgstr "YCgCo-R,偶数叠加编码" #: src/lib/ffmpeg_content.cc:662 msgid "YCgCo-R, odd addition" -msgstr "" +msgstr "YCgCo-R,奇数叠加编码" #: src/lib/filter.cc:98 msgid "Yet Another Deinterlacing Filter" @@ -2313,11 +2309,10 @@ msgstr "名字" #. TRANSLATORS: this string will follow "Cannot reference this DCP: " #: src/lib/dcp_content.cc:829 -#, fuzzy msgid "" "one of its closed caption reels has a non-zero entry point so it must be re-" "written." -msgstr "它的一个隐藏字幕有一个非零的时间点,因此必须重写。" +msgstr "它的一个隐藏字幕卷有一个非零的起始点,因此必须重写。" #. TRANSLATORS: this string will follow "Cannot reference this DCP: " #: src/lib/dcp_content.cc:823 diff --git a/src/lib/raw_image_proxy.cc b/src/lib/raw_image_proxy.cc index 9e819140b..e54163e9e 100644 --- a/src/lib/raw_image_proxy.cc +++ b/src/lib/raw_image_proxy.cc @@ -19,6 +19,7 @@ */ +#include "dcpomatic_assert.h" #include "raw_image_proxy.h" #include "image.h" #include <dcp/util.h> @@ -47,7 +48,7 @@ using boost::optional; RawImageProxy::RawImageProxy(shared_ptr<const Image> image) : _image (image) { - + DCPOMATIC_ASSERT(image); } diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index b85b53305..76c1f8124 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -591,6 +591,7 @@ ReelWriter::create_reel_sound(shared_ptr<dcp::Reel> reel, list<ReferencedReelAss } +/** @param ensure_closed_captions List of DCPTextTracks that we need to make sure exist in this reel */ void ReelWriter::create_reel_text( shared_ptr<dcp::Reel> reel, @@ -630,17 +631,30 @@ ReelWriter::create_reel_text( } } - for (auto const& i: _closed_caption_assets) { - auto a = maybe_add_text<dcp::ReelInteropTextAsset, dcp::ReelSMPTETextAsset, dcp::ReelTextAsset>( - i.second, dcp::TextType::CLOSED_CAPTION, duration, reel, _reel_index, _reel_count, _content_summary, refs, film(), _period, output_dcp, _text_only + for (auto iter = ensure_closed_captions.begin(); iter != ensure_closed_captions.end(); ) { + /* Find any asset we wrote for this track */ + auto written_asset = _closed_caption_assets.find(*iter); + + /* Try to make a reel asset out of either written_asset or one of the referenced assets */ + auto asset = maybe_add_text<dcp::ReelInteropTextAsset, dcp::ReelSMPTETextAsset, dcp::ReelTextAsset>( + written_asset == _closed_caption_assets.end() ? shared_ptr<dcp::TextAsset>() : written_asset->second, + dcp::TextType::CLOSED_CAPTION, duration, reel, _reel_index, _reel_count, _content_summary, refs, film(), _period, output_dcp, _text_only ); - DCPOMATIC_ASSERT(a); - a->set_annotation_text(i.first.name); - if (i.first.language) { - a->set_language(i.first.language.get()); + + /* Fill in some details for the reel asset if we know them */ + if (asset && written_asset != _closed_caption_assets.end()) { + asset->set_annotation_text(written_asset->first.name); + if (written_asset->first.language) { + asset->set_language(written_asset->first.language.get()); + } } - ensure_closed_captions.erase(i.first); + if (asset) { + /* We made a reel asset for this track, so we don't need to worry about it any more */ + iter = ensure_closed_captions.erase(iter); + } else { + ++iter; + } } /* Make empty tracks for anything we've been asked to ensure but that we haven't added */ |
